图片梯度直方图的生成
2019-04-19 本文已影响0人
雨住多一横
参考博客
梯度的计算
- 梯度模:
- 梯度方向:
以上都是按照定义计算的
- 一阶偏导数计算(h = 1):
我们发现,L的一阶偏导数都有一个1/2的参数,这个在实际操作中是不需要的,因为不会影响结果。
L为关键点,在统计L邻域的梯度直方图时,按Lowe的建议,梯度的模值m(x,y)按 σ=1.5σ_oct 的高斯分布加成,按尺度采样的3σ原则,邻域窗口半径为 3x1.5σ_oct。
梯度直方图
在完成关键点的梯度计算后,使用直方图统计领域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为36个柱(bins),其中每柱10度。如图5.1所示,直方图的峰值方向代表了关键点的主方向,(为简化,图中只画了八个方向的直方图)。
根据梯度直方图确定主方向
此处的梯度直方图是指关键点的某邻域的梯度直方图,确定关键点的主方向需要如下操作
-
梯度图像平滑处理
为了防止某个梯度方向角度因受到噪声的干扰而突变,我们还需要对梯度方向直方图进行平滑处理。Opencv 所使用的平滑公式为:
其中i∈[0,35],h 和H 分别表示平滑前和平滑后的直方图。由于角度是循环的,即00=3600,如果出现h(j),j超出了(0,…,35)的范围,那么可以通过圆周循环的方法找到它所对应的、在00=3600之间的值,如h(-1) = h(35)。
- 梯度直方图的抛物线插值
假设我们在第i个小柱子要找一个精确的方向,那么由上面分析知道:
设插值抛物线方程为h(t)=at2+bt+c,其中a、b、c为抛物线的系数,t为自变量,t∈[-1,1],此抛物线求导并令它等于0。
即h(t)´=0 得=-b/(2a)