Home

 About

 Sponsors

 Download

 Documentation

 FAQ

 Mailing Lists

 Testing

 News

 Bug Tracking

 Data

 Related Software

 Applications

 Copyright

 Marketplace

This application shows how to interface VTK, The Visualization Toolkit, to Insight. The application registers datasets using the Mutual Information Algorithm of Viola and Wells. The data is read using VTK, normalized to a unit variance and zero mean and then passed to Insight using itk's Import facility. Once the registration completes,  the transform produced by Insight is converted to a VTK transform. A VTK TCL script reads the transform and displays the two data sets side-by-side.
Another Insight Application approaches similar problems by using the multi-resolution framework in Insight.

What Is The Purpose Of This Application ?

The application illustrates several concepts:
  1. How to use the itk::ImageToImageRigidMutualInformationGradientDescentRegistration to register medical datasets. This class is relatively easy to use. However, the algorithm has several parameters that affect its perfomance. We have performed a design of experiments analysis to determine the sensivity and perfomance of the algorithm on Computeed Tomography (CT), Magnetic Resopnance Imaging (MRI) and Positorn Emission Computed Tomography (PET).
  2. How to build an application with CMake that combines VTK and ITK.
  3. How combine VTK and ITK classes in the same application.

Getting Started

You will need to build Insight. You will also need to build  VTK4.2 or later. In addition, this application requires two changes to your CMake configuration:
  • BUILD_EXAMPLES:BOOL=ON and run cmake.
  • VTK_BINARY_PATH:PATH=location_of_your VTK binary tree and run cmake
You may want to download the sample dfata for this application. There are two MRI datasets, one is from a 1.5T system and the other is from a 3T system.

A Word About the Mutual Information Parameters

We have found it necessary to "normalize" the datasets. We compute the mean and variance of both datasets and then shift and scale the data. Also, we use a multi-resolution approach, running the algorihm from a resolution of 32 up to 256 (for MRI) and 512 (for CT). Once the data is normalized, we use the following parameters for all of our applications.
  • learningRate - .0005, the relaxation factor for the optimization.
  • standardDeviation - 2, the std for the Parzen Window density estimation
  • numberOfSamples - 50, the number of random samples acquired from the target and source dataset.
  • numberOfIterations - 2000, the number of optimization steps.
  • translateScale - 100, the relaxation multiplier for the translate component of the datasets.

Using the Application

The applications comes in two parts: a C++ program and a tcl script. The C++ program performs the registraion using a combination of VTK and ITK. The tcl script reads the transform created by the C++ program and display the two datasets side-by-side.
  • The registration application is called MRIRegistration, accepting the following command line arguments:
    • --study1Prefix FILEPREFIX
    • --study1Resolution I,J,K
    • --study1Spacing X,Y,Z
    • --study2Prefix, --study2Resolution, --study2Spacing, as above
    • --translateScale S
    • --shrink I,J,K
    • --learningRate N
    • --standardDeviation S
    • --numberOfSamples N
    • --numberOfIterations N
    Each run of the program produces a file reg.tcl that contains the study information and the transformation in a form that VTK can read. We creat shell script or batch files to run the program. The program expects a guess on standard input and outputs the final guess to standard output. Thus, scripts multi-resolution runs can be chained together. Here is a sample Unix shell script and a sample Windows batch file that works with the distributed data.
  • The display program is a VTK TCL scrip called MultiCompareAD.tcl and is run by typing:

  • vtk MultiCompareAD.tcl reg.tcl.

Results

The following images show results from the multi-field MRI data. The registration was performed on a Dell Latitude laptop, 750 mhz, 512meg memory. The total elased time for all resolutions was 48 seconds.


The upper left image is a checkerbord with alternating study 1 and study 2 images. The upper right is a difference image. The lower left is study 1, resampled to align with the lower right image, study 2.
A small interface lets you control the slice, window/level and number of divisions in the checkerboard display.


Go back to Applications.