# BSplines Transform CLP

## General Information

- Type: CLP
- Category: Registration
- Author: Nicolas Duchateau
- Contributor: Xavi Planes
- Contact: xavier.planes at upf.edu
- Description: Compute a non-rigid transformation between two images, using Mattes’ implementation of mutual information as a similarity metric [3]. The transformation is modeled using third-order B-splines [5]. The local deformations can be constrained, leading to a diffeomorphic (i.e. invertible) transformation [4]. The bulk transform is used as an initial transform but is not touched.

[3] Mattes, Haynor, Vesselle, Lewellen, Eubank. "PET-CT image registration in the chest using free-form deformations", IEEE Transactions on Medical Imaging 22(1):120-128, January 2003. Doi: 10.1109/TMI.2003.809072

[4] Rueckert, Aljabar, Heckemann, Hajnal, Hammers. "Diffeomorphic registration using B-splines", Proc. MICCAI 2006, LNCS vol. 4191, pp. 702-709. Doi: 10.1007/11866763_86

[5] Rueckert, Sonoda, Hayes, Hill, Leach, Hawkes. "Nonrigid registration using free-form deformations: Application to breast MR images", IEEE Transactions on Medical Imaging 18(8):712-721, August 1999. Doi: 10.1109/42.796284

## Usage

### Parameters

Label | Type | Flag / Index | Default value / Channel | Description |
---|---|---|---|---|

Pre processing | ||||

Region | region | region | 0,0,0,0,0,0 | user specified region for fixed image |

Sigma | double | sigma_smooth | 0 | Sigma for the Gaussian filter |

Low Thresh Fixed | double | flaglowThreshFixed | boolean | Low Thresh Fixed |

Low Thresh Fixed | float | lowThreshFixed | 0 | Pixels below this intensity are ignored for metric computation |

High Thresh Fixed | boolean | flaghighThreshFixed | false | High Thresh Fixed |

High Thresh Fixed | float | highThreshFixed | 0 | Pixels above this intensity are ignored for metric computation |

Low Thresh Moving | boolean | flaglowThreshMoving | false | Low Thresh Moving |

Low Thresh Moving | float | lowThreshMoving | 0 | Pixels below this intensity are ignored for metric computation |

High Thresh Moving | boolean | flaghighThreshMoving | false | High Thresh Moving |

High Thresh Moving | float | highThreshMoving | 0 | Pixels above this intensity are ignored for metric computation |

Padding Value | float | paddingValue | 0 | Default pixel value |

Add Observer | boolean | add_observer | true | show registration outputs |

Registration | ||||

Optimizer | string-enumeration | optim | LBFGSB | LBFGSB, gradient descendent |

spacing CP X | float | spac_CP_x | 0 | Spacing of control points along x axis (mm) |

spacing CP Y | float | spac_CP_y | 0 | Spacing of control points along y axis (mm) |

spacing CP Z | float | spac_CP_z | 0 | Spacing of control points along z axis (mm) |

maxMovementOfCP | float | maxMovementOfCP | 0 | Maximum movement of the control points (in percentage of the control point spacing) |

numberOfHBins | integer | nb_Bins | 64 | Number of histogram bins |

Fraction of samples | integer | frac_S | 100 | Fraction of samples |

Split TR | boolean | split_tr | false | Refine input transformation by factor 2 |

Bulk Transforms | string-vector | bulk_tr | Refine input transformation by factor 2 | |

Defo Field Moving Definition Specified | boolean | out_Def_M | false | Define output image dimensions that will be used for writing the Vector Field: true -> Moving Image, false -> Fixed image |

Filenames series | boolean | series | false | Working with series filenames (e.g.: filename_0012.vtk) |

Save BMP images | boolean | save_BMP | false | Save input images to bmp (2D data only) |

IO | ||||

Fixed Image | image | index 0 | input | Fixed Image |

Moving Image | image | index 1 | input | Moving Image |

Mask Image | image | maskMetric | input | A binary mask image defining in and out for computing the similarity metric |

Input transform | transform (fileExtensions=".dof") | in_tr | input | Defines a pre-transform that will be altered by this registration |

Output Image | image | outputImage | output | Output Image |

Output transform | transform (fileExtensions=".dof" reference="movingImageFileName") | index 2 | output | |

Output Deformation Field | transform (fileExtensions=".vtk") | out_Def | output | Output Deformation Field Name |

### Examples

BSplines Transform between two images. The last column is the result and the transformation grid.

## Development

Source code: C++ Source code and XML description