[Insight-users] Re: incorrect z-spacing in GDCM reading

Li, George (NIH/NCI) ligeorge at mail.nih.gov
Thu May 12 07:42:06 EDT 2005


Mathieu and Jim:

There is a redundant information in the dicom header, which is the 
slice thickness (0018,0050) that you could use to get z spacing 
information from a single image slice. Otherwise, you have to get 
the spacing information from at least 2 image slices. 

The image position and image orientation are the basic parameters 
necessary for the correct relationship among slices.

Regards,

George



-----Original Message-----
From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com] 
Sent: Wednesday, May 11, 2005 5:42 PM
To: Mathieu Malaterre
Cc: insight-users at itk.org; Miller, James V (Research)
Subject: Re: [Insight-users] Re: incorrect z-spacing in GDCM reading


Ok I meant Image Position Patient can be computed from 
Origin+Spacing+ImageOrientation

Mathieu

Mathieu Malaterre wrote:
> 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
>>
> 
> _______________________________________________
> 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