[Insight-users] point cloud registration
Luis Ibanez
luis.ibanez at kitware.com
Wed Jul 27 22:18:02 EDT 2005
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" <luis.ibanez at kitware.com>
> To: <wenzeld at att.net>
> Cc: <insight-users at itk.org>
> 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.
>>
>>
>> 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 instance of how shamefully the
>> intellectual property system 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/ref=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,
>>> and scale.
>>>
>>> 2. In 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 example 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