[Insight-users] Applying a transform? PointSet registration?

Atwood, Robert C r.atwood at imperial.ac.uk
Fri May 13 10:54:51 EDT 2005


Thanks Luis! I thought was something like that ,but for some reason it was not clear to me that a PointSet is able to be used where a 'mesh type' is asked for. I had looked at this doxygen page but assumed it had to be a mesh (with polygons, edges etc) I guess you meant TransformMeshFilter when you typed TransformMeshImageFilter.

Can a transform be applied to a single point, or would you create a pointset with one point in it ? More generally , how do I know what types of class can go in TInputMesh? 

itk::TransformMeshFilter< TInputMesh, TOutputMesh, TTransform > Class Template Reference

Next question: Since I successfully used VersorRigid3dTransform for registering 3D image files I thought I could use this transform for registring point sets that may be offset and rotated. However, if I try to plug the special Versor optimizer into the registration method, it comlains that it requires a MultipleValuedNonLinearOptimizer. I don't know exactly what that means in this context, but follwing the example in the Software Guide I used Euler3dTransform instead. So far so good...

But, when looking in the Doxygen pages for PointSetToPOintSetRegistrationMethod it says:

"The registration method also support a generic optimizer that can be selected at run-time. The only restriction for the optimizer is that it should be able to operate in single-valued cost functions given that the metrics used to compare PointSet with PointSets provide a single value as output."

Then, when I look at the optimizer used in the example
LevenbergMarquardtOptimizer , and go to its parent class,
MultipleValuedNonLinearVnlOptimizer, it says:

"This class is a base for the Optimization methods that optimize a single valued function."

Its parent class says:

MultipleValuedNonLinearOptimizer
"This class is a base for the Optimization methods that optimize a multiple valued function."

So I am confused about when it is, or just what is, "single" or "multiple" valued and then how to decide which optimizer will work with which registration method? 

I am thinking about future uses as I think the Levenberg-Marquardt with Euler3d will work for this purpose. For example we might wish to register images and/or point-scans of the prosthsis to various medical images of the patient  , then I would need to use other registration methods and figure out which optimizer works with it! 


Thanks again.
Robert



-----Original Message-----
From: Luis Ibanez [mailto:luis.ibanez at kitware.com]
Sent: Fri 5/13/2005 1:48 PM
To: Atwood, Robert C
Cc: ITK Users
Subject: Re: [Insight-users] Applying a transform? PointSet registration?
 

Hi Robert,


The class that you are looking for is the:

TransformMeshImageFilter:
http://www.itk.org/Insight/Doxygen/html/classitk_1_1TransformMeshFilter.html

Simply instantiate this filter using your PointSet<> as template
parameter. Then connect as inputs your Transform and your input
PointSet.

The filter will apply the Transform to all the Points in your PointSet.


   Regards,


      Luis



--------------------------------------------------------------------------------
Atwood, Robert C wrote:
> I have been poring through the software guide and the Doxygen for hours, 
> and I cannot see how to apply a transform to a point or a PointSet? I 
> know how to apply to an image, you create a resample image filter and 
> set the transform , is there a similar filter for PointSets (and what is 
> it called) or is the process different?
> 
> 
> The immediate goal is to register two point sets, then somehow quantify 
> the difference between them. I believe that this would be enabled by 
> transforming one of the point set into the space of the other according 
> to the result of the registration.
> 
> The overall goal is to quantify (and eventually minimize) the misfit of 
> certain prostheses introduced at certain stages during the manufacturing 
> process, by scanning 'before' and 'after' examples. The scan method 
> produces a point set. The point set is not necessarily any sort of 
> regular grid. (The points are in  3-d by the way) The 2 sets should 
> generally be reasonably close to each other to start with (by placing 
> the example in the same location and orientation)
> 
> 
> 
> Thanks,
> Robert
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users






-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20050513/b69cdc32/attachment.htm


More information about the Insight-users mailing list