[Insight-users] Multi Resolution Registration : Quaternion transform

Luis Ibanez luis . ibanez at kitware . com
Tue, 11 Nov 2003 23:25:05 -0500


Hi Robert,

You may want to think twice before pursuing this path.
The MIRegistrator is a modular piece of a demo application.

It wasn't designed to be taken as an independent piece of
code. Also, this particular application is templated over
the image type and only instantiated at the top level.

I would discourage you to try to cut/paste this code unless
you are very confident on your understanding of C++ templates.

You may have better chances of succes by using the equivalent
examples in

           Insight/Examples/Registration


Please study the Multi-Resolution examples illustrated in
the SoftwareGuide and then apply the same principles in
your own code.

Look at:

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

Section 8.6, pdf-page 281, paper-page 307.



Let us know if you find any problems.



Regards,


    Luis


-----------------------------
Robert-Paul Buitendijk wrote:
> Hi Luis
> 
> I had a look at the MIMRegistrator.h
> I tried to use it, but all of the declarations aren't useable outside the
> class.
> I have to make the declarations again, and then define the input files via a
> file reader.
> 
> For example it is impossible to use  itkStaticConstMacro (ImageDimension,
> unsigned int, TFixedImage::ImageDimension);
> outside of the class. the same applies for TFixedImage.
> 
> Does all the input for the class have to be inside the class, or can i set
> number of levels and number of iterations outside of the class?? in my
> project code?
> 
> Hope my question makes sense :)
> tnx Robert
> 
> -----Oorspronkelijk bericht-----
> Van: Luis Ibanez [mailto:luis . ibanez at kitware . com]
> Verzonden: dinsdag 11 november 2003 5:47
> Aan: Robert-Paul Buitendijk
> CC: Insight-users at public . kitware . com
> Onderwerp: Re: [Insight-users] Multi Resolution Registration :
> Quaternion transform
> 
> 
> 
> Hi Robert,
> 
> The QuaternionRigid transform can be used as
> any of the other transforms.
> 
> Note that the one available in the CVS version
> now has a SetCenter() method. So it can be use
> along with the CenteredTransformInitializer class.
> 
> For an example on the use of this class, you can
> look at:
> 
>   InsightApplications/MultiResMIRegistration/Common
> 
>                       MIMRegistratior.h
> 
> 
> 
> and at the new registration plugin for VolView:
> 
> 
> 
>    InsightApplications/VolviewPlugings/
> 
>       vvITKImageRegistration.cxx
> 
> 
> 
> Please let us know if you have further questions,
> 
> 
>    Thanks
> 
> 
>      Luis
> 
> 
> 
> -----------------------------
> Robert-Paul Buitendijk wrote:
> 
>>hi luis
>>
>>can you tell me how to make a working project from the data provided in
> 
> the
> 
>>softwareguide about the quaternionrigid transform? is it the same with all
>>the other trasforms or not?
>>
>>tnx in advance Robert
>>
>>-----Oorspronkelijk bericht-----
>>Van: Luis Ibanez [mailto:luis . ibanez at kitware . com]
>>Verzonden: dinsdag 4 november 2003 23:18
>>Aan: Robert-Paul Buitendijk
>>CC: insight-users at itk . org
>>Onderwerp: Re: [Insight-users] Multi Resolution Registration
>>
>>
>>
>>Hi Robert,
>>
>>There is no generic way of converting an AffineTransform into
>>a rotation. If there is any shearing or anisotropic scaling
>>in the matrix, the notion of rotation can no longer be isolated
>>from the matrix.
>>
>>If you want to recover a rotation, you should use the RigidTransform.
>>
>>In particular you may find useful the QuaternionRigidTransform
>>if you are working with 3D images.
>>
> 
> http://www . itk . org/Insight/Doxygen/html/classitk_1_1QuaternionRigidTransform
> 
>>.html
>>
>>This transforms is described in the SoftwareGuide
>>http://www . itk . org/ItkSoftwareGuide . pdf
>>in Section 8.7.9, pdf-page 301, paper-page 327.
>> From this transform you can recover the rotation in
>>the form of a unit quaternion (aka Versor).
>>
>>
>>Yes, you can use other metrics and other transforms,
>>that's the advantage of the modular design of the
>>registration framework in ITK.
>>
>>This particular example was doing multi-modality registration,
>>in which case your options are limited to the four different
>>implementations of MutualInformation available in the toolkit
>>
>>Viola-Wells
>>
> 
> http://www . itk . org/Insight/Doxygen/html/classitk_1_1MutualInformationImageTo
> 
>>ImageMetric.html
>>Mattes
>>
> 
> http://www . itk . org/Insight/Doxygen/html/classitk_1_1MattesMutualInformationI
> 
>>mageToImageMetric.html
>>Histogram based
>>
> 
> http://www . itk . org/Insight/Doxygen/html/classitk_1_1MutualInformationHistogr
> 
>>amImageToImageMetric.html
>>Histogram based normalized MI
>>
> 
> http://www . itk . org/Insight/Doxygen/html/classitk_1_1NormalizedMutualInformat
> 
>>ionHistogramImageToImageMetric.html
>>
>>
>>In transforms you have all the options described in the
>>SoftwareGuide in section 8.7, pdf-page 294, paper-page 320.
>>
>>A generic lit of transform is also available with
>>the Doxygen documentation
>>http://www . itk . org/Insight/Doxygen/html/group__Transforms . html
>>
>>It is up to you to select the transform that is appropriate for
>>modeling the missalignment of your images.
>>
>>
>>Please let us know if you have further questions.
>>
>>
>>Thanks
>>
>>
>>   Luis
>>
>>
>>-------------------------------
>>Robert-Paul Buitendijk wrote:
>>
>>
>>>Hello everyone
>>>
>>>The 2nd example in the softwareguide provides a matrix which describes the
>>>rotation,scaling and shear of the picture.
>>>In the guide there is no mention of how to convert the matrix back to a
>>>rotation. How can i do this???
>>>Is it also possible to use other metrics and transforms, or isn't that an
>>>advantage?
>>>
>>>Tnx Robert
>>>
>>>
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users at itk . org
>>>http://www . itk . org/mailman/listinfo/insight-users
>>>
>>
>>
>>
>>
>>
>>
>>
>>
> 
> 
> 
> 
> 
> 
>