mia-2dmyoserial-nonrigid(1)

πŸ“¦
version 2.4.7 Β· 2 versions
, in debian bookworm, ubuntu resolute, ubuntu stonking

πŸ’– mia-2dmyoserial-nonrigid β€” General Commands Manual πŸ’–

okay bestie, sit down, grab a strawberry πŸ“, because we're about to make a whole perfusion image series line up in time order and it's gonna be so satisfying. the manual page name is literally mia-2dmyoserial-nonrigid, and no, you don't have to say it three times fast.


✨ NAME ✨

mia-2dmyoserial-nonrigid β€” Run a serial registration of a series of 2D images.

like. that's the whole job. serial. 2D. images. slay πŸ‘‘


✨ SYNOPSIS ✨

mia-2dmyoserial-nonrigid -i <in-file> -o <out-file> [options]
<PLUGINS:2dimage/fullcost>

so you give it an in-file, you give it an out-file, you sprinkle whatever options your heart desires on top, and the cost function comes in from <PLUGINS:2dimage/fullcost> because that's the plugin family doing the heavy lifting. periodt.


✨ DESCRIPTION ✨

mia-2dmyoserial-nonrigid runs the non-rigid motion compensation registration of a perfusion image series. that's the whole main character sentence right there.

the registration is run in a serial manner β€” meaning it only registers images that are in temporal succession, one after the other, no skipping around like it's got free will. then the transformations it picks up along the way get applied accumulated so you eventually reach full registration. it's giving conga line but make it transforms. πŸͺ©

See:

Wollny, G., Ledesma-Carbayo, M.J., Kellman, P., Santos, A. "A New Similarity Measure for Non-Rigid Breathing Motion Compensation of Myocardial Perfusion MRI ". Proc 30th Annual International IEEE EMBS Conference, pp. 3389-3392. Vancouver, Aug. 2008.

(the double space in "Myocardial Perfusion" is literally the original's and I'm keeping it, iykyk)


✨ OPTIONS ✨

πŸŽ€ File-IO

  • -i, --in-file=(input, required); string β€” the input perfusion data set. yes it's required, do not ghost it.
  • -o, --out-file=(output, required); string β€” the output perfusion data set. also required. the program needs somewhere to put its art.
  • -R, --registered=reg β€” file name base for registered fiels. (yes, "fiels". I'm not fixing it, the original said it, we honor it 🫢)

πŸ¦‹ Registration

  • -O, --optimizer=gsl:opt=gd,step=0.1 β€” the optimizer used for minimization. for supported plugins see PLUGINS:minimizer/singlecost.
  • -l, --mg-levels=3 β€” multi-resolution levels.
  • -f, --transForm=spline:rate=16,penalty=[divcurl:weight=0.01] β€” transformation type. for supported plugins see PLUGINS:2dimage/transform. (yes, capital F in transForm, lived experience 😭)
  • -r, --ref=-1 β€” reference frame. -1 == use image in the middle. middle-child energy, iconic.
  • -k, --skip=0 β€” skip registration of these images at the beginning of the series.

🌸 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). (and yes, "Maxiumum" and the missing space after "processing," β€” untouched, as the ancestors wrote it πŸ“œ)

🌈 PLUGINS: 1d/splinebc

spline interpolation boundary conditions. pick your boundary vibe:

  • 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

kernels for making splines. the secret sauce:

  • 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.

(not me noticing the space before the comma in "creation ," β€” untouched. bestie behavior ✨)


⭐ PLUGINS: 2dimage/cost

the actual "do these two images match?" measures:

  • 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

the big ones. the full-cost girlies. these handle multi-resolution processing too.

  • 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.
πŸ’€ bestie warning-adjacent note: maskedimage really does want densly filled masks, because if they aren't, the mask info can get lost when the image gets downscaled. that's straight from the page, not me being dramatic. (okay, a little me being dramatic.) πŸ™ˆ

✨ PLUGINS: 2dimage/io ✨

okay so this is the whole 2dimage reading-and-writing squad, and bestie, they are all different flavors of "I speak this file format" πŸ’–

  • bmp β€” BMP 2D-image input/output support. This one can read and write binary images plus 8-bit gray scale images, and it does read-only for 4-bit gray scale images. It ignores the color table entirely and just takes the pixel values as literal gray scale values. no cap.
    • 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 "the filesystem is a state of mind" 🌈
    • Recognized file extensions: .@
  • dicom β€” 2D image io for DICOM.
    • Recognized file extensions: .DCM, .dcm
    • Supported element types:
      • signed 16 bit
      • unsigned 16 bit
  • exr β€” a 2dimage io plugin for OpenEXR images.
    • 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, she serves one look and she serves it flawlessly ✨
    • Recognized file extensions: .JPEG, .JPG, .jpeg, .jpg
    • Supported element types:
      • unsigned 8 bit
  • png β€” a 2dimage io plugin for png images.
    • Recognized file extensions: .PNG, .png
    • Supported element types:
      • binary data
      • unsigned 8 bit
      • unsigned 16 bit
  • raw β€” RAW 2D-image output support. this one has a LIST and honestly, iconic range πŸ’…
    • 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.
    • 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. same energy, another full bingo card πŸŽ€
    • 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 πŸ’€

cost functions but with masking support, so you get to say "bestie, these pixels are not invited to the party" πŸ™ˆ

  • 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.
  • 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.
    • 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 with masking support.
    • (no parameters) β€” yeah she takes zero arguments and zero notes 😌
  • ssd β€” Sum of squared differences with masking.
    • (no parameters)

πŸ¦‹ PLUGINS: 2dimage/transform πŸ¦‹

the glow-up department πŸ’… every one of these can warp your image, and every one of them shares the same two little interpolation besties. let's go.

  • 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.
  • 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. supported parameters are:
    • 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. 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

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

penalty terms for spline-y transformations β€” aka the "behave yourself" tax on your warp 🌸

  • 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.

✨ PLUGINS: minimizer/singlecost ✨

Okay bestie, this is the minimizer corner of the plugin universe πŸŽ€ β€” these are the lil algorithms that actually do the minimizing once the cost function has told them how bad things are. Pick your fighter πŸ’…

πŸƒ gdas

Gradient descent with automatic step size correction. Yes, it fixes its own step size, it's giving self-sufficient queen energy ✨ Supported parameters:

  • ftolr = 0; double in [0, inf) β€” bail out when the relative change of the criterion drops below this πŸ’€
  • max-step = 2; double in (0, inf) β€” the biggest absolute step size allowed, no giant leaps 🦘
  • maxiter = 200; uint in [1, inf) β€” stopping rule: the max number of iterations, periodt ⏱️
  • min-step = 0.1; double in (0, inf) β€” the tiniest absolute step size allowed, don't get too microscopic πŸ”¬
  • xtola = 0.01; double in [0, inf) β€” stop once the inf-norm of the change applied to x is below this value πŸ“

πŸƒβ€β™€οΈ gdsq

Gradient descent but with quadratic step estimation β€” it guesses the step smarter, we love a thinker 🧠 Supported parameters:

  • 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 rule: the maximum number of iterations ⏱️
  • scale = 2; double in (1, inf) β€” fallback fixed step size scaling, for when the fancy estimate needs a backup dancer πŸ’ƒ
  • step = 0.1; double in (0, inf) β€” initial step size 🐣
  • xtola = 0; double in [0, inf) β€” stop if the inf-norm of the x-update is below this value πŸ“

πŸ§ͺ gsl

This one is the optimizer plugin built on the multimin optimizers from the GNU Scientific Library (GSL), https://www.gnu.org/software/gsl/ β€” yes, the legendary one, no cap πŸ‘‘ Supported parameters:

  • eps = 0.01; double in (0, inf) β€” for gradient based optimizers: stop when |grad| < eps; for simplex: stop when the simplex size < eps 🎯
  • iter = 100; uint in [1, inf) β€” maximum number of iterations ⏱️
  • opt = gd; dict β€” the specific optimizer to be used. The 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 (yes, "some", the manpage said it, I'm just the messenger πŸ™ˆ)

🌈 nlopt

Minimizer algorithms using the NLOPT library πŸ’– For a description of the optimizers, go peek at http://ab-initio.mit.edu/wiki/index.php/NLopt_Algorithms β€” do your homework, bestie πŸ“š Supported parameters:

  • 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 β€” the local minimization algorithm that may be required for the main minimization algorithm. The 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 β€” the main minimization algorithm. The 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

🌟 EXAMPLE 🌟

Okay so here's the vibe πŸ’– we're registering the perfusion series given in segment.set to reference image 30. Skip two images at the beginning, use mutual information as the cost function, and penalize the transformation by divcurl with weight 5. Then store the result in registered.set. Slay. ✨

mia-2dmyoserial-nonrigid   -i segment.set -o registered.set -k 2  -r 30
       image:cost=mi -f spline:rate=5,penalty=[divcurl:weight=5]

πŸ‘‘ AUTHOR(s) πŸ‘‘

Gert Wollny

Go off, Gert πŸ’…

okay bestie, legal era incoming but it's actually cute so stay with me πŸŽ€

This software is Copyright (c) 1999‐2015 Leipzig, Germany and Madrid, Spain. 🫢 Like, two whole cities said "this is ours, respectfully." Slay.

It comes with ABSOLUTELY NO WARRANTY β€” and girl, the original put that in ALL CAPS for a reason. Zero. None. Nada. If it breaks, that's between you and the universe. πŸ’€

You may redistribute it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 (or later). Note the "or later" β€” future-proofing behavior, we love to see it. ✨

And if you want the whole deep lore? For more information run the program with the option '--copyright' β€” it'll spill the entire legal tea itself, no cap. πŸ“œ


okay that's the whole page, bestie, we made it to the end πŸ₯ΉπŸ’…

for the receipt: this page lives under the USER COMMANDS section, it's v2.4.7, and it's mia-2dmyoserial-nonrigid(1). screenshot it, bookmark it, tattoo it idk, it's canon now. βœ¨πŸ¦‹

mwah, go non-rigid-ly register something iconic πŸ’–πŸ‘‘

πŸ“¦ where this page comes from