<div dir="ltr">Thanks Luis for your help, I used the following example showed in this file &quot;DicomSeriesReadImageWrite2.cxx&quot; and I<br><br>&nbsp;got the slice em order.<br>Best regards.<br><div class="gmail_quote">2008/9/29 Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi Jihan,<br>
<br>
Try the following:<br>
<br>
after the code:<div class="Ih2E3d"><br>
<br>
 &nbsp;try{<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reader2-&gt;Update();<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; catch (itk::ExceptionObject &amp; e)<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std::cerr &lt;&lt; &quot;Failed to read &quot; &lt;&lt; fname &lt;&lt; &quot;\n&quot; &lt;&lt;<br>
&gt; e.GetDescription() &lt;&lt; std::endl;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return NULL;<br>
&gt; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br></div>
add a writer:<br>
<br>
typedef itk::ImageFileWriter&lt; ImageType &gt; WriterType;<br>
<br>
WriterType::Pointer writer2 = WriterType::New();<br>
<br>
writer2-&gt;SetInput( reader2-&gt;GetOutput() );<br>
writer2-&gt;SetFileName( &quot;FROMDICOM.mhd&quot;);<br>
writer2-&gt;Updates();<br>
<br>
Then look at the output image by using the ImageViewer,<br>
or ParaView, or Slicer, or VV, or SNAP,... or any other<br>
application based on ITK readers.<br>
<br>
Please let us know if that image still appears to have<br>
the slices out of order.<br>
<br>
<br>
 &nbsp;Thanks<br>
<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp;Luis<br>
<br>
<br>
<br>
-------------<br>
Jihan Zoghbi wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="Wj3C7c">
Dear Luis,<br>
<br>
&nbsp;Thanks for your help, I have already succeed to read and visualize Analyze Image. I&#39;m facing a new problem now, when I&#39;m trying to read and visualize Dicom Image , I got a problem to view the slides in the correct order. I used the following code:<br>

/*******************************************/<br>
<br>
char dir_name[]=&quot;/home/talita/Desktop/COMUNIX/Neck 1HEAD_NECK_PETCT/CT HEAD-NK 5.0 B30s&quot;;<br>
dicom_info = vtkImageData::New();<br>
dicom_info = vtkITKMyUtilityLoadImage&lt;unsigned short,1&gt;(dir_name);<br>
/*****************************************************/<br>
void window1::addAxialSlice(int slice_number)<br>
{<br>
 &nbsp; &nbsp;int *extent;<br>
 &nbsp; &nbsp;extent = dicom_info-&gt;GetWholeExtent();<br>
 &nbsp; &nbsp;renderer-&gt;RemoveActor(axial);<br>
 &nbsp; &nbsp;axialColors = vtkImageMapToColors::New();<br>
<br>
SetInputConnection(image-&gt;GetOutputPort());<br>
 &nbsp; &nbsp;axialColors-&gt;SetInput(dicom_info);<br>
 &nbsp; &nbsp;axialColors-&gt;SetLookupTable(hueLut);<br>
 &nbsp;  &nbsp; &nbsp;axial = vtkImageActor::New();<br>
 &nbsp; &nbsp;axial-&gt;SetInput(axialColors-&gt;GetOutput());<br>
 &nbsp; &nbsp;axial-&gt;SetDisplayExtent(0,extent[1], 0,extent[3], slice_number,slice_number);<br>
 &nbsp;  &nbsp; axial-&gt;SetPosition(0,0,0);<br>
<br>
 &nbsp; &nbsp;renderer-&gt;AddActor(axial);<br>
 &nbsp; &nbsp;renderer-&gt;ResetCameraClippingRange();<br>
 &nbsp; &nbsp;renArea-&gt;queue_draw();<br>
}<br>
/******************************************************/<br>
<br>
template &lt;class IT,int choice&gt;<br>
vtkImageData* vtkITKMyUtilityLoadImage(char* fname)<br>
{<br>
 &nbsp; &nbsp;typedef itk::Image&lt; IT, &nbsp;3 &gt; &nbsp; &nbsp;ImageType;<br>
 &nbsp; &nbsp;typedef itk::ImageToVTKImageFilter&lt;<br>
ImageType&gt; ImageToVTKImageFilterType;<br>
 &nbsp; &nbsp;typedef itk::ImageFileReader&lt; ImageType &nbsp;&gt; &nbsp;ReaderType;<br>
 &nbsp; &nbsp;typedef itk::ImageSeriesReader&lt; ImageType &gt; ReaderType2;<br>
 &nbsp;  &nbsp; &nbsp;typename ReaderType::Pointer reader = ReaderType::New();<br>
 &nbsp; &nbsp;typename ReaderType2::Pointer reader2 = ReaderType2::New();<br>
 &nbsp;  &nbsp; &nbsp;typename ImageToVTKImageFilterType::Pointer exporter=ImageToVTKImageFilterType::New();<br>
 &nbsp;  &nbsp; &nbsp;if (choice==0){<br>
 &nbsp; &nbsp; &nbsp; &nbsp;reader-&gt;SetFileName(fname);<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;try{ &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader-&gt;Update(); &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;}  &nbsp; &nbsp; &nbsp; &nbsp;catch (itk::ExceptionObject &amp; e) &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;{ &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cerr &lt;&lt; &quot;Failed to read &quot; &lt;&lt; fname &lt;&lt; &quot;\n&quot; &lt;&lt; e.GetDescription() &lt;&lt; std::endl; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;}<br>

 &nbsp; &nbsp; &nbsp; &nbsp;exporter-&gt;SetInput(reader-&gt;GetOutput());<br>
 &nbsp; &nbsp;}<br>
 &nbsp;  &nbsp; &nbsp;if (choice==1){<br>
 &nbsp;  &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;itk::DICOMImageIO2::Pointer dicomIO = itk::DICOMImageIO2::New();<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;// Get the DICOM filenames from the directory<br>
 &nbsp; &nbsp; &nbsp; &nbsp;itk::DICOMSeriesFileNames::Pointer nameGenerator = itk::DICOMSeriesFileNames::New();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;nameGenerator-&gt;SetDirectory(fname);<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;try<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;typedef std::vector&lt;std::string&gt; seriesIdContainer;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;const seriesIdContainer &amp; seriesUID = nameGenerator-&gt;GetSeriesUIDs();<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;seriesIdContainer::const_iterator seriesItr = seriesUID.begin();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;seriesIdContainer::const_iterator seriesEnd = seriesUID.end();<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; std::endl &lt;&lt; &quot;The directory: &quot; &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; std::endl &lt;&lt; fname &lt;&lt; std::endl &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;Contains the following DICOM Series: &quot;;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;while( seriesItr != seriesEnd )<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; seriesItr-&gt;c_str() &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;seriesItr++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; &quot;Now reading series: &quot; &lt;&lt; std::endl &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;typedef std::vector&lt;std::string&gt; fileNamesContainer;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;fileNamesContainer fileNames;<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; seriesUID.begin()-&gt;c_str() &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;fileNames = nameGenerator-&gt;GetFileNames();<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;reader2-&gt;SetFileNames( fileNames );<br>
 &nbsp; &nbsp; &nbsp; &nbsp;reader2-&gt;SetImageIO( dicomIO );<br>
 &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;try{ &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reader2-&gt;Update(); &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;catch (itk::ExceptionObject &amp; e) &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;{ &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;std::cerr &lt;&lt; &quot;Failed to read &quot; &lt;&lt; fname &lt;&lt; &quot;\n&quot; &lt;&lt; e.GetDescription() &lt;&lt; std::endl; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return NULL; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp;}<br>

 &nbsp; &nbsp; &nbsp; &nbsp;exporter-&gt;SetInput(reader2-&gt;GetOutput());<br>
 &nbsp; &nbsp;}<br>
 &nbsp; &nbsp;catch (itk::ExceptionObject &amp;ex)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;std::cout &lt;&lt; ex;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return NULL;<br>
 &nbsp; &nbsp;}<br>
 &nbsp;  &nbsp; &nbsp;}<br>
 &nbsp;  &nbsp; &nbsp;exporter-&gt;Update();<br>
 &nbsp;  &nbsp; &nbsp;vtkImageData* output=vtkImageData::New();<br>
 &nbsp; &nbsp;output-&gt;DeepCopy(exporter-&gt;GetOutput());<br>
 &nbsp;  &nbsp; &nbsp;return output;<br>
} <br>
P.S: This renderer is a Rendering Area of vtkmm.<br>
<br>
Best Regards..<br></div></div>
2008/9/27 Luis Ibanez &lt;<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a> &lt;mailto:<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a>&gt;&gt;<div class="Ih2E3d">
<br>
<br>
<br>
 &nbsp; &nbsp;Hi Jihan,<br>
<br>
 &nbsp; &nbsp;Please describe what is &quot;different&quot; about the image when you display it.<br>
<br>
 &nbsp; &nbsp;Also, what are you using for displaying the image ?<br>
<br>
 &nbsp; &nbsp;Have you used the ImageViewer to visualize the image ?<br>
 &nbsp; &nbsp;You will find it in the InsightApplications module.<br>
<br>
<br>
 &nbsp; &nbsp; Regards,<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; Luis<br>
<br>
<br>
 &nbsp; &nbsp;--------------------<br>
 &nbsp; &nbsp;Jihan Zoghbi wrote:<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Hi all,<br>
 &nbsp; &nbsp; &nbsp; &nbsp;I have a set of Analyze Image. I used ITK to read the .hdr file<br>
 &nbsp; &nbsp; &nbsp; &nbsp;and it got all right. I export this image to vtk, I&#39;m facing a<br>
 &nbsp; &nbsp; &nbsp; &nbsp;great problem to display a 2D Slice. I already checked the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;header data like: Spacing, Extent, Origin ..and everything is<br>
 &nbsp; &nbsp; &nbsp; &nbsp;ok! I &#39;m using unsigned short as a pixel type. I used the<br>
 &nbsp; &nbsp; &nbsp; &nbsp;vtkExtractVOI to extract a &nbsp;2D slice, &nbsp;but when I try to<br>
 &nbsp; &nbsp; &nbsp; &nbsp;visualize it, i got a total different image. Could anybody help me?<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Regards<br>
 &nbsp; &nbsp; &nbsp; &nbsp;--  &nbsp; &nbsp; &nbsp; &nbsp;Jihan Zoghbi<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;--  &nbsp; &nbsp; &nbsp; &nbsp;Jihan Zoghbi<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;------------------------------------------------------------------------<br>
<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;_______________________________________________<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Insight-users mailing list<br></div>
 &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:Insight-users@itk.org" target="_blank">Insight-users@itk.org</a> &lt;mailto:<a href="mailto:Insight-users@itk.org" target="_blank">Insight-users@itk.org</a>&gt;<div class="Ih2E3d"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br>
<br>
<br>
<br>
-- <br>
Jihan Zoghbi<br>
</div></blockquote>
</blockquote></div><br><br clear="all"><br>-- <br>Jihan Zoghbi<br>
</div>