<p class="MsoNormal"><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;">I have an
source 3D image of MR (sagittal, with image orientation: 0\1\0\0\0\-1) and I’ve
created a new 3D image by duplicating it or using it as a template. Then,
I write a 2D DICOM series out. I expect the same image orientation but instead
it is 1\0\0\0\1\0 (axial).  Why?</span></p>

<p class="MsoNormal"><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;">I
tried to override the tag of the DICOM with image orientation: 0\1\0\0\0\-1, it
did not work. Then I use itk::</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:windowtext">OrientImageFilter to change to coronal but the image
orientation tag is still </span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;">1\0\0\0\1\0
(axial) even though the image orientation has changed. </span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:windowtext"></span></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Why can I change the value of the DICOM tag: image
orientation (patient)?  I need to match the image orientation (patient) 
with the real orientation of the 3D image( the image is sagittal, the 
head of dicom has to be sagittal, not axial).<br></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Please help!  Thanks. </p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">----------------------------------------------------------------------------------------------</p>

<p class="MsoNormal">The code samples</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">//create a new 3D image from an existing one</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageType_SignedShort::Pointer ctImage =
ImageType_SignedShort::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;SetRegions(m_vMRScanClass[0].Reader-&gt;GetOutput()-&gt;GetRequestedRegion());</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;SetSpacing(m_vMRScanClass[0].Reader-&gt;GetOutput()-&gt;GetSpacing());</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;SetDirection(m_vMRScanClass[0].Reader-&gt;GetOutput()-&gt;GetDirection());</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;SetMetaDataDictionary(m_vMRScanClass[0].Reader-&gt;GetOutput()-&gt;GetMetaDataDictionary());</span></p>



<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;Allocate();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">pImage-&gt;FillBuffer(0);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">//duplicate an exsing 3D image</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageType_SignedShort::Pointer
ctImageTest = ImageType_SignedShort::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">typedef itk::ImageDuplicator&lt;
ImageType_SignedShort &gt;  DuplicatorType;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">DuplicatorType::Pointer duplicator =
DuplicatorType::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">duplicator-&gt;SetInputImage(m_vMRScanClass[0].Reader-&gt;GetOutput());</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">duplicator-&gt;Update();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ctImageTest =
duplicator-&gt;GetOutput();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ctImageTest-&gt;FillBuffer(0);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">//However, if I write it out as CT image
with the following code, </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">typedef</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">
itk::NumericSeriesFileNames            
NamesGeneratorType;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageIOType::Pointer gdcmIO =
ImageIOType::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">itksys::SystemTools::MakeDirectory(
outputDirectory.c_str() );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">typedef</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">signed</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">short</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">   
PixelType_UnsignedChar;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">const</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">unsigned</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">int</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">     
OutputDimension = 2;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">typedef</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> itk::Image&lt; PixelType_UnsignedChar,
OutputDimension &gt;  Image2DType;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">typedef</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">
itk::ImageSeriesWriter&lt;ImageType_SignedShort, Image2DType &gt; 
SeriesWriterType;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">NamesGeneratorType::Pointer
namesGenerator = NamesGeneratorType::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">itk::MetaDataDictionary &amp; dict =
gdcmIO-&gt;GetMetaDataDictionary();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">itk::EncapsulateMetaData&lt;std::string&gt;(dict, 
&quot;0008|0060&quot;, &quot;CT&quot;);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">itk::EncapsulateMetaData&lt;std::string&gt;(dict, 
&quot;0008|0008&quot;, &quot;ORIGINAL\\PRIMARY\\SAGITTAL&quot;);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">             
</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">//does not work, why? itk issue?</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">itk::EncapsulateMetaData&lt;std::string&gt;(dict, 
&quot;0020|0037&quot;, &quot;0\\1\\0\\0\\0\\-1 &quot;);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">SeriesWriterType::Pointer seriesWriter =
SeriesWriterType::New();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">seriesWriter-&gt;SetInput( inputImage );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">seriesWriter-&gt;SetImageIO( gdcmIO );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageType_SignedShort::RegionType region
= inputImage-&gt;GetLargestPossibleRegion();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageType_SignedShort::IndexType start =
region.GetIndex();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">ImageType_SignedShort::SizeType 
size  = region.GetSize();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">std::string format = outputDirectory;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">format += </span><span style="font-size:9.5pt;font-family:Consolas;color:#a31515">&quot;/image%03d.dcm&quot;</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">;</span></p>



<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">namesGenerator-&gt;SetSeriesFormat(
format.c_str() );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">namesGenerator-&gt;SetStartIndex(
start[2] );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">namesGenerator-&gt;SetEndIndex( start[2]
+ size[2] - 1 );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">namesGenerator-&gt;SetIncrementIndex( 1
);</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">seriesWriter-&gt;SetFileNames(
namesGenerator-&gt;GetFileNames() );</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">try</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"></span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">{</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">      
seriesWriter-&gt;Update();</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">}</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:blue">catch</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">( itk::ExceptionObject &amp; ex )</span></p>



<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">{</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">      
std::cerr &lt;&lt; ex &lt;&lt; std::endl;</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">       </span><span style="font-size:9.5pt;font-family:Consolas;color:blue">throw</span><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> ex;</span></p>



<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">}</span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext">The Image orientation (patient) still is
1\0\0\0\1\0 instead of 0\1\0\0\0\-1 </span></p>

<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:windowtext"> </span></p>