<div dir="ltr">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><span dir="ltr" id=":xl">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);</span><br>
/*****************************************************/<br>void window1::addAxialSlice(int slice_number)<br>{<br>&nbsp;&nbsp;&nbsp; int *extent;<br>&nbsp;&nbsp;&nbsp; extent = dicom_info-&gt;GetWholeExtent();<br>&nbsp;&nbsp;&nbsp; renderer-&gt;RemoveActor(axial);<br>

&nbsp;&nbsp;&nbsp; axialColors = vtkImageMapToColors::New();<br><br><div dir="ltr">SetInputConnection(image-&gt;GetOutputPort());<br>&nbsp;&nbsp;&nbsp; axialColors-&gt;SetInput(dicom_info);<br>&nbsp;&nbsp;&nbsp; axialColors-&gt;SetLookupTable(hueLut);<br>&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; axial = vtkImageActor::New();<br>&nbsp;&nbsp;&nbsp; axial-&gt;SetInput(axialColors-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp; axial-&gt;SetDisplayExtent(0,extent[1], 0,extent[3], slice_number,slice_number);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; axial-&gt;SetPosition(0,0,0);<br>
<br>&nbsp;&nbsp;&nbsp; renderer-&gt;AddActor(axial);<br>&nbsp;&nbsp;&nbsp; renderer-&gt;ResetCameraClippingRange();<br>&nbsp;&nbsp;&nbsp; renArea-&gt;queue_draw();<br clear="all"></div><span dir="ltr" id=":xl"></span>}<br>/******************************************************/<br>
<br>template &lt;class IT,int choice&gt;<br>vtkImageData* vtkITKMyUtilityLoadImage(char* fname)<br>{<br>&nbsp;&nbsp;&nbsp; typedef itk::Image&lt; IT,&nbsp; 3 &gt;&nbsp;&nbsp;&nbsp; ImageType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageToVTKImageFilter&lt;<div dir="ltr">ImageType&gt; ImageToVTKImageFilterType;<br>

&nbsp;&nbsp;&nbsp; typedef itk::ImageFileReader&lt; ImageType&nbsp; &gt;&nbsp; ReaderType;<br>&nbsp;&nbsp;&nbsp; typedef itk::ImageSeriesReader&lt; ImageType &gt; ReaderType2;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typename ReaderType::Pointer reader = ReaderType::New();<br>&nbsp;&nbsp;&nbsp; typename ReaderType2::Pointer reader2 = ReaderType2::New();<br>

&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; typename ImageToVTKImageFilterType::Pointer exporter=ImageToVTKImageFilterType::New();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (choice==0){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; reader-&gt;SetFileName(fname);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; reader-&gt;Update();&nbsp;&nbsp;&nbsp; <br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp; e)&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br>&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; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return NULL;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exporter-&gt;SetInput(reader-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; if (choice==1){<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; itk::DICOMImageIO2::Pointer dicomIO = itk::DICOMImageIO2::New();<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Get the DICOM filenames from the directory<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; itk::DICOMSeriesFileNames::Pointer nameGenerator = itk::DICOMSeriesFileNames::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; nameGenerator-&gt;SetDirectory(fname);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef std::vector&lt;std::string&gt; seriesIdContainer;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; const seriesIdContainer &amp; seriesUID = nameGenerator-&gt;GetSeriesUIDs();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; seriesIdContainer::const_iterator seriesItr = seriesUID.begin();<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; seriesIdContainer::const_iterator seriesEnd = seriesUID.end();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&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;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; fname &lt;&lt; std::endl &lt;&lt; std::endl;<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; &quot;Contains the following DICOM Series: &quot;;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; while( seriesItr != seriesEnd )<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &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; &nbsp;&nbsp;&nbsp; seriesItr++;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&nbsp;&nbsp;&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; <br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; typedef std::vector&lt;std::string&gt; fileNamesContainer;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fileNamesContainer fileNames;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; seriesUID.begin()-&gt;c_str() &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fileNames = nameGenerator-&gt;GetFileNames();<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; std::endl &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; reader2-&gt;SetFileNames( fileNames );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; reader2-&gt;SetImageIO( dicomIO );<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; try{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; reader2-&gt;Update();&nbsp;&nbsp;&nbsp; <br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp; e)&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; <br>&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; <br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return NULL;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exporter-&gt;SetInput(reader2-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch (itk::ExceptionObject &amp;ex)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::cout &lt;&lt; ex;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return NULL;<br>

&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; exporter-&gt;Update();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; vtkImageData* output=vtkImageData::New();<br>&nbsp;&nbsp;&nbsp; output-&gt;DeepCopy(exporter-&gt;GetOutput());<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; return output;<br>}&nbsp; </div><br>P.S: This renderer is a Rendering Area of vtkmm.<br>
<br>Best Regards..<br><div class="gmail_quote">2008/9/27 Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com" target="_blank">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;">

<br>
Hi Jihan,<br>
<br>
Please describe what is &quot;different&quot; about the image when you display it.<br>
<br>
Also, what are you using for displaying the image ?<br>
<br>
Have you used the ImageViewer to visualize the image ?<br>
You will find it in the InsightApplications module.<br>
<br>
<br>
 &nbsp;Regards,<br>
<br>
<br>
 &nbsp; &nbsp;Luis<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>
<br>
Hi all,<br>
I have a set of Analyze Image. I used ITK to read the .hdr file and it got all right. I export this image to vtk, I&#39;m facing a great problem to display a 2D Slice. I already checked the header data like: Spacing, Extent, Origin ..and everything is ok! I &#39;m using unsigned short as a pixel type. I used the vtkExtractVOI to extract a &nbsp;2D slice, &nbsp;but when I try to visualize it, i got a total different image. Could anybody help me?<br>


<br>
Regards<br>
-- <br>
Jihan Zoghbi<br>
<br>
-- <br>
Jihan Zoghbi<br>
<br>
<br></div></div>
------------------------------------------------------------------------<div><br>
<br>
_______________________________________________<br>
Insight-users mailing list<br>
<a href="mailto:Insight-users@itk.org" target="_blank">Insight-users@itk.org</a><br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</div></blockquote>
</blockquote></div><br><br clear="all"><br>-- <br>Jihan Zoghbi<br>
</div>