方向图计算-squaring gradient vector

完成squaring gradient vector的步骤如下:

  1.  计算x/y方向梯度;
  2.  基于图像局部邻域内的x/y方向梯度计算当前像素点方向;

注:本文采用图像坐标系,顺时针表示角度变化的正方向;方向范围为[0, 180);

下面进入重点:

本方法依据:根据图像局部邻域内的x/y梯度拟合出当前像素点方向。由于纹理线条的两边梯度幅值相同,而方向相反,因此本文通过拟合二倍方向角的方法计算像素点方向。

根据卷积核计算图像每一点x方向梯度vx与y方向梯度vy,其中

                                                vx 卷积核\begin{bmatrix} -1& 0& 1\\ -2& 0& 2\\ -1& 0& 1 \end{bmatrix},      vy卷积核\begin{bmatrix} -1 & -2& -1\\ 0& 0& 0\\ 1& 2& 1 \end{bmatrix}

假设图像像素点方向角为\alpha,那么有

                                                         tan\left ( 2 \alpha \right )=\frac{2tan\left ( \alpha \right )\ }{\ 1 - tan\left ( \alpha \right )^2}                                                           \left ( 1 \right )

                                                         tan\left ( \alpha \right )=vy/vx                                                                         \left ( 2 \right )

由(1)、(2)可得

                                                          tan\left ( 2 \alpha \right )=\frac{2vx*vy\ }{\ vx^2 - vy^2}                                                              \left ( 3 \right )

设定拟合半径r,则同步遍历r邻域内所有的vx、vy,有

                                                          \alpha =0.5*arctan\left ( \frac{\sum vx*vy}{\sum \left ( vx^2 - vy^2 \right )} \right )                                         \left ( 4 \right )

其中, \alpha \in \left [ -pi/2, pi/2 \right ],且该方向垂直于纹线方向。

算法:

  • 计算vx/vy梯度图,并生成图像src1=\sum 2vx*vy, src2=\sum \left ( vx^2-vy^2 \right );
  • 分别对src1/src2执行半径为r的boxfilter滤波,获取图像img1/img2;
  • 执行公式(4)完成方向图计算。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值