[Insight-users] Constrained rigid registration after landmark initialization

Karthik Krishnan karthik.krishnan at kitware.com
Wed Dec 5 10:26:11 EST 2007


Charlotte:

On 12/4/07, Charlotte Curtis <curtisc at uoguelph.ca> wrote:
>
> I am attempting to register two CT scans, and I'm having a bit of trouble
> with (I think) the optimizer parameters.  I'm basically just combining the
> examples IterativeClosestPoint2.cxx and ImageRegistration8.cxx, and then
> using the result to transform a segmentation.  If I use only the landmark
> transformation from IterativeClosestPoint, my result is pretty good, but I'd
> just like to refine it a *little* bit more with the registration from
> ImageRegistration8.


I have also tried using the LandmarkBasedTransformInitializer, but the
> result was not nearly as good as the IterativeClosestPoint.


I'd disagree with this. LandmarkBasedTransformInitializer should find the
*optimal* rigid transfrom in your case. The two algorithms differ in their
assumptions but aim to minimize the same metric.

ICP: Minimizes the Least Square distance between two point sets. It relieves
you of the responsibility of knowing the correspondance between the point
sets.

LandmarkBasedTransformInitializer: Finds the *Optimal* rigid transform that
minimizes the Least Square distance between the two point sets. It requires
you to specify the correspondance between the two point sets. The number of
points in the two sets are the same. (Please see: Berthold K. P. Horn
(1987), "Closed-form solution of absolute orientation using unit
quaternions,")

Since your point sets are *Landmarks* or fiducials, I assume that you know
the correspondance between them. So for a rigid transform, the
LandmarkBasedTransformInitializer should always be better. (unless your
landmarks are erroneous).

...
> I have played with a variety of settings for the rotation scale,
> translation scale, min/max steps, number of iterations, etc, but I haven't
> been able to hit on the right combination.  Am I on the right track, or does
> my method have a serious flaw that cannot be fixed by parameter variation?
> Unfortunately, I can't upload my images as they are quite large, but I have
> attached my source code.  Any suggestion is appreciated, thank you,


:)

Visualizing your metric might give you some insight.

Use the itk::ExhaustiveOptimizer. In reality, this isn't an optimizer at all
:)

What this does is, it iterates over all possible translations in 3D space.
(You'll have to do the rotations on your own). Observe the IterationEvent
and write your metric values out into an image, where each of the axes
represents a translation. Then fire it up the resulting metric image in
Paraview (www.paraview.org) and either throw contours or use the Cut to
visualize minimas and driving gradients in your metric space.

Charlotte
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
>
>


-- 
Karthik Krishnan
R&D Engineer,
Kitware Inc.
Ph: 518 371 3971 x119
Fax: 518 371 3971
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20071205/9990ec86/attachment.html


More information about the Insight-users mailing list