Registration using Embedded Maps
REM registers N-D image pairs that may contain topological differences. It produces an output reconstructed image and both a geometric and intensity transformation as a N-D vector field.
Registration is a fundamental processing component of most biomedical image analysis methods. Registration when one image contains a region not in the other violates topological preservation, a constraint used in many modern registration methods. REM represents the source and target images as embedded maps that combine intensity and the imaging space into one geometric object, a manifold. Registration is the performed on the manifolds so that changes in image topology can be recovered as intensity transformations. The product is a combined geometric and intensity transformation matching the source and target images.
The REM algorithm is generic and works on N dimensional scalar images. Command line programs are provided to operate on 2D and 3D images. The programs take as input the source and target images and produce the spatial-intensity transformation and optionally the source image after transformation. A typical usage scenario is registration of multiple images to a common target to test for group differences after removing affine differences.
There are two ways to install REM, as precompiled binaries and from source.
To install one of the precompiled binaries, download the appropriate file below for your system. Currently binaries for Linux (x86-64), Microsoft Windows, and Mac OS X (Universal) are provided. Unarchive in a directory, $INSTALLDIR. The two command line programs can be run from your shell as $INSTALLDIR/bin/rem2d and $INSTALLDIR/bin/rem3d
If you are using the linux version with shared libraris (for the Slicer module) you will also need to add $INSTALLDIR/lib to your LD_LIBRARY_PATH.
- Linux x86-64 static: REM-1.2.0-Linux.tar.gz
Version 1.0.1 (ChangeLog)
- Linux x86-64 static: REM-1.0.1-Linux-static.tar.gz
- Linux x86-64 shared: REM-1.0.1-Linux-shared.tar.gz (includes the Slicer3 plugin)
- Mac OS X (ppc and intel): REM-1.0.1-Darwin-universal.tar.gz
- Linux: REM-1.0.0-Linux-x86-64.tar.gz (includes the Slicer3 plugin)
- Mac OS X (ppc and intel): REM-1.0.0-Darwin-universal.tar.gz
- Microsoft Windows XP: REM-1.0.0-Win32.zip
To install from source requires a few prerequisites. A working C++ development environment is needed. The software also depends on the Insight Segmentation and Registration Toolkit and CMake. A script is provided to download and build the required dependencies. On Microsoft Windows the Cygwin shell is necessary to use the automated build scripts.
Download the stable source:
- Version 1.2.0: REM-1.2.0-Source.tar.gz
- Version 1.0.1 (ChangeLog): REM-1.0.1-Source.tar.gz, REM-1.0.1-Source.zip
- Version 1.0.0: REM-1.0.0-Source.tar.gz, REM-1.0.0-Source.zip
You can access and track the latest code using git:
git clone bsl.ece.vt.edu:REM.git
To build the source run the script REM/Scripts/build.sh from a shell. If you want to reuse an existing ITK installation, define the environment variable ITK_DIR and invoke cmake from a build directory pointing it to the REM source.
Slicer3 Module: The 3D version of REM can also be used as a Slicer3 Module. To build the module you need a development version of Slicer3 as described here. Download a source release or subversion checkout of the REM the code. Set the environment variable Slicer3_DIR before invoking the build script (or invoking cmake yourself). The module is placed in the lib/Slicer3/Plugins subdirectory of the REM build tree. Add this directory to your module list in Slicer.
Using REMTo get help on using the command line programs you can issue the -h flag on the command line.
Usage: rem2d [ string] [ string] [ string] [-i integer] [-e float] [-o string] REQUIRED: string source image file name ['(null)'] string target image file name ['(null)'] string output deformation field ['(null)'] Optional: Switch Type Help [default value] -i integer maximum number of iterations  -e float embedding scale parameter [0.1] -o string output image file name ['(null)'] -h bool Print this message
Memory requirements are 512 MB or greater for typical 2D images, 1GB or greater for typical 3D MR images. Input and output images can be in any format ITK supports. It is recommended using NIFTI formats for images and meta header (.mha) format for the transformations.
REM Pipeline Module: To make it easier to use REM in a LONI pipeline environement a pipeline module definition file for rem3d is provided in the binary and source distributions under the Resources directory, or can be downloaded here.
Uninstalling REMTo uninstall REM simply delete the build directory or the executables.
- This work was funded in part by the Center for Computational Biology under NIH grant U54 RR021813
- If you use REM in published work, please use the following citation:
C. L. Wyatt and P. J. Laurienti, Nonrigid Registration of Images with Different Topologies using Embedded Maps, Proceedings of IEEE Engineering in Medicine and Biology Conference, August 2006.