Python 为什么ConnectedThresholdImageFilter类不标记阈值内的像素?
我试图使用ConnectedThresholdImageFilter类来分割二值图像的“C”白色区域('slice87.jpg')。其想法是选择一个位于该区域内的种子值,并仅添加强度为255(阈值254和256之间)的相邻像素 但是,我的代码生成的图像的每个像素都设置为0: 而不是(通过photoshop手动编辑): 我的种子值是(x,y)=(115,35)Python 为什么ConnectedThresholdImageFilter类不标记阈值内的像素?,python,itk,simpleitk,Python,Itk,Simpleitk,我试图使用ConnectedThresholdImageFilter类来分割二值图像的“C”白色区域('slice87.jpg')。其想法是选择一个位于该区域内的种子值,并仅添加强度为255(阈值254和256之间)的相邻像素 但是,我的代码生成的图像的每个像素都设置为0: 而不是(通过photoshop手动编辑): 我的种子值是(x,y)=(115,35)img.GetPixel(115,35)返回255 import SimpleITK as sitk img = sitk.Read
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')
输入图像的类型是什么?我怀疑它的类型是
sitkUInt8
,在这种情况下,值256不能表示为输入图像的像素类型,并且会导致整数溢出。上下参数构成一个包含指定边界的闭合区间。您应该将upper
参数指定为255或Cast
将您的图像转换为其他像素类型。您使用的是本文中的图像还是其他图像?如果是后者,由于JPEG压缩的损失,强度可能不太正确。实际图像是以hdr/img分析格式保存的3D二进制图像。我将slice87保存为jpg,以便将其上载到stackoverflow。白色区域的强度范围为251-255,因此压缩无法解释为什么所有像素都设置为0。