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

Stephen R. Aylward aylward at unc.edu
Fri Jul 15 11:21:12 EDT 2005


Hi,

Thanks for pointing this out!

MetaImages do store orienation information, but we have not implemented 
the code in ITK to pass itkOrientedImage info to the metaImage writer. 
  I'll work on it and send out a notice when it is ready.

Thanks,
Stephen

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



More information about the Insight-users mailing list