[Insight-users] Parameters of ICP algorithm

Luis Ibanez luis.ibanez at kitware.com
Fri Jul 16 19:04:30 EDT 2004


Hi Chris,

The ICP implementation in ITK is quite standard.

It is a minimization of the sum of squared distances
computed from points in one set to the current closest
point in the other set.

As it is the case with any other registration problem,
initialization is crucial is you want to avoid local
minima in the solution.

Placing the single handle close to the location of the
handle in the complete bowl could be enough for driving
the optimization in the right direction. The orientation
of the handle is also important, as well as correcting
for eventual scaling differences.

Of course you can also help the registration by only
providing the relevant regions of the objects.

This is done in the Image to Image registration framework
in ITK by using the FixedImageRegion, and by defining
binary masks for the Fixed and Moving image.

There is an important distinction between an optimization
method and a search method.  You may want actually to
combine both, in order to get closer first with a search
method and then refine positions with an optimization one.

Note that Evolutionary Algorithms could be used to
perform both tasks.


It is not realistic to expect that an optimization method
will find a global optimum without proper initialization.



   Regards,



     Luis




--------------------------
Chris Peters wrote:

> Hi Luis,
> 
> 	I am relatively new to C++ and I thought, instead of delving in
> to code I don't understand - I could ask the author.
> 
> Here is my hypothetical situation (based on real situation).
> 
> If I have a soup bowl with a handle (represented by about 33k points in
> a CT based VTK model) and a handle (represented by 100 - 500 ultrasound
> points), when I ICP the two datasets, it places the handle in the middle
> of the soup bowl instead of on the handle.
> 
> My assumption is that I must give ICP two datasets that accurately
> represent the same object - that is to say, not the whole soup bowl
> (VTK), but rather just the handle (VTK).  Is this correct?  When I tried
> this I got better results, but I thought I should get your explanation.
> 
> Would you mind explaining, if you have the time, the general approach
> you use in your ICP (from itk cvs).
> 
> Chris.
> 
> 
> 
> Chris Peters
> Mechanical Engineering
> Queen's University (Goodwin 230)
> Kingston, Ontario
> K7L 3N6
> Home Phone: (613) 352-7494
> Work Phone: (613) 533-2797
> Fax: N/A
> Email: peters at me.queensu.ca,
>           peterschris2002 at yahoo.com (backup)
> 
> -----Original Message-----
> From: Luis Ibanez [mailto:luis.ibanez at kitware.com] 
> Sent: Tuesday, June 22, 2004 2:28 PM
> To: Thomas - Kuiran Chen
> Cc: Insight-users at itk.org; peters; purang
> Subject: Re: [Insight-users] Parameters of ICP algorithm
> 
> 
> Hi Thomas,
> 
> 
> The example
> 
>      Insight/Examples/Registration/
>                   IterativeClosestPoint2.cxx
> 
> uses the transform
> 
>      Euler3DTransform
> http://www.itk.org/Insight/Doxygen/html/classitk_1_1Euler3DTransform.htm
> l
> 
> When you invoke GetParameters in this transform
> you get an array of six elements.
> 
> The first three are rotation angles around the axis,
> in the order  :   angleX, angleY, angleZ.
> 
> The following three parameters are the translation
> components as :   Tx, Ty, Tz.
> 
> 
> The current documentation about ICP is what you find in
> these three examples. They are intended to be populated
> with Latex content in order to describe the details of
> the implementation. The resulting document will become
> a section in the next edition of the SoftwareGuide.
> 
> Note that if you read about the basic registration framework,
> there is not much to add. The basic elements used here are
> the same as those used for image to image registration.
> The most significant difference is the use of a PointSet to
> PointSet metric.
> 
> 
> 
> Regards,
> 
> 
>     Luis
> 
> 
> 
> -----------------------------
> Thomas - Kuiran Chen wrote:
> 
> 
>>Hi Luis,
>>
>>We are trying the latest implementation of the ICP registration
> 
> algorithm in ITK (CVS release).
> 
>>One thing we are not clear is what the final transform parameters
> 
> stand for (given by  ::GetParameters() )?  There are totally 6
> parameters as of the iterative result.  Are they EulerAngle plus
> translation of the origin?  If so, what Euler Angle system it is in
> (i.e.: Euler ZYX or EulerZYZ)?
> 
>>Could we find any ITK documentation for this specific implementation
> 
> of ICP (acctually there are three of them in the examples from CVS)?
> 
>>Thanks very much!
>>
>>Thomas Kuiran Chen
>>
>>
>>_______________________________________________
>>Insight-users mailing list
>>Insight-users at itk.org
>>http://www.itk.org/mailman/listinfo/insight-users
>>
> 
> 
> 
> 
> 





More information about the Insight-users mailing list