[Insight-users] ImageWriter does not write Orientation (Direction
Cosines)
Karthik Krishnan
Karthik.Krishnan at kitware.com
Thu Jul 14 18:08:24 EDT 2005
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