[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