本文尝试实现一种基于梯度方向匹配的图像匹配算法。主要的algo包括以下步骤:



Ygrad = cv2.Sobel(gr,cv2.CV_64F,0,1,ksize=3)

3)计算梯度的方向,并进行二值化。:

现在,我可以比较图像使用最后的功能,地图与无知旋转和轻微的变化。
但是我所发现的是,这个algo检测的是同一图像的旋转,而不是纯粹的旋转。我已经用圆圈构建了一个测试映像来测试这个algo:

把它旋转到10年级

以下是极地转换:


梯度方向掩模:正如你所看到的,梯度矩阵上已经有很多噪声。它和阿尔戈相配。


这是最好的传递差分掩码:整个线区域被标记为不匹配。小高斯模糊在不同的步骤是没有帮助的。我不知道为什么。

更新:
梯度计算:
gx = cv2.Sobel(gr,cv2.CV_64F,1,0,ksize=1)
gy = cv2.Sobel(gr,cv2.CV_64F,0,1,ksize=1)
blurredgx = cv2.GaussianBlur(gx,(11,3),1)
blurredgy = cv2.GaussianBlur(gy,(11,3),1)
magnitude, angle = cv2.cartToPolar(blurredgx, blurredgy)发布于 2016-01-18 19:15:47
你能解释一下你是如何计算渐变方向的吗?我相信您已经将每个4x4窗口分组,并计算了每个这样的窗口内渐变的方向。但所使用的sobel操作符的大小为5x5。这显然会导致一些重叠。你能解释一下吗?
https://stackoverflow.com/questions/34852761
复制相似问题