[Insight-users] point cloud registration

Luis Ibanez luis.ibanez at kitware.com
Thu Jul 28 17:27:27 EDT 2005


Hi Dennis,

If you Mesh was created out of a LevelSet segmentation,
I will strongly suggest you to *throw away the Mesh* and
simply do PointSet-To-Image registration. Using the
LevelSet as the image to register with.

You have multiple options there. If you are using level
set where the transition zone is wide enough (>10 pixels)
you can use the level set itself as the moving image.

Otherwise you may want to take the binary mask of the
LevelSet, compute a signed distance to it (using the
signed Danielsson distance filter), and use it for
registring your point set to it.

The ITK registration framework will take into account the
pixel dimensions of the image. So, just make sure that
the Spacing and Origin parameters of your image are set
correctly. All the registration process in ITK is done
in Physical coordinates.

You *MUST* read the Registration chapter of the ITK
Software Guide

       http://www.itk.org/ItkSoftwareGuide.pdf

that will help you clarify all the concepts. For example,
you will see that you can select any Transformation
for performing this registration. It may be rigid, or
affine, or even a deformable transform such as BSplines.


You may want to forget about PointSet-PointSet registration
and look more into PointSet to Image registration:

http://www.itk.org/Insight/Doxygen/html/classitk_1_1PointSetToImageRegistrationMethod.html

and the following PointSet to Image metrics
http://www.itk.org/Insight/Doxygen/html/classitk_1_1PointSetToImageMetric.html

http://www.itk.org/Insight/Doxygen/html/classitk_1_1MeanReciprocalSquareDifferencePointSetToImageMetric.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1MeanSquaresPointSetToImageMetric.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1NormalizedCorrelationPointSetToImageMetric.html



PointSet to Image registration is the best trade-off for
registration. It is faster than Image-to-Image because you
use less points, and it is faster than PointSet-to-PointSet
because you don't have to find correspondances.



   Regards,


      Luis



----------------------
wenzeld at att.net wrote:
> Hi Luis,
> 
>  
> 
> My triangle mesh was actually created from the level set extraction of 
> 3D volume.  One approach is that I could create a binary volume from my 
> 3D volume and level value, and then I could use the binary volume to 
> create the distance map.
> 
>  
> 
> So it sounds like I need to take the vertices from the triangle mesh and 
> insert them into a point set to use as the "fixed" set.  Is there any 
> particular ordering which would be more advantageous for searching, 
> i.e., ordered by slice-row-col or col-row-slice?
> 
>  
> 
> What if I want to allow scaling in my transform which does the 
> registration of the two point sets?  Rigid registration would just allow 
> for translation and rotation, but because the 3D volume may not have 
> been "corrected" properly for actual physical dimensions, I may need to 
> allow for slight scaling adjustment.  I noticed that you only have the 
> EuclideanDistancePointMetric subclass extension of the 
> PointSetToPointSetMetric class.  Are there other metrics which could be 
> implemented which would be better to use in the case of a transform 
> which allowed for scaling?
> 
>  
> 
> Thanks...
> 
>  
> 
> Dennis Wenzel
> 
> 
> 
>     -------------- Original message from Luis Ibanez
>     <luis.ibanez at kitware.com>: --------------
> 
>      >
>      > Hi Dennis,
>      >
>      > I would suggest you to use only the points
>      > from the triangular mesh, unless the triangles
>      > are very large compared to the density of points
>      > in the other set.
>      >
>      > If the density of points in the other set is
>      > higher then you may want to apply subdivision
>      > on the triangular mesh in order to bring both
>      > meshes to similar densities.
>      >
>      > In practice, it all depends on the shape of
>      > the triangular mesh and the point cloud.
>      > If they have fairly characteristic shapes,
>      > you may be able to register them using ICP
>      > despite the difference in point density.
>      >
>      >
>      > If you really really really want to use the
>      > mesh information, you can first rasterize
>      > the mesh (assuming that it is a closed surface! ),
>      > and compute the signed distance to the binary
>      > mask that results from the rasterization.
>      > Then you use that Distance map and the point
>      > cloud as the two datasets to be registered.
>      >
>      >
>      > Regards,
>      >
>      >
>      > Luis
>      >
>      >
>      >
>      > ---------------------
>      > Dennis Wenzel wrote:
>      > > Hello Luis,
>      > >
>      > > But to answer the first two questions...
>      > >
>      > > Can I use ITK to register a triangle mesh and an arbitrary set
>     of points?
>      > >
>      > > Will the ICP algorithm work for two points sets of the same
>     surface in
>      > > which there is no implied correspondence between points in the
>     two sets?
>      > >
>      > > Thanks...
>      > >
>      > > Dennis
>      > >
>      > > ----- Original Message ----- From: "Luis Ibanez"
>      > > To:
>      > > Cc:
>      > > Sent: Wednesday, July 27, 2005 9:43 AM
>      > > Subject: Re: [Insight-users] point cloud registration
>      > >
>      > >
>      > >>
>      > >> Hi Wenzeld,
>      > >>
>      > >> You may want to read the description of this
>      > >> problem in the ITK Software Guide
>      > >>
>      > >> http://www.itk.org/ItkSoftwareGuide.pdf
>      > >>
>      > >>
>      > >> That describes the ICP examples in Examples/Patented.
>      > >>
>      > >> ICP is the method that you may want to use in this case.
>      > >>
>      > >>
>      > >> You are right in your observation that the examples in
>      > >> this directory do not use any of the classes in the main
>      > >> Patented directory. The reason is that thanks to the
>      > >> modularity of the ITK Registration Framework, you can
>      > >> "build" ICP by putting together ITK components.
>      > >>
>      > >>
>     &! gt; >> In practice,
>      > >> the recipe for "ICP" includes the
>      > >> following ingredients:
>      > >>
>      > >> 1) Sum of Squared Distances Metric
>      > >> 2) An optimizer (usually Levenberg-Marquardt)
>      > >> 3) A search for nearest points
>      > >>
>      > >> Option (3) can be solved implicity with the help of
>      > >> a distance map, as illustrated in the examples of
>      > >> the ITK Software Guide.
>      > >>
>      > >> The "issue" with the ICP examples is that they are using
>      > >> fairly common algorithmic compontes as the ones listed
>      > >> above. Individually, they are not patented (as far as we
>      > >> know), but when you put them together in the particular
>      > >> combination described in the examples then you have an
>      > >> equivalent to ICP.
>      > >>
>      > >> This is just another insta! nce of how shamefully the
>      > >> intellectual property syst em obstructs the advancement
>      > >> of science and technology in the foolish quest for
>      > >> individual profit, most of the time at the expense of
>      > >> ideas that are... not that bright.
>      > >>
>      > >> The US patent office awards patents for "human genes",
>      > >> as well as for the "peanut-butter and jelly sandwich".
>      > >>
>      > >> You will find an intersting discussion on intellectual
>      > >> property in the book:
>      > >>
>      > >> "The Future of Ideas" by Lawrence Lessig
>      > >>
>      >
>     http://www.amazon.com/exec/obidos/tg/detail/-/0375726446/qid=1122475215/sr=8-1/r
> 
>      > ef=pd_bbs_sbs_1/104-7198053-7029550?v=glance&s=books&n=507846
>      > >>
>      > >>
>      > >>
>      > >> BTW, The patent for ICP is held by General Motors.
>      > >>
>      > >>
>      > >>
>      > >> Regards,
>      > >>
>      > >>
>      > >> Luis
>      > >>
>      > >>
>      > >> ------------------------
>      > >> wenzeld at att.net wrote:
>      > >>
>      > >>> I am a little familiar with ITK. I am curious about if, and
>     how, the
>      > >>> following can be done using ITK. (I can read the
>     documentation to
>      > >>> understand the details; I just need to know if it is possible
>     and
>      > >>> generally which class(es) to use.)
>      > >>>
>      > >>> 1. I have a triangle mesh surface (not closed) and a 3D point
>     cloud
>      > >>> of points. The cloud of points is acquired by a human using an
>      > >>> arbitrary traversal across the surface using a Microscribe
>      > >>> digitizer. How can the 3D point cloud be registered to the
>     triangle
>      > >>> mesh surface? I only need to register using rotations,
>     translations,
>      > &g! t;>> and scale.
>      > >>>
>      > >>> 2. I n another scenario, I have two 3D point clouds (and no
>     triangle
>      > >>> mesh surface) which I need to register to each other. These
>     point
>      > >>> clouds are acquired at separate points in time (e.g., days
>     apart) and
>      > >>> perhaps even by seperate humans using the digitizer which
>     means their
>      > >>> scanning patterns may be different. So, there is no
>     correspondence
>      > >>> between points, at least in the order in which they were
>     digitized.
>      > >>> Is the ICP (iterative closest point) algorithm appropriate
>     for this
>      > >>> pointset-to-pointset registration? If not, does one of the point
>      > >>> sets have to be converted into a triangle mesh (if so, how is
>     that
>      > >>> done)?
>      > >>>
>      > >>> 3. If the ICP algorithm is to be used in response to issue
>     number 2
>      > >>> above, then how is the fact that the ICP exam! ple in the
>      > >>> "examples/patented" folder need to be addressed? I did not
>     see that
>      > >>> any of the classes in the "code/patented" folder were being
>     used by
>      > >>> this example. So, what issues, if any, are there in using this
>      > >>> algorithm?
>      > >>>
>      > >>> Thanks...
>      > >>>
>      > >>> Dennis Wenzel
>      > >>> _______________________________________________
>      > >>> 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