[vtkusers] ICP algorithm giving eigenfunctions errors

David Doria daviddoria at gmail.com
Mon Jun 15 09:52:44 EDT 2009


On Mon, Jun 15, 2009 at 3:08 AM, Sean Snyders <ssnyders at wetafx.co.nz> wrote:

> Hi,
>
> I use the example from:
> http://www.vtk.org/Wiki/Iterative_Closest_Points_(ICP)_Transform<http://www.vtk.org/Wiki/Iterative_Closest_Points_%28ICP%29_Transform>
>
> and do a direct translation thereof in python (see code listed below).
> When I run the code, I get this warning:
> --------------
> Generic Warning: In ........./Common/vtkMath.cxx, line 758
> vtkMath::Jacobi: Error extracting eigenfunctions
> ------------
>
> and my output transformed points are then:
> ------------------
> xformed source point[0]=[nan, nan, nan]
> xformed source point[1]=[nan, nan, nan]
> xformed source point[2]=[nan, nan, nan]
> -----------------
>
> Should this example not work? I have not tested this with the c++
> implementation, but surely it should work.
>
> Thanks!
> Sean.
>

Sean,

It is completely dependent on the data sets that you use. I've seen that
error when it cannot find a good enough transformation. Take one of your
data sets (call it A), perturb it slightly (call this one A'), and run the
example on A and A'. If that doesn't work then please post your data sets so
we can take a look.

As this points out, I think we should really develop a better ICP algorithm
in VTK. There are several algorithms that use the covariance of the
transformation parameters to tell you if the transformation has converged to
a reasonable position, i.e. if it "worked". They usually also use robust
estimators (M-estimators) to determine the point pairing before the
transformation is estimated. Does anyone already have a good ICP
implementation that they could add to VTK?

Thanks,

David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090615/e93e938d/attachment.htm>


More information about the vtkusers mailing list