Skip to content

inconsistent output s/qform code for SaveImage #3881

@wyli

Description

@wyli

Describe the bug

import numpy as np
import nibabel as nib
from monai.transforms import SaveImaged, LoadImaged
from monai.data import ITKWriter, NibabelWriter

# create a testing volume
img = nib.Nifti1Image(np.ones((3, 4, 5, 1, 1)), np.eye(4))
img.header.set_qform(np.eye(4), code=2)
nib.save(img, "test_qform.nii.gz")

# load/save test
data_in = LoadImaged(keys="img", reader="nibabelreader")({"img": "test_qform.nii.gz"})
SaveImaged(keys="img", output_postfix="nib", writer=NibabelWriter)(data_in)
SaveImaged(keys="img", output_postfix="itk", writer=ITKWriter)(data_in)

# print the saved
ori_hdr = nib.load("test_qform.nii.gz").header
print(ori_hdr['sform_code'], ori_hdr['qform_code'])
itk_hdr = nib.load("test_qform/test_qform_itk.nii.gz").header
print(itk_hdr['sform_code'], itk_hdr['qform_code'])
nib_hdr = nib.load("test_qform/test_qform_nib.nii.gz").header
print(nib_hdr['sform_code'], nib_hdr['qform_code'])

output:

2022-03-02 11:31:22,658 INFO image_writer.py:190 - writing: test_qform/test_qform_nib.nii.gz
2022-03-02 11:31:22,662 INFO image_writer.py:190 - writing: test_qform/test_qform_itk.nii.gz
2 3
1 1
2 0

Expected behavior
would be great to have a consistent output for

  • print(itk_hdr['sform_code'], itk_hdr['qform_code'])
  • print(nib_hdr['sform_code'], nib_hdr['qform_code'])

the itk writer is hard-coded:
https://github.com/InsightSoftwareConsortium/ITK/blob/15aa8d58a01a1279e1fafa2214c82edd80b17e92/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx#L2174-L2176

Environment

MONAI version: 0.8.1+147.g274769c8
Nibabel version: 3.2.1

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions