COMP: Use itk::Math::MatrixExponential instead of removed vnl_matrix_exp#1452
COMP: Use itk::Math::MatrixExponential instead of removed vnl_matrix_exp#1452hjmjohnson wants to merge 1 commit into
Conversation
VXL removed core/vnl/vnl_matrix_exp.h, breaking AffineLogTransform's include of <vnl/vnl_matrix_exp.h> (InsightSoftwareConsortium/ITK#6452). Switch to itk::Math::MatrixExponential (itkMatrixExponential.h), an ITK-supported Eigen-backed replacement using Higham scaling-and-squaring. Call-site argument types (vnl_matrix_fixed, vnl_matrix) are unchanged.
2e19386 to
c33e80a
Compare
|
Performance impact of migrating AffineLogTransform from Per-call timing + net AffineLogTransform impact
Per
The d² Numerical equivalence + accuracyFor near-identity log-domain matrices the absolute output difference between the two methods is ~1e-12 — far below any registration tolerance, so registration results are unchanged. Eigen (Higham scaling-and-squaring) is also ~2–3 orders of magnitude more accurate than vnl's Taylor series on the This PR depends on |
|
Thanks Hans. Would this compile for both ITK 5 and 6, when we add something like |
VXL removed
core/vnl/vnl_matrix_exp, whichAffineLogTransformincluded via<vnl/vnl_matrix_exp.h>(InsightSoftwareConsortium/ITK#6452). This migrates the two call sites toitk::Math::MatrixExponential, an ITK-supported Eigen-backed replacement.Change
Call-site argument types (
vnl_matrix_fixed,vnl_matrix) are unchanged; the new function provides matching overloads. BothAffineLogTransformandAffineLogStackTransformcomponents rebuild clean against the new header.