[Insight-users] Matching physical axes correctly on image read

David Nichols dnichols at sourcesignal.com
Wed Dec 15 13:20:19 EST 2010


My 'natural', image index oriented coordinate system is left handed.  
I'm thinking that manipulating the itk origin and spacing can put things 
in the correct order.

First, it seems that itk uses the C language index order, with the 
rightmost index changing most quickly. So, if I had an image with 120 
slices, each of which had 128 rows and 110 columns, I would declare it 
in C as
short int Image[120][128][110];
I want to set the origin of the physical coordinate system at voxel 
[0,0,0], with the x axis pointing in the direction of decreasing row, 
the y axis pointing in the direction of increasing column and the z axis 
pointing in the direction of increasing slice.  If I look at 
Image[k][i][j], then increasing x decreases i, increasing y increases j 
and increasing z increases k.

Two issues. First, the examples in The Guide seem to assume that x goes 
with index 0, y with index 1 and z with index 2.  How do I permute 
things to get them as described above?  Secondly, to make an advancing 
row index point in the negative x direction, does one make the spacing 
negative in that dimension?  (This seems logical in one way and perverse 
in another.)  Finally, what would be the correct entries to use in a 
metaheader file?  One can use

NDims = 3
DimSize = 110 128 120
ElementSize = 1 1 1

but this doesn't give the x/y/z axes oriented as desired.

I appreciate any advice you can provide.

David



More information about the Insight-users mailing list