Skip to content

Output of itk::DisplacementFieldJacobianDeterminantFilter depends on direction matrix #5358

Open
@cookpa

Description

@cookpa

Description

Jacobian determinants from itk::DisplacementFieldJacobianDeterminantFilter differ from those derived from itkDisplacementFieldTransform.hxx if the displacement field image has non-identity direction matrix.

Steps to Reproduce

Here's a link to ITK code that computes Jacobian two ways: by using the itk::DisplacementFieldJacobianDeterminantFilter, and by iterating over each voxel calling transform->ComputeJacobianWithRespectToPosition on a displacement field transform object.

https://github.com/cookpa/antsJacobianExample/tree/master/itk_jacobian

The warp fields I tested on were from ANTs, and are available here

https://upenn.box.com/s/voe2agpd30serkj4kn0fvt9bit8pg5nx

By integrating the Jacobian over each label in the fixed space, I computed the expected volume of the deformed moving image. For an identity direction matrix, the two methods are similar.

But for the case where the direction matrix is diag(-1,-1,1), the determinant filter is very different.

Expected behavior

Determinants are similar, if not exactly the same. They should both approximate the volume change within a region due to the warp.

Actual behavior

Differences of a few percent for oblique direction matrices, large differences for D = diag(-1,-1, 1).

Reproducibility

Consistent on my test data.

Versions

v5.4.3

Environment

Mac OS Intel
Python 3.11
Apple clang version 16.0.0 (clang-1600.0.26.6)

Additional Information

Code at https://github.com/cookpa/antsJacobianExample

The box link above contains data and code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:BugInconsistencies or issues which will cause an incorrect result under some or all circumstances

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions