[Insight-users] Versors

Luis Ibanez luis . ibanez at kitware . com
Fri, 13 Jun 2003 10:00:25 -0400


Hi Ravi,

Versors are Unit Quaternions.

Unfortunately the literature in Computer Graphics
tends to lossely use the term 'Quaternion' when
they meant 'Unit Quaternion'.

Quaternions in general are capable of representating
rotations and scale changes. Versors, on the other hand,
represent pure rotations. The term Versor was introduced
by Hamilton in his 'Elements of Quaternions' in 1866 and
it is the appropriate term for refering to a unit quaternion.

'Versor' stands for 'something that applies a rotation'.

--

You will find a description of this transform on
the SoftwareGuide.

      http://www . itk . org/ItkSoftwareGuide . pdf

in Section 7.7.10, pdf-page 224.

You will also find two presentations on Quaternions
in the InsightDocuments cvs checkout

http://www . itk . org/cgi-bin/cvsweb . cgi/InsightDocuments/Developer/General/?cvsroot=Insight

They are:

   QuaternionsI.pdf
   QuaternionsII.pdf


----

Note also that there are two Versor related transforms in ITK:

1) VersorTransform        = rotation in 3D space
2) VersorRigid3DTransform = rotation+translation in 3D space.

-----

A full Quaternions is represented by four numbers,

     (x,y,z,w) ==> x * i + y * j + z * k + w

(i,j,k) being the three unit vectors associated with
the orthogonal coordinate axis.

The ITK Versor takes only (x,y,z) as parameters
and computes "w" internally in order to ensure that


       x^2 + y^2 + z^2 + w^2 == 1


As a geometric interpretation you can say that the
three parameters of the ITK versor transform are the
components of a vector parallel to the rotation axis,
and whose magnitude is equal to

                 sin( theta/ 2 )

where theta is the rotation angle.


The challenge for performing registrations using Versors
as transforms is that the components of Versors (and Quaternions)
do not form a Vector space. The operations of addition and
subtraction are defined differently.  In consequence, an
optimizer like GradientDescent, that relies on additive
operations has to be modified in order to use the appropriate
operations of the Versor space.  For this reason you will
find that ITK provides a class

          itk::VersorTransformOptimizer

Which is a variant of the RegularStepGradientDescentOptimizer.




Regards,


   Luis



--------------------
ravi sharma wrote:
> I am working on 3 D  rigid Registration and am going
> to use Versor3D Transform.Could someone tell me how
> the first 3 parameters represent a rotation like if my
> two vectors are i and i+j what would be rotation
> parameters in Versor.
>