In the following, you can find most of the code I developed for my publications. The software is provided for research purposes only, with no warranty (for details see lincence file). It may be helpful to replicate my experimental results and minimise time and effort for interested colleagues to build upon my work. If you use any of this source code for your own work, please cite the relevant publications.

New: Correspondence fields using sparse keypoints and a dense displacement search as presented at MICCAI 2015.
In particular suitable for large motion estimation and validated for the registration of COPD lung patients. Code corrField

Contrast- and modality-invariant image similarity

The Modality independent neighbourhood descriptor (MIND) is a multi-dimensional local image descriptor, which enables multi-modal registration. It has also been shown to improve accuracy and robustness when registering scans of the same modality. Each MIND descriptor is calculated based on patch distances (within the local neighbourhood of the same scan). Comparison of MIND representations is performed as sum of squared/absolute differences of its entries.

The self-similarity context (SSC) is an improvement of MIND, which redefines the neighbourhood layout to improve the robustness of the matching. It also comes with an efficient quantisation scheme, which allows the computation of pair-wise distances using the Hamming weight. Matlab code is available to extract MIND/SSC descriptors for 3D volumes and calculate a distance image. Derivatives can be estimated using finite differences. Download: MIND/SSC

Local Canonical Correlation Analysis (LCCA) is designed to estimate new relationships across multichannel images. The input images can be multisequence MRI images, but also image features (intensities, gradients, ..). A series of box filters is employed to quickly calculate local variance and cross-covariance matrices. Download: LCCA

Discrete Optimisation for image registration

Dense displacement sampling (deeds) is a 3D medical registration tool for general purposes, based on a discretised search space. It calculates image similarity for a number of control points (using a random sampling of voxels for each control point). The regularity of the deformation field is achieved through a pair-wise term, which models an incremental diffusion regularisation. The optimisation is performed by belief propagation on an image-adaptive minimum-spanning-tree, which is very fast and reliable in practice.

Download: new command-line tool of all variants with parameter parsing and basic GUI (for OSX)

(Linear registration and faster OpenCL implementation coming soon, or by email request.)
Includes a script for straightforward compilation (using g++ under OSX or Linux). Nifti-format input images are required (segmentation may be provided). A typical 3D registration (~5 million voxels per volume) with deeds takes less than a minute.

A non-parametric version of deeds has been presented at WBIR 2014. This approach works particularly well for inter-subject brain registration and outperformed 14 other non-linear registration methods used in the study of Klein, et al. (Neuroimage 2009) for all four datasets.

Registration performance

Most of this code is implemented in plain C/C++, and works standalone without external libraries. Some partsare fairly well optimised for speed on a multi-core CPU including the use of vector processing (Intel SSE intrinsics).

The speed and accuracy of deeds and MIND/SSC was tested on a large number of medical images. The Evaluation of Methods for Pulmonary Image Registration (EMPIRE10) study provides a fair and comprehensive comparison of most state-of-the-art medical registration tools. This software currently achieves the second lowest target registration error (0.62 mm) and fissure error (0.08%) (see results). It does not require lung segmentation masks, shows no singularities in the motion field in is with a processing time of 3 minutes one of the fastest algorithms. (pdf)