Projects:RegistrationDocumentation:Developer
From NAMIC Wiki
Home < Projects:RegistrationDocumentation:Developer
- Parameter Presets: To navigate the jungle of parameter settings and avoid complex GUI design efforts, all parameters are listed and controllable via a preset dropdown menu. The menu can then be labeled by use cases i.e. combinations of MR-MR, same contrast, inter-subject, inter-modality, fast, precise etc. Parameter sets can be saved to files and shared. Each preset becomes a menu entry. This will enable building a library of presets that can be shared among users also.
- Module Design: Separate those functions that use different algorithms and cost functions. Top level distinction Fiducials/Intensity seems most intuitive. As the user I then combine my workflow from the selection below. We also have a clean modular design where changes in one do not that easily spill over to the other.Hence we'd have the following sub-modules within Registration:
- 1. Manual Affine
- interactive visual alignment with 6-12 DOF using Transforms module. This is a good tool for cases in need of an initialization.
- 2. Fiducials Affine
- solves Procrustes registration problem with 6-12 DOF using ICP or similar Input: fiducial pairs. This is the final destination for registration that cannot be accomplished otherwise.
- 3. Fiducials BSpline
- creates an interpolation grid from fiducials (Krigging or similar): Input: fiducial pairs
- 4. Intensity Affine
- creates Affine Xform, Input: image pair
- 5. Intensity BSpline
- creates BSpline Xform, Input: Affine aligned image pair.
- 6. Xform Concatenation
- combines multiple Xforms
- 7. Interpolator
- applies Affine and/or BSpline Xform and resamples image data
- 8. Evaluation
- registration quality assessment. This may be better integrated with each of the above modules instead of a separate module, esp. when using measurements such as final cost function. Visualization also may depend on DOF.
- Transform Concatenation: Multiple spatial transforms applied to the same volume appear as nested MRML entries, which could be collapsed. Important to apply before a volume resampling is executed to avoid accumulation of interpolation effects. Affine is simple matrix multiplication, Bspline would have to send the gridpoints through all Xforms and reparameterize. More Details.
- Recursive DOF hierarchy: Both multi-resolution and the sequence of calls with increasing DOF could be implemented as a single recursive scheme. The caller provides an array of DOF and a matching array of resolution levels, which is processed by recursive calls with the first/last element taken from the list. A simulation Matlab program and example is here: Projects:RegistrationImprovement:RecursiveScheme
- The GUI can list the many combination as a single list of checkboxes for increasing DOF. The full list would be 3,6,7,9,12,b . The checked boxes provide the input string for the recursive call. Media:DOFHierarchy_GUI.jpg
- Tooltip link:direct links to Reference Manual from Widget tooltips? Can the static text or widget itself launch a link to the Reference manual entry on the Documentation Wiki? That would enable a one-click answer to "What does this button do?" Casey suggested a little ? button next to each widget. Opportunities exist with the new QT-widget enabled webkit to integrate online documentation live into the application.
- Offline WIKI: can the documentation WIKI be downloaded and used offline, e.g. for laptop users?
- Affine SVD: decomposition of affine into the 4 3DOF components: translation, rotation, scaling, shearing. Can an SVD do this for 12DOF vs. 3 DOF? Having values that relate directly to geometry can help greatly in evaluating and adjusting results. E.g. user can tell visually which of the 3 rotations is most out of alignment. Checking the result rotation angles already provides a quick check and valuable info about where things went awry if solution is suboptimal. Also enables to decouple individual elements, i.e. extract the shear component etc. The current "Transforms" module already does this for translation & rotation, but the scale and shear portions are missing.
- Registration Metrics: Can we use the Label Map Hausdorff Distance Feature ?
- Methods design: We can categorize 2 ways at the top level: Affine/BSpline or Fiducial/Intensity. All 4 combinations will likely use different algorithms: Fiducial+Affine = Procrustes, Fiducial+Bspline = direct fitting/krigging , Intensity+Affine = 12 DOF optimizer, Intensity+BSpline = non-rigid. Fiducial/Intensity obviously use different cost function, whereas Affine/BSpline is a distinction in spatial DOF. So Fiducial/Intensity seems to be the more intuitive choice as top level distinction.