[Insight-users] Transforming image to world coordinates with negative z axis
John Drescher
drescherjm at gmail.com
Thu Mar 12 16:41:11 EDT 2009
Luis,
I am Sorry. I will have to get you new output. The debug output I
posted for GetOutput()->Print( std::cout ) was not the same as the
original post.
John
On Thu, Mar 12, 2009 at 4:35 PM, Luis Ibanez <luis.ibanez at kitware.com> wrote:
> Hi John,
>
> Thanks a lot for posting the output of the Print() method.
>
> It seems that the image is not being read as the last slice
> begin located at:
>
> Z = -359.750
>
> Instead it is located at:
>
>
> Z = -35.685 + 2.5 * 107 = +231.81
>
> and... even if the spacing was negative,
> it could have only got to:
>
> Z = -35.685 - 2.5 * 107 = -303.18
>
>
>
> This raises suspicion about what you call the
>
>
> "last DICOM slice..."
>
>
> Are you sure that it belongs to the same Series
> as the first slice ?
>
>
> Also,
> If you visualize the image that you can read with ITK,
> does it look ok ?
>
>
> BTW: As DICOM readers/viewers you may want to try:
>
>
> A) Slicer
> http://www.slicer.org
>
> B) VV
> http://www.midasjournal.org/browse/publication/288
>
>
>
> Please let us know what you find.
>
>
> Thanks
>
>
> Luis
>
>
> -------------------
> John Drescher wrote:
>>>
>>> You are right, this looks strange.
>>>
>>>
>>> Please do the following:
>>>
>>> Just after you load your DICOM image into an ITK image,
>>> call the Print() method in the resulting image, and post
>>> the outcome to the mailing list.
>>>
>>> Your code should look something like
>>>
>>> imageSeriesReader->Update();
>>>
>>> imageSeriesReader->GetOutput()->Print( std::cout );
>>>
>>>
>>> The output of the Print() method will help us to locate
>>> the source of the problem.
>>>
>>>
>>
>>
>> OrientedImage (01D5C650)
>> RTTI typeinfo: class itk::OrientedImage<short,3>
>> Reference Count: 1
>> Modified Time: 2757
>> Debug: Off
>> Observers:
>> none
>> Source: (01D5C508)
>> Source output index: 0
>> Release Data: Off
>> Data Released: False
>> Global Release Data: Off
>> PipelineMTime: 30
>> UpdateMTime: 2758
>> LargestPossibleRegion:
>> Dimension: 3
>> Index: [0, 0, 0]
>> Size: [512, 512, 107]
>> BufferedRegion:
>> Dimension: 3
>> Index: [0, 0, 0]
>> Size: [512, 512, 107]
>> RequestedRegion:
>> Dimension: 3
>> Index: [0, 0, 0]
>> Size: [512, 512, 107]
>> Spacing: [0.626953, 0.626953, 2.5]
>> Origin: [-174.6, -160.5, -35.685]
>> Direction:
>> 1 0 0
>> 0 1 0
>> 0 0 1
>>
>> IndexToPointMatrix:
>> 0.626953 0 0
>> 0 0.626953 0
>> 0 0 2.5
>>
>> PointToIndexMatrix:
>> 1.59502 0 0
>> 0 1.59502 0
>> 0 0 0.4
>>
>> PixelContainer:
>> ImportImageContainer (01D5C8A0)
>> RTTI typeinfo: class itk::ImportImageContainer<unsigned long,short>
>> Reference Count: 1
>> Modified Time: 81
>> Debug: Off
>> Observers:
>> none
>> Pointer: 03410040
>> Container manages memory: true
>> Size: 28049408
>> Capacity: 28049408
>>
>>
>>> ----
>>>
>>>
>>> BTW: Why do you say that the direction cosines
>>>
>>>
>>>> 1 0 0
>>>> 0 1 0
>>>> 0 0 1
>>>
>>> look wrong to you ?
>>>
>>
>> I thought it should be
>>
>> 1 0 0
>> 0 1 0
>> 0 0 -1
>>
>> so that the z axis coordinate conversion would be handled correctly.
>>
>>
>>> Given that the direction cosines in the DICOM header
>>> are
>>>
>>>
>>>> 1.000000\0.000000\0.000000\0.000000\1.000000\0.000000
>>>
>>> It seems normal to have the Direction matrix to be an
>>> identity matrix.
>>>
>>
>> Looks like I have to do some reading.
>>
>> Thanks for your help,
>> John
>>
>
--
John M. Drescher
More information about the Insight-users
mailing list