为什么 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 您的图像为另一种像素类型。