1

我正在尝试使用 ConnectedThresholdImageFilter 类来分割二进制图像('slice87.jpg')的“C”外观白色区域。这个想法是选择一个位于该区域内的种子值,并且只添加强度也为 255(在阈值 254 和 256 之间)的相邻像素。

但是,我的代码会生成一个每个像素都设置为 0 的图像:

在此处输入图像描述

而不是这个(通过photoshop手动编辑):

在此处输入图像描述

我的种子值为 (x,y) = (115,35)。img.GetPixel(115,35)返回 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')
4

1 回答 1

3

您的输入图像的类型是什么img?我怀疑它是 type sitkUInt8,在这种情况下,值 256 不能表示为输入图像的像素类型,并且会导致整数溢出。下参数和上参数形成一个包含指定边界的封闭区间。您应该将upper参数指定为 255 或Cast将您的图像指定为其他像素类型。

于 2017-08-28T18:58:41.500 回答