[Insight-users] Re: Re:Affine Transformation...
cspl
affable at hd2 . dot . net . in
Fri, 9 Aug 2002 11:18:48 +0530
Dear Luis,
Thank you so much for your help.
I am very happy to inform U that I got the resampled output of the image.
But,when Z-axes( i.e third row of the matrix) are set to values other than 0
and 1s , I am not getting any output.
Any Suggestion !!
Regars,
CSPL
----- Original Message -----
From: "Luis Ibanez" <luis.ibanez@kitware.com>
To: "cspl" <affable@hd2.dot.net.in>
Cc: <insight-users@public.kitware.com>
Sent: Thursday, August 08, 2002 6:58 PM
Subject: Re: [Insight-users] Re: Re:Affine Transformation...
>
> Hi cspl,
>
> An Affine transform in 3D is defined by a 3x3 matrix M and
> a 3x1 vector T. The transformation of a point is done by
> the operation:
>
> P' = M . P + T
>
> Your code looks fine. Just replacing the values of the matrix
> and the offset should be enough to enable the transformation.
>
> The values that you are currently setting in the matrix are
> quite strange since you are putting the first row to zeros.
> That will make the {x} coordinate of all the output points to
> be zero, so the 3D image is squeezed in the plane x=0.
>
> You may also want to take a look at the example in:
> Insight/Testing/Code/BasicFilters/itkResampleImageFilterTest.cxx
>
>
>
> Luis
>
>
>
>
>
===========================================================================
>
> cspl wrote:
> > Dear Mr.Luis,
> > I am still facing the problem with SetMatrix() in
> > AffineTransformation.My application worked well when I set the matrix to
> > Identity and Offset vector to zeros.But,I got two problems in getting
> > the output when matrix is set to other values.
> >
> >
> >
> > 1.I coud not get the output when matrix is set to other values.(other
> > than identity).
> > 2.I found that matrix is still 3x3.Because,when I tried to set values
> > which I have ,I could able to set only 3x3 i.e 9 values.
> >
> >
> >
> > I am enclosing the code also.Please,help me regarding this.
> >
> >
> >
> > typedef itk::AffineTransform<double, 3>TransformType ;
> > typedef itk::ResampleImageFilter<ImageType, ImageType, TransformType>
> > ResampleFilter;
> >
> >
> >
> > //typedef ResampleFilter::TransformType TransformType ;
> > ResampleFilter::Pointer Resample = ResampleFilter::New();
> >
> > TransformType::Pointer transform = Resample->GetTransform();
> >
> >
> >
> > typedef TransformType::MatrixType MatrixType;
> > typedef TransformType::OffsetType VectorType;
> > VectorType vector2 = transform->GetOffset();
> > MatrixType matrix2 = transform->GetMatrix();
> > int i;
> > for (i = 0; i < 3; i++) {
> > vector2[i] = 0.5;
> > }
> > matrix2[0][0] = 0.0;
> > matrix2[0][1] = 0.0;
> > matrix2[0][2] = 0.0;
> > matrix2[1][0] = 1.0;
> > matrix2[1][1] = 0.0;
> > matrix2[1][2] = 0.0;
> > matrix2[2][0] = 1.0;
> > matrix2[2][1] = 0.0;
> > matrix2[2][2] = 0.0;
> >
> >
> >
> >
> > transform->SetOffset(vector2);
> > transform->SetMatrix(matrix2);
> >
> >
> >
> >
> >
> >
> >
> > itk::Size<3> size =
> > {InputVolume->height,InputVolume->width,InputVolume->depth };
> > Resample->SetInput(InputImage);
> > Resample->SetSize(size);
> > double values[3];
> > values[0]=1.62;
> > values[1]=1.62;
> > values[2]=1.0;
> > Resample->SetOutputSpacing(values);
> > Resample->Update();
> >
> >
> >
> >
> > Regards,
> > CSPL
> >
>
>
>
>
>