Skip to content

Commit

Permalink
Fixes #8267 .
Browse files Browse the repository at this point in the history
    Fix channel-wise intensity normalization for integer type inputs.

    Signed-off-by: Adrian Voicu <adrianvoicu.tm@gmail.com>
  • Loading branch information
advcu987 committed Jan 8, 2025
1 parent 28a0df1 commit bdb3604
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
2 changes: 2 additions & 0 deletions monai/transforms/intensity/array.py
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,8 @@ def __call__(self, img: NdarrayOrTensor) -> NdarrayOrTensor:
if self.divisor is not None and len(self.divisor) != len(img):
raise ValueError(f"img has {len(img)} channels, but divisor has {len(self.divisor)} components.")

img, *_ = convert_data_type(img, dtype=torch.float32)

for i, d in enumerate(img):
img[i] = self._normalize( # type: ignore
d,
Expand Down
21 changes: 21 additions & 0 deletions tests/test_normalize_intensity.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,27 @@ def test_channel_wise(self, im_type):
normalized = normalizer(input_data)
assert_allclose(normalized, im_type(expected), type_test="tensor")

@parameterized.expand([[p] for p in TEST_NDARRAYS])
def test_channel_wise_int(self, im_type):
normalizer = NormalizeIntensity(nonzero=True, channel_wise=True)
input_data = im_type(torch.arange(1, 25).reshape(2, 3, 4))
expected = np.array(
[
[
[-1.593255, -1.3035723, -1.0138896, -0.7242068],
[-0.4345241, -0.1448414, 0.1448414, 0.4345241],
[0.7242068, 1.0138896, 1.3035723, 1.593255],
],
[
[-1.593255, -1.3035723, -1.0138896, -0.7242068],
[-0.4345241, -0.1448414, 0.1448414, 0.4345241],
[0.7242068, 1.0138896, 1.3035723, 1.593255],
],
]
)
normalized = normalizer(input_data)
assert_allclose(normalized, im_type(expected), type_test="tensor", rtol=1e-7, atol=1e-7) # tolerance

@parameterized.expand([[p] for p in TEST_NDARRAYS])
def test_value_errors(self, im_type):
input_data = im_type(np.array([[0.0, 3.0, 0.0, 4.0], [0.0, 4.0, 0.0, 5.0]]))
Expand Down

0 comments on commit bdb3604

Please sign in to comment.