Computerhead Fusion Package IDL Library

Image Fusion Package

The IDL Image Fusion module provides tools for aligning and merging volume images represented by oriented 3D arrays.

2006-12-13
Changed name of cost functions: now prefixed 'Cost'.
2006-12-10
Initial release.
[Download]

Principal Subroutines

This set of three routines represents the application programmer's interface to the Fusion package. If all you want to do is use the package to fuse images, then these routines are all you need to know about.

AlignVolumes
Coregisters two oriented volumes, updating a user-supplied parameter vector that describes the coordinate transfer function.
FrameVolume
Generates a coordinate frame for a specified 3D array. This frame maps voxel indices to locations in a global coordinate system.
MergeVolumes
Merges two oriented volumes using a user-supplied parameter vector that describes the coordinate transfer function.

Supporting Routines

Several additional routines are provided by the package that may be useful for testing purposes or for implementing new image fusion methods. These methods may be called by your own methods but they should not be modified.

Note that these routines perform linear transformations on image geometry. If you want to develop non-linear (warping) transformations, then you will need to write methods similar to these, implementing your own transform type. If you decide to do this, please consider submitting your code for inclusion in this module.

CreateLinearTransform
Calculate the transform encoded by the nominated parameter tuples. Parameters are X, Y, Z scaling followed by X, Y, Z rotation and X, Y, Z translation. The coordinate frame is right-handed, as are all rotations. Rotations are described in degrees and are applied strictly in order X, Y then Z, in local (ie transformed) coordinates. Translations, by contrast, are applied in the global coordinate frame
CreateVolumeProbeLinear
Create an array of sample points by transforming pixel positions in a user-specified target array.
ResampleVolumeLinear
Transform a floating volume, resampling it into a fixed volume. The geometry of each volume is described by an associated coordinate frame. The coord frame of the floating volume is modified by a linear transform prior to resampling.

Customisation Routines

The fusion package has been designed to be extensible. You can provide your own optimisation routines, your own image similarity metrics and your own parameterised transformations. The following are typical of the sub-routines that you will need to write in order to implement your own concepts.
CostMutualInformation
Calculate a pixelwise comparison between two similar arrays.
CallCompareVolumesMutualInformation
Callback function for the optimisation procedure. This function retrieves references to the fixed and floating volumes and passes them, along with a parameter vector, to the cost function
CompareVolumesRigidMutualInformation
Evaluates a cost function for an array and a transformed array.
MergeVolumesRigid
Samples a source array into a target array, after applying a rigid body transformation to the former.
PowellMinimisation
Uses Powell's method to seek the minimum of a multi-dimensional cost function representing the amount of difference between two oriented 3D arrays.

Erin McKay 2006-12-13