mia-3dmany2one-nonrigid(1)
๐ 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 seePLUGINS:3dimage/io-o,--out-file=(output); ioโ file name for the registered files โจ For supported file types seePLUGINS: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 seePLUGINS:3dimage/transform-r,--ref=-1โ reference frame. here's the tea:-1means "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 tracedebugโ Debug outputinfoโ Low level messagesmessageโ Normal messageswarningโ Warningsfailโ Report test failureserrorโ Report errorsfatalโ 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.-1means 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 seePLUGINS:1d/splinekernelrbins = 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 seePLUGINS: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 differencedotโ scalar product kernelcrossโ 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 seePLUGINS: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 seePLUGINS:3dimage/ioop =(required, factory)โ Image combiner to be applied to the images. For supported plug-ins seePLUGINS:3dimage/combinerreverse = 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 convertinglinearโ apply linear transformation x -> a*x+brangeโ apply linear transformation that maps the input data type range to the output data type rangeoptโ apply a linear transformation that maps the real input range to the full output rangeoptstatโ 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 datasbyteโ signed 8 bitubyteโ unsigned 8 bitsshortโ signed 16 bitushortโ unsigned 16 bitsintโ signed 32 bituintโ unsigned 32 bitslongโ signed 64 bitulongโ unsigned 64 bitfloatโ floating point 32 bitdoubleโ floating point 64 bitnoneโ 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 seePLUGINS: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 eitherblackorwhite.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, eitherblackorwhite.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 orientationp-yzxโ permutate x->z->y->xp-zxyโ permutate x->y->z->xf-yzโ flip y-zf-xyโ flip x-yf-xzโ flip x-zr-x90โ rotate around x-axis clockwise 90 degreer-x180โ rotate around x-axis clockwise 180 degreer-x270โ rotate around x-axis clockwise 270 degreer-y90โ rotate around y-axis clockwise 90 degreer-y180โ rotate around y-axis clockwise 180 degreer-y270โ rotate around y-axis clockwise 270 degreer-z90โ rotate around z-axis clockwise 90 degreer-z180โ rotate around z-axis clockwise 180 degreer-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-directionyโ gradient in y-directionzโ 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-directionyโ gradient in y-directionzโ 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 atPLUGINS: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, seePLUGINS: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 seePLUGINS:3dtransform/io.imgboundary = ; factoryโ override the image interpolation boundary conditions. For supported plug-ins seePLUGINS:1d/splinebc.imgkernel = ; factoryโ override the image interpolator kernel. For supported plug-ins seePLUGINS: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 to1if 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 seePLUGINS:3dimage/shape.thresh = 0; float in [0, 1)โ relative gradient norm threshold. The actual threshold value isthresh * (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 seePLUGINS:3dimage/cost.debug = 0; boolโ save intermediate results for debugging ๐.ref =(input, io)โ reference image. For supported file types seePLUGINS:3dimage/io.src =(input, io)โ study image. For supported file types seePLUGINS: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 seePLUGINS:3dimage/io.src =(input, io)โ study image. For supported file types seePLUGINS: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 binaryAND. The actual similarity measure is given as an extra parameter. Parameters:cost = ssd; factoryโ cost function kernel. For supported plug-ins seePLUGINS:3dimage/maskedcost.ref =(input, io)โ reference image. For supported file types seePLUGINS:3dimage/io.ref-mask =(input, io)โ reference image mask (binary). For supported file types seePLUGINS:3dimage/io.ref-mask-filter = ; factoryโ filter to prepare the reference mask image; the output must be a binary image. For supported plug-ins seePLUGINS:3dimage/filter.src =(input, io)โ study image. For supported file types seePLUGINS:3dimage/io.src-mask =(input, io)โ study image mask (binary). For supported file types seePLUGINS:3dimage/io.src-mask-filter = ; factoryโ filter to prepare the study mask image; the output must be a binary image. For supported plug-ins seePLUGINS: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 seePLUGINS:3dimage/io.refy =(input, io)โ reference image Y-tag. For supported file types seePLUGINS:3dimage/io.refz =(input, io)โ reference image Z-tag. For supported file types seePLUGINS:3dimage/io.srcx =(input, io)โ study image X-tag. For supported file types seePLUGINS:3dimage/io.srcy =(input, io)โ study image Y-tag. For supported file types seePLUGINS:3dimage/io.srcz =(input, io)โ study image Z-tag. For supported file types seePLUGINS: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 seePLUGINS:1d/splinekernelrbins = 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 seePLUGINS: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 atPLUGINS:1d/splinebcโจimgkernel=[bspline:d=3]; factory โ the image interpolator kernel. Supported plug-ins are listed inPLUGINS: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 inPLUGINS:1d/splinebcโจimgkernel=[bspline:d=3]; factory โ image interpolator kernel. Supported plug-ins live inPLUGINS: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 theratevalue. ๐ซ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;floatin[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;floatin[0, inf)โ penalty weight on curl.div=1;floatin[0, inf)โ penalty weight on divergence.norm=0;boolโ set it to1if the penalty should be normalized with respect to the image size.weight=1;floatin(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
๐ COPYRIGHT ๐
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
- ubuntu resolute: mia-tools 2.4.7-18 ยท GPL-3.0-or-later
- ubuntu stonking: mia-tools 2.4.7-19build1 ยท GPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms