The itkSymmetricEigenAnalsysImageFilter and the local itkFastSymmetricEigenAnalsysImageFilter were nearly identical. Upon inspection it is clear that at some point one of these files was a direct copy of the other.
The local version directly called vnl_symmetric_eigensystem, which is appearently not thread safe. The ITK version uses a the itkSymmetricEigenAnalysis class (A thread safe alternative to vnl_symmetric_eigensystem) to do the computations:
\brief Find Eigen values of a real 2D symmetric matrix. It
serves as a thread-safe alternative to the class:
vnl_symmetric_eigensystem, which uses netlib routines.
*
Additionally, itkSymmetricEigenAnalysis has a desired default behavior of ordering eigen values. The ITK version also provides mechanisms for choosing other ordering behavior (And respects the choice given!).
NOTE: The itkSymmetricEigenAnalysis is already used in the maxcurvature.cxx functions.
NOTE: itkSymmetricEigenAnalysis is used in Slicer, so this would allow Slicer and DTIProcess to use the same underlying code.
@fbudin69500 @styner @aghayoor
The itkSymmetricEigenAnalsysImageFilter and the local itkFastSymmetricEigenAnalsysImageFilter were nearly identical. Upon inspection it is clear that at some point one of these files was a direct copy of the other.
The local version directly called vnl_symmetric_eigensystem, which is appearently not thread safe. The ITK version uses a the itkSymmetricEigenAnalysis class (A thread safe alternative to vnl_symmetric_eigensystem) to do the computations:
Additionally, itkSymmetricEigenAnalysis has a desired default behavior of ordering eigen values. The ITK version also provides mechanisms for choosing other ordering behavior (And respects the choice given!).
NOTE: The itkSymmetricEigenAnalysis is already used in the maxcurvature.cxx functions.
NOTE: itkSymmetricEigenAnalysis is used in Slicer, so this would allow Slicer and DTIProcess to use the same underlying code.