Uniform LBP with scikit-image local_binary_pattern function

╄→尐↘猪︶ㄣ 提交于 2020-01-13 09:39:12

问题


I'm using the local_binary_pattern from skimage.feature with uniform mode like this:

>>> 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]]

As I'm taking 8 pixels in the neighborhood, it's expected to obtain 59 different LBP codes (because the uniform method), but instead it gives me only 9 different LBP codes. More generally, always return P+1 labels (where P is the number of neighbors).

It's another kind of uniform method, or I'm misunderstanding something?


回答1:


Good question. Take a look at the LBP example in the gallery. Specifically, look at the following image:

  • Uniformity: Since you chose 'uniform', the result only includes patterns where all black dots are adjacent and all white dots are adjacent. All other combinations are labeled 'non-uniform'.
  • Rotation invariance: Note that you chose 'uniform', not 'nri_uniform' (see the API docs), where "nri" means non-rotation invariant. That means 'uniform' is rotation invariant. As a result, an edge that is represented as 00001111 (0s and 1s represent black and white dots in the pic above) is collected into the same bin as 00111100 (the 0s are adjacent because we wrap around from front to back).
  • Rotation-invariant, uniform combinations: Considering rotation invariance, there are 9 unique, uniform combinations:
    • 00000000
    • 00000001
    • 00000011
    • 00000111
    • 00001111
    • 00011111
    • 00111111
    • 01111111
    • 11111111
  • Non-uniform results: If you look at your result more closely, there are actually 10 bins, not 9. The 10th bin lumps together all non-uniform results.

Hope that helps! If you haven't already, the LBP example is worth a look. I hear that somebody spent a lot of time on it ;)



来源:https://stackoverflow.com/questions/32105338/uniform-lbp-with-scikit-image-local-binary-pattern-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!