Clustered landmark target points when using ICP

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Clustered landmark target points when using ICP

shantanu
Hey, I'm attempting to use the vtkIterativeClosestPointTransform to reconstruct the stanford bunny (mesh reconstruction from depth based images). When I attempt to do so I get misaligned meshes. I checked where the source and landmark points on each mesh were and for the source mesh they were scattered evenly across the mesh (Red) but for the target they were all clustered around the center/torso? of the bunny (green). Since the points are so concentrated in the center I assume the ICP is mismatching for that reason. Any suggestions on how to have the landmarks for the target be more even?

Thanks

Target Points


Source Points


Both Layered
Reply | Threaded
Open this post in threaded view
|

Re: Clustered landmark target points when using ICP

David Doria-2-3
On Mon, Jul 6, 2015 at 12:38 PM, shantanu <[hidden email]> wrote:
Hey, I'm attempting to use the vtkIterativeClosestPointTransform to
reconstruct the stanford bunny (mesh reconstruction from depth based
images). When I attempt to do so I get misaligned meshes. I checked where
the source and landmark points on each mesh were and for the source mesh
they were scattered evenly across the mesh (Red) but for the target they
were all clustered around the center/torso? of the bunny (green). Since the
points are so concentrated in the center I assume the ICP is mismatching for
that reason. Any suggestions on how to have the landmarks for the target be
more even?

Thanks

From a quick look (line 292 in vtkIterativeClosestPointTransform.cxx), it looks like the points to use are computed by stepping through the points using a step size computed as:

    step = this->Source->GetNumberOfPoints() / this->MaximumNumberOfLandmarks; // the default # landmarks is 200

There is no guarantee that doing this will result in points reasonably spread over the mesh.

One thing you could do is downsample one or both meshes before doing the ICP. This should let you control the number and distribution of points that are used in the matching process while ensuring they are spaced over the entire mesh. Then you can apply the transformation computed by the ICP filter to the original mesh.

David

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ

Search the list archives at: http://markmail.org/search/?q=vtkusers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
Reply | Threaded
Open this post in threaded view
|

Re: Clustered landmark target points when using ICP

shantanu
Thanks!, I'll try it out, I wasn't sure if that was the case since when I use any amount of landmarks they all cluster there, (10-15000) but usually only for that mesh, I tested it on all the others stanford bunny meshes and they seem to be more spread.
Reply | Threaded
Open this post in threaded view
|

Re: Clustered landmark target points when using ICP

shantanu
In reply to this post by David Doria-2-3
So I tried out just downsampling it first and then using ICP on those new points and found the landmarks were much more evenly distributed! Thanks. The issue is still the alignment, as it aligns it as how it did previously despite the target points being more dispersed. Do you have any suggestions for tuning ICP (or my meshes) to align these meshes better? I believe the rotation applied to the source mesh should be around 45 degrees about y with some translation.

ICP run over downsampled meshes


Two meshes layered before applying ICP