Python 局部梯度模式的实现
我试图理解中描述的局部梯度模式 下面是计算像素新值的示例,如下所示: 我看到中心像素(25)Python 局部梯度模式的实现,python,numpy,image-processing,feature-extraction,lbph-algorithm,Python,Numpy,Image Processing,Feature Extraction,Lbph Algorithm,我试图理解中描述的局部梯度模式 下面是计算像素新值的示例,如下所示: 我看到中心像素(25)Pattern-1的值是10,Pattern-2的值是01。我有几个问题 该中心像素的新值是多少 LGP与LBP的关系如何 是否有使用LGP(Python首选)转换2D矩阵的伪代码 该中心像素的新值是多少 它取决于编码方案。参考文献没有明确解释局部梯度模式是如何编码的。一种可能的编码方式是: 在哪里 如果将示例的强度值引入模式代码结果上方的表达式中: 请注意,使用不同编码的效果将是直方图箱的重
Pattern-1
的值是10
,Pattern-2
的值是01
。我有几个问题
- 该中心像素的新值是多少李>
- LGP与LBP的关系如何李>
- 是否有使用LGP(Python首选)转换2D矩阵的伪代码李>
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]
演示
In [31]: patch = np.array([[18, 25, 14],
...: [85, 25, 86],
...: [45, 65, 14]])
...:
In [32]: LGP_codes(patch)
Out[32]: array([[9]])
谢谢你的解释。非常感谢。你能检查一下这个吗?如果您必须处理许多图像或图像很大,我建议使用矢量化代码而不是标量代码,因为显式for循环可能会降低程序执行速度。我不需要处理许多图像。这是为了演示上述算法。你查过密码了吗?如果您能做一个回顾,我会很高兴。是的,我检查了代码,这就是为什么我建议您使用矢量化代码(如我的SO答案中所示)而不是标量代码(如git存储库中所示)。