阻止定向梯度直方图的归一化

时间:2018-01-16 07:55:48

标签: python c++ image-processing

我是图像处理的初学者。我对HOG有一些疑问。

https://www.learnopencv.com/histogram-of-oriented-gradients/

从这个网站上,它提到HOG描述符中的每个元素将除以块中所有元素的总和。但是,如果重叠块,如何进行块规范化?我不明白,因为向量中的某些元素将是多个块的元素。

Picture of block normalization

例如,如果我们有直方图[v11 v12 v13 v14 ... v19],[v21 v22 v23 v24 ... v29],[v31 v32 v33 v34 v35 ... v39]和[v41 v42 v43 v44 ..v49]在红色块中,我们可以将第一个向量的第一个元素标准化为:v11 /(v11 + v12 + ... + v21 + v22 + v23 + .. + v31 + v32 + ... + v41 + v42 ... + V49)

但是,如何规范红色块和黄色块中的向量?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

扩展@Massimiliano Janes的评论:

假设你的直方图是

h1 = [v11, v12, v13, ..., v19],

h2 = [v21, v22, v23, ..., v29], 

h3 = [v31, v32, v33, ..., v39],

h4 = [v41, v42, v43, ..., v49] for the red block.

因此,要将红色块标准化,您将除以所有元素h1,h2,h3和h4的总和。

sum = v11 + v12 + ... + v19 + v21 + ... + v49

现在,新的标准化直方图将是

h1_new = [v11/sum, v12/sum, ..., v19/sum]

h2_new = [v21/sum, v22/sum, ..., v29/sum]

h3_new = [v31/sum, v32/sum, ..., v39/sum]

h4_new = [v41/sum, v42/sum, ..., v49/sum]

但是对于黄色块的标准化,您仍然会使用红色块的两个单元格的原始直方图,即h2和h4。