Skip to content

Option for rescale_intensities not being applied during uses of N4BiasFieldCorrection #1054

Description

@psadil

What happened?

Pipelines appear to configure N4BiasFieldCorrection to use rescale_intensities , e.g.,

inu_n4_final.inputs.rescale_intensities = True

Unfortunately, without a mask, N4BiasFieldCorrection will always be set to false: https://github.com/ANTsX/ANTs/blob/v2.5.0/Examples/N4BiasFieldCorrection.cxx#L497-L502

    typename itk::ants::CommandLineParser::OptionType::Pointer rescaleOption = parser->GetOption("rescale-intensities");
    if (!isMaskImageSpecified || (rescaleOption && rescaleOption->GetNumberOfFunctions() &&
                                  !parser->Convert<bool>(rescaleOption->GetFunction()->GetName())))
    {
      doRescale = false;
    }

This is also mentioned in the --help

❯ N4BiasFieldCorrection --help | grep "A mask"
          within the user-specified mask. A mask is required to perform rescaling. 

What command did you use?

# check cmdline from dummy run
from nilearn import datasets
from nipype.interfaces.ants import N4BiasFieldCorrection
mni = datasets.fetch_icbm152_2009()
n4 = N4BiasFieldCorrection(dimension=3, rescale_intensities=True, input_image=mni["t1"])
n4.cmdline
# 'N4BiasFieldCorrection -d 3 --input-image /Users/psadil/nilearn_data/icbm152_2009/mni_icbm152_nlin_sym_09a/mni_icbm152_t1_tal_nlin_sym_09a.nii.gz --output mni_icbm152_t1_tal_nlin_sym_09a_corrected.nii.gz -r'

# set up use of cmd with and without mask
cp $FSLDIR/data/standard/MNI152_T1_1mm.nii.gz ./
cp $FSLDIR/data/standard/MNI152_T1_1mm_brain_mask.nii.gz ./

# no mask
❯ N4BiasFieldCorrection -d 3 --input-image MNI152_T1_1mm.nii.gz --output n4-nomask.nii.gz -r
❯ fslstats n4-nomask.nii.gz -R                                                           
0.000000 14616.967773 

# with mask (now scaled now from 0-10000)
N4BiasFieldCorrection -d 3 --input-image MNI152_T1_1mm.nii.gz --output n4.nii.gz -r -x MNI152_T1_1mm_brain_mask.nii.gz 
❯ fslstats n4.nii.gz -R
0.000000 9999.000000

What version of the software are you running?

1.14.2

How are you running this software?

Local installation ("bare-metal")

Is your data BIDS valid?

Yes

Are you reusing any previously computed results?

No

Please copy and paste any relevant log output.

Additional information / screenshots

If this does seem like a valid issue, it may also be a good idea to update nipype to prevent setting rescale_intensities when there is no mask input.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions