[Insight-users] ImageWriter does not write Orientation (Direction Cosines)

Bryn Lloyd blloyd at bwh.harvard.edu
Thu Jul 14 19:08:24 EDT 2005


Hi Karthik and Gordon and all listening,

Thanks, the MetaIO works for writing now.
It doesn't seem to read the information though! I read a identy matrix.

I'm a bit confused about how the NRRD IO works. Why does it rescale the
direction cosines at all? I would prefer the assumption that the user has
set them correctly...

This is what happens (NRRD):

Say I set the following direction cosines:

0.286406 0.118831 0.950711
0.948371 -0.176269 -0.263669
0.136249 0.977143 -0.16318

then the NRRD IO writes:

space directions:
(0.24613,0.10212,0.817017)
(0.815007,-0.151481,-0.22659)
(0.681244,4.88571,-0.815902)

if I read them with the NRRD IO, I read:

0.286406 0.948371 0.136249
0.118831 -0.176269 0.977143
0.950711 -0.263668 -0.163181

These are the original direction cosines, just they are transposed...

and if I write again :

space directions:
(0.24613,0.815007,0.117089)
(0.10212,-0.151481,0.839733)
(4.75355,-1.31834,-0.815902)

What is happening??

Is there something I don't understand about the direction cosines, or is
this a bug?


Thanks

Bryn

BTW
There is a nice summary of the direction cosines at:
http://mathworld.wolfram.com/DirectionCosine.html




<quote who="Karthik Krishnan">
> Bryn,
>
> Just committed a fix in CVS. Let me know if it works ok.
>
> Thanks
> regards
> Karthik
>
> Gordon Kindlmann wrote:
>
>> hello,
>>
>> One possible option, if you are using the latest CVS version of ITK,
>> is to save the image in NRRD format (filename ends with ".nhdr" for
>> separate header and data, or ".nrrd" for one file).  This saves the
>> direction cosines (after scaling by the spacings) in the "space
>> directions:" field of the NRRD header.  Right now this only handles
>> scalar datasets; non-scalar datasets should be handled soon.
>>
>> Gordon
>>
>> On Jul 14, 2005, at 3:29 PM, Bryn Lloyd wrote:
>>
>>> Hi Bill, anybody!
>>>
>>> I am working with images that have a variable orientation relative to
>>> another image. Which is why I decided to use the itkOrientedImage
>>> class.
>>> My problem is when I try to write the image. Somehow the orientation is
>>> lost. I try to save the image using the meta-header format (.mhd).
>>>
>>> Is this a bug or am I doing something wrong?
>>>
>>> Thanks!
>>>
>>> Bryn
>>>
>>>
>>> --------------
>>>
>>> the header looks like this
>>>
>>> ObjectType = Image
>>> NDims = 3
>>> BinaryData = True
>>> BinaryDataByteOrderMSB = False
>>> TransformMatrix = 1 0 0 0 1 0 0 0 1
>>> Offset = 0 0 0
>>> CenterOfRotation = 0 0 0
>>> AnatomicalOrientation = RSP
>>> ElementSpacing = 0.859375 0.859375 5
>>> DimSize = 256 256 1
>>> ElementType = MET_DOUBLE
>>> ElementDataFile = I020.raw
>>>
>>>
>>> I would assume the TransformMatrix should contain the direction
>>> cosines!?
>>>
>>> ------------------
>>>
>>>   const unsigned int Dimension = 3;
>>>   typedef   double  PixelType;
>>>
>>>   typedef itk::OrientedImage< PixelType,   Dimension >
>>> ImageType;
>>>
>>>   typedef itk::ImageFileReader< ImageType >      ReaderType;
>>>   typedef itk::ImageFileWriter< ImageType >      WriterType;
>>>
>>>   ReaderType::Pointer reader = ReaderType::New();
>>>    reader->SetFileName( filenameGE5 );
>>>    reader->Update();
>>>
>>>  ImageType::Pointer image = reader->GetOutput();
>>>   this->ReadHeader( filenameGE5 );
>>>
>>>
>>> /* set direction cosines */
>>>
>>>  typedef itk::Matrix<double,3,3>  DirectionType;
>>>   DirectionType direction;
>>>   direction.Fill(0.0);
>>>   direction[0][0] = 1.0;   // 1 0 0
>>>   direction[1][2] = 1.0;   // 0 0 1
>>>   direction[2][1] = 1.0;   // 0 1 0
>>>
>>>
>>>   std::cout << "New Direction Cosines " << std::endl << direction <<
>>> std::endl;
>>>
>>>   image->SetDirection(direction);
>>>   std::cout << "Image Direction Cosines " << std::endl <<
>>> image->GetDirection() << std::endl;
>>>
>>>
>>>  WriterType::Pointer writer = WriterType::New();
>>>   writer->SetInput( image );
>>>   writer->SetFileName( filenameOut );
>>>   writer->Update();
>>>
>>>
>>> _______________________________________________
>>> 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