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

时间:2015-08-19 20:44:52

标签: 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]]

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

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

1 个答案:

答案 0 :(得分:14)

好问题。请查看LBP example中的gallery。具体来说,请看下图:

LBP patterns

  • 均匀性:由于您选择了new Thread( new Runnable() { public void run() { selectedMatch = RiotAPI.getMatch(matchID); ((YourActivity)getContext()).runOnUiThread(new Runnable(){ public void run(){ championName.setText(String.valueOf(selectedMatch.getDuration())); } }); } }).start(); ,因此结果仅包含所有黑点都相邻且所有白点都相邻的模式。 所有其他组合都标有“非均匀”字样。
  • 轮播不变性:请注意,您选择了'uniform',而不是'uniform'(请参阅API docs),其中" nri"表示非旋转不变量。这意味着'nri_uniform' 旋转不变。结果,表示为00001111的边(0s和1s表示上图中的黑点和白点)被收集到与00111100相同的箱中(0是相邻的,因为我们从前到后环绕)。
  • 旋转不变,均匀组合:考虑旋转不变性,有9种独特的统一组合:
    • 00000000
    • 00000001
    • 00000011
    • 00000111
    • 00001111
    • 00011111
    • 00111111
    • 01111111
    • 11111111
  • 结果不均匀:如果你仔细观察你的结果,实际上有10个箱子,而不是9个。第10个箱子将所有不均匀的结果混为一谈。

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