[Insight-users] Re: incorrect z-spacing in GDCM reading
Miller, James V (Research)
millerjv at crd.ge.com
Thu May 12 08:39:05 EDT 2005
Mathieu,
Even with the ImageOrientation information, we will have the problem
of transitioning 3D information from a 3D image down to a 2D image
for a single slice. We just do not have a methodology for passing
the extra information down from the SeriesWriter to the FileWriter
to the ImageIO.
Jim
-----Original Message-----
From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
Sent: Wednesday, May 11, 2005 5:40 PM
To: Miller, James V (Research)
Cc: insight-users at itk.org
Subject: Re: [Insight-users] Re: incorrect z-spacing in GDCM reading
Jim,
BTW I am not up to date, but is the ImageOrientation completely
integrated ? If so then Image Position Patient can be computed at each
frame thanks to ImageOrigin + ImageOrientation. So even when creating an
image from scratch we should now be able to write valid DICOM file.
Mathieu
Miller, James V (Research) wrote:
> Mathieu,
>
> We have a use case where this happens that we were discussing today. If your create
> DICOM images from scratch (i.e. not reading a DICOM but are producing a DICOM) or
> you are not sharing an instance of GDCMImageIO between the input and the output, then
> the z position in ImagePositionPatient will be incorrect.
>
> The problem is that the ImageSeriesWriter is given an 3D image. It then uses an
> ImageFileWriter to write each slice (a 2D image). When ImageFileWriter only "sees"
> a 2D image, therefore there is not 3rd coordinate to give to GDCMImageIO to set
> the Z position of the image position patient.
>
> You could invision a solution where information is passed to GDCMImageIO via
> the meta data dictionary. While GDCMImageIO does take information from the
> dictionary, some of the tags are always overridden by GDCMImageIO. It is some
> of these tags that keep you from specifying the correct Z coordinate of the ImagePositionPatient.
>
> As a temporary workaround we commented out where GDCMImageIO sets ImagePositionPatient
> and assume it was set in the meta data dictionary.
>
> Jim
>
>
>
> -----Original Message-----
> From: insight-users-bounces+millerjv=crd.ge.com at itk.org
> [mailto:insight-users-bounces+millerjv=crd.ge.com at itk.org]On Behalf Of
> Mathieu Malaterre
> Sent: Wednesday, May 11, 2005 4:45 PM
> To: Hxsham Fire
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] Re: incorrect z-spacing in GDCM reading
>
>
> Hxsham
>
> What are you reporting is rather scary. Could you tell us which version
> of ITK are you using ? Also on which example did you base your code ?
> The fact is that this is tested nightly:
>
> $ ctest -R itkGDCMSeriesReadImageWrite -V
>
> This create three new files in Testing/Temporary/. Then all you need to
> check is that 'Image Position Patient' is correct:
>
>
> $ for i in `ls Testing/Temporary/*.dcm`; do
> ./bin/DicomImageReadPrintTags $i; done | grep "Image Position"
>
> Image Position Patient = -112\ -21.688\ 126.894
> Image Position Patient = -112\-20.2729\ 127.641
> Image Position Patient = -112\-18.8578\ 128.388
>
> Which looks good to me...
>
> HTH,
> Mathieu
>
> Hxsham Fire wrote:
>
>>George and Mathieu,
>>
>>This looks very similar to the problem I was having
>>with ITK...
>>The dicom series reader was reading the slices fine,
>>and the volume had correct spacing... however after I
>>write the series using the dicom series writer and try
>>to read it back again, for further modification is
>>when the z spacing fails, and the slices are compacted
>>in the z direction, and it is most noticable if I try
>>to rotate that image... also I noticed that all the
>>slices have the same z coordinate of the origin in the
>>series written by the dicom writer (that is field
>>0020|0030) in the dicom directory, and it is the
>>values of the last slice in the original series that
>>is written on all the slices in the output series.
>>
>>Hxsham
>>
>>----------------------------------------------------
>>----------------------------------------------------
>>
>>George,
>>
>> Your code looks fine. The algorithm for
>>finding the z spacing is kind
>>of tricky. So I am wondering if:
>>
>>1. Your images might not have proper 'Image Position
>>Patient' / 'Image
>>Orientation Patient'
>>
>>2. If they have, maybe gdcm is not able to parse the
>>string properly.
>>
>>Could it be possible that you send me at least two
>>images from this
>>dataset ?
>>
>>If not, you'll have to turn the code to be more
>>verbose in particular
>>when entering the function:
>>
>>
>> gdcm::SerieHelper::ImagePositionPatientOrdering
>>
>>Thanks,
>>Mathieu
>>
>>
>>
>>
>>Yahoo! Mail
>>Stay connected, organized, and protected. Take the tour:
>>http://tour.mail.yahoo.com/mailtour.html
>>
>>_______________________________________________
>>Insight-users mailing list
>>Insight-users at itk.org
>>http://www.itk.org/mailman/listinfo/insight-users
>>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
More information about the Insight-users
mailing list