【问题标题】:Uniform LBP with scikit-image local_binary_pattern function具有 scikit-image local_binary_pattern 函数的统一 LBP
【发布时间】:2015-11-13 08:00:32
【问题描述】:

我正在使用来自 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]]

由于我在邻域中取 8 个像素,因此预计会获得 59 个不同的 LBP 代码(因为统一方法),但它只给了我 9 个不同的 LBP 代码。更一般地说,总是返回 P+1 个标签(其中 P 是邻居的数量)。

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

【问题讨论】:

    标签: python feature-extraction scikit-image


    【解决方案1】:

    好问题。看看gallery 中的LBP example。具体看下图:

    • 均匀性:由于您选择了'uniform',因此结果仅包括所有黑点相邻且所有白点都相邻的图案。 所有其他组合都被标记为“不均匀”。
    • 旋转不变性:请注意,您选择了'uniform',而不是'nri_uniform'(参见API docs),其中“nri”表示非旋转不变性。这意味着'uniform' 旋转不变的。结果,表示为 00001111 的边缘(0 和 1 代表上图中的黑白点)被收集到与 00111100 相同的 bin 中(0 是相邻的,因为我们从前到后环绕)。李>
    • 旋转不变的均匀组合:考虑到旋转不变性,有 9 种独特的均匀组合:
      • 00000000
      • 00000001
      • 00000011
      • 00000111
      • 00001111
      • 00011111
      • 00111111
      • 01111111
      • 11111111
    • 非均匀结果:如果您更仔细地查看结果,实际上有 10 个 bin,而不是 9 个。第 10 个 bin 将所有不统一的结果集中在一起。

    希望对您有所帮助!如果您还没有,LBP example 值得一看。我听说有人为此花了很多时间;)

    【讨论】:

    • 现在一切都说得通了,谢谢。顺便说一句,我认为方法名称有点混乱。在大多数文献中,统一 LBP 代表简单的无旋转不变版本。
    • “LBP 示例”链接已损坏
    • @GrayCygnus:感谢您的通知!现在应该修复链接。
    • 来自大师本人。 Tony 在某个时间点是 Scikit-image 的核心开发人员之一。
    • 据我了解,'nri_uniform' 是非旋转不变的均匀向量,将给出 59 维向量,但我得到的是 555 维向量。为什么?我怎样才能有 59-d 描述符? 555-d 描述符从何而来?谢谢!
    猜你喜欢
    • 2016-12-24
    • 2016-06-15
    • 1970-01-01
    • 2018-08-03
    • 2014-09-13
    • 2015-05-31
    • 2016-10-13
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多