【问题标题】:Calculating gradient orientation (HOG like) poor accuracy计算梯度方向(HOG 样)精度差
【发布时间】:2016-04-23 12:11:29
【问题描述】:

我正在尝试实现基于梯度方向匹配的图像匹配算法。主要算法包含以下步骤:

  1. 将图像转换为极坐标:

  1. 使用 sobel 算子计算梯度:

    Xgrad = cv2.Sobel(gr,cv2.CV_64F,1,0,ksize=5)

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

3) 计算梯度方向并将其二值化。 :

现在我可以比较使用最后一个特征图的图像,而忽略旋转和微小的变化。

但是我发现这个算法检测到同一个图像的旋转,而旋转是相当纯粹的。我已经用圆圈构建了一个测试图像来测试这个算法:

并将其旋转到 10 个 grads

这里是极性转换:

和梯度方向蒙版:正如你在这里看到的,梯度矩阵上已经有很多噪音了。它破坏了匹配算法。

最好的传递差异掩码:整行区域被标记为不匹配。不同步骤上的小高斯模糊根本没有帮助。我不知道为什么。

更新:

梯度计算:

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)

【问题讨论】:

    标签: opencv computer-vision gradient polar-coordinates linear-interpolation


    【解决方案1】:

    您能否解释一下您是如何计算梯度方向的?我相信您已经对每个 4x4 窗口进行了分组,并计算了每个此类窗口内的渐变方向。但是使用的 sobel 算子的大小是 5x5。这显然会导致一些重叠。你能解释一下吗?

    【讨论】:

    • 我添加了有问题的梯度计算算法。我尝试过玩额外的平滑或没有取得巨大成功
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多