[Insight-users] Inverse of ScaleSkewVersor3DTransform
Samson Timoner
samson at bwh.harvard.edu
Fri Dec 16 11:34:21 EST 2005
> I am pretty sure somebody has done the math to decompose an affine
> transform into the scale, skew, Rotation matrix and translation
> components.
Last I checked, decomposing a matrix into scale, and skew components is
not a well posed problem. The challenge is that shears and rotations are
closely related, two shears can make a rotation for example.
The best way to solve this problem that I have found is to pose it as a
minimization problem.
Call the matrix you would like to decompose A. Let A=C*B where C is the
sheer matrix and B is the pure rotation matrix. And, define a distance
between matrices d(X,Y).
Find B, the rotation matrix, such that d(A,B) is minimized. Once you
have found B, C is easily found since B is invertible.
I recommend using d(X,Y) = Frobenius Norm[X^-1*Y - I] where I is the
identity matrix. (Erik Miller at UMASS deserves credit for affirming the
choice of this metric as a good one.)
Note that this sort of algorithm, though it involves a minimization, can
be quite efficient during an iterative process. One can use the B matrix
from the last iteration to start the minimization process, which is
typically a very close (in terms of d(X,Y)) to the new B that is desired
to be found.
You ought to be able to extend this idea to include translations fairly
easily.
-- Samson
P.S. I know I never published this algorithm; I don't think anyone else
has either.
Karthik Krishnan wrote:
> Please correct me if I am wrong:
>
> A ScaleSkewVersor3DTransform is exactly the same as an AffineTransform,
> with a more intuitive representation of parameters. (ie the 3 scales and
> 6 skews in addition to the versor and translation)
>
> The inverse is then the inverse of the affine matrix, which is another
> affine transform.
>
> I am pretty sure somebody has done the math to decompose an affine
> transform into the scale, skew, Rotation matrix and translation
> components. At least it sounds like something one would often want to do
> to get a meaningful interpretation from an affine transform. If you do
> find that, we could add it back into the class.
>
> Regards
> karthik
>
> Ranjan, Sohan (Research) wrote:
>
>> I am doing registration using the ScaleSkewVersor3DTransform. As per ITK
>> registration convention, the transform returned is from the fixed
>> image space to the moving image space. I am not using the resample
>> filter for resampling
>> the moving image due to certain reasons, so I need to find an inverse
>> of the
>> transform myself. But it looks like that the inverse for
>> ScaleSkewVersor3DTransform
>> is not defined.
>>
>> Can someone suggest how should I go about constructing the inverse?
>>
>> Sohan
>> _______________________________________________
>> 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