Skip to content

ResampleToMatch changes filename_or_obj metadata. #4144

@karwojan

Description

@karwojan

There is a logical mistake in ResampleToMatch(d) transform, because this function copies whole dst metadata (which contains target affine) and put as src metadata into input image. This results in replacing of "filename_or_obj" field in src metadata.

>>> from monai.transforms import LoadImaged, ResampleToMatchd, AddChanneld
>>> data = {"image": "/tmp/image.nii.gz", "labels": "/tmp/labels.mgz"}
>>> data = LoadImaged(["image", "labels"], reader="nibabelreader")(data)
>>> data = AddChanneld(["image", "labels"])(data)
>>> 
>>> print("image filename:", data["image_meta_dict"]["filename_or_obj"])
image filename: /tmp/image.nii.gz
>>> print("labels filename:", data["labels_meta_dict"]["filename_or_obj"])
labels filename: /tmp/labels.mgz
>>> data = ResampleToMatchd("labels", "image_meta_dict")(data)
>>> 
>>> print("image filename:", data["image_meta_dict"]["filename_or_obj"])
image filename: /tmp/image.nii.gz
>>> print("labels filename:", data["labels_meta_dict"]["filename_or_obj"])
labels filename: /tmp/image.nii.gz

filename_or_obj field in labels_meta_dict should stay as it was before ResampleToMatchd transform.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions