Hi,<div><br></div><div>I&#39;m working with Jesús and we found the problem: we upgraded from GDCM 2.0.14 to 2.0.15 but ITK 3.18 wasn&#39;t been rebuilt. However, we need to build GDCM 2.0.15 with VTK support but then it isn&#39;t possible to build ITK using external GDCM 2.0.15+VTK as we&#39;re discussing here: <a href="http://www.itk.org/pipermail/insight-users/2010-July/037515.html">http://www.itk.org/pipermail/insight-users/2010-July/037515.html</a>. </div>
<div><br></div><div>Have you found a solution to be able to compile ITK?  </div><div><br></div><div>Thanks!</div><div><br></div><div>Roger</div><div><br><div class="gmail_quote">On Tue, Jul 27, 2010 at 1:34 PM, Mathieu Malaterre <span dir="ltr">&lt;<a href="mailto:mathieu.malaterre@gmail.com">mathieu.malaterre@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">You said you were using ITK+GDCM2. If this is the case then this is<br>
already integrated for you.<br>
<br>
BTW, this does not impact CT, so there is something else going on, on<br>
your setup.<br>
<br>
HTH<br>
<div><div></div><div class="h5"><br>
On Tue, Jul 27, 2010 at 1:13 PM, Jesús Spí­nola &lt;<a href="mailto:jspinola@gmail.com">jspinola@gmail.com</a>&gt; wrote:<br>
&gt; Hi Mathieu,<br>
&gt; I get the same result as you running &quot;gdcmviewer&quot;. The issue is occurring<br>
&gt; under windows, I haven&#39;t tested under any other operating system.<br>
&gt; How can I achieve the &quot;--force-rescale&quot; behaviour with my sample program?<br>
&gt; I&#39;ll take a look to the gdcmviewer app too.<br>
&gt;<br>
&gt; On Fri, Jul 23, 2010 at 7:17 PM, Mathieu Malaterre<br>
&gt; &lt;<a href="mailto:mathieu.malaterre@gmail.com">mathieu.malaterre@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Jesús,<br>
&gt;&gt;<br>
&gt;&gt;  First thing first what do you get when you run:<br>
&gt;&gt;<br>
&gt;&gt; $ gdcmviewer --force-rescale -V 05119865-mr-siemens-avanto-syngo.dcm<br>
&gt;&gt;<br>
&gt;&gt; I am getting:<br>
&gt;&gt;<br>
&gt;&gt; ...<br>
&gt;&gt;  Increments: (0, 0, 0)<br>
&gt;&gt;  Extent: (0, 447, 0, 335, 0, 0)<br>
&gt;&gt;<br>
&gt;&gt; Range: -1186 526<br>
&gt;&gt;<br>
&gt;&gt; Which seems about right, according to your number.<br>
&gt;&gt;<br>
&gt;&gt; Thanks !<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Jul 23, 2010 at 10:56 AM, Jesús Spí­nola &lt;<a href="mailto:jspinola@gmail.com">jspinola@gmail.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Hi,<br>
&gt;&gt; &gt; So far I was using gdcm 2.0.14 and I was able to read any image with no<br>
&gt;&gt; &gt; problem, but I upgraded recently to gdcm 2.0.15 and I found a problem<br>
&gt;&gt; &gt; reading some CT and MR DICOM image files.<br>
&gt;&gt; &gt; The way I&#39;m reading DICOM files is using itkGDCMImageIO with<br>
&gt;&gt; &gt; itkImageSeriesReader and then filtering the output to vtk for the image<br>
&gt;&gt; &gt; rendering.<br>
&gt;&gt; &gt; The problem is that some images are now (gdcm 2.0.15) loaded with a<br>
&gt;&gt; &gt; different scalar range than before (gdcm 2.0.14), hence they are not<br>
&gt;&gt; &gt; displayed properly with the default window/level setting (almost<br>
&gt;&gt; &gt; completely<br>
&gt;&gt; &gt; white in most CT cases for instance). I observed that the images with<br>
&gt;&gt; &gt; trouble were those containing rescale intercept/slope tags with some<br>
&gt;&gt; &gt; value.<br>
&gt;&gt; &gt; The images with no rescale intercept/slope present are displayed as<br>
&gt;&gt; &gt; expected, so my guess is there is some problem regarding the<br>
&gt;&gt; &gt; intercept/slope<br>
&gt;&gt; &gt; rescale computation.<br>
&gt;&gt; &gt; I&#39;ve written a little program which reads a DICOM image and renders it<br>
&gt;&gt; &gt; with<br>
&gt;&gt; &gt; vtk to reproduce the bug. Then I compiled it against gdcm 2.0.14 and<br>
&gt;&gt; &gt; 2.0.15<br>
&gt;&gt; &gt; to see the differences between each other. The source code is at the end<br>
&gt;&gt; &gt; of<br>
&gt;&gt; &gt; this e-mail.<br>
&gt;&gt; &gt; I&#39;ve been testing with some DICOM images<br>
&gt;&gt; &gt; from <a href="http://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmData.tar.gz" target="_blank">http://www.creatis.insa-lyon.fr/~jpr/PUBLIC/gdcm/gdcmData.tar.gz</a>.<br>
&gt;&gt; &gt; Some<br>
&gt;&gt; &gt; of these test images are valid to reproduce the problem, in this case<br>
&gt;&gt; &gt; I&#39;ll<br>
&gt;&gt; &gt; show you the results with<br>
&gt;&gt; &gt; MR-MONO2-12-shoulder.dcm, CT-SIEMENS-Icone-With-PaletteColor.dcm<br>
&gt;&gt; &gt; and 05119865-mr-siemens-avanto-syngo.dcm.<br>
&gt;&gt; &gt; In the following table I show some of the relevant information of each<br>
&gt;&gt; &gt; image<br>
&gt;&gt; &gt; and the scalar range I get building the program against gdcm 2.0.14 and<br>
&gt;&gt; &gt; 2.0.15. The right scalar range is the one obtained with gdcm 2.0.14. The<br>
&gt;&gt; &gt; result is specially bad with the MR-MONO2-12-shoulder.dcm image.<br>
&gt;&gt; &gt; File WW,WL Bits Allocated/Stored Rescale Slope/Intercept Scalar Range:<br>
&gt;&gt; &gt; 2.0.14 Build           2.0.15 Build<br>
&gt;&gt; &gt; MR-MONO2-12-shoulder.dcm 2000,1000 16/12 3.774114, 0.000061 0..2245<br>
&gt;&gt; &gt; -32065..32556<br>
&gt;&gt; &gt; CT-SIEMENS-Icone-With-PaletteColor.dcm 350,40 16/12 1, -1024 -1024..981<br>
&gt;&gt; &gt; 0..2005<br>
&gt;&gt; &gt; 05119865-mr-siemens-avanto-syngo.dcm 1538,98 16/12 2, -4096 -1186..526<br>
&gt;&gt; &gt; 1455..2311<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I tested with itk 3.18 and vtk 5.6,  (the vtk version might not make any<br>
&gt;&gt; &gt; sense in the results because the problem is just in the reading stage).<br>
&gt;&gt; &gt; (Look at some screenshots of the results)<br>
&gt;&gt; &gt; //<br>
&gt;&gt; &gt; // SOURCE CODE<br>
&gt;&gt; &gt; //<br>
&gt;&gt; &gt; //<br>
&gt;&gt; &gt; // You&#39;ll need also itkImageToVTKImageFilter class, available in the<br>
&gt;&gt; &gt; InsightApplications package under &quot;Auxiliary\vtk&quot; folder<br>
&gt;&gt; &gt; //<br>
&gt;&gt; &gt; // Usage: main.exe DICOMFilename [WindowWidth WindowLevel]<br>
&gt;&gt; &gt; #include &lt;vtkImageviewer2.h&gt;<br>
&gt;&gt; &gt; #include &lt;vtkRenderWindowInteractor.h&gt;<br>
&gt;&gt; &gt; #include &lt;vtkRenderWindow.h&gt;<br>
&gt;&gt; &gt; #include &lt;itkImage.h&gt;<br>
&gt;&gt; &gt; #include &lt;itkImageSeriesReader.h&gt;<br>
&gt;&gt; &gt; #include &lt;itkGDCMImageIO.h&gt;<br>
&gt;&gt; &gt; #include &quot;itkImageToVTKImageFilter.h&quot; //Converts an ITK image into a VTK<br>
&gt;&gt; &gt; image and plugs a itk data pipeline to a VTK datapipeline.<br>
&gt;&gt; &gt; int main(int argc, char* argv[])<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt;     // Voxel type and image dimension<br>
&gt;&gt; &gt;     typedef signed short int VoxelType;<br>
&gt;&gt; &gt;     typedef VoxelType ItkPixelType;<br>
&gt;&gt; &gt;     static const unsigned int VDimension = 3;<br>
&gt;&gt; &gt;     // Itk Image type<br>
&gt;&gt; &gt;     typedef itk::Image&lt;ItkPixelType, VDimension&gt; ItkImageType;<br>
&gt;&gt; &gt;     typedef ItkImageType::Pointer ItkImageTypePointer;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;     // Series reader<br>
&gt;&gt; &gt;     typedef itk::ImageSeriesReader&lt;ItkImageType&gt; SeriesReaderType;<br>
&gt;&gt; &gt;     typedef itk::GDCMImageIO ImageIOType;<br>
&gt;&gt; &gt;     // itk2vtk filter<br>
&gt;&gt; &gt;     typedef itk::ImageToVTKImageFilter&lt;ItkImageType&gt; ItkToVtkFilterType;<br>
&gt;&gt; &gt;     /// DICOM Reader<br>
&gt;&gt; &gt;     SeriesReaderType::Pointer m_seriesReader = SeriesReaderType::New();<br>
&gt;&gt; &gt;     ImageIOType::Pointer m_gdcmIO = ImageIOType::New();<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;     m_seriesReader-&gt;SetImageIO(m_gdcmIO);<br>
&gt;&gt; &gt;     ItkToVtkFilterType::Pointer m_itkToVtkFilter =<br>
&gt;&gt; &gt; ItkToVtkFilterType::New();<br>
&gt;&gt; &gt;     // Check the number of parameters given<br>
&gt;&gt; &gt;     if (argc &gt;= 2)<br>
&gt;&gt; &gt;     {<br>
&gt;&gt; &gt;         // Create the renderer object and configure it<br>
&gt;&gt; &gt;         vtkImageViewer2 *viewer = vtkImageViewer2::New();<br>
&gt;&gt; &gt;         vtkRenderWindowInteractor *interactor =<br>
&gt;&gt; &gt; vtkRenderWindowInteractor::New();<br>
&gt;&gt; &gt;         viewer-&gt;SetupInteractor(interactor);<br>
&gt;&gt; &gt;         // Set the first argument as the input filename to read<br>
&gt;&gt; &gt;         // Atention: We don&#39;t check whether the file is valid or not<br>
&gt;&gt; &gt;         m_seriesReader-&gt;SetFileName(argv[1]);<br>
&gt;&gt; &gt;         m_itkToVtkFilter-&gt;SetInput(m_seriesReader-&gt;GetOutput());<br>
&gt;&gt; &gt;         try<br>
&gt;&gt; &gt;         {<br>
&gt;&gt; &gt;             m_itkToVtkFilter-&gt;Update();<br>
&gt;&gt; &gt;         }<br>
&gt;&gt; &gt;         catch (itk::ExceptionObject &amp; exception)<br>
&gt;&gt; &gt;         {<br>
&gt;&gt; &gt;             std::cerr &lt;&lt; &quot;Exception caught!&quot; &lt;&lt;<br>
&gt;&gt; &gt; exception.GetDescription()<br>
&gt;&gt; &gt; &lt;&lt; std::endl;<br>
&gt;&gt; &gt;         }<br>
&gt;&gt; &gt;         // Show some information about the image<br>
&gt;&gt; &gt;         m_itkToVtkFilter-&gt;GetOutput()-&gt;Print(std::cout);<br>
&gt;&gt; &gt;         std::cerr &lt;&lt; &quot;** Scalar Range **&quot; &lt;&lt; std::endl;<br>
&gt;&gt; &gt;         std::cerr &lt;&lt; m_itkToVtkFilter-&gt;GetOutput()-&gt;GetScalarRange()[0]<br>
&gt;&gt; &gt; &lt;&lt;<br>
&gt;&gt; &gt; &quot;..&quot; &lt;&lt; m_itkToVtkFilter-&gt;GetOutput()-&gt;GetScalarRange()[1] &lt;&lt; std::endl;<br>
&gt;&gt; &gt;         // Set the viewer input (DICOM File) and do the rendering stuff<br>
&gt;&gt; &gt;         viewer-&gt;SetInput(m_itkToVtkFilter-&gt;GetOutput());<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;         // We can optionally set the window/level through the arguments<br>
&gt;&gt; &gt;         if (argc &gt;=4)<br>
&gt;&gt; &gt;         {<br>
&gt;&gt; &gt;             std::cout &lt;&lt; &quot;Applying given ww/wl: &quot; &lt;&lt; argv[2] &lt;&lt; &quot;, &quot; &lt;&lt;<br>
&gt;&gt; &gt; argv[3] &lt;&lt; std::endl;<br>
&gt;&gt; &gt;             viewer-&gt;SetColorWindow(atof(argv[2]));<br>
&gt;&gt; &gt;             viewer-&gt;SetColorLevel(atof(argv[3]));<br>
&gt;&gt; &gt;         }<br>
&gt;&gt; &gt;         else<br>
&gt;&gt; &gt;         {<br>
&gt;&gt; &gt;             std::cout &lt;&lt; &quot;Applying default ww/wl: 256, 128&quot; &lt;&lt;<br>
&gt;&gt; &gt; std::endl;<br>
&gt;&gt; &gt;             viewer-&gt;SetColorWindow(256);<br>
&gt;&gt; &gt;             viewer-&gt;SetColorLevel(128);<br>
&gt;&gt; &gt;         }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;         viewer-&gt;Render();<br>
&gt;&gt; &gt;         interactor-&gt;Start();<br>
&gt;&gt; &gt;     }<br>
&gt;&gt; &gt;     else<br>
&gt;&gt; &gt;     {<br>
&gt;&gt; &gt;         std::cerr &lt;&lt; &quot;Usage: main.exe DICOMFilename [WindowWidth<br>
&gt;&gt; &gt; WindowLevel]&quot; &lt;&lt; std::endl;<br>
&gt;&gt; &gt;     }<br>
&gt;&gt; &gt;     return 0;<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Jesús Spínola<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Mathieu<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Jesús Spínola<br>
&gt;<br>
<br>
<br>
<br>
</div></div>--<br>
Mathieu<br>
<br>
------------------------------------------------------------------------------<br>
The Palm PDK Hot Apps Program offers developers who use the<br>
Plug-In Development Kit to bring their C/C++ apps to Palm for a share<br>
of $1 Million in cash or HP Products. Visit us here for more details:<br>
<a href="http://ad.doubleclick.net/clk;226879339;13503038;l" target="_blank">http://ad.doubleclick.net/clk;226879339;13503038;l</a>?<br>
<a href="http://clk.atdmt.com/CRS/go/247765532/direct/01/" target="_blank">http://clk.atdmt.com/CRS/go/247765532/direct/01/</a><br>
_______________________________________________<br>
Gdcm-developers mailing list<br>
<a href="mailto:Gdcm-developers@lists.sourceforge.net">Gdcm-developers@lists.sourceforge.net</a><br>
<a href="https://lists.sourceforge.net/lists/listinfo/gdcm-developers" target="_blank">https://lists.sourceforge.net/lists/listinfo/gdcm-developers</a><br>
</blockquote></div><br></div>