[vtkusers] ICP algorithm giving eigenfunctions errors

Bill Lorensen bill.lorensen at gmail.com
Thu Jun 18 13:19:32 EDT 2009


I just compiled the C++ example and did not receive the error. I
suspect you have a python problem. Maybe in how you did the
translation from C++. I'm a python-dolt so can't help there.

Here is the output from the C++ run:
 ./ICPExample
Original point: (1, 0.1, 0)
Original point: (0.1, 1.1, 0)
Original point: (0, 0.1, 1)
Transformed point: (0.977702, 0.0272345, -0.00493619)
Transformed point: (0.0272345, 0.979395, -0.00662938)
Transformed point: (-0.00493619, -0.00662938, 1.01157)

BTW, I've used the VTK ICP code many times for many different
applications and never had any problems. You should make sure to apply
an initial transformation to get the two datasets reasonable close.

Bill




On Mon, Jun 15, 2009 at 2:57 PM, Sean Snyders<ssnyders at wetafx.co.nz> wrote:
> 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
>>
>
> _______________________________________________
> 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