我最近遇到了问题,python skimage 中的本地二进制模式方法产生了意想不到的结果。
看看下面的卡通例子。它在纯色背景上显示两个纯色圆圈。
局部二进制模式(P=8 个样本,Radius=1)输出为:
(图像以喷射颜色进行颜色编码)。灰色正确地表示 255。但是,蓝色是 85 (二进制 01010101)。
因此,虽然该方法正确地将背景和右侧的圆圈显示为 255,但将左侧的圆圈显示为 85。显然,skimage 中的局部二值模式方法认为该区域是完全嘈杂的(因此交替二值模式为 01010101)。然而,这不是真的,因为我已经仔细检查了上面蓝色区域中的各个像素并且它们的值是相同的(即它的平面颜色,就像平面颜色背景和其他平面色圈一样)。
有没有人遇到过类似的问题?
如果你想复制它,这里是代码:
from skimage.feature import local_binary_pattern
from skimage.color import rgb2gray
import matplotlib.pyplot as plt
img = plt.imread('circles.png')
img = rgb2gray(img)
lbp = local_binary_pattern(img, 8, 1, 'default')
plt.imshow(lbp, cmap='nipy_spectral')
plt.title('Standard lbp (8,1)')