High level functions for operations on MRI scans
3D Volume information
Minc2.voxel_to_world — Functionvoxel_to_world(grid::GridTransform)Extract voxel to world affine transform from a GridTransform
grid- GridTransform
voxel_to_world(grid::InverseGridTransform)Extract voxel to world affine transform from a InverseGridTransform
grid- InverseGridTransform
voxel_to_world(hdr::MincHeader)::AffineTransform{Float64}Give AffineTransform for world to voxel transformation based on header
voxel_to_world(h::VolumeHandle,ijk::Vector{Float64})::Vector{Float64}Convert contignuous 0-based voxel indexes (I,J,K) to world coordinates (X,Y,Z) 0-based
voxel_to_world(vol::Volume3D)Extract voxel to world affine transform from a Volume3D
Minc2.world_to_voxel — Functionworld_to_voxel(grid::GridTransform)Extract world to voxel affine transform from a GridTransform
grid- GridTransform
world_to_voxel(grid::InverseGridTransform)Extract world to voxel affine transform from a InverseGridTransform
grid- InverseGridTransform
world_to_voxel(h::VolumeHandle, xyz::Vector{Float64})::Vector{Float64}Convert world coordinates (X,Y,Z) to contignuous voxel indexes (I,J,K) 0-based
world_to_voxel(hdr::MincHeader)::AffineTransform{Float64}Give AffineTransform for voxel to world transformation
world_to_voxel(vol::Volume3D)Extract world to voxel affine transform from a Volume3D
Minc2.array — Functionarray(grid::GridTransform)Extract underlying plain array
grid- GridTransform
array(grid::InverseGridTransform)Extract underlying plain array
grid- InverseGridTransform
array(vol::Volume3D)Extract underlying plain array
Minc2.history — Functionhistory(vol::Volume3D)Extract history metadata
File IO functions
Loading 3D volumes
Minc2.read_volume — Functionread_volume(fn::String; store::Type{T}=Float64)::Volume3D{T}Read Volume3D from minc file
fn- filenamestore- underlying array type
Minc2.read_nifti_volume — Functionread_nifti_volume(fn::AbstractString; store::Type{T}=Float64)::Volume3D{T}Read Volume3D from .nii or .nii.gz file
Saving 3D volumes
Minc2.save_volume — Functionsave_volume(fn::AbstractString,
vol::Volume3D{T,N};
store::Type{S}=Float32,
history=nothing)Save Volume3D to minc file
fn- filenamevol- Volume3D to savestore- underlying MINC data type, to be used for storage
Minc2.save_nifti_volume — Functionsave_nifti_volume(fn::AbstractString, vol::Volume3D{T};
store::Type{S}=Float32, history=nothing)Save Volume3D into .nii or .nii.gz file
Loading transformations
Minc2.read_transforms — Functionread_transforms(fname::String)::Vector{AnyTransform}Read transformations from .xfm file fname
Minc2.read_itk_nifti_transform — Functionread_itk_nifti_transform(fn::AbstractString;
store::Type{T}=Float32)::Minc2.GridTransform{Float64,T}Read ANTs style warp transform
Minc2.read_ants_transform — Functionread_ants_transform(fn::AbstractString; store::Type{T}=Float32)::Minc2.AnyTransformRead .txt and .nii(.nii.gz) transforms produces by ANTs
Saving transformations
Minc2.save_transforms — Functionsave_transforms(fname::String,
xfm::Union{Vector{XFM}, XFM};
grid_store::Type{T}=Float32 ) where {T, XFM<:AnyTransform}Save transformations into .xfm file,
Arguments
fname: output file namexfm: vector of transformations to save, or a single transformationgrid_store: type of storage for grid files (default: Float32)
Minc2.save_itk_nifti_transform — Functionsave_itk_nifti_transform(fn::AbstractString,
xfm::Minc2.GridTransform{Float64,T}; store::Type{S}=Float32)Write ANTs style warp transform
Minc2.save_itk_txt_transform — Functionsave_itk_txt_transform(fn::AbstractString,
xfm::Minc2.AffineTransform{Float64})Write affine transform in ITK .txt format
3D Volume creation
Minc2.Volume3D — TypeVolume3D{T,N}An abstract 3D volume, could be vector field or volume with time dimension
Minc2.empty_volume_like — Functionempty_volume_like(
fn::String;
store::Type{T}=Float64, history=nothing)::Volume3D{T}Create an empty Volume3D
fn- filename of a minc file that is used for sampling informationstore- underlying array type
empty_volume_like(
vol::Volume3D{T1,N};
store::Type{T}=Float64,
history=nothing)Create an empty Volume3D
vol- Volume3D that is used for sampling informationstore- underlying array typehistory- minc history
Minc2.full_volume_like — Functionfull_volume_like(
fn::String,
fill::T=zero(T);
store::Type{T}=Float64, history=nothing)::Volume3D{T}Create an empty Volume3D
fn- filename of a minc file that is used for sampling informationstore- underlying array type
full_volume_like(
vol::Volume3D{T1,N};
store::Type{T}=Float64,
history=nothing)Create an empty Volume3D
vol- Volume3D that is used for sampling informationstore- underlying array typehistory- minc history
3D Volume manipulations
Minc2.resample_volume — Functionresample_volume(
in_vol::Volume3D{T,3};
like::Union{Volume3D{O,3},Nothing}=nothing,
tfm::Union{Vector{XFM},XFM,Nothing}=nothing,
itfm::Union{Vector{XFM},XFM,Nothing}=nothing,
interp::I=nothing,
fill=0.0,
order=1,
ftol=1.0/80,
max_iter=10)::Volume3DResample Volume3D using transformation
in_vol- input Volume3Dlike- Volume3D that is used for sampling informationitfm- inverse of the transformation to apply (i.e from output to input)tfm- transformation to apply (i.e from output to input) (instead ofitfm)interp- interpolation methodfill- fill valueftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Equivalent to mincresample minc command
Minc2.resample_volume! — Functionresample_volume!(in_vol::AbstractArray{T,3},
out_vol::AbstractArray{T,3},
v2w::AffineTransform{C},
w2v::AffineTransform{C},
itfm::Union{Vector{XFM},XFM};
interp::I=BSpline(Quadratic(Line(OnCell()))),
fill=0.0,
ftol=1.0/80,
max_iter=10)Resample 3D array using transformation
in_vol- input 3D arrayout_vol- output 3D arrayv2w- voxel to world affine transform in the output arrayw2v- world to voxel affine transform in the input arrayitfm- inverse of the transformation to apply (i.e from output to input)interp- interpolation methodfill- fill valueftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
resample_volume!(
in_vol::Volume3D{T,3},
out_vol::Volume3D{O,3};
tfm::Union{Vector{XFM},XFM,Nothing}=nothing,
itfm::Union{Vector{XFM},XFM,Nothing}=nothing,
interp::I=nothing,
fill=0.0,
order=nothing,
ftol=1.0/80,
max_iter=10)::Volume3D{O,3}Resample Volume3D using transformation
in_vol- input Volume3Dout_vol- output Volume3Ditfm- inverse of the transformation to apply (i.e from output to input)tfm- transformation to apply (i.e from output to input) (instead ofitfm)interp- interpolation methodfill- fill valueftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Equivalent to mincresample minc command
Minc2.resample_grid — Functionresample_grid(
in_grid::Volume3D{T,4},
itfm::Union{Vector{XFM}, XFM};
like::Union{Nothing,Volume3D{L,4}}=nothing)::Volume3D{T,4}Resample Volume3D that contain 4D array, using transformation, assume 1st dimension is non spatial
in_grid- input Volume3D with 4D array describing vector fielditfm- inverse of the transformation to apply (i.e from output to input)like- Volume3D that is used for sampling information
Minc2.resample_grid! — Functionresample_grid!(
in_grid::Volume3D{T,4},
out_grid::Volume3D{T,4},
itfm::Union{Vector{XFM}, XFM}=nothing)::Volume3D{T,4}Resample Volume3D that contain 4D array, using transformation, assume 1st dimension is non spatial
in_grid- input Volume3D with 4D array describing vector fieldout_grid- output Volume3D with 4D array describing vector fielditfm- inverse of the transformation to apply (i.e from output to input)
Minc2.crop_volume — Functioncrop_volume(in_vol::Volume3D{T,N},crop;
fill_val::T=zero(T))::Volume3D{T,N}Crop (or pad) a volume
in_vol- input Volume3Dcrop- crop specification for each direction, e.g.[(10,10),(20,20),(5,10)], negative values mean padding
3D Volume and geometrical transformation link
Minc2.calculate_jacobian — Functioncalculate_jacobian(
tfm::Union{Vector{XFM},XFM};
like::Volume3D{T,3};
interp::I=BSpline(Quadratic(Line(OnCell()))),
ftol=1.0/80,
max_iter=10)::Volume3D{T,3}Calculate dense jacobian determinant field for an arbitrary transformation
tfm- transformation to useout_vol- output Volume3Dinterp- interpolation methodftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Roughly equivalent to mincblob minc command
Minc2.calculate_jacobian! — Functioncalculate_jacobian!(
tfm::Union{Vector{XFM},XFM},
out_vol::AbstractArray{T,3},
out_v2w::AffineTransform{C};
interp::I=BSpline(Quadratic(Line(OnCell()))),
ftol=1.0/80,
max_iter=10)Calculate dense jacobian determinant field for an arbitrary transformation
tfm- transformation to useout_vol- output 3D arrayout_v2w- voxel to world affine transform in the output arrayinterp- interpolation methodftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Roughly equivalent to mincblob minc command
calculate_jacobian!(
tfm::Union{Vector{XFM},XFM},
out_vol::Volume3D{T,3};
interp::I=BSpline(Quadratic(Line(OnCell()))),
ftol=1.0/80,
max_iter=10)::Volume3D{T,3}Calculate dense jacobian determinant field for an arbitrary transformation
tfm- transformation to useout_vol- output Volume3Dinterp- interpolation methodftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Roughly equivalent to mincblob minc command
Missing docstring for Minc2.GridTransform. Check Documenter's build log for details.
Missing docstring for Minc2.InverseGridTransform. Check Documenter's build log for details.
Minc2.tfm_to_grid — Functiontfm_to_grid(
tfm::Union{Vector{XFM}, XFM},
ref::G;
store::Type{T}=Float64,ftol=1.0/80,max_iter=10)::Volume3D{T,4}Convert arbitrary transformation into Volume3D with 4D array containing vector field
tfm- transformation to usev2w- voxel to world affine transform in the output arrayftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
Minc2.normalize_tfm — Functionnormalize_tfm(tfm::Union{Vector{XFM}, XFM},
ref::G;
store::Type{T}=Float64,ftol=1.0/80,max_iter=10)::GridTransform{Float64,T}Convert arbitrary transformation into a single GridTransform
tfm- transformation to useref- GridTransform that is used for sampling informationstore- underlying array typeftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations
normalize_tfm(tfm::Union{Vector{XFM}, XFM},
ref::G;
store::Type{T}=Float64,ftol=1.0/80,max_iter=10)::GridTransform{Float64,T}Convert arbitrary transformation into a single GridTransform
tfm- transformation to useref- Volume3D that is used for sampling informationstore- underlying array typeftol- tolerance, for inverse transformationsmax_iter- maximum number of iterations, for inverse transformations