【问题标题】:How to calculate the lbp codes at the ends of the images?如何计算图像末尾的lbp代码?
【发布时间】:2019-06-22 23:46:43
【问题描述】:

例如坐标为(1, 1)的像素点的lbp码可以用像素点(0, 0)计算; (0, 1); (0, 2); (1, 2); (2, 2); (2, 1); (2, 0); (1, 0) 但极值的像素没有这 8 个邻域像素,即 (0, 0) 像素只有 3 个邻域。

这个问题是因为我已经使用sicikit镜像获取了LBP镜像,代码如下:

lbp = feature.local_binary_pattern (gray, 8, 1, 'ror')

然后我打印了灰度图的值,得到了这些值:

[[185 185 190 ... 176 172 178]]
 [183 180 181 ... 194 185 175]
 [203 199 199 ... 201 193 179]
 ...
 [205 188 182 ... 183 183 182]
 [207 197 194 ... 193 190 186]
 [206 201 201 ... 201 199 197]]

我也打印了LBP图像的值,得到了这些值:

[[  1.  17.   1. ...  15.  31.   1.]
 [ 27. 255. 127. ...   7.   7.  31.]
 [  0.  31.  31. ...   1.  31.  15.]
 ...
 [ 17.  31.  63. ...  63. 111.  31.]
 [  0.  31.  31. ...  15.  15.   7.]
 [  1.  25.  17. ...   0.   1.   1.]]

我知道,例如,右上角像素的 lbp 代码是正确的,因为它提供的值为 7,但我不明白如何获得极端的 LBP 代码。谢谢。

【问题讨论】:

    标签: python image-processing scikit-image lbph-algorithm


    【解决方案1】:

    函数skimage.feature.local_binary_pattern 在底层执行零填充。因此,LBP 代码实际上是从填充图像中计算出来的:

    [[  0   0   0   0 ...   0   0   0   0]
     [  0 185 185 190 ... 176 172 178   0]
     [  0 183 180 181 ... 194 185 175   0]
     [  0 203 199 199 ... 201 193 179   0]
     ...
     [  0 205 188 182 ... 183 183 182   0]
     [  0 207 197 194 ... 193 190 186   0]
     [  0 206 201 201 ... 201 199 197   0]
     [  0   0   0   0 ...   0   0   0   0]]
    

    在上图中使用'ror'方法时,左上角像素对应的LBP为:

     0   0   0           0 0 0
     0  185 185    >>    0   1    >>    00000001    >>    1
     0  183 180          0 0 0  
    

    第一行第二个像素对应的LBP原来是:

     0   0   0           0 0 0
    185 185 190    >>    1   1    >>    00010001    >>    17
    183 180 181          0 0 0  
    

    最右上方像素对应的LBP为:

     0    0   0          0 0 0
    172  178  0    >>    0   0    >>    000000001    >>    1
    185  175  0          1 0 0  
    

    ...等等。

    【讨论】:

    • 感谢 Tonechas,我了解零填充。但是,我还有更多问题。由于代码00010000转换为00000001,代码00000010也转换为00000001,所以不假设应该分别得到16和2而不是1和1。
    • 'ror' 代表 rotation invariant 方法。如果您希望将 0001000000000010 视为不同的模式,您应该改用 'default' 方法。
    • 我知道位偏移或类似的东西用于将代码视为平等。谢谢您的回答。问候
    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 2013-01-22
    • 1970-01-01
    • 2018-02-08
    • 2011-09-26
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多