I also found that the example is able to read the ultrasound image and write it properly (for the second output) if you save it not in .dcm but .bmp<div><br></div><div>So the trouble should be in the GDCM library integration.<br>

<br><div class="gmail_quote">2010/4/27 Sik <span dir="ltr">&lt;<a href="mailto:mailsik@gmail.com">mailsik@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
Same trouble here,<br>
<br>
The thing is that if the example is call it with the dicom files available<br>
for testing then it works fine. However if an ultrasound image is used (such<br>
the ones available  <a href="http://barre.nom.fr/medical/samples/index.html" target="_blank">http://barre.nom.fr/medical/samples/index.html</a> here ),<br>
the example does not work giving the here discussed error as output.<br>
<br>
Any Ideas?<br>
<br>
Best, Sik.<br>
<br>
Luis Ibanez wrote:<br>
&gt;<br>
&gt; Hi Edoardo,<br>
&gt;<br>
&gt;<br>
&gt; Thanks for you detailed description of the<br>
&gt; problem and for posting your source code.<br>
&gt;<br>
&gt;<br>
&gt; I just tried your code and...<br>
&gt; it works for me.<br>
&gt;<br>
&gt;<br>
&gt; I ran it as:<br>
&gt;<br>
&gt; ./DicomImageReadWrite itkGDCMImageIOTest3.dcm output1.dcm output2.dcm<br>
&gt; output3.dcm<br>
&gt;<br>
&gt; where the image<br>
&gt;<br>
&gt;              itkGDCMImageIOTest3.dcm<br>
&gt;<br>
&gt; is the one that you can find in<br>
&gt;<br>
&gt;    Insight/Testing/Data/Input/<br>
&gt;                   itkGDCMImageIOTest3.dcm<br>
&gt;<br>
&gt;<br>
&gt; -------<br>
&gt;<br>
&gt; At this point the suspects are:<br>
&gt;<br>
&gt; 1)  Writing permission in your directory:<br>
&gt;<br>
&gt;      Please check that you have permissions<br>
&gt;      to write in the directory from where you<br>
&gt;      are running this executable.<br>
&gt;<br>
&gt; and<br>
&gt;<br>
&gt; 2)  Something may be special about the<br>
&gt;      DICOM file that you are passing as<br>
&gt;      input to this code.<br>
&gt;<br>
&gt;      Is this a 2D image slice ?<br>
&gt;<br>
&gt;      Please tell us more about that file.<br>
&gt;<br>
&gt;<br>
&gt; ---<br>
&gt;<br>
&gt;<br>
&gt;       Thanks,<br>
&gt;<br>
&gt;<br>
&gt;              Luis<br>
&gt;<br>
&gt;<br>
&gt; --------------------------------------------------------------------<br>
&gt; On Thu, Mar 4, 2010 at 5:31 PM,  &lt;<a href="mailto:edoardo.belletti@alice.it">edoardo.belletti@alice.it</a>&gt; wrote:<br>
&gt;&gt; Hi<br>
&gt;&gt; I have a problem with the example: Examples/IO/DicomImageReadWrite.cxx of<br>
&gt;&gt; the ItkSoftwareGuide<br>
&gt;&gt;<br>
&gt;&gt; I don&#39;t understand why when I run it (with this command<br>
&gt;&gt; ./DicomImageReadWrite carotid.dcm out1.dcm out2.dcm out3.dcm) with a<br>
&gt;&gt; dicom<br>
&gt;&gt; image as input (carotid.dcm) my output is that:<br>
&gt;&gt;<br>
&gt;&gt; exception in file writer [1]<br>
&gt;&gt;<br>
&gt;&gt; itk::ExceptionObject (0xa0c25a8)<br>
&gt;&gt; Location: &quot;virtual void itk::GDCMImageIO::Write(const void*)&quot;<br>
&gt;&gt; File: /usr/local/itk/InsightToolkit-3.16.0/Code/IO/itkGDCMImageIO.cxx<br>
&gt;&gt; Line: 1827<br>
&gt;&gt; Description: itk::ERROR: GDCMImageIO(0xa0c11a0): Cannot write the<br>
&gt;&gt; requested<br>
&gt;&gt; file:out1.dcm<br>
&gt;&gt; Reason: Success<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; My code is:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; #if defined(_MSC_VER)<br>
&gt;&gt; #pragma warning ( disable : 4786 )<br>
&gt;&gt; #endif<br>
&gt;&gt;<br>
&gt;&gt; #ifdef __BORLANDC__<br>
&gt;&gt; #define ITK_LEAN_AND_MEAN<br>
&gt;&gt; #endif<br>
&gt;&gt;<br>
&gt;&gt; #include &quot;itkImageFileReader.h&quot;<br>
&gt;&gt; #include &quot;itkImageFileWriter.h&quot;<br>
&gt;&gt; #include &quot;itkRescaleIntensityImageFilter.h&quot;<br>
&gt;&gt; #include &quot;itkGDCMImageIO.h&quot;<br>
&gt;&gt;<br>
&gt;&gt; #include &lt;list&gt;<br>
&gt;&gt; #include &lt;fstream&gt;<br>
&gt;&gt;<br>
&gt;&gt; int main( int argc, char* argv[] )<br>
&gt;&gt; {<br>
&gt;&gt;<br>
&gt;&gt;         // Verify the number of parameters in the command line<br>
&gt;&gt;         if( argc &lt; 5 )<br>
&gt;&gt;         {<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;<br>
&gt;&gt;                 std::cerr &lt;&lt; argv[0] &lt;&lt; &quot; DicomImage OutputDicomImage &quot;;<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot; OutputImage RescaleDicomImage\n&quot;;<br>
&gt;&gt;                 return EXIT_FAILURE;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt;         // Declare the pixel type and image dimension, and use them for<br>
&gt;&gt;         // instantiating the image type to be read.<br>
&gt;&gt;<br>
&gt;&gt;         typedef signed short InputPixelType;<br>
&gt;&gt;         const unsigned int   InputDimension = 2;<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::Image&lt; InputPixelType, InputDimension &gt;<br>
&gt;&gt; InputImageType;<br>
&gt;&gt;<br>
&gt;&gt;         // Instantiate the type of the reader, create one,<br>
&gt;&gt;         // and set the filename of the image to be read.<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::ImageFileReader&lt; InputImageType &gt; ReaderType;<br>
&gt;&gt;<br>
&gt;&gt;         ReaderType::Pointer reader = ReaderType::New();<br>
&gt;&gt;         reader-&gt;SetFileName( argv[1] );<br>
&gt;&gt;<br>
&gt;&gt;         // The GDCMImageIO object is constructed here and connected to<br>
&gt;&gt;         // the ImageFileReader.<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::GDCMImageIO           ImageIOType;<br>
&gt;&gt;<br>
&gt;&gt;         ImageIOType::Pointer gdcmImageIO = ImageIOType::New();<br>
&gt;&gt;<br>
&gt;&gt;         reader-&gt;SetImageIO( gdcmImageIO );<br>
&gt;&gt;<br>
&gt;&gt;         // Trigger the reading process by invoking the Update() method.<br>
&gt;&gt;<br>
&gt;&gt;         try<br>
&gt;&gt;         {<br>
&gt;&gt;                 reader-&gt;Update();<br>
&gt;&gt;         }<br>
&gt;&gt;         catch (itk::ExceptionObject &amp; e)<br>
&gt;&gt;         {<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot;exception in file reader &quot; &lt;&lt; std::endl;<br>
&gt;&gt;                 std::cerr &lt;&lt; e &lt;&lt; std::endl;<br>
&gt;&gt;                 return EXIT_FAILURE;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt;         // Instantiate an ImageFileWriter type.<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::ImageFileWriter&lt; InputImageType &gt;  Writer1Type;<br>
&gt;&gt;<br>
&gt;&gt;         Writer1Type::Pointer writer1 = Writer1Type::New();<br>
&gt;&gt;<br>
&gt;&gt;         writer1-&gt;SetFileName( argv[2] );<br>
&gt;&gt;         writer1-&gt;SetInput( reader-&gt;GetOutput() );<br>
&gt;&gt;<br>
&gt;&gt;         //  Set the proper image IO (GDCMImageIO) to the writer filter<br>
&gt;&gt; since<br>
&gt;&gt; the input<br>
&gt;&gt;         //  DICOM dictionary is being passed along the writing process.<br>
&gt;&gt;<br>
&gt;&gt;         writer1-&gt;SetImageIO( gdcmImageIO );<br>
&gt;&gt;<br>
&gt;&gt;         // The writing process is triggered by invoking the Update()<br>
&gt;&gt; method.<br>
&gt;&gt;<br>
&gt;&gt;         try<br>
&gt;&gt;         {<br>
&gt;&gt;                 writer1-&gt;Update();<br>
&gt;&gt;         }<br>
&gt;&gt;         catch (itk::ExceptionObject &amp; e)<br>
&gt;&gt;         {<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot;exception in file writer [1] &quot; &lt;&lt;<br>
&gt;&gt; std::endl;<br>
&gt;&gt;                 std::cerr &lt;&lt; e &lt;&lt; std::endl;<br>
&gt;&gt;                 return EXIT_FAILURE;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt;         //  Rescale the image into a rescaled image one using the rescale<br>
&gt;&gt; intensity image filter.<br>
&gt;&gt;         //  For this purpose we use a better suited pixel type: unsigned<br>
&gt;&gt; char instead of signed<br>
&gt;&gt;         //  short.  The minimum and maximum values of the output image<br>
&gt;&gt; are<br>
&gt;&gt; explicitly defined in<br>
&gt;&gt;         //  the rescaling filter.<br>
&gt;&gt;<br>
&gt;&gt;         typedef unsigned char WritePixelType;<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::Image&lt; WritePixelType, 2 &gt; WriteImageType;<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::RescaleIntensityImageFilter&lt; InputImageType,<br>
&gt;&gt; WriteImageType &gt; RescaleFilterType;<br>
&gt;&gt;<br>
&gt;&gt;         RescaleFilterType::Pointer rescaler = RescaleFilterType::New();<br>
&gt;&gt;<br>
&gt;&gt;         rescaler-&gt;SetOutputMinimum(   0 );<br>
&gt;&gt;         rescaler-&gt;SetOutputMaximum( 255 );<br>
&gt;&gt;<br>
&gt;&gt;         // Create a second writer object that will save the rescaled<br>
&gt;&gt; image<br>
&gt;&gt; into a<br>
&gt;&gt;         // file. This time not in DICOM format.<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::ImageFileWriter&lt; WriteImageType &gt;  Writer2Type;<br>
&gt;&gt;<br>
&gt;&gt;         Writer2Type::Pointer writer2 = Writer2Type::New();<br>
&gt;&gt;<br>
&gt;&gt;         writer2-&gt;SetFileName( argv[3] );<br>
&gt;&gt;<br>
&gt;&gt;         rescaler-&gt;SetInput( reader-&gt;GetOutput() );<br>
&gt;&gt;         writer2-&gt;SetInput( rescaler-&gt;GetOutput() );<br>
&gt;&gt;<br>
&gt;&gt;         // The writer can be executed by invoking the Update() method<br>
&gt;&gt; from<br>
&gt;&gt; inside a<br>
&gt;&gt;         // try/catch block.<br>
&gt;&gt;<br>
&gt;&gt;         try<br>
&gt;&gt;         {<br>
&gt;&gt;                 writer2-&gt;Update();<br>
&gt;&gt;         }<br>
&gt;&gt;         catch (itk::ExceptionObject &amp; e)<br>
&gt;&gt;         {<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot;exception in file writer [2]&quot; &lt;&lt; std::endl;<br>
&gt;&gt;                 std::cerr &lt;&lt; e &lt;&lt; std::endl;<br>
&gt;&gt;                 return EXIT_FAILURE;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt;         // Save the same rescaled image into a file in DICOM format.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;         typedef itk::ImageFileWriter&lt; WriteImageType &gt;  Writer3Type;<br>
&gt;&gt;<br>
&gt;&gt;         Writer3Type::Pointer writer3 = Writer3Type::New();<br>
&gt;&gt;<br>
&gt;&gt;         writer3-&gt;SetFileName( argv[4] );<br>
&gt;&gt;         writer3-&gt;SetInput( rescaler-&gt;GetOutput() );<br>
&gt;&gt;<br>
&gt;&gt;         // Explicitly set the proper image IO (GDCMImageIO).<br>
&gt;&gt;<br>
&gt;&gt;         writer3-&gt;UseInputMetaDataDictionaryOff ();<br>
&gt;&gt;         writer3-&gt;SetImageIO( gdcmImageIO );<br>
&gt;&gt;<br>
&gt;&gt;         // Trigger the execution of the DICOM writer by invoking the<br>
&gt;&gt;         // Update() method from inside a try/catch block.<br>
&gt;&gt;<br>
&gt;&gt;         try<br>
&gt;&gt;         {<br>
&gt;&gt;                 writer3-&gt;Update();<br>
&gt;&gt;         }<br>
&gt;&gt;         catch (itk::ExceptionObject &amp; e)<br>
&gt;&gt;         {<br>
&gt;&gt;                 std::cerr &lt;&lt; &quot;Exception in file writer [3]&quot; &lt;&lt; std::endl;<br>
&gt;&gt;                 std::cerr &lt;&lt; e &lt;&lt; std::endl;<br>
&gt;&gt;                 return EXIT_FAILURE;<br>
&gt;&gt;         }<br>
&gt;&gt;<br>
&gt;&gt;         return EXIT_SUCCESS;<br>
&gt;&gt;<br>
&gt;&gt; }<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Thank you very much<br>
&gt;&gt; Edoardo<br>
&gt;&gt;<br>
&gt;&gt; _____________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt;&gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&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;<br>
&gt;&gt;<br>
&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Kitware offers ITK Training Courses, for more information visit:<br>
&gt; <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
&gt;<br>
<br>
--<br>
View this message in context: <a href="http://old.nabble.com/Problem-with-DicomImageReadWrite.cxx-tp27787662p28379712.html" target="_blank">http://old.nabble.com/Problem-with-DicomImageReadWrite.cxx-tp27787662p28379712.html</a><br>


Sent from the ITK - Users mailing list archive at Nabble.com.<br>
<br>
_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Kitware offers ITK Training Courses, for more information visit:<br>
<a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at:<br>
<a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
</blockquote></div><br></div>