mia-2dmult...gistration(1)

โœจ NAME โœจ

mia-2dmultiimageregistration โ€” Non-linear registration of 2D images ๐Ÿ’–

It's a General Commands Manual situation, bestie, and this is the whole vibe. ๐ŸŽ€


๐ŸŒธ SYNOPSIS ๐ŸŒธ

mia-2dmultiimageregistration -o <out-transform> [options]
<PLUGINS:2dimage/fullcost>

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

okay so mia-2dmultiimageregistration runs a non-rigid registration based on the cost criteria you hand it and a transformation model you pick. That's the whole plot. โœจ

But here's the tea: unlike mia-2dnonrigidreg, this one does not have special command line parameters where you hand over the images. Nope. Instead the images get specified directly when you define the cost function. So like, the images live inside the cost function setup, and because of that you can run registrations that optimize the alignment of more than one image pair at the same time. Multi-tasking icon behavior honestly. ๐Ÿ’…

One thing though โ€” all input images must be of the same dimension (in pixels). No mixing sizes, no exceptions. Vibe check failed otherwise. ๐Ÿ˜ญ

๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

  • -o, --out-transform=(output, required); io โ€” output transformation For supported file types see PLUGINS:2dtransform/io
  • -l, --levels=3 โ€” multi-resolution levels ๐ŸŒˆ
  • -O, --optimizer=gsl:opt=gd,step=0.1 โ€” Optimizer used for minimization For supported plugins see PLUGINS:minimizer/singlecost
  • -f, --transForm=spline:rate=10,penalty=divcurl โ€” transformation type For supported plugins see PLUGINS:2dimage/transform

๐Ÿ’ฌ Help & Info ๐Ÿ’ฌ

  • -V, --verbose=warning โ€” verbosity of output, print messages of given level and higher priorities. Supported priorities starting at lowest level are:
    • trace โ€” Function call trace
    • debug โ€” Debug output
    • info โ€” Low level messages
    • message โ€” Normal messages
    • warning โ€” Warnings
    • fail โ€” Report test failures
    • error โ€” Report errors
    • fatal โ€” Report only fatal errors
  • --copyright โ€” print copyright information ๐Ÿ“œ
  • -h, --help โ€” print this help
  • -?, --usage โ€” print a short help
  • --version โ€” print the version number and exit

๐Ÿงš Processing ๐Ÿงš

  • --threads=-1 โ€” Maxiumum number of threads to use for processing, This number should be lower or equal to the number of logical processor cores in the machine. (-1: automatic estimation). ๐Ÿ“

โญ PLUGINS: 1d/splinebc โญ

  • mirror โ€” Spline interpolation boundary conditions that mirror on the boundary
    • (no parameters)
  • repeat โ€” Spline interpolation boundary conditions that repeats the value at the boundary
    • (no parameters)
  • zero โ€” Spline interpolation boundary conditions that assumes zero for values outside
    • (no parameters)

๐Ÿ’œ PLUGINS: 1d/splinekernel ๐Ÿ’œ

  • bspline โ€” B-spline kernel creation , supported parameters are:
    • d = 3; int in [0, 5] โ€” Spline degree.
  • omoms โ€” OMoms-spline kernel creation, supported parameters are:
    • d = 3; int in [3, 3] โ€” Spline degree.

๐Ÿ”ฅ PLUGINS: 2dimage/cost ๐Ÿ”ฅ

  • lncc โ€” local normalized cross correlation with masking support., supported parameters are:
    • w = 5; uint in [1, 256] โ€” half width of the window used for evaluating the localized cross correlation.
  • lsd โ€” Least-Squares Distance measure
    • (no parameters)
  • mi โ€” Spline parzen based mutual information., supported parameters are:
    • cut = 0; float in [0, 40] โ€” Percentage of pixels to cut at high and low intensities to remove outliers.
    • mbins = 64; uint in [1, 256] โ€” Number of histogram bins used for the moving image.
    • mkernel = [bspline:d=3]; factory โ€” Spline kernel for moving image parzen hinstogram. For supported plug-ins see PLUGINS:1d/splinekernel
    • rbins = 64; uint in [1, 256] โ€” Number of histogram bins used for the reference image.
    • rkernel = [bspline:d=0]; factory โ€” Spline kernel for reference image parzen hinstogram. For supported plug-ins see PLUGINS:1d/splinekernel
  • ncc โ€” normalized cross correlation.
    • (no parameters)
  • ngf โ€” This function evaluates the image similarity based on normalized gradient fields. Various evaluation kernels are available., supported parameters are:
    • eval = ds; dict โ€” plugin subtype. Supported values are:
      • sq โ€” square of difference
      • ds โ€” square of scaled difference
      • dot โ€” scalar product kernel
      • cross โ€” cross product kernel
  • ssd โ€” 2D imaga cost: sum of squared differences, supported parameters are:
    • autothresh = 0; float in [0, 1000] โ€” Use automatic masking of the moving image by only takeing intensity values into accound that are larger than the given threshold.
    • norm = 0; bool โ€” Set whether the metric should be normalized by the number of image pixels.
  • ssd-automask โ€” 2D image cost: sum of squared differences, with automasking based on given thresholds, supported parameters are:
    • rthresh = 0; double โ€” Threshold intensity value for reference image.
    • sthresh = 0; double โ€” Threshold intensity value for source image.

๐ŸŒŸ PLUGINS: 2dimage/fullcost ๐ŸŒŸ

  • image โ€” Generalized image similarity cost function that also handles multi-resolution processing. The actual similarity measure is given es extra parameter., supported parameters are:
    • cost = ssd; factory โ€” Cost function kernel. For supported plug-ins see PLUGINS:2dimage/cost
    • debug = 0; bool โ€” Save intermediate resuts for debugging.
    • ref =(input, io) โ€” Reference image. For supported file types see PLUGINS:2dimage/io
    • src =(input, io) โ€” Study image. For supported file types see PLUGINS:2dimage/io
    • weight = 1; float โ€” weight of cost function.
  • labelimage โ€” Similarity cost function that maps labels of two images and handles label-preserving multi-resolution processing., supported parameters are:
    • debug = 0; int in [0, 1] โ€” write the distance transforms to a 3D image.
    • maxlabel = 256; int in [2, 32000] โ€” maximum number of labels to consider.
    • ref =(input, io) โ€” Reference image. For supported file types see PLUGINS:2dimage/io
    • src =(input, io) โ€” Study image. For supported file types see PLUGINS:2dimage/io
    • weight = 1; float โ€” weight of cost function.
  • maskedimage โ€” Generalized masked image similarity cost function that also handles multi-resolution processing. The provided masks should be densly filled regions in multi-resolution procesing because otherwise the mask information may get lost when downscaling the image. The reference mask and the transformed mask of the study image are combined by binary AND. The actual similarity measure is given es extra parameter., supported parameters are:
    • cost = ssd; factory โ€” Cost function kernel. For supported plug-ins see PLUGINS:2dimage/maskedcost
    • ref =(input, io) โ€” Reference image. For supported file types see PLUGINS:2dimage/io
    • ref-mask =(input, io) โ€” Reference image mask (binary). For supported file types see PLUGINS:2dimage/io
    • src =(input, io) โ€” Study image. For supported file types see PLUGINS:2dimage/io
    • src-mask =(input, io) โ€” Study image mask (binary). For supported file types see PLUGINS:2dimage/io
    • weight = 1; float โ€” weight of cost function.

โœจ PLUGINS: 2dimage/io โœจ

okay bestie this is the whole reader/writer squad โ€” every one of these handles a different file format so your images can come in and go out in peace ๐Ÿ’–

  • bmp โ€” BMP 2D-image input/output support. She can read and write binary images and 8-bit gray scale images, and she does read-only duty for 4-bit gray scale images. Heads up: the color table gets straight-up ignored, and the pixel values are just taken as literal gray scale values. periodt.

Recognized file extensions: .BMP, .bmp

Supported element types:

  • binary data, unsigned 8 bit
  • datapool โ€” Virtual IO to and from the internal data pool. it's giving "files but make it in-memory" โœจ

Recognized file extensions: .@

  • dicom โ€” 2D image io for DICOM. medical girlies rise up ๐Ÿฉบ

Recognized file extensions: .DCM, .dcm

Supported element types:

  • signed 16 bit, unsigned 16 bit
  • exr โ€” a 2dimage io plugin for OpenEXR images. HDR queen ๐Ÿ‘‘

Recognized file extensions: .EXR, .exr

Supported element types:

  • unsigned 32 bit, floating point 32 bit
  • jpg โ€” a 2dimage io plugin for jpeg gray scale images. gray scale only, no color, we stay focused ๐Ÿ’…

Recognized file extensions: .JPEG, .JPG, .jpeg, .jpg

Supported element types:

  • unsigned 8 bit
  • png โ€” a 2dimage io plugin for png images. the versatile icon we all know and love ๐ŸŽ€

Recognized file extensions: .PNG, .png

Supported element types:

  • binary data, unsigned 8 bit, unsigned 16 bit
  • raw โ€” RAW 2D-image output support. output only, so don't come here looking to read anything back. also she supports so many types it's honestly iconic.

Recognized file extensions: .RAW, .raw

Supported element types:

  • binary data, signed 8 bit, unsigned 8 bit, signed 16 bit, unsigned 16 bit, signed 32 bit, unsigned 32 bit, floating point 32 bit, floating point 64 bit
  • tif โ€” TIFF 2D-image input/output support. the workhorse bestie ๐Ÿซถ

Recognized file extensions: .TIF, .TIFF, .tif, .tiff

Supported element types:

  • binary data, unsigned 8 bit, unsigned 16 bit, unsigned 32 bit
  • vista โ€” a 2dimage io plugin for vista images. literally the whole element-type buffet, no cap.

Recognized file extensions: ., .V, .VISTA, .v, .vista

Supported element types:

  • binary data, signed 8 bit, unsigned 8 bit, signed 16 bit, unsigned 16 bit, signed 32 bit, unsigned 32 bit, floating point 32 bit, floating point 64 bit

๐Ÿ’– PLUGINS: 2dimage/maskedcost ๐Ÿ’–

these are the cost functions that know how to mask โ€” like they only pay attention to the pixels you told them to care about. self-care, honestly ๐ŸŒธ

  • lncc โ€” local normalized cross correlation with masking support. supported parameters are:
    • w = 5; uint in [1, 256] โ€” half width of the window used for evaluating the localized cross correlation. so the window is basically w on each side, iykyk.
  • mi โ€” Spline parzen based mutual information with masking. supported parameters are:
    • cut = 0; float in [0, 40] โ€” Percentage of pixels to cut at high and low intensities to remove outliers. bye outliers ๐Ÿ‘‹
    • mbins = 64; uint in [1, 256] โ€” Number of histogram bins used for the moving image.
    • mkernel = [bspline:d=3]; factory โ€” Spline kernel for moving image parzen histogram. For supported plug-ins see PLUGINS:1d/splinekernel
    • rbins = 64; uint in [1, 256] โ€” Number of histogram bins used for the reference image.
    • rkernel = [bspline:d=0]; factory โ€” Spline kernel for reference image parzen histogram. For supported plug-ins see PLUGINS:1d/splinekernel
  • ncc โ€” normalized cross correlation with masking support.

(no parameters) โ€” yeah she's low maintenance, zero config, just vibes โœจ

  • ssd โ€” Sum of squared differences with masking.

(no parameters) โ€” also zero config. also vibes. ๐Ÿ’…


๐Ÿฆ‹ PLUGINS: 2dimage/transform ๐Ÿฆ‹

the transformation girlies!! each one is a different flavor of "how do we move this image around" ๐Ÿ’ซ

  • affine โ€” Affine transformation (six degrees of freedom). supported parameters are:
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel
  • rigid โ€” Rigid transformations (i.e. rotation and translation, three degrees of freedom). supported parameters are:
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel
    • rot-center = [[0,0]]; 2dfvector โ€” Relative rotation center, i.e. <0.5,0.5> corresponds to the center of the support rectangle. so if you want to spin around the middle, that's your number bestie ๐ŸŽฏ
  • rotation โ€” Rotation transformations (i.e. rotation about a given center, one degree of freedom). supported parameters are:
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel
    • rot-center = [[0,0]]; 2dfvector โ€” Relative rotation center, i.e. <0.5,0.5> corresponds to the center of the support rectangle.
  • spline โ€” Free-form transformation that can be described by a set of B-spline coefficients and an underlying B-spline kernel. the flexible one. the main character. ๐ŸŒˆ
    • anisorate = [[0,0]]; 2dfvector โ€” anisotropic coefficient rate in pixels, nonpositive values will be overwritten by the rate value.
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel
    • kernel = [bspline:d=3]; factory โ€” transformation spline kernel. For supported plug-ins see PLUGINS:1d/splinekernel
    • penalty = ; factory โ€” Transformation penalty term. For supported plug-ins see PLUGINS:2dtransform/splinepenalty
    • rate = 10; float in [1, inf) โ€” isotropic coefficient rate in pixels.
  • translate โ€” Translation only (two degrees of freedom). supported parameters are:
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel
  • vf โ€” This plug-in implements a transformation that defines a translation for each point of the grid defining the domain of the transformation. yes, every single point gets its own lil translation. it's giving chaotic but make it precise ๐Ÿ˜ญ
    • imgboundary = mirror; factory โ€” image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc
    • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel

๐Ÿ‘‘ PLUGINS: 2dtransform/io ๐Ÿ‘‘

where 2D transformations themselves get saved and loaded. storing the transformation, not the image. very meta of her ๐Ÿ’…

  • bbs โ€” Binary (non-portable) serialized IO of 2D transformations. non-portable, so don't expect to carry this file across machines, fr fr.

Recognized file extensions: .bbs

  • datapool โ€” Virtual IO to and from the internal data pool.

Recognized file extensions: .@

  • vista โ€” Vista storage of 2D transformations.

Recognized file extensions: .v2dt

  • xml โ€” XML serialized IO of 2D transformations. portable, readable, very demure โœจ

Recognized file extensions: .x2dt


๐ŸŽ€ PLUGINS: 2dtransform/splinepenalty ๐ŸŽ€

penalties! but like, the math kind, not the time-out kind ๐Ÿ™ˆ these keep your transformation from getting too wild.

  • divcurl โ€” divcurl penalty on the transformation, supported parameters are:
    • curl = 1; float in [0, inf) โ€” penalty weight on curl.
    • div = 1; float in [0, inf) โ€” penalty weight on divergence.
    • norm = 0; bool โ€” Set to 1 if the penalty should be normalized with respect to the image size.
    • weight = 1; float in (0, inf) โ€” weight of penalty energy.

๐Ÿงฎ minimizer/singlecost

Okay bestie, these are the actual minimizer plugins โ€” the lil engines that go brrr and actually do the minimizing. Four of them. Pick your fighter. โœจ


gdas โ€” Gradient descent with automatic step size correction.

Not me being obsessed with a gradient descent that fixes its own step size ๐Ÿ’…. Params:

  • ftolr = 0; double in [0, inf) โ€” Stop if the relative change of the criterion is below this. ๐Ÿ›‘
  • max-step = 2; double in (0, inf) โ€” Maximal absolute step size. (yes, max-step with the hyphen, no typo fr fr)
  • maxiter = 200; uint in [1, inf) โ€” Stopping criterion: the maximum number of iterations.
  • min-step = 0.1; double in (0, inf) โ€” Minimal absolute step size.
  • xtola = 0.01; double in [0, inf) โ€” Stop if the inf-norm of the change applied to x is below this value.

gdsq โ€” Gradient descent with quadratic step estimation

This one's the quadratic-step-estimation girlie ๐ŸŒธ. Params:

  • ftolr = 0; double in [0, inf) โ€” Stop if the relative change of the criterion is below this.
  • gtola = 0; double in [0, inf) โ€” Stop if the inf-norm of the gradient is below this value.
  • maxiter = 100; uint in [1, inf) โ€” Stopping criterion: the maximum number of iterations.
  • scale = 2; double in (1, inf) โ€” Fallback fixed step size scaling.
  • step = 0.1; double in (0, inf) โ€” Initial step size.
  • xtola = 0; double in [0, inf) โ€” Stop if the inf-norm of x-update is below this value.

gsl โ€” optimizer plugin based on the multimin optimizers of the GNU Scientific Library (GSL)

Link drop, no shame: https://www.gnu.org/software/gsl/ ๐Ÿซถ Params:

  • eps = 0.01; double in (0, inf) โ€” gradient based optimizers: stop when |grad| < eps, simplex: stop when simplex size < eps.
  • iter = 100; uint in [1, inf) โ€” maximum number of iterations.
  • opt = gd; dict โ€” Specific optimizer to be used. Supported values are:
    • simplex โ€” Simplex algorithm of Nelder and Mead
    • cg-fr โ€” Flecher-Reeves conjugate gradient algorithm
    • cg-pr โ€” Polak-Ribiere conjugate gradient algorithm
    • bfgs โ€” Broyden-Fletcher-Goldfarb-Shann
    • bfgs2 โ€” Broyden-Fletcher-Goldfarb-Shann (most efficient version)
    • gd โ€” Gradient descent.
  • step = 0.001; double in (0, inf) โ€” initial step size.
  • tol = 0.1; double in (0, inf) โ€” some tolerance parameter.

nlopt โ€” Minimizer algorithms using the NLOPT library

The big one. The main character. ๐Ÿ‘‘ For a description of the optimizers please see 'http://ab-initio.mit.edu/wiki/index.php/NLopt_Algorithms'. Params:

  • ftola = 0; double in [0, inf) โ€” Stopping criterion: the absolute change of the objective value is below this value.
  • ftolr = 0; double in [0, inf) โ€” Stopping criterion: the relative change of the objective value is below this value.
  • higher = inf; double โ€” Higher boundary (equal for all parameters).
  • local-opt = none; dict โ€” local minimization algorithm that may be required for the main minimization algorithm. Supported values are:
    • gn-direct โ€” Dividing Rectangles
    • gn-direct-l โ€” Dividing Rectangles (locally biased)
    • gn-direct-l-rand โ€” Dividing Rectangles (locally biased, randomized)
    • gn-direct-noscal โ€” Dividing Rectangles (unscaled)
    • gn-direct-l-noscal โ€” Dividing Rectangles (unscaled, locally biased)
    • gn-direct-l-rand-noscale โ€” Dividing Rectangles (unscaled, locally biased, randomized)
    • gn-orig-direct โ€” Dividing Rectangles (original implementation)
    • gn-orig-direct-l โ€” Dividing Rectangles (original implementation, locally biased)
    • ld-lbfgs-nocedal โ€” None
    • ld-lbfgs โ€” Low-storage BFGS
    • ln-praxis โ€” Gradient-free Local Optimization via the Principal-Axis Method
    • ld-var1 โ€” Shifted Limited-Memory Variable-Metric, Rank 1
    • ld-var2 โ€” Shifted Limited-Memory Variable-Metric, Rank 2
    • ld-tnewton โ€” Truncated Newton
    • ld-tnewton-restart โ€” Truncated Newton with steepest-descent restarting
    • ld-tnewton-precond โ€” Preconditioned Truncated Newton
    • ld-tnewton-precond-restart โ€” Preconditioned Truncated Newton with steepest-descent restarting
    • gn-crs2-lm โ€” Controlled Random Search with Local Mutation
    • ld-mma โ€” Method of Moving Asymptotes
    • ln-cobyla โ€” Constrained Optimization BY Linear Approximation
    • ln-newuoa โ€” Derivative-free Unconstrained Optimization by Iteratively Constructed Quadratic Approximation
    • ln-newuoa-bound โ€” Derivative-free Bound-constrained Optimization by Iteratively Constructed Quadratic Approximation
    • ln-neldermead โ€” Nelder-Mead simplex algorithm
    • ln-sbplx โ€” Subplex variant of Nelder-Mead
    • ln-bobyqa โ€” Derivative-free Bound-constrained Optimization
    • gn-isres โ€” Improved Stochastic Ranking Evolution Strategy
    • none โ€” don't specify algorithm
  • lower = -inf; double โ€” Lower boundary (equal for all parameters).
  • maxiter = 100; int in [1, inf) โ€” Stopping criterion: the maximum number of iterations.
  • opt = ld-lbfgs; dict โ€” main minimization algorithm. Supported values are:
    • gn-direct โ€” Dividing Rectangles
    • gn-direct-l โ€” Dividing Rectangles (locally biased)
    • gn-direct-l-rand โ€” Dividing Rectangles (locally biased, randomized)
    • gn-direct-noscal โ€” Dividing Rectangles (unscaled)
    • gn-direct-l-noscal โ€” Dividing Rectangles (unscaled, locally biased)
    • gn-direct-l-rand-noscale โ€” Dividing Rectangles (unscaled, locally biased, randomized)
    • gn-orig-direct โ€” Dividing Rectangles (original implementation)
    • gn-orig-direct-l โ€” Dividing Rectangles (original implementation, locally biased)
    • ld-lbfgs-nocedal โ€” None
    • ld-lbfgs โ€” Low-storage BFGS
    • ln-praxis โ€” Gradient-free Local Optimization via the Principal-Axis Method
    • ld-var1 โ€” Shifted Limited-Memory Variable-Metric, Rank 1
    • ld-var2 โ€” Shifted Limited-Memory Variable-Metric, Rank 2
    • ld-tnewton โ€” Truncated Newton
    • ld-tnewton-restart โ€” Truncated Newton with steepest-descent restarting
    • ld-tnewton-precond โ€” Preconditioned Truncated Newton
    • ld-tnewton-precond-restart โ€” Preconditioned Truncated Newton with steepest-descent restarting
    • gn-crs2-lm โ€” Controlled Random Search with Local Mutation
    • ld-mma โ€” Method of Moving Asymptotes
    • ln-cobyla โ€” Constrained Optimization BY Linear Approximation
    • ln-newuoa โ€” Derivative-free Unconstrained Optimization by Iteratively Constructed Quadratic Approximation
    • ln-newuoa-bound โ€” Derivative-free Bound-constrained Optimization by Iteratively Constructed Quadratic Approximation
    • ln-neldermead โ€” Nelder-Mead simplex algorithm
    • ln-sbplx โ€” Subplex variant of Nelder-Mead
    • ln-bobyqa โ€” Derivative-free Bound-constrained Optimization
    • gn-isres โ€” Improved Stochastic Ranking Evolution Strategy
    • auglag โ€” Augmented Lagrangian algorithm
    • auglag-eq โ€” Augmented Lagrangian algorithm with equality constraints only
    • g-mlsl โ€” Multi-Level Single-Linkage (require local optimization and bounds)
    • g-mlsl-lds โ€” Multi-Level Single-Linkage (low-discrepancy-sequence, require local gradient based optimization and bounds)
    • ld-slsqp โ€” Sequential Least-Squares Quadratic Programming
  • step = 0; double in [0, inf) โ€” Initial step size for gradient free methods.
  • stop = -inf; double โ€” Stopping criterion: function value falls below this value.
  • xtola = 0; double in [0, inf) โ€” Stopping criterion: the absolute change of all x-values is below this value.
  • xtolr = 0; double in [0, inf) โ€” Stopping criterion: the relative change of all x-values is below this value.
Yeah bestie, opt and local-opt really do both take basically the same big menu. I'm not the one who did that, I'm just the one telling you. ๐Ÿ™ˆ And heads up: local-opt has none in the list but opt does not โ€” it's got auglag, auglag-eq, g-mlsl, g-mlsl-lds and ld-slsqp extra instead. Read the list you actually need, okay? ๐Ÿ’–

๐ŸŒˆ EXAMPLE ๐ŸŒˆ

So the assignment is: register image test.v to image ref.v, using a spline transformation with a coefficient rate of 5, and write the registered image to reg.v. Use two multiresolution levels, ssd as image cost function, and divcurl weighted by 10.0 as transformation smoothness penalty. The resulting transformation is saved in reg.vf. โœจ

mia-2dmultiimageregistration -o reg.vf -l 2
        -f spline:rate=3,penalty=divcurl
        image:cost=ssd,src=test.v,ref=ref.v
๐Ÿ‘€ Not me side-eyeing that the prose says a coefficient rate of 5 and 10.0 for the penalty, but the actual example command uses rate=3 and no weight on divcurlโ€ฆ I'm just reading the page, bestie, I don't write the lore. Copy the command exactly as it is. No cap. ๐Ÿ’€

๐Ÿ‘‘ AUTHOR(s) ๐Ÿ‘‘

Gert Wollny

That's the legend. Periodt. ๐Ÿ’…


okay bestie, the legal bit, and I need you to actually read this one because it's giving "we're cute but we're serious" ๐Ÿ’…

This software is Copyright (c) 1999โ€2015 โ€” yep, that's Leipzig, Germany and Madrid, Spain holding the copyright, iconic duo, no cap. ๐Ÿซถ

It comes with ABSOLUTELY NO WARRANTY. fr fr. Like, capital letters, absolutely, no warranty. If it breaks, that's between you and the universe. ๐Ÿ˜ญ

And you may redistribute it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 (or later). Free software, share the love, periodt. ๐Ÿ’œ

Want the whole spiel in your terminal instead of reading it here? Just run the program with the option --copyright and it'll spill everything. โœจ


๐ŸŽ€ that's the whole page, bestie ๐ŸŽ€

this came out of the USER COMMANDS source, version v2.4.7, dated mia-2dmult...gistration(1) โ€” and yes the name is literally truncated with dots, that's just how it's written, we don't question it. ๐Ÿ™ˆ

you made it through all four parts, you absolute legend ๐Ÿ‘‘ go run it, slay, and if something explodes remember: no warranty ๐Ÿ’€โœจ

๐Ÿ“ฆ where this page comes from