如何处理使用 simpleITK 加载的图像中的负像素值

How to deal with negative pixel values in images loaded using simpleITK

我一直在处理 DICOM CT 扫描图像。我使用 simleITK 将图像读取到 numpy 数组。但是图像像素值是图像中显示的负浮点值,每个像素的 dtype 是 float32。如何转换此像素值以能够训练 TensorFlow 3D CNN 模型?

# Read the .nii image containing the volume with SimpleITK:
sitk_obj = sitk.ReadImage(filename)

# and access the numpy array:
image = sitk.GetArrayFromImage(sitk_obj)

负像素值 negative pixel values

读取到的图片形状不一,如何将它们调整到特定的恒定图片形状?(如下图所示)

different image shapes

如果您使用SimpleITK 的RescaleIntensity 函数,您可以将像素值重新缩放到您需要的任何范围。这是该功能的文档:

https://simpleitk.org/doxygen/latest/html/namespaceitk_1_1simple.html#af34ebbd0c41ae0d0a7a152ac1382bac6

要调整图像大小,您可以使用 SimpleITK 的 ResampleImageFilter。这是 class:

的文档

https://simpleitk.org/doxygen/latest/html/classitk_1_1simple_1_1ResampleImageFilter.html

以下 Whosebug 答案显示了如何创建参考图像,您可以在该参考图像上重新采样图像:

以及这个 Github 要点如何将多个图像重新采样到同一个参考图像:

https://gist.github.com/zivy/79d7ee0490faee1156c1277a78e4a4c4

请注意,SimpleITK 将图像视为物理对象 space。因此,如果图像原点、方向和像素间距不匹配,那么您将无法获得预期的结果。