[Insight-users] to combine two affine transformations
Henry
nyhenry at gmail.com
Mon Dec 3 16:15:08 EST 2007
Hi all,
I am confused by the results of combination of two transformations. I
need to apply affine transform1(Matrix1, Offset1) first and then
affine transform2 (Matrix2, Offset2).
Should the result transform3(Matrix3, Offset3) be like
Matrix3 = Matrix2*Matrix1
Matrix3 = Matrix2*Offset1 + Offset2 ?
I apply the transform3 and compare the image with apply two separate
(transform1 and then transform2), and found the rotations are the
same but the offset/translation of the two results are different.
Any idea why this happens?
Thanks!!
Henry
~~~~~~~~~~~~~~~
//my program looks like this:
typedef itk::AffineTransform<double,3> AffineTransformType;
AffineTransformType::Pointer affine = AffineTransformType::New();
itk::TransformFileReader::Pointer transformreader1;
itk::TransformFileReader::Pointer transformreader2;
transformreader1 = itk::TransformFileReader::New();
transformreader2 = itk::TransformFileReader::New();
transformreader1->SetFileName( argv[1] );
transformreader2->SetFileName( argv[2] );
transformreader1->Update();
transformreader2->Update();
//I read in two .tfm files and do the following:
transform->SetMatrix( affine_read2->GetMatrix()*affine_read1->GetMatrix());
transform->SetOffset(affine_read2->GetMatrix()*affine_read1->GetOffset()
+affine_read2->GetOffset());
//and then write the final results
itk::TransformFileWriter::Pointer writer;
writer = itk::TransformFileWriter::New();
writer->SetInput(transform);
writer->SetFileName( argv[3] );
More information about the Insight-users
mailing list