mia-3dmany2one-nonrigid(1)

๐Ÿ“ฆ
version 2.4.7 ยท 4 versions
, in ubuntu resolute, ubuntu stonking

๐Ÿ’– mia-3dmany2one-nonrigid โ€” like, the ICONIC registration tool ๐Ÿ’–

okay bestie, welcome to mia-3dmany2one-nonrigid(1), from the General Commands Manual. she's a whole vibe and she's about to register your 3D image series. pull up a chair, grab a strawberry ๐Ÿ“, and let's get into it.


โœจ NAME โœจ

mia-3dmany2one-nonrigid โ€” Registration of series of 3D images ๐Ÿฆ‹


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

mia-3dmany2one-nonrigid -i <in-file> [options]
<PLUGINS:3dimage/fullcost>

๐ŸŽ€ DESCRIPTION ๐ŸŽ€

so mia-3dmany2one-nonrigid runs the non-rigid registration of an image series by registering all images to a user-selected reference. that's the whole thing. she takes your whole little squad of images and aligns them to the one you picked. main character energy, honestly ๐Ÿ‘‘


๐Ÿ’… OPTIONS ๐Ÿ’…

๐Ÿ“ File-IO ๐Ÿ“

  • -i, --in-file=(input, required); io โ€” the input perfusion data set. required, so like, you literally cannot skip her ๐Ÿ™ˆ For supported file types see PLUGINS:3dimage/io
  • -o, --out-file=(output); io โ€” file name for the registered files โœจ For supported file types see PLUGINS:3dimage/io

๐Ÿ”ฅ Registration ๐Ÿ”ฅ

  • -O, --optimizer=gsl:opt=gd,step=0.1 โ€” the Optimizer used for minimization. she's the one doing the actual work fr
  • -l, --mg-levels=3 โ€” multi-resolution levels. three of them, default, slay
  • -f, --transForm=spline โ€” transformation type. For supported plugins see PLUGINS:3dimage/transform
  • -r, --ref=-1 โ€” reference frame. here's the tea: -1 means "use image in the middle" โ€” she'll pick the middle one for you, no cap

๐Ÿซถ Help & Info ๐Ÿซถ

  • -V, --verbose=warning โ€” verbosity of output, prints messages of the given level and higher priorities. Supported priorities, starting at the 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

(so like, trace is the loudest yapper, fatal is the "only tell me if it's dire" one ๐Ÿ’€)

  • --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 (yes bestie, the typo is canon, I don't make the rules ๐Ÿ’…). This number should be lower or equal to the number of logical processor cores in the machine. -1 means automatic estimation. she'll figure it out herself, iconic.

๐Ÿงฉ PLUGINS: 1d/spacialkernel ๐Ÿงฉ

  • cdiff โ€” Central difference filter kernel, mirror boundary conditions are used.
    • (no parameters)
  • gauss โ€” spacial Gauss filter kernel. supported parameters are:
    • w = 1; uint in [0, inf) โ€” half filter width.
  • scharr โ€” This plugin provides the 1D folding kernel for the Scharr gradient filter
    • (no parameters)

๐ŸŒธ 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: 3dimage/combiner ๐ŸŒˆ

  • absdiff โ€” Image combiner 'absdiff'
    • (no parameters)
  • add โ€” Image combiner 'add'
    • (no parameters)
  • div โ€” Image combiner 'div'
    • (no parameters)
  • mul โ€” Image combiner 'mul'
    • (no parameters)
  • sub โ€” Image combiner 'sub'
    • (no parameters)

๐Ÿ’œ PLUGINS: 3dimage/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.
  • 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. Given normalized gradient fields $ _S$ of the src image and $ _R$ of the ref image various evaluators are implemented. supported parameters are:
    • eval = ds; dict โ€” plugin subtype (sq, ds, dot, cross). Supported values are:
      • ds โ€” square of scaled difference
      • dot โ€” scalar product kernel
      • cross โ€” cross product kernel
  • ssd โ€” 3D image 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. (again, typo is canon, she said what she said ๐Ÿซถ)
    • norm = 0; bool โ€” Set whether the metric should be normalized by the number of image pixels.
  • ssd-automask โ€” 3D 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: 3dimage/filter ๐ŸŽ€

  • bandpass โ€” intensity bandpass filter. supported parameters are:
    • max = 3.40282e+38; float โ€” maximum of the band.
    • min = 0; float โ€” minimum of the band.
  • binarize โ€” image binarize filter. supported parameters are:
    • max = 3.40282e+38; float โ€” maximum of accepted range.
    • min = 0; float โ€” minimum of accepted range.
  • close โ€” morphological close. supported parameters are:
    • hint = black; string โ€” a hint at the main image content (black|white).
    • shape = [sphere:r=2]; factory โ€” structuring element. For supported plug-ins see PLUGINS:3dimage/shape
  • combiner โ€” Combine two images with the given combiner operator. if 'reverse' is set to false, the first operator is the image passed through the filter pipeline, and the second image is loaded from the file given with the 'image' parameter the moment the filter is run. supported parameters are:
    • image =(input, required, io) โ€” second image that is needed in the combiner. For supported file types see PLUGINS:3dimage/io
    • op =(required, factory) โ€” Image combiner to be applied to the images. For supported plug-ins see PLUGINS:3dimage/combiner
    • reverse = 0; bool โ€” reverse the order in which the images passed to the combiner.
  • convert โ€” image pixel format conversion filter. supported parameters are:
    • a = 1; float โ€” linear conversion parameter a.
    • b = 0; float โ€” linear conversion parameter b.
    • map = opt; dict โ€” conversion mapping. Supported values are:
      • copy โ€” copy data when converting
      • linear โ€” apply linear transformation x -> a*x+b
      • range โ€” apply linear transformation that maps the input data type range to the output data type range
      • opt โ€” apply a linear transformation that maps the real input range to the full output range
      • optstat โ€” apply a linear transform that maps based on input mean and variation to the full output range
    • repn = ubyte; dict โ€” output pixel type. Supported values are:
      • bit โ€” binary data
      • sbyte โ€” signed 8 bit
      • ubyte โ€” unsigned 8 bit
      • sshort โ€” signed 16 bit
      • ushort โ€” unsigned 16 bit
      • sint โ€” signed 32 bit
      • uint โ€” unsigned 32 bit
      • slong โ€” signed 64 bit
      • ulong โ€” unsigned 64 bit
      • float โ€” floating point 32 bit
      • double โ€” floating point 64 bit
      • none โ€” no pixel type defined
  • crop โ€” Crop a region of an image, the region is always clamped to the original image size in the sense that the given range is kept. supported parameters are:
    • end = [[4294967295,4294967295,4294967295]]; streamable โ€” end of cropping range, maximum = (-1,-1,-1).
    • start = [[0,0,0]]; streamable โ€” begin of cropping range.
  • dilate โ€” 3d image stack dilate filter. supported parameters are:
    • hint = black; string โ€” a hint at the main image content (black|white).
    • shape = [sphere:r=2]; factory โ€” structuring element. For supported plug-ins see PLUGINS:3dimage/shape
  • distance โ€” Evaluate the 3D distance transform of an image. If the image is a binary mask, then result of the distance transform in each point corresponds to the Euclidian distance to the mask. If the input image is of a scalar pixel value, then the this scalar is interpreted as heighfield and the per pixel value adds to the distance.
    • (no parameters)

to be continued bestieโ€ฆ this was only part 1 of 5, she's got so much more to say ๐Ÿ’–

downscale

Ok so bestie, this one squishes your input image down by picking a block size that decides the downscale factor ๐Ÿ’…. But nerd alert: before it scales anything it runs a smoothing filter over the image to kill off the high-frequency data so you don't get aliasing artifacts, okay? Obsessed with a filter that thinks ahead. Supported parameters are:

  • b = [[1,1,1]]; 3dbounds โ€” the blocksize, fr fr.
  • bx = 1; uint in [1, inf) โ€” blocksize in the x direction.
  • by = 1; uint in [1, inf) โ€” blocksize in the y direction.
  • bz = 1; uint in [1, inf) โ€” blocksize in the z direction.
  • kernel = gauss; factory โ€” the smoothing filter kernel that gets applied; the size of the filter is estimated based on the blocksize. For supported plug-ins see PLUGINS:1d/spacialkernel.

erode

A 3d image stack erode filter, iconic behavior honestly. Supported parameters are:

  • hint = black; string โ€” a hint at the main image content, and it's either black or white.
  • shape = [sphere:r=2]; factory โ€” the structuring element. For supported plug-ins see PLUGINS:3dimage/shape.

gauss

An isotropic 3D gauss filter โ€” smooth brain energy but make it math โœจ. Supported parameters are:

  • w = 1; int in [0, inf) โ€” filter width parameter.

gradnorm

3D image to gradient norm filter, slay.

  • (no parameters) โ€” yep, she takes zero arguments, she's just built different.

growmask

So here's the tea ๐Ÿซ–: you hand it an input binary mask plus a reference gray scale image, and it does region growing by adding the neighborhood pixels of a pixel that's already been added โ€” but only if those pixels have a lower intensity that's still above the given threshold. Supported parameters are:

  • min = 1; float โ€” lower threshold for mask growing.
  • ref =(input, required, io) โ€” reference image for mask region growing. For supported file types see PLUGINS:3dimage/io.
  • shape = 6n; factory โ€” neighborhood mask. For supported plug-ins see PLUGINS:3dimage/shape.

invert

Intensity invert filter, the flipper of vibes ๐ŸŒˆ.

  • (no parameters) โ€” nope, not a single one.

isovoxel

This filter scales an image so the voxel size becomes isometric, and it also scales the size to match the given value. Supported parameters are:

  • interp = [bspline:d=3]; factory โ€” interpolation kernel to be used . For supported plug-ins see PLUGINS:1d/splinekernel.
  • size = 1; float in (0, inf) โ€” isometric target voxel size.

kmeans

3D image k-means filter, lowkey a classic. In the output image the pixel value represents the class membership, and the class centers are stored as an attribute in the image โ€” she keeps receipts ๐Ÿ“. Supported parameters are:

  • c = 3; int in [2, inf) โ€” number of classes.

label

A filter to label the connected components of a binary image. Supported parameters are:

  • n = 6n; factory โ€” neighborhood mask. For supported plug-ins see PLUGINS:3dimage/shape.

labelmap

Image filter to remap label id's. Heads up bestie: this one is only applicable to images with integer valued intensities/labels, no cap. Supported parameters are:

  • map =(input, required, string) โ€” Label mapping file.

labelscale

A filter that only creates output voxels that are already created in the input image. The scaling is done using a voting algorithm that selects the target pixel value based on the highest pixel count of a certain label in the corresponding source region. And if the region comprises two labels with the same count? The one with the lower number wins. Petty but fair ๐Ÿ’…. Supported parameters are:

  • out-size =(required, 3dbounds) โ€” target size given as two coma separated values.

load

Load the input image from a file and use it to replace the current image in the pipeline. Main character behavior honestly. Supported parameters are:

  • file =(input, required, io) โ€” name of the input file to load from.. For supported file types see PLUGINS:3dimage/io.

lvdownscale

This is a label voting downscale filter. It downscales a 3D image by blocks. For each block, the (non-zero) label that appears the most times in the block gets issued as the output pixel in the target image. And if two labels appear the same number of times? The one with the lower absolute value wins ๐Ÿ†. Supported parameters are:

  • b = [[1,1,1]]; 3dbounds โ€” blocksize for the downscaling. Each block will be represented by one pixel in the target image..

mask

Mask an image โ€” one image is taken from the parameters list and the other from the normal filter input. Both images must be of the same dimensions and one must be binary, periodt. The attributes of the image coming through the filter pipeline are preserved. The output pixel type corresponds to the input image that is not binary. Supported parameters are:

  • input =(input, required, io) โ€” second input image file name. For supported file types see PLUGINS:3dimage/io.

mean

3D image mean filter, the average bestie of filters ๐Ÿซถ. Supported parameters are:

  • w = 1; int in [1, inf) โ€” half filter width.

median

Median 3d filter. Supported parameters are:

  • w = 1; int in [1, inf) โ€” filter width parameter.

mlv

Mean of Least Variance 3D image filter (MLV said what now ๐Ÿ˜ญ). Supported parameters are:

  • w = 1; int in [1, inf) โ€” filter width parameter.

msnormalizer

3D image mean-sigma normalizing filter. Supported parameters are:

  • w = 1; int in [1, inf) โ€” half filter width.

open

Morphological open. Supported parameters are:

  • hint = black; string โ€” a hint at the main image content, either black or white.
  • shape = [sphere:r=2]; factory โ€” structuring element. For supported plug-ins see PLUGINS:3dimage/shape.

reorient

3D image reorientation filter, she's giving glow-up transformation โœจ. Supported parameters are:

  • map = xyz; dict โ€” oriantation mapping to be applied. Supported values are:
    • xyz โ€ keep orientation
    • p-yzx โ€ permutate x->z->y->x
    • p-zxy โ€ permutate x->y->z->x
    • f-yz โ€ flip y-z
    • f-xy โ€ flip x-y
    • f-xz โ€ flip x-z
    • r-x90 โ€ rotate around x-axis clockwise 90 degree
    • r-x180 โ€ rotate around x-axis clockwise 180 degree
    • r-x270 โ€ rotate around x-axis clockwise 270 degree
    • r-y90 โ€ rotate around y-axis clockwise 90 degree
    • r-y180 โ€ rotate around y-axis clockwise 180 degree
    • r-y270 โ€ rotate around y-axis clockwise 270 degree
    • r-z90 โ€ rotate around z-axis clockwise 90 degree
    • r-z180 โ€ rotate around z-axis clockwise 180 degree
    • r-z270 โ€ rotate around z-axis clockwise 270 degree

resize

Resize an image. The original data is centered within the new sized image โ€” she's not squishing you into the corner, she's placing you in the middle ๐Ÿ’–. Supported parameters are:

  • size = [[0,0,0]]; streamable โ€” new size of the image a size 0 indicates to keep the size for the corresponding dimension..

sandp

Salt and pepper 3d filter โ€” seasoning the image, we love a chef ๐Ÿ‘ฉโ€๐Ÿณ. Supported parameters are:

  • thresh = 100; float in [0, inf) โ€” thresh value.
  • w = 1; int in [1, inf) โ€” filter width parameter.

scale

3D image filter that scales to a given target size. Supported parameters are:

  • interp = [bspline:d=3]; factory โ€” interpolation kernel to be used . For supported plug-ins see PLUGINS:1d/splinekernel.
  • s = [[0,0,0]]; 3dbounds โ€” target size to set all components at once (component 0: use input image size).
  • sx = 0; uint in [0, inf) โ€” target size in x direction (0: use input image size).
  • sy = 0; uint in [0, inf) โ€” target size in y direction (0: use input image size).
  • sz = 0; uint in [0, inf) โ€” target size in y direction (0: use input image size).

scharr

The 3D Scharr filter for gradient evaluation. Note bestie: the output pixel type of the filtered image is the same as the input pixel type, so converting the input beforehand to a floating point valued image is recommendable ๐Ÿ“Œ. Supported parameters are:

  • dir = x; dict โ€” Gradient direction. Supported values are:
    • x โ€ gradient in x-direction
    • y โ€ gradient in y-direction
    • z โ€ gradient in z-direction

selectbig

A filter that creats a binary mask representing the intensity with the highest pixel count. The pixel value 0 will be ignored, and if two intensities have the same pixel count, then the result is undefined ๐Ÿ’€. Also the input pixel must have an integral pixel type.

  • (no parameters) โ€” nothing to configure, she just decides.

sepconv

3D image intensity separaple convolution filter. Supported parameters are:

  • kx = [gauss:w=1]; factory โ€” filter kernel in x-direction. For supported plug-ins see PLUGINS:1d/spacialkernel.
  • ky = [gauss:w=1]; factory โ€” filter kernel in y-direction. For supported plug-ins see PLUGINS:1d/spacialkernel.
  • kz = [gauss:w=1]; factory โ€” filter kernel in z-direction. For supported plug-ins see PLUGINS:1d/spacialkernel.

sobel

The 2D Sobel filter for gradient evaluation. Same warning as before, bestie โ€” the output pixel type of the filtered image is the same as the input pixel type, so converting the input beforehand to a floating point valued image is recommendable ๐Ÿ”ฅ. Supported parameters are:

  • dir = x; dict โ€” Gradient direction. Supported values are:
    • x โ€ gradient in x-direction
    • y โ€ gradient in y-direction
    • z โ€ gradient in z-direction
  • sws โ€” seeded watershed ๐Ÿซง. Bestie, this one pulls out exactly as many regions as you hand it initial labels in the seed image. No more, no less, it's giving precise. Its parameters:
    • grad = 0; bool โ€” treat the input image as a gradient. Yes ma'am.
    • mark = 0; bool โ€” mark the segmented watersheds with a special gray scale value.
    • n = [sphere:r=1]; factory โ€” the neighborhood for watershed region growing. For the plug-ins that play nice here, peek at PLUGINS:3dimage/shape.
    • seed =(input, required, string) โ€” the seed input image holding the labels for the initial regions. Required, so don't ghost it ๐ŸŒธ.
  • tee โ€” saves your input image to a file and passes it straight through to the next filter. Iconic middle-man behavior ๐Ÿ’…. Parameters:
    • file =(output, required, io) โ€” name of the output file to save the image to. For the file types it vibes with, see PLUGINS:3dimage/io.
  • thinning โ€” 3D morphological thinning โœจ, based on: Lee and Kashyap, 'Building Skeleton Models via 3-D Medial Surface/Axis Thinning Algorithms', Graphical Models and Image Processing, 56(6):462-478, 1994. Heads up: this implementation only supports the 26 neighbourhood, periodt.
    • (no parameters) โ€” yeah, she takes nothing ๐ŸŽ€
  • transform โ€” transforms the input image with the transformation you give it ๐Ÿฆ‹. Parameters:
    • file =(input, required, io) โ€” name of the file containing the transformation. For supported file types see PLUGINS:3dtransform/io.
    • imgboundary = ; factory โ€” override the image interpolation boundary conditions. For supported plug-ins see PLUGINS:1d/splinebc.
    • imgkernel = ; factory โ€” override the image interpolator kernel. For supported plug-ins see PLUGINS:1d/splinekernel.
  • variance โ€” 3D image variance filter, lowkey a classic. Parameters:
    • w = 1; int in [1, inf) โ€” half filter width.
  • ws โ€” basic watershed segmentation, the OG. Parameters:
    • evalgrad = 0; bool โ€” set to 1 if your input image does not represent a gradient norm image ๐Ÿ‘€.
    • mark = 0; bool โ€” mark the segmented watersheds with a special gray scale value.
    • n = [sphere:r=1]; factory โ€” the neighborhood for watershed region growing. For supported plug-ins see PLUGINS:3dimage/shape.
    • thresh = 0; float in [0, 1) โ€” relative gradient norm threshold. The actual threshold value is thresh * (max_grad - min_grad) + min_grad. Basins separated by gradients with a lower norm will get joined, fr fr.

๐ŸŒˆ PLUGINS: 3dimage/fullcost ๐ŸŒˆ

  • image โ€” a generalized image similarity cost function that also handles multi-resolution processing ๐Ÿงš. The actual similarity measure is given as an extra parameter. Parameters:
    • cost = ssd; factory โ€” cost function kernel. For supported plug-ins see PLUGINS:3dimage/cost.
    • debug = 0; bool โ€” save intermediate results for debugging ๐Ÿ›.
    • ref =(input, io) โ€” reference image. For supported file types see PLUGINS:3dimage/io.
    • src =(input, io) โ€” study image. For supported file types see PLUGINS:3dimage/io.
    • weight = 1; float โ€” weight of the cost function.
  • labelimage โ€” a similarity cost function that maps the labels of two images and handles label-preserving multi-resolution processing ๐Ÿท๏ธ. Parameters:
    • maxlabel = 256; int in [2, 32000] โ€” maximum number of labels to consider.
    • ref =(input, io) โ€” reference image. For supported file types see PLUGINS:3dimage/io.
    • src =(input, io) โ€” study image. For supported file types see PLUGINS:3dimage/io.
    • weight = 1; float โ€” weight of the cost function.
  • maskedimage โ€” a generalized masked image similarity cost function that also handles multi-resolution processing ๐ŸŽญ. Okay so listen: the masks you provide should be densely filled regions in multi-resolution processing, because otherwise the mask info can get lost when the image gets downscaled. The mask may be pre-filtered โ€” but after pre-filtering the masks must be of bit-type. The reference mask and the transformed mask of the study image get combined by binary AND. The actual similarity measure is given as an extra parameter. Parameters:
    • cost = ssd; factory โ€” cost function kernel. For supported plug-ins see PLUGINS:3dimage/maskedcost.
    • ref =(input, io) โ€” reference image. For supported file types see PLUGINS:3dimage/io.
    • ref-mask =(input, io) โ€” reference image mask (binary). For supported file types see PLUGINS:3dimage/io.
    • ref-mask-filter = ; factory โ€” filter to prepare the reference mask image; the output must be a binary image. For supported plug-ins see PLUGINS:3dimage/filter.
    • src =(input, io) โ€” study image. For supported file types see PLUGINS:3dimage/io.
    • src-mask =(input, io) โ€” study image mask (binary). For supported file types see PLUGINS:3dimage/io.
    • src-mask-filter = ; factory โ€” filter to prepare the study mask image; the output must be a binary image. For supported plug-ins see PLUGINS:3dimage/filter.
    • weight = 1; float โ€” weight of the cost function.
  • taggedssd โ€” evaluates the Sum of Squared Differences similarity measure by using three tagged image pairs ๐ŸŒŸ. The cost function value is evaluated based on all the image pairs, but the gradient gets composed by composing its component based on the tag direction. The way this works is so satisfying ngl. Parameters:
    • refx =(input, io) โ€” reference image X-tag. For supported file types see PLUGINS:3dimage/io.
    • refy =(input, io) โ€” reference image Y-tag. For supported file types see PLUGINS:3dimage/io.
    • refz =(input, io) โ€” reference image Z-tag. For supported file types see PLUGINS:3dimage/io.
    • srcx =(input, io) โ€” study image X-tag. For supported file types see PLUGINS:3dimage/io.
    • srcy =(input, io) โ€” study image Y-tag. For supported file types see PLUGINS:3dimage/io.
    • srcz =(input, io) โ€” study image Z-tag. For supported file types see PLUGINS:3dimage/io.
    • weight = 1; float โ€” weight of the cost function.

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

okay bestie, this is the whole โœจfile format rosterโœจ โ€” every single image type this plugin set knows how to read and write. each one tells you which file extensions it vibes with and which element types it can handle. no skipping, we're doing all of them ๐Ÿ’…

๐ŸŽ€ analyze โ€” Analyze 7.5 image

Recognized file extensions: .HDR, .hdr

Supported element types:

  • unsigned 8 bit
  • signed 16 bit
  • signed 32 bit
  • floating point 32 bit
  • floating point 64 bit

๐ŸŽ€ datapool โ€” Virtual IO to and from the internal data pool

Recognized file extensions: .@

(it doesn't list element types and honestly? iconic of it.)

๐ŸŽ€ dicom โ€” Dicom image series as 3D

Recognized file extensions: .DCM, .dcm

Supported element types:

  • signed 16 bit
  • unsigned 16 bit

๐ŸŽ€ hdf5 โ€” HDF5 3D image IO

Recognized file extensions: .H5, .h5

Supported element types:

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

look at that list, it's giving "collect them all" energy ๐Ÿ”ฅ

๐ŸŽ€ inria โ€” INRIA image

Recognized file extensions: .INR, .inr

Supported element types:

  • 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

๐ŸŽ€ mhd โ€” MetaIO 3D image IO using the VTK implementation (experimental)

note the (experimental) bestie, that's not a drill, that's a whole vibe warning ๐Ÿซถ

Recognized file extensions: .MHA, .MHD, .mha, .mhd

Supported element types:

  • 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

๐ŸŽ€ nifti โ€” NIFTI-1 3D image IO

The orientation is transformed in the same way like it is done with dicomtonifti --no-reorder from the vtk-dicom package. (iykyk โœจ)

Recognized file extensions: .NII, .nii

Supported element types:

  • signed 8 bit
  • unsigned 8 bit
  • signed 16 bit
  • unsigned 16 bit
  • signed 32 bit
  • unsigned 32 bit
  • signed 64 bit
  • unsigned 64 bit
  • floating point 32 bit
  • floating point 64 bit

๐ŸŽ€ vff โ€” VFF Sun raster format

Recognized file extensions: .VFF, .vff

Supported element types:

  • unsigned 8 bit
  • signed 16 bit

short list, but she does what she does ๐Ÿ’–

๐ŸŽ€ vista โ€” Vista 3D

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

๐ŸŽ€ vti โ€” 3D image VTK-XML in- and output (experimental)

experimental again, bestie, proceed with the cute caution ๐ŸŒธ

Recognized file extensions: .VTI, .vti

Supported element types:

  • 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

๐ŸŽ€ vtk โ€” 3D VTK image legacy in- and output (experimental)

yeah yeah, experimental too ๐Ÿ™ˆ

Recognized file extensions: .VTK, .VTKIMAGE, .vtk, .vtkimage

Supported element types:

  • 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: 3dimage/maskedcost ๐Ÿ’–

this is the cost-function squad but with masking support โ€” like, we only care about the pixels that matter, and the rest can go home ๐Ÿซถ

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

(yes, "hinstogram" โ€” that's literally what it says, we do not editorialize the typo, we respect the typo ๐Ÿ’…)

ncc โ€” normalized cross correlation with masking support.

(no parameters)

she literally needs nothing from you. main character energy ๐Ÿ‘‘

ssd โ€” Sum of squared differences with masking.

(no parameters)

also taking nothing, also slaying โœจ


๐Ÿฆ‹ PLUGINS: 3dimage/shape ๐Ÿฆ‹

shape creators!! these build neighborhoods, aka "who counts as my neighbor" definitions, and there are exactly four of them ๐ŸŽ€

18n โ€” 18n neighborhood 3D shape creator

(no parameters)

26n โ€” 26n neighborhood 3D shape creator

(no parameters)

6n โ€” 6n neighborhood 3D shape creator

(no parameters)

sphere โ€” Closed spherical shape neighborhood including the pixels within a given radius r.

supported parameters are:

  • r = 2; float in (0, inf) โ€” sphere radius.

๐Ÿฉท affine

Affine transformation (12 degrees of freedom), and the parameters it supports are:

  • imgboundary = mirror; factory โ€” the boundary conditions for image interpolation. For the plug-ins that are supported here, go peek at PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” the image interpolator kernel. Supported plug-ins are listed in PLUGINS:1d/splinekernel ๐Ÿ’ซ

๐ŸŒ€ axisrot

Restricted rotation transformation (1 degree of freedom). The way this works is: the transformation is restricted to rotating around the axis you give, about the rotation center you give. Parameters supported:

  • axis = (required, 3dfvector) โ€” the rotation axis.
  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins live in PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins live in PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • origin = (required, 3dfvector) โ€” the center of the transformation.

๐ŸŽ€ raffine

Restricted affine transformation (3 degrees of freedom). The transformation is restricted to rotating around the given axis plus shearing along the two axes perpendicular to that one. Parameters:

  • axis = (required, 3dfvector) โ€” the rotation axis.
  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • origin = (required, 3dfvector) โ€” the center of the transformation.

๐Ÿฆ‹ rigid

Rigid transformation, aka rotation and translation (six degrees of freedom) โ€” and the params are:

  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • origin = [[0,0,0]]; 3dfvector โ€” the relative rotation center, meaning <0.5,0.5,0.5> is literally the center of the volume ๐Ÿ‘‘

๐ŸŒธ rotation

Rotation transformation (three degrees of freedom), with these params:

  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • origin = [[0,0,0]]; 3dfvector โ€” the relative rotation center, so <0.5,0.5,0.5> is the center of the volume โœจ

๐ŸŒˆ rotbend

Restricted transformation (4 degrees of freedom). It's restricted to rotation around the x and y axes plus a bending along the x axis โ€” independent in each direction โ€” where the bending grows with the squared distance from the rotation axis. Params:

  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • norot = 0; bool โ€” don't optimize the rotation. That's it, that's the whole job ๐Ÿซถ
  • origin = (required, 3dfvector) โ€” the center of the transformation.

๐Ÿ’œ spline

Free-form transformation that you can describe with a set of B-spline coefficients plus an underlying B-spline kernel. Params:

  • anisorate = [[0,0,0]]; 3dfvector โ€” anisotropic coefficient rate in pixels. Heads up bestie: nonpositive values get overwritten by the rate value. ๐Ÿซ 
  • debug = 0; bool โ€” turns on extra debugging output ๐Ÿ›
  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ
  • kernel = [bspline:d=3]; factory โ€” the transformation spline kernel. Supported plug-ins: PLUGINS:1d/splinekernel โญ
  • penalty = ; factory โ€” the transformation penalty energy term. Supported plug-ins: PLUGINS:3dtransform/splinepenalty ๐Ÿ”ฅ
  • rate = 10; float in [1, inf) โ€” isotropic coefficient rate in pixels.

๐Ÿ’… translate

Translation (three degrees of freedom), params below:

  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ

๐Ÿงš vf

This plug-in implements a transformation that defines a translation for every single point of the grid that defines the domain of the transformation. Params:

  • imgboundary = mirror; factory โ€” image interpolation boundary conditions. Supported plug-ins: PLUGINS:1d/splinebc โœจ
  • imgkernel = [bspline:d=3]; factory โ€” image interpolator kernel. Supported plug-ins: PLUGINS:1d/splinekernel ๐Ÿ’ซ

๐Ÿ“ฆ PLUGINS: 3dtransform/io ๐Ÿ“ฆ

๐Ÿ’พ bbs

Binary (non-portable) serialized IO of 3D transformations. Non-portable, ok? Say it with me: non-portable. ๐Ÿ˜ญ

Recognized file extensions: .bbs

๐Ÿ—„๏ธ datapool

Virtual IO to and from the internal data pool โœจ

Recognized file extensions: .@

๐Ÿ–ผ๏ธ vista

Vista storage of 3D transformations ๐ŸŒธ

Recognized file extensions: .v, .v3dt

๐Ÿ“ xml

XML serialized IO of 3D transformations ๐Ÿ’œ

Recognized file extensions: .x3dt


๐Ÿงฎ PLUGINS: 3dtransform/splinepenalty ๐Ÿงฎ

๐ŸŒ€ divcurl

divcurl penalty on the transformation. Supported params:

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

๐Ÿ”ฅ EXAMPLE ๐Ÿ”ฅ

Register the images given as numbered files imagesXXXX.v by optimizing a spline based transformation with a coefficient rate of 16 pixel, using a weighted combination of normalized gradient fields and SSD as cost measure, and penalize the transformation using divcurl with a weight of 2.0. Store the resulting images in registeredXXXX.v.

mia-3dmany2one-nonrigid -i images0000.v -o  registered%04d.v -F
       spline:rate=16 image:cost=[ngf:eval=ds],weight=2.0
       image:cost=ssd,weight=0.1 divcurl:weight=2.0

๐ŸŒŸ AUTHOR(s) ๐ŸŒŸ

Gert Wollny

This software is Copyright (c) 1999โ€2015 Leipzig, Germany and Madrid, Spain. It comes with ABSOLUTELY NO WARRANTY and you may redistribute it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 (or later). For more information run the program with the option --copyright.

Bestie, that "ABSOLUTELY NO WARRANTY" is not a vibe, it's a fact โ€” this comes as-is, no promises, no cap ๐Ÿ’€

okay that's the whole thing, we did it ๐ŸŽ‰ that was the USER COMMANDS page for mia-3dmany2one-nonrigid(1), version v2.4.7 โ€” and that copyright date range rolling from 1999 on through 2015 (Leipzig, Germany โ†’ Madrid, Spain, we love a multinational era ๐Ÿ’–). love u, go register some scans, mwah ๐Ÿซถโœจ

๐Ÿ“ฆ where this page comes from