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.