为什么 ConnectedThresholdImageFilter class 没有标记阈值内的像素?
Why is ConnectedThresholdImageFilter class not labeling pixels within threshold?
我正在尝试使用 ConnectedThresholdImageFilter class 来分割二进制图像 ('slice87.jpg') 的 "C" 外观白色区域。这个想法是选择一个位于该区域内的种子值,并且只添加强度也为 255(在阈值 254 和 256 之间)的相邻像素。
但是,我的代码生成的图像每个像素都设置为 0:
而不是这个(通过 photoshop 手动编辑):
我的种子值为 (x,y) = (115,35)。 img.GetPixel(115,35)
returns 255.
import SimpleITK as sitk
img = sitk.ReadImage('slice87.jpg')
seeds = [(115,35)]
output = sitk.ConnectedThreshold(image1=img,
seedList = seeds,
lower = 254,
upper = 256,
replaceValue = 255)
sitk.WriteImage(output, 'output.jpg')
你的输入图像是什么类型img
?我怀疑它是 sitkUInt8
类型,在这种情况下,值 256 无法表示为输入图像的像素类型,并且会悄悄地导致整数溢出。下限和上限参数形成一个包含指定边界的闭区间。您应该将 upper
参数指定为 255 或 Cast
您的图像为另一种像素类型。
我正在尝试使用 ConnectedThresholdImageFilter class 来分割二进制图像 ('slice87.jpg') 的 "C" 外观白色区域。这个想法是选择一个位于该区域内的种子值,并且只添加强度也为 255(在阈值 254 和 256 之间)的相邻像素。
但是,我的代码生成的图像每个像素都设置为 0:
而不是这个(通过 photoshop 手动编辑):
我的种子值为 (x,y) = (115,35)。 img.GetPixel(115,35)
returns 255.
import SimpleITK as sitk
img = sitk.ReadImage('slice87.jpg')
seeds = [(115,35)]
output = sitk.ConnectedThreshold(image1=img,
seedList = seeds,
lower = 254,
upper = 256,
replaceValue = 255)
sitk.WriteImage(output, 'output.jpg')
你的输入图像是什么类型img
?我怀疑它是 sitkUInt8
类型,在这种情况下,值 256 无法表示为输入图像的像素类型,并且会悄悄地导致整数溢出。下限和上限参数形成一个包含指定边界的闭区间。您应该将 upper
参数指定为 255 或 Cast
您的图像为另一种像素类型。