itkants

ITK(in ANTs) occurs error : no orthonormal definition found


ANTs open source provides transform functions that can move(frequently referred as normalizing or registration in neuroscience) one's brain MR image to other's brain MR image. But I got an error below : not all MR images but some MR images make below error. There NEVER exist any differences when I opened those MR images with image viewer like ITK-snap. It seems centain MR images that occurs those error must have mathematical or algebraic differences with images that does not occur error. How can I find out what the problem is?

Error message:

/opt/ANTs/bin/antsRegistrationSyNQuick.sh: line 464:

[[: _MR.nii: syntax error: invalid arithmetic operator (error token is ".nii")

antsRegistration call:

/opt/ANTs/bin//antsRegistration --verbose 1 --dimensionality 3 --float 0 --collapse-output-transforms 1 --output [ T1xPET,T1xPETWarped.nii.gz,T1xPETInverseWarped.nii.gz ]
--interpolation Linear --use-histogram-matching 0 --winsorize-image-intensities [ 0.005,0.995 ] --initial-moving-transform [ _MR.nii,_FBB.nii,1 ] --transform Rigid[ 0.1 ] --metric MI[ _MR.nii,_FBB.nii,1,32,Regular,0.25 ] --convergence [ 1000x500x250x0,1e-6,10 ] --shrink-factors 8x4x2x1 --smoothing-sigmas 3x2x1x0vox

Output:

All_Command_lines_OK Using double precision for computations. Exception caught during reference file reading

itk::ExceptionObject (0x5559bfd38530) Location: "unknown" File: /home/nuc/Desktop/a/build/ITKv5/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx Line: 1980

Description: ITK ERROR: ITK only supports orthonormal direction cosines.  No orthonormal definition found!

file _MR.nii Exception Object caught:

itk::ExceptionObject (0x5559bfd38530) Location: "unknown" File: /home/nuc/Desktop/a/build/staging/include/ITK-5.2/itkCenteredTransformInitializer.hxx Line: 40

Description: ITK ERROR: CenteredTransformInitializer(0x5559bfd22e10): Fixed Image has not been set

Solution

  • The short explanation is that the nifti image has unexpected metadata. Perhaps damaged? Or the writing library is buggy? Or some extension to the standard is assumed?

    The exception is thrown in NIFTI reader code. You can look at the preceding code to see all the checks made against the orientation matrix before the exception is reached.