Hi Luis,<div><br></div><div>Exactly. My problem was that in the output 3D dicom file only one slice showed the correct information. The rest were just empty. Is this due to the MetaDataDictionary from a single DICOM slice? Thanks,</div>
<div><br></div><div>Ming<br><br><div class="gmail_quote">On Sun, Nov 1, 2009 at 5:11 PM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Ming,<br>
<br>
It looks like you are taking the MetaDataDictionnary from reading a single<br>
DICOM slice with &quot;reader1&quot;, and then passing it to the series writer.<br>
<br>
You may want to read the original series, in order to take the<br>
MetaDataDictionnary from it.<br>
<br>
See the example in:<br>
<br>
         Insight/Examples/IO/<br>
                             DicomSeriesReadSeriesWrite.cxx<br>
<br>
<br>
    Regards,<br>
<br>
<br>
              Luis<br>
<br>
<br>
----------------------------------------------------------------------------------------------<br>
<div><div></div><div class="h5">On Fri, Oct 30, 2009 at 8:35 AM, Ming Chao &lt;<a href="mailto:mingchao2005@gmail.com">mingchao2005@gmail.com</a>&gt; wrote:<br>
&gt; Thanks for your reply.<br>
&gt; Actually the volumetric image I have is originally an RT dose in dicom<br>
&gt; format. I need to process it a bit  so I converted it into .vtk file. Now I<br>
&gt; want to write it back to dicom format. There are 200 slices inside the<br>
&gt; original dicom file. So I thought what I could do is use the dicom header<br>
&gt; from the original RT file and use ImageSeriesWriter to write the mutilslice<br>
&gt; into the new dicom file. I implemented a code, but the problem is that<br>
&gt; albeit new dicom file contains multiple slices, only the first slice is<br>
&gt; correct and the rest are just empty (which means no dose value in each<br>
&gt; pixel).<br>
&gt; I saw some discussions on the list. It appears to me that this is doable.<br>
&gt; would be appreciated if anyone could shed a light. The attached is the code<br>
&gt; I am using.<br>
&gt;<br>
&gt; int main( int argc, char* argv[] ) {<br>
&gt; // Verify the number of parameters in the command line<br>
&gt; if( argc &lt; 4 ) {<br>
&gt; std::cerr &lt;&lt; &quot;Usage: &quot; &lt;&lt; std::endl;<br>
&gt; std::cerr &lt;&lt; argv[0] &lt;&lt; &quot; vtkImage InputDicomImage &quot;;<br>
&gt; std::cerr &lt;&lt; &quot; OutputImage \n&quot;;<br>
&gt; return EXIT_FAILURE;<br>
&gt;     }<br>
&gt; // the following is for an input 2D dicom file<br>
&gt; typedef signed short InputPixelType;<br>
&gt; const unsigned int   InputDimension = 3;<br>
&gt; typedef itk::Image&lt; InputPixelType, InputDimension &gt; InputImageType;<br>
&gt; typedef itk::ImageFileReader&lt; InputImageType &gt; InputReaderType;<br>
&gt; InputReaderType::Pointer reader1 = InputReaderType::New();<br>
&gt; reader1-&gt;SetFileName( argv[1] );<br>
&gt; typedef itk::GDCMImageIO          InputImageIOType;<br>
&gt; InputImageIOType::Pointer gdcmImageIO = InputImageIOType::New();<br>
&gt; reader1-&gt;SetImageIO( gdcmImageIO );<br>
&gt; reader1-&gt;Update();<br>
&gt; std::cout &lt;&lt; &quot; (1) first dicom file is read in successfully ....&quot; &lt;&lt;<br>
&gt; std::endl;<br>
&gt;<br>
&gt; // the following is for a 3D volume file<br>
&gt; typedef signed short PixelType;<br>
&gt; const unsigned int   Dimension = 3;<br>
&gt; typedef itk::Image&lt; PixelType, Dimension &gt; ImageType;<br>
&gt; typedef itk::ImageFileReader&lt; ImageType  &gt;  ReaderType;<br>
&gt;     ReaderType::Pointer reader2 = ReaderType::New();<br>
&gt;     reader2-&gt;SetFileName( argv[2] );<br>
&gt; reader2-&gt;Update();<br>
&gt; std::cout &lt;&lt; &quot; (2) the 3D volume file is read in successfully ....&quot; &lt;&lt;<br>
&gt; std::endl;<br>
&gt;     // the following is for an output 2D dicom file<br>
&gt; typedef signed short OutputPixelType;<br>
&gt; const unsigned int   OutputDimension = 3;<br>
&gt; typedef itk::Image&lt; OutputPixelType, OutputDimension &gt; OutputImageType;<br>
&gt; typedef itk::ImageSeriesWriter&lt; ImageType, OutputImageType &gt;<br>
&gt; OutputWriterType;<br>
&gt; OutputWriterType::Pointer writer = OutputWriterType::New();<br>
&gt; writer-&gt;SetFileName( argv[3] );<br>
&gt; writer-&gt;SetInput( reader2-&gt;GetOutput() );<br>
&gt; writer-&gt;SetMetaDataDictionary( reader1-&gt;GetMetaDataDictionary() );<br>
&gt; gdcmImageIO-&gt;KeepOriginalUIDOn();<br>
&gt; writer-&gt;SetImageIO( gdcmImageIO );<br>
&gt; writer-&gt;Update();<br>
&gt; std::cout &lt;&lt; &quot; (3) the output dicom file is saved successfully and we are<br>
&gt; done....&quot; &lt;&lt; std::endl;<br>
&gt; return 0;<br>
&gt;<br>
&gt;<br>
&gt; On Fri, Oct 30, 2009 at 3:16 AM, 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; On Thu, Oct 29, 2009 at 8:30 PM, Ming Chao &lt;<a href="mailto:mingchao2005@gmail.com">mingchao2005@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; Hello ITKers,<br>
&gt;&gt; &gt; Is it possible to write a 3D volumetric image file into one dicom file<br>
&gt;&gt; &gt; in<br>
&gt;&gt; &gt; itk? Thanks,<br>
&gt;&gt;<br>
&gt;&gt; Short version: no.<br>
&gt;&gt; Long version: yes, if you use GDCM 2.x. I am assuming that by<br>
&gt;&gt; volumetric image, you mean multiframe MR images, or multiframe CT<br>
&gt;&gt; images ? If so there support in  GDCM 1.x was very poor. So unless you<br>
&gt;&gt; actually understand what an Enhanced MR/CT Image Storage is, I would<br>
&gt;&gt; recommend against doing so. If you input is not already in that<br>
&gt;&gt; format, there is no real interest in doing so. BTW most PACS system I<br>
&gt;&gt; know of still do not work properly with those new IODs.<br>
&gt;&gt;<br>
&gt;&gt; Cheers<br>
&gt;&gt; --<br>
&gt;&gt; Mathieu<br>
&gt;<br>
&gt;<br>
</div></div>&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>
</blockquote></div><br></div>