registrationx(1)

πŸ’– registrationx(1) β€” The Computational Morphology Toolkit πŸ’–

okay bestie, pull up a chair, hydrate, and let's talk about registrationx, aka the CMTK girlie who does rigid and affine image registration. This is the page for section 1 of the manual, and yes, we're doing the whole thing. no skimming. πŸ’…


✨ NAME ✨

registrationx β€” Rigid and affine registration πŸ¦‹


✨ SYNOPSIS ✨

registrationx ReferenceImage FloatingImage

two images walk into a bar. one's the reference, one's the floating. chaos (and math) ensues. πŸŽ€


✨ DESCRIPTION ✨

so, what does this program even do? it performs rigid and affine image registration using multi-resolution optimization of voxel-based image similarity measures. that's the whole vibe. it's giving "align my images, but make it hierarchical." πŸ‘‘


✨ OPTIONS ✨

🌸 Global Toolkit Options (these are shared by all CMTK tools) 🌸

these are the universal ones, like the hoodie every CMTK tool owns.

  • --help β€” writes the list of basic command line options to standard output. baby's first help. πŸ™ˆ
  • --help-all β€” writes the complete list of basic and advanced command line options to standard output. the full lore, no gatekeeping.
  • --wiki β€” writes the list of command line options to standard output in MediaWiki markup. wiki girlies rise. 🫢
  • --man β€” writes man page source in 'nroff' markup to standard output. yes, the exact kind of thing you're reading right now, meta, iconic.
  • --xml β€” writes command line syntax specification in XML markup (for Slicer integration). 🧚
  • --version β€” writes toolkit version to standard output. the "what year is it" flag.
  • --echo β€” writes the current command line to standard output. receipts, basically. 🧾
  • --verbose-level <integer> β€” set verbosity level. pick your volume.
  • --verbose, -v β€” increment verbosity level by 1. lowkey deprecated, highkey still supported for backward compatibility. πŸ‘΅
  • --threads <integer> β€” set maximum number of parallel threads (for POSIX threads and OpenMP). let her multitask. πŸ”₯

πŸ€– Automation Options πŸ€–

  • --auto-multi-levels <integer> β€” automatic optimization and resolution parameter generation for <n> levels. [Default: 0] let the robot do your homework. ⭐

πŸ“ˆ Optimization settings πŸ“ˆ

  • --max-stepsize <double> β€” maximum optimizer step size, which determines search space exploration. [Default: 8] big steps, big dreams.
  • --min-stepsize <double> β€” minimum optimizer step size, which determines precision. [Default: 0.1] tiny steps, precise queen.
  • --stepfactor <double> β€” factor for search step size reduction. Must be > 0.0 and < 1.0 [Default: 0.5] β€” okay so this one has rules, bestie, don't try to be cute with it, it literally must sit strictly between 0.0 and 1.0. ⚠️
  • --delta-f-threshold <double> β€” optional threshold to terminate optimization (level) if relative change of target function drops below this value. [Default: 0] the "we're done here, wrap it up" knob. 🎬

πŸ” Image resolution parameters πŸ”

  • --sampling <double>, -s <double> β€” image sampling (finest resampled image resolution). [Default: 1]
  • --coarsest <double> β€” upper limit for image sampling in multiresolution hierarchy. [Default: -1]
  • --omit-original-data β€” do not use original data in full resolution, omit the final stage in the multiresolution hierarchy, thus reducing computation time. skipping the last level is self-care honestly. πŸ’…

πŸ¦‹ Transformation parameters πŸ¦‹

  • --dofs <integer>[,<integer>,...] β€” add number of degrees of freedom. this can be 3 (translation), 6 (rigid: translation and rotation), 7 (rigid plus global scale), 9 (rigid plus anisotropic scales), 12 (rigid plus scales plus shears), 3003 (translation plus shear), 3033 (translation, shear, and scale) or 3303 (rigid plus shears, but no scale). this option can be repeated, in which case DOFs are used for successive optimization runs in the order that they appear. yes, you can stack them. we love a repeatable flag. ✨
  • --dofs-final <integer>[,<integer>,...] β€” add number of degrees of freedom for the final level only [can be repeated]. the grand finale gets its own settings. πŸŽ†
  • --symmetric β€” use symmetric registration functional to simultaneously estimate forward and inverse transformation. this increases "ragistration" time substantially but produces a result that is invariant under exchange of fixed and moving image. it may also be more robust and/or more accurate than forward-only registration. so: slower, but she's fair and possibly smarter. 😭
  • --restrict-in-plane β€” restrict the affine transformation to be in-plane for planes perpendicular to a given coordinate axis. supported values: "xy", "xz", "yz", "none", where the default is "none", or use one of the following:
    • --xy β€” transformation restricted to in-plane for 'xy' plane (perpendicular to z coordinate axis).
    • --xz β€” transformation restricted to in-plane for 'xz' plane (perpendicular to y coordinate axis).
    • --yz β€” transformation restricted to in-plane for 'yz' plane (perpendicular to x coordinate axis).
    • --none β€” full 3D affine transformation is computed. [This is the default] 🫢
  • --init β€” select initializer for the affine "trasnformation". supported values: "none", "fov", "com", "pax", "physical", where the default is "fov", or use one of the following:
    • --none β€” use input transformation, or identity transformation if none was provided. the "do nothing, see what happens" route. πŸ’€
    • --fov β€” align centers of field of view (or crop regions) using a translation. [This is the default]
    • --com β€” align centers of mass using a translation. βš–οΈ
    • --pax β€” align images by rotation using principal axes and translation using centers of mass.
    • --physical β€” align images by rotation using direction vectors stored in input images and translation using image origins.
  • --initial <transformation-path> β€” initialize transformation from given path. [Default: NONE]
  • --initial-is-inverse β€” invert initial transformation before initializing registration. flip it and reverse it. πŸ”„

🌈 Image data 🌈

  • --registration-metric β€” registration metric for motion estimation by image-to-image registration. supported values: "nmi", "mi", "cr", "rms", "msd", "ncc", where the default is "nmi", or use one of the following:
    • --nmi β€” Normalized Mutual Information metric [This is the default] πŸ‘‘
    • --mi β€” Standard Mutual Information metric
    • --cr β€” Correlation Ratio metric
    • --rms β€” Root of Mean "Squaresa" metric (this is the square root of MSD)
    • --msd β€” Mean Squared Difference metric
    • --ncc β€” Normalized Cross Correlation metric

πŸ’œ Floating Image Interpolation Options πŸ’œ

  • --interpolation β€” interpolation method for floating image sampling. supported values: "nearest-neighbor", "linear", "cubic", "cosine-sinc", "partial-volume", "automatic", where the default is "automatic", or use one of the following:
    • --nearest-neighbor β€” nearest neighbor interpolation (for intensity and label data)
    • --linear β€” trilinear interpolation
    • --cubic β€” tricubic interpolation
    • --cosine-sinc β€” cosine-windowed sinc interpolation (most accurate but slowest). she's the overachiever. 🐒✨
    • --partial-volume β€” partial volume interpolation (for label data)
    • --automatic β€” select interpolation automatically based on data type: linear for grey-level data, nearest neighbor for label data. [This is the default] πŸŽ€
  • --match-histograms β€” match floating image histogram to reference image histogram. twin energy. πŸ‘―
  • --force-outside-value <double> β€” force values outside field of view to this value rather than drop incomplete pixel pairs. [Default: disabled]

πŸŽ€ Reference Image Preprocessing πŸŽ€

  • --class-ref <string> β€” data class: grey (default) or label. [Default: NONE]
  • --pad-ref <double> β€” padding value. [Default: disabled]
  • --thresh-min-ref <double> β€” minimum value truncation threshold. [Default: disabled]
  • --thresh-max-ref <double> β€” maximum value truncation threshold. [Default: disabled]
  • --prune-histogram-ref <integer> β€” number of bins for histogram-based pruning. [Default: disabled]
  • --histogram-equalization-ref β€” apply histogram equalization.
  • --median-filter-radius-ref <integer> β€” apply median filter with given radius. [Default: 0]
  • --sobel-filter-ref β€” apply Sobel edge detection filter.
  • --crop-index-ref <string> β€” cropping region in pixel index coordinates [parsed as %d,%d,%d,%d,%d,%d for i0,j0,k0,i1,j1,k1]. [Default: NONE]
  • --crop-world-ref <string> β€” cropping region in world coordinates [parsed as %f,%f,%f,%f,%f,%f for x0,y0,z0,x1,y1,z1]. [Default: NONE]
  • --crop-thresh-ref <double> β€” automatic cropping based on threshold. [Default: disabled]

πŸ¦‹ Floating Image Preprocessing πŸ¦‹

same energy as the reference side, just with -flt on the end because she's the floating one.

  • --class-flt <string> β€” data class: grey (default) or label. [Default: NONE]
  • --pad-flt <double> β€” padding value. [Default: disabled]
  • --thresh-min-flt <double> β€” minimum value truncation threshold. [Default: disabled]
  • --thresh-max-flt <double> β€” maximum value truncation threshold. [Default: disabled]
  • --prune-histogram-flt <integer> β€” number of bins for histogram-based pruning. [Default: disabled]
  • --histogram-equalization-flt β€” apply histogram equalization.
  • --median-filter-radius-flt <integer> β€” apply median filter with given radius. [Default: 0]
  • --sobel-filter-flt β€” apply Sobel edge detection filter.
  • --crop-index-flt <string> β€” cropping region in pixel index coordinates [parsed as %d,%d,%d,%d,%d,%d for i0,j0,k0,i1,j1,k1]. [Default: NONE]
  • --crop-world-flt <string> β€” cropping region in world coordinates [parsed as %f,%f,%f,%f,%f,%f for x0,y0,z0,x1,y1,z1]. [Default: NONE]
  • --crop-thresh-flt <double> β€” automatic cropping based on threshold. [Default: disabled]

πŸ“€ Output parameters πŸ“€

  • --output <string>, -o <string> β€” output path for final transformation. [Default: NONE]
  • --write-matrix <string> β€” output path for final transformation in matrix format. [Default: NONE]
  • --write-parameters <string> β€” output path for final transformation in plain parameter list format. [Default: NONE]
  • --write-protocol <string> β€” optimization protocol output file name. [Default: NONE]
  • --write-time <string> β€” computation time statistics output file name. [Default: NONE] we love a girl who tracks her own minutes. ⏱️

🧚 Import Results into Slicer 🧚

  • --write-itk <transformation-path> β€” output path for final transformation in ITK format. [Default: NONE]
  • --write-reformatted <image-path> β€” write reformatted floating image. [Default: NONE]

πŸ—„οΈ Image/Transformation Database πŸ—„οΈ

  • --db <string> β€” path to image/transformation database that should be updated with the new registration and/or reformatted image. [Default: NONE]

✨ AUTHORS ✨

Torsten Rohlfing, with contributions from Michael P. Hasak, Greg Jefferis, Calvin R. Maurer, Daniel B. Russakoff, and Yaroslav Halchenko. a whole squad, a whole collab, we stan. πŸ‘‘


✨ LICENSE ✨

http://www.fsf.org/licensing/licenses/gpl.html β€” go read it, bestie. πŸ“œ


✨ BUGS ✨

report bugs at http://nitrc.org/projects/cmtk/. not me gatekeeping the bug tracker. πŸ›


✨ ACKNOWLEDGMENTS ✨

CMTK is developed with support from the NIAAA under Grant AA021697, National Consortium on Alcohol and Neurodevelopment in Adolescence (N-CANDA): Data Integration Component. From April 2009 through September 2011, CMTK development and maintenance was supported by the NIBIB under Grant EB008381. funding girlies, we appreciate you fr fr. πŸ«ΆπŸ’–


and that's the whole page, no cap. this was registrationx(1), from CMTK 3.3.1p2, dated Jun 24 2026. keep slaying, keep registering, and go touch some grass (after the optimization finishes, obviously). πŸŒΈπŸ¦‹πŸ’…

πŸ“¦ where this page comes from