Investigated differences between ITK version and
local version.
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!).
Finally, this itkSymmetricEigenAnalysis is used in Slicer, so this would
allow Slicer and DTIProcess to use the same underlying code.
Investigated differences between ITK version and local version.
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!).
Finally, this itkSymmetricEigenAnalysis is used in Slicer, so this would allow Slicer and DTIProcess to use the same underlying code.
resolves gh-7 https://github.com/NIRALUser/DTIProcessToolkit/issues/7