[ITK] [ITK-users] SimpleITK | read a 3D image from a non DICOM file and write it as a series of DICOM slices
Bradley Lowekamp
blowekamp at mail.nih.gov
Thu Jan 15 10:07:58 EST 2015
Hello,
I have just added an ImageSeriesWriter to SimpleITK:
http://www.itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ImageSeriesWriter.html
The hooks for getting the meta-data dictionary in the dicom series aren't quite there yet. But its a step closer. It's actually rather confusing how the tags are handled in the example you linked too, and I'm not sure what exactly needs to be done to create a "valid" dicom series.
Brad
On Dec 31, 2014, at 10:46 AM, Bradley Lowekamp <blowekamp at mail.nih.gov> wrote:
> Hello,
>
> Sorry for the slow reply. Earlier you linked to this nice example for reference:
> http://www.itk.org/Doxygen/html/Examples_2IO_2ImageReadDicomSeriesWrite_8cxx-example.html
>
> With SimpleITK I have done the following when I needed to write a series in Python:
>
> for i in range(img.GetSize()[2]):
> sitk.WriteImage(img[:,:,i],"test_{0:04}.tif".format(i))
>
>
> However it is not quite this simple for a DICOM series. The metadata tags need to be correct too. SimpleITK is not designed to be a full fledge interface to DICOM files. Other tools may be better for that. But this seems like a reasonable thing to do but it's not currently readily available in the SimpleITK interface. Perhaps after some discussion on the best way to do it it and be added.
>
>
> There are 3 main components to this example:
>
> 1) MetaDataDictionary
>
> In SimpleITK the MetaDataDictionary interface is only part of the Image class. Currently it provides a read only interface, with the GetMetaDataKeys(), and GetMetaData(key) methods[1]. This get method only returns the type of data in the dictionary converted to a string.
>
> The required method would be Image::SetMetaData(key,value). The issue would be what types of value need to be supported. For this example only std::string is needed, perhaps others should be overloaded?
>
> 2) NumericSeriesFileNameGenerator
>
> This class only produces a "list" of file names. I think that many of the languages may have a more convenient way to do this. For example in Python:
>
> [ "test_{0:04}.png".format(i) for i in range(img.GetSize()[2]) ]
>
> So I don't think this is so important.
>
> 3) SeriesWriter
>
> What we just used above is different then the SeriesWriter, as special metadata is passed from the ImageSeriesWriter to the ImageIO [2]. Here is the JIRA issue for this task [3].
>
>
> So after these get done something like the following would do what you ask:
>
> import SimpleITK as sitk
>
> img = stik.ReadImage(argv[1])
> img.SetMetaData("008|0060", "MR") // Modality
> img.SetMetaData("008|0008", "DERIVED\\SECONDARY") // Image Type
> img.SetMetaData("008|0064", "DV") // Conversion Type
> sitk.WriteImage(img, [ "test_{0:04}.dcm".format(i) for i in range(img.GetSize()[2]) ])
>
> Does that look like what you are looking for?
>
> Brad
>
> [1] http://www.itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1Image.html#a3d6cb12a211352ee38da5405b9c75928
> [2] https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/IO/ImageBase/include/itkImageSeriesWriter.hxx#L327-L368
> [3] https://issues.itk.org/jira/browse/SIMPLEITK-122
>
> On Dec 29, 2014, at 2:48 PM, Matias Montroull <matimontg at gmail.com> wrote:
>
>> Hi,
>>
>> Is there an example for SimpleITK to read a 3D image from a non Dicom file such as mhd and then write it as a series of DICOM Slices?
>>
>> I can do this with C++ but I haven't been able to figure out how to do it using simpleITK.
>>
>> Thanks,
>>
>> Matias.
>> _____________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Kitware offers ITK Training Courses, for more information visit:
>> http://www.kitware.com/products/protraining.php
>>
>> Please keep messages on-topic and check the ITK FAQ at:
>> http://www.itk.org/Wiki/ITK_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/insight-users
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20150115/b9a9d928/attachment.html>
-------------- next part --------------
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
More information about the Community
mailing list