python - 如何将简单 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
有没有简单的方法来缩放我缺少的图像强度?
解决方案
我意识到了挑战。生成图像时,像素表示是一个无符号整数。我乘以一个浮点值,这导致所有像素由于舍入而归零。要解决此问题,请将图像转换为浮点类型,然后应用基本乘法。
例如...
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