[ITK] [ITK-users] itk Python: origin of DICOM slice does not change

D'Isidoro Fabio fisidoro at ethz.ch
Tue Sep 20 10:26:36 EDT 2016


Hi,

I tried this 

ImageIOType = itk.GDCMImageIO
gdcmImageIO = ImageIOType.New()
reader.SetImageIO(gdcmImageIO)
reader.Update()

...

writer_output.SetInput(filter.GetOutput())
writer_output.UseInputMetaDataDictionaryOff()
gdcmImageIO_output = ImageIOType.New()
writer_output.SetImageIO(gdcmImageIO_output)

but the written DICOM image has default origin (0,0) mm and default spacing (1., 1.).

Also, the example "DicomImageReadWrite" too does not create a new instance of the gdcmImageIO.




-----Original Message-----
From: Matt McCormick [mailto:matt.mccormick at kitware.com] 
Sent: Dienstag, 20. September 2016 16:03
To: D'Isidoro Fabio
Cc: Dženan Zukić; insight-users at itk.org; Timothee Evain
Subject: Re: [ITK-users] [ITK] itk Python: origin of DICOM slice does not change

Hi Fabio,

Also, if

  writer_output.SetImageIO(gdcmImageIO)

is called, and gdcmImageIO is being re-used, then gdcmImageIO will re-use its MetaDataDictionary. So a new instance of GDCMImageIO shoulrd be passed to avoid using the old MetaDataDictionary.

HTH,
Matt

On Tue, Sep 20, 2016 at 9:14 AM, Matt McCormick <matt.mccormick at kitware.com> wrote:
> Hi Fabio,
>
> As suggested by Tim, call  ->UseInputMetaDataDictionaryOff() to use 
> the Origin from the itk::Image. The MetaDataDictionary tags will 
> indicate an Origin that is not correct.
>
> HTH,
> Matt
>
> On Tue, Sep 20, 2016 at 9:06 AM, D'Isidoro  Fabio <fisidoro at ethz.ch> wrote:
>> Hi,
>>
>>
>>
>> It doesn’t work.
>>
>>
>>
>> Filter.GetOuput() already has the new origin (I can print it and it’s 
>> right). Something wrong is in the writing process.
>>
>>
>>
>> By the way, I noticed this problem occurs for change of the origin 
>> and of rescaling intensities. It does not occur for changes in size and spacing.
>>
>>
>>
>> Regards,
>>
>> Fabio
>>
>>
>>
>> From: Dženan Zukić [mailto:dzenanz at gmail.com]
>> Sent: Dienstag, 20. September 2016 14:46
>> To: D'Isidoro Fabio
>> Cc: Timothee Evain; insight-users at itk.org
>> Subject: Re: [ITK-users] [ITK] itk Python: origin of DICOM slice does 
>> not change
>>
>>
>>
>> Hi Fabio,
>>
>>
>>
>> did you try setting the origin directly on the result image:
>>
>> filter->Update();
>>
>> outImage=filter->GetOutput();
>>
>> outImage->SetOrigin(new_origin);
>>
>> writer_output->SetInput(outImage);
>>
>>
>>
>> Regards,
>>
>> Dženan
>>
>>
>>
>>
>>
>> On Tue, Sep 20, 2016 at 8:34 AM, D'Isidoro Fabio <fisidoro at ethz.ch> wrote:
>>
>> Hi,
>>
>> I am currently using the command:
>>
>> writer_output.UseInputMetaDataDictionaryOff()
>>
>> If I don't use it, the image is saved with default origin (0,0) mm 
>> and default spacing (1., 1.).
>>
>> According to the manual for UseInputMetaDataDictionaryOff(), "this 
>> flag defines whether the MetaDataDictionary to use will be the one 
>> from the input image or the one already set in the ImageIO object." 
>> My understanding is that if I set it off, the DICOM slice will be 
>> written with current values (and not the input values), which is what 
>> I want. But this seems not to happen.
>>
>> Relevant parts of my code:
>>
>> filter.SetOutputOrigin( new_origin )
>> writer_output.SetInput(filter.GetOutput())
>> writer_output.UseInputMetaDataDictionaryOff()
>> writer_output.SetImageIO(gdcmImageIO)
>> writer_output.Update()
>>
>> Maybe the function UseInputMetaDataDictionaryOff() does not work 
>> properly for the itk with Python wrapping?
>>
>> Thanks for your answer.
>>
>> Fabio.
>>
>>
>> -----Original Message-----
>> From: Timothee Evain [mailto:tevain at telecom-paristech.fr]
>> Sent: Dienstag, 20. September 2016 10:35
>> To: D'Isidoro Fabio
>> Cc: insight-users at itk.org
>> Subject: Re: [ITK] [ITK-users] itk Python: origin of DICOM slice does 
>> not change
>>
>> Hi,
>>
>> You refer to the DICOMImageReadWrite example. If you don't change the 
>> writing part, I think your problem comes from the fact that you 
>> assign the read metadata directly to the output ( 
>> ->UseInputMetaDataDictionaryOff() ) so the original origin will be saved.
>>
>> HTH,
>>
>> Tim
>>
>> ----- Mail original -----
>> De: "D'Isidoro Fabio" <fisidoro at ethz.ch>
>> À: insight-users at itk.org
>> Envoyé: Lundi 19 Septembre 2016 22:09:39
>> Objet: [ITK] [ITK-users] itk Python: origin of DICOM slice does not 
>> change
>>
>>
>>
>> Hi,
>>
>>
>>
>> Following the code ResampleImageFilter2.cxx, I am applying an 
>> Identity Transform to a single DICOM slice, I change the origin to
>>
>>
>>
>> output_origin = reader.GetOutput().GetOrigin() + offset
>>
>>
>>
>> and I write the transformed DICOM slice into a new DICOM slice 
>> (following the code DICOMImageReadAndWrite.cxx).
>>
>>
>>
>> I visualize the written DICOM slice with a viewer (it’s an itk-vtk 
>> segmentation software).
>>
>>
>>
>> The transformed DICOM slice looks as it should. Surprisingly however 
>> the viewer shows the original input values as origin. This is 
>> confirmed by the fact that if I read with an itk script the written 
>> DICOM slice again, and I print the information of the DICOM slice, 
>> the origin is still the original one and not the modified one.
>>
>>
>>
>> How could this be?
>>
>>
>>
>> Original DICOM slice:
>>
>>
>>
>>
>>
>>
>>
>> Transformed DICOM slice:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> Thank you for help,
>>
>>
>>
>> Fabio.
>>
>> _____________________________________
>> 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
>>
>> _______________________________________________
>> Community mailing list
>> Community at itk.org
>> http://public.kitware.com/mailman/listinfo/community
>> _____________________________________
>> 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
>>
_____________________________________
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