[Insight-users] Constrained rigid registration after landmark
initialization
Charlotte Curtis
curtisc at uoguelph.ca
Wed Dec 5 14:39:44 EST 2007
Thanks for the help, Karthik. I went back and tried the
LandmarkBasedTransformInitializer again, and I think I've determined my
problem: with the ICP method, I applied the resulting transform to my fixed
segmentation, and the result matched the moving image quite nicely.
However, it seems that with the TransformInitializer, I need to apply the
INVERSE transform to the fixed image. Is there a reason these two are
different?
On Dec 5, 2007 10:26 AM, Karthik Krishnan <karthik.krishnan at kitware.com>
wrote:
> 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/fe42ad4f/attachment.html
More information about the Insight-users
mailing list