美文网首页
图片梯度直方图的生成

图片梯度直方图的生成

作者: 雨住多一横 | 来源:发表于2019-04-19 17:43 被阅读0次

    参考博客

    梯度的计算

    • 梯度模:m(x, y) = \sqrt{(L(x + 1, y) - L(x - 1, y))^{2} - (L(x, y + 1) - L(x, y - 1))^{2}}
    • 梯度方向:\theta (x, y)=tan^{-1}((L(x, y + 1) - L(x, y - 1))/(L(x + 1, y) - L(x - 1, y)))

    以上都是按照定义计算的

    • 一阶偏导数计算(h = 1):
      \frac{\partial f}{\partial x} = \frac{f(i, j + 1) - f(i, j - 1))}{2h}, \frac{\partial f}{\partial y} = \frac{f(i + 1, j) - f(i - 1, j))}{2h}
      我们发现,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 得t_{max}=-b/(2a)

    相关文章

      网友评论

          本文标题:图片梯度直方图的生成

          本文链接:https://www.haomeiwen.com/subject/muscgqtx.html