MONAI icon indicating copy to clipboard operation
MONAI copied to clipboard

`reverse_indexing` crashes for `ITKReader` when using `.nrrd`

Open surajpaib opened this issue 1 year ago • 2 comments

Describe the bug Setting reverse_indexing=True works well for NIFTI files but crashes for NRRD files when setting reader="ITKReader" in LoadImage

To Reproduce

Case 1: Load NIFTI without setting reverse_indexing - Works!

import monai
import matplotlib.pyplot as plt

nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]

transform = monai.transforms.Compose([
                                      monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader"),
                                      monai.transforms.DataStats(),
                                      ])

out = transform(nifti_datalist)

Data statistics: Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32 Shape: torch.Size([1, 255, 255, 287]) Value range: (-1179.0, 3262.0)

Case 2: Load NIFTI setting reverse_indexing=True - Works!

import monai
import matplotlib.pyplot as plt

nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]

transform = monai.transforms.Compose([
                                      monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader", reverse_indexing=True),
                                      monai.transforms.DataStats(),
                                      ])

out = transform(nifti_datalist)

Data statistics: Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32 Shape: torch.Size([1, 287, 255, 255]) Value range: (-1179.0, 3262.0)

Case 3: Load NRRD without setting reverse_indexing - Works!

import monai
import matplotlib.pyplot as plt

nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]

transform = monai.transforms.Compose([
                                      monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader"),
                                      monai.transforms.DataStats(),
                                      ])

out = transform(nrrd_datalist)

Data statistics: Type: <class 'monai.data.meta_tensor.MetaTensor'> torch.float32 Shape: torch.Size([1, 512, 512, 134]) Value range: (-1024.0, 3034.0)

Case 4: Load NRRD setting reverse_indexing=True Breaks

import monai
import matplotlib.pyplot as plt

nrrd_datalist = ["/mnt/data1/RadiomicsFoundationModel/LUNG1/NRRDs/LUNG1-001/CT.nrrd"]
nifti_datalist = ["/mnt/data1/SOTASeg/Dataset600_TotalSegmentator_all_fullres/imagesTr/TotalSegmentator_1405_0000.nii.gz"]

transform = monai.transforms.Compose([
                                      monai.transforms.LoadImage(image_only=True, ensure_channel_first=True, reader="ITKReader", reverse_indexing=True),
                                      monai.transforms.DataStats(),
                                      ])

out = transform(nrrd_datalist)

Error message: Segmentation fault (core dumped)

Environment monai_env_config.txt

surajpaib avatar Jan 06 '24 00:01 surajpaib

Also mentioned in #7365

surajpaib avatar Jan 06 '24 00:01 surajpaib

Hi @surajpaib, can not reproduce the issue, could you please share a case then I can take a look at it? Thanks!

KumoLiu avatar Jan 08 '24 05:01 KumoLiu