首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >局部梯度模式实现

局部梯度模式实现
EN

Stack Overflow用户
提问于 2017-05-11 16:05:39
回答 1查看 685关注 0票数 0

我试图理解局部梯度模式,这是在局部梯度模式-一种新的人脸表情识别特征表示中描述的。

有一个计算像素新值的示例,如下所示:

我看到中心像素的( 25) Pattern-1值是10Pattern-2值是01。我有几个问题。

  • 中心像素的新值是多少?
  • LGP与LBP的关系如何?
  • 有没有使用LGP (Python首选)来转换2D矩阵的伪代码?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-12 09:45:37

中心像素的新值是多少?

这取决于编码方案。参考文件没有清楚地解释如何编码局部梯度模式。一种可能的编码方式是:

哪里

如果将示例的强度值引入上面的表达式,则模式代码结果如下:

请注意,使用不同编码的效果将是重新排序直方图箱,但这不会影响分类的准确性。

LGP与LBP的关系如何?

LGP只是众多LBP变体之一。请看一看这本书进行全面审查。

有没有使用LGP (Python首选)来转换2D矩阵的伪代码?

尝试使用以下代码:

代码语言:javascript
复制
import numpy as np

def LGP_codes(img, r=1):
    padded = np.pad(img, (r, r), 'constant')
    a1 = padded[:-2*r, :-2*r]
    b1 = padded[:-2*r, r:-r]
    a2 = padded[:-2*r, 2*r:]
    b2 = padded[r:-r, 2*r:]
    a3 = padded[2*r:, 2*r:]
    b3 = padded[2*r:, r:-r]
    a4 = padded[2*r:, :-2*r]
    b4 = padded[r:-r, :-2*r]
    codes = (a1 >= a3) + 2*(a2 >= a4) + 4*(b1 >= b3) + 8*(b2 >= b4)
    return codes[r:-r, r:-r]

Demo

代码语言:javascript
复制
In [31]: patch = np.array([[18, 25, 14], 
    ...:                   [85, 25, 86], 
    ...:                   [45, 65, 14]])
    ...: 

In [32]: LGP_codes(patch)
Out[32]: array([[9]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43920567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档