具有scikit-image local_binary_pattern函数的统一LBP

mav*_*lan 6 python feature-extraction scikit-image

我正在使用skimage.feature的local_binary_pattern和统一模式,如下所示:

>>> from skimage.feature import local_binary_pattern
>>> lbp_image=local_binary_pattern(some_grayscale_image,8,2,method='uniform')
>>> histogram=scipy.stats.itemfreq(lbp_image)
>>> print histogram
[[  0.00000000e+00   1.57210000e+04]
 [  1.00000000e+00   1.86520000e+04]
 [  2.00000000e+00   2.38530000e+04]
 [  3.00000000e+00   3.23200000e+04]
 [  4.00000000e+00   3.93960000e+04]
 [  5.00000000e+00   3.13570000e+04]
 [  6.00000000e+00   2.19800000e+04]
 [  7.00000000e+00   2.46530000e+04]
 [  8.00000000e+00   2.76230000e+04]
 [  9.00000000e+00   4.88030000e+04]]
Run Code Online (Sandbox Code Playgroud)

当我在附近拍摄8个像素时,预计会获得59个不同的LBP码(因为统一的方法),但它只给了我9个不同的LBP码.更一般地,总是返回P + 1个标签(其中P是邻居的数量).

这是另一种统一的方法,还是我误解了什么?

Ton*_* Yu 14

好问题.看看在LBP例如画廊.具体来说,请看下图:

LBP模式

  • 均匀性:自您选择以来'uniform',结果仅包括所有黑点都相邻且所有白点都相邻的图案.所有其他组合都标记为"非均匀".
  • 旋转不变性:请注意,您选择的'uniform'不是'nri_uniform'(参见API文档),其中"nri"表示非旋转不变量.这意味着'uniform' 旋转不变.结果,表示为00001111(0s和1s代表上图中的黑色和白色点)的边缘被收集到与00111100相同的箱子中(0s是相邻的,因为我们从前到后环绕).
  • 旋转不变,均匀组合:考虑旋转不变性,有9种独特,统一的组合:
    • 00000000
    • 00000001
    • 00000011
    • 00000111
    • 00001111
    • 00011111
    • 00111111
    • 01111111
    • 11111111
  • 不均匀的结果:如果你仔细观察你的结果,实际上有10个箱子,而不是9个.第10个箱子将所有不均匀的结果混为一谈.

希望有所帮助!如果您还没有,那么LBP示例值得一看.我听说有人花了很多时间;)

  • 现在一切都有意义,谢谢.顺便说一句,我认为方法名称有点令人困惑.在大多数文献中,均匀LBP代表简单的无旋转不变版本. (2认同)