首页 > 解决方案 > 如何将简单 ITK 图像的所有像素乘以一个标量?

问题描述

我正在为 Python 使用 SimpleITK 包。我正在尝试将Image使用该类构造的值乘以ImageFileReader标量值。我试过使用 * 运算符和乘法函数无济于事。两者都返回最大值 0.0

scalar = 5.0
image = image * scalar
print(np.max(sitk.GetArrayFromImage(image)))

这返回 0

我也尝试过 MultiplyImageFilter。

multiply = sitk.MultiplyImageFilter()
image = multiply.Execute(image, scalar)
print(np.max(sitk.GetArrayFromImage(image)))

这也返回 0

有没有简单的方法来缩放我缺少的图像强度?

标签: pythonitksimpleitk

解决方案


我意识到了挑战。生成图像时,像素表示是一个无符号整数。我乘以一个浮点值,这导致所有像素由于舍入而归零。要解决此问题,请将图像转换为浮点类型,然后应用基本乘法。

例如...

rdr = sitk.ImageFileReader()
rdr.SetFileName(file)
image = rdr.Execute()

#max value of the image is 10

image = sitk.Cast(image, sitk.sitkFloat32)
image = image * 1.3
print(np.max(sitk.GetArrayFromImage(image)))

这将返回13


推荐阅读