[vtkusers] ICP Error: vtkMath::Jacobi: Error extracting eigenfunctions
David Gobbi
david.gobbi at gmail.com
Mon Jan 30 14:31:38 EST 2012
Hi Maarten,
I think there are two issues here, one is that vtkLandmarkTransform
should have a check as you have described, but another potentially
serious issue is that, as far as I understand it, JacobiN should never
fail. I did a google search and found a message from 2002 by the
Numerical Recipes authors stating that the NR Jacobi code can become
numerically unstable due to certain compiler optimizations. I'm
guessing that certain compiler optimizations could similarly make the
VTK Jacobi code become unstable.
http://www.nr.com/forum/showthread.php?p=4913
Can you provide info about your compiler/flags etc? Also, is it
possible to get your code to print a matrix that causes JacobiN to
fail?
- David
On Mon, Jan 30, 2012 at 9:44 AM, Maarten Beek <beekmaarten at yahoo.com> wrote:
> Hi all,
>
> I get the following warning when using ICP:
>
> vtkMath::Jacobi: Error extracting eigenfunctions
>
> It comes from vtkMath::vtkJacobiN that calculates the eigenvalues, -vectors
> of a matrix.
> The function returns 0, when this error occurs (otherwise 1), but
> vtkLandmarkTransform doesn't check for the return value and thus uses
> undefined values for the eigenvalues, -vectors.
> This means my point set becomes invalid.
> I believe the way to avoid this error is to 'giggle' the coordinates a
> little when it happens, but how can I intervene when vtkLandmarkTransform
> stubbornly uses whatever values it gets from vtkMath::vtkJacobiN?
> Is there a way to intercept the error message?
>
> I also noticed that if I apply ICP on A and B1 resulting in the error
> message, applying ICP on A and B2 (loading the same data file that gives me
> B1) works fine. I don't see vtkMath::vtkJacobiN using a random number or
> doing something similar, which makes me believe the error message I get is
> due to floating point accuracy? Even more a reason to think that 'giggling'
> might work (if I were able to intervene before the invalid transform is
> applied to my data...)
>
> Thanks - Maarten
More information about the vtkusers
mailing list