Skip to main content

Digital diffeomorphism: Non-diffeomorphic volume and non-diffeomorphic area computation

Project description

Digital Diffeomorphism: Non-diffeomorphic volume and Non-diffeomorphic area

This is an implementation of the non-diffeomorphic volume and non-diffeomorphic area computation we introduced in our paper:

"On Finite Difference Jacobian Computation in Deformable Image Registration." Liu, Yihao, Chen, Junyu, Wei, Shuwen, Carass, Aaron, and Prince, Jerry. The International Journal of Computer Vision (2024).

Motivation

The Jacobian determinant $|J|$ of spatial transformations is a widely used measure in deformable image registration, but the details of its computation are often overlooked. Contrary to what one might expect, when approximated using the central difference, the number of pixels/voxels with negative $|J|$ does not reflect if the transformation is diffeomorphic or not.

The example above demonstrate a failure case of the central difference based $|J|$. The center pixel has central difference based $|J|=1$ but it is not diffeomorphic. In fact, the transformation at the center pixel has no effect on the computation of central difference based $|J|$, even if it moves outside the field of view.

We proposed the definition of digital diffeomorphism that solves several errors that inherent in the central difference based $|J|$. We further propose to use non-diffeomorphic volume (NDV) and non-diffeomorphic area (NDA) to measure the irregularity of 3D/2D transformations. The proposed NDV and NDA also measures the severity of the irregularity whereas the central difference approximated $|J|$ is only a binary indicator.

The center pixel in all three cases shown above would be considered diffeomorphic because of the checkerboard problem. The forward difference based $|J|$ is able to identiy that (b) and (c) exhibit folding, but only NDA can provide the observation that the non-diffeomorphic space caused by the transformation shown in (c) is larger than (b). The transformation shown in (b) is obviously more favorable than the one shown in (c) in terms of regularity. As such it is important for us to be able to draw distinctions between there two senarios.

Getting Started

Installation

The easiest way to install the package is through the following command:

pip install digital-diffeomorphism

To install from the source:

git clone https://github.com/yihao6/digital_diffeomorphism.git

cd digital_diffeomorphism

python setup.py install

Usage

To evaluate a 3D sampling grid with dimension $H\times W\times D\times 3$

ndv grid_3d.nii.gz

This will calculate

  1. non-diffeomorphic volume; and
  2. non-diffeomorphic voxels computed by the central difference.

If the transformation is stored as a displacement field:

ndv disp_3d.nii.gz --disp

Use '--gpu' option to enable GPU acceleration:

ndv grid_3d.nii.gz --gpu
# or
ndv disp_3d.nii.gz --disp --gpu

To evaluate a 2D sampling grid with dimension $H\times W\times 2$

nda grid_2d.nii.gz

This will calculate

  1. non-diffeomorphic area; and
  2. non-diffeomorphic pixels computed by the central difference.

If the transformation is stored as a displacement field:

ndv disp_2d.nii.gz --disp

Example inputs can be found at https://iacl.ece.jhu.edu/index.php?title=Digital_diffeomorphism

Potential Pitfalls

  1. Several packages implement spatial transformations using a normalized sampling grid. For example, torch.nn.functional.grid_sample. In this package, we use un-normalized coordinates to represent transformations. Therefore, the input sampling grid or displacement field should be in voxel or pixel units. In case the input is normalized, it must be unnormalized prior to using this package.

Citation

If you use this code, please cite our paper.

@article{liu2024finite,
  title={On finite difference jacobian computation in deformable image registration},
  author={Liu, Yihao and Chen, Junyu and Wei, Shuwen and Carass, Aaron and Prince, Jerry},
  journal={International Journal of Computer Vision},
  pages={1--11},
  year={2024},
  publisher={Springer}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

digital_diffeomorphism-1.1.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

digital_diffeomorphism-1.1.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file digital_diffeomorphism-1.1.0.tar.gz.

File metadata

  • Download URL: digital_diffeomorphism-1.1.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.19

File hashes

Hashes for digital_diffeomorphism-1.1.0.tar.gz
Algorithm Hash digest
SHA256 e149e634ff6200e2a35a2905e01e44c551c090cc177098edd15606e8f95a1880
MD5 4b798cec27db2c6a60a6fcf73d604620
BLAKE2b-256 350e5a1602c6dcd0380d31d6d7c4e7638a561e9713638b326434c2c1e31885fe

See more details on using hashes here.

File details

Details for the file digital_diffeomorphism-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for digital_diffeomorphism-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72f11da7e36d5aac965431dd52f9d79d3abbe8074e1ee7ad0a74124a9cf9d212
MD5 14edd4a30bb19f93e6fc90cb37b39a82
BLAKE2b-256 f53234a983568c688284e91cbace862c64c185b2f9ef281cd37a2b854004256e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page