[vtkusers] ICP algorithm giving eigenfunctions errors

Sean Snyders ssnyders at wetafx.co.nz
Mon Jun 15 14:57:22 EDT 2009


Hi David,

Well, the data is from the example: 
http://www.vtk.org/Wiki/Iterative_Closest_Points_(ICP)_Transform 
<http://www.vtk.org/Wiki/Iterative_Closest_Points_%28ICP%29_Transform> 
given in the wiki.

It is 3 points where the source is shifted 0.1 in the y direction:
source[0] = (1.0, 0.1, 0.0)
source[1] = (0.1, 1.1, 0.0)
source[2] = (0.0, 0.1, 1.0)

and target:
target[0] = (1.0, 0.0, 0.0)
target[1] = (0.1, 1.0, 0.0)
target[2] = (0.0, 0.0, 1.0)

and for each of the iterations of the ICP it gives the error.

ciao,
Sean.

David Doria wrote:
>
> On Mon, Jun 15, 2009 at 3:08 AM, Sean Snyders <ssnyders at wetafx.co.nz 
> <mailto: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
> ------------------------------------------------------------------------
>
> _______________________________________________
> 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
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>   



More information about the vtkusers mailing list