<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7226.0">
<TITLE>RE: [Insight-users] Applying a transform? PointSet registration?</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>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.<BR>
<BR>
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?<BR>
<BR>
itk::TransformMeshFilter&lt; TInputMesh, TOutputMesh, TTransform &gt; Class Template Reference<BR>
<BR>
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...<BR>
<BR>
But, when looking in the Doxygen pages for PointSetToPOintSetRegistrationMethod it says:<BR>
<BR>
&quot;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.&quot;<BR>
<BR>
Then, when I look at the optimizer used in the example<BR>
LevenbergMarquardtOptimizer , and go to its parent class,<BR>
MultipleValuedNonLinearVnlOptimizer, it says:<BR>
<BR>
&quot;This class is a base for the Optimization methods that optimize a single valued function.&quot;<BR>
<BR>
Its parent class says:<BR>
<BR>
MultipleValuedNonLinearOptimizer<BR>
&quot;This class is a base for the Optimization methods that optimize a multiple valued function.&quot;<BR>
<BR>
So I am confused about when it is, or just what is, &quot;single&quot; or &quot;multiple&quot; valued and then how to decide which optimizer will work with which registration method?<BR>
<BR>
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&nbsp; , then I would need to use other registration methods and figure out which optimizer works with it!<BR>
<BR>
<BR>
Thanks again.<BR>
Robert<BR>
<BR>
<BR>
<BR>
-----Original Message-----<BR>
From: Luis Ibanez [<A HREF="mailto:luis.ibanez@kitware.com">mailto:luis.ibanez@kitware.com</A>]<BR>
Sent: Fri 5/13/2005 1:48 PM<BR>
To: Atwood, Robert C<BR>
Cc: ITK Users<BR>
Subject: Re: [Insight-users] Applying a transform? PointSet registration?<BR>
<BR>
<BR>
Hi Robert,<BR>
<BR>
<BR>
The class that you are looking for is the:<BR>
<BR>
TransformMeshImageFilter:<BR>
<A HREF="http://www.itk.org/Insight/Doxygen/html/classitk_1_1TransformMeshFilter.html">http://www.itk.org/Insight/Doxygen/html/classitk_1_1TransformMeshFilter.html</A><BR>
<BR>
Simply instantiate this filter using your PointSet&lt;&gt; as template<BR>
parameter. Then connect as inputs your Transform and your input<BR>
PointSet.<BR>
<BR>
The filter will apply the Transform to all the Points in your PointSet.<BR>
<BR>
<BR>
&nbsp;&nbsp; Regards,<BR>
<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Luis<BR>
<BR>
<BR>
<BR>
--------------------------------------------------------------------------------<BR>
Atwood, Robert C wrote:<BR>
&gt; I have been poring through the software guide and the Doxygen for hours,<BR>
&gt; and I cannot see how to apply a transform to a point or a PointSet? I<BR>
&gt; know how to apply to an image, you create a resample image filter and<BR>
&gt; set the transform , is there a similar filter for PointSets (and what is<BR>
&gt; it called) or is the process different?<BR>
&gt;<BR>
&gt;<BR>
&gt; The immediate goal is to register two point sets, then somehow quantify<BR>
&gt; the difference between them. I believe that this would be enabled by<BR>
&gt; transforming one of the point set into the space of the other according<BR>
&gt; to the result of the registration.<BR>
&gt;<BR>
&gt; The overall goal is to quantify (and eventually minimize) the misfit of<BR>
&gt; certain prostheses introduced at certain stages during the manufacturing<BR>
&gt; process, by scanning 'before' and 'after' examples. The scan method<BR>
&gt; produces a point set. The point set is not necessarily any sort of<BR>
&gt; regular grid. (The points are in&nbsp; 3-d by the way) The 2 sets should<BR>
&gt; generally be reasonably close to each other to start with (by placing<BR>
&gt; the example in the same location and orientation)<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt; Thanks,<BR>
&gt; Robert<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt;<BR>
&gt; ------------------------------------------------------------------------<BR>
&gt;<BR>
&gt; _______________________________________________<BR>
&gt; Insight-users mailing list<BR>
&gt; Insight-users@itk.org<BR>
&gt; <A HREF="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</A><BR>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>