完成squaring gradient vector的步骤如下:
- 计算x/y方向梯度;
- 基于图像局部邻域内的x/y方向梯度计算当前像素点方向;
注:本文采用图像坐标系,顺时针表示角度变化的正方向;方向范围为[0, 180);
下面进入重点:
本方法依据:根据图像局部邻域内的x/y梯度拟合出当前像素点方向。由于纹理线条的两边梯度幅值相同,而方向相反,因此本文通过拟合二倍方向角的方法计算像素点方向。
根据卷积核计算图像每一点x方向梯度vx与y方向梯度vy,其中
vx 卷积核, vy卷积核
假设图像像素点方向角为,那么有
由(1)、(2)可得
设定拟合半径r,则同步遍历r邻域内所有的vx、vy,有
其中, ,且该方向垂直于纹线方向。
算法:
- 计算vx/vy梯度图,并生成图像;
- 分别对src1/src2执行半径为r的boxfilter滤波,获取图像img1/img2;
- 执行公式(4)完成方向图计算。