gpt4 book ai didi

opencv - SIFT 匹配和识别?

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:56 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我在其中使用 SIFT + RANSAC 和 Homography 来查找对象(OpenCV C++、Java)。我面临的问题是,在有很多异常值的地方,RANSAC 表现不佳。

因此我想尝试一下SIFT的作者说的很好:投票。

我读到我们应该在 4 维特征空间中投票,其中 4 个维度是:

  • 位置 [x, y](有人说翻译)
  • 规模
  • 方向

虽然使用 opencv 很容易获得匹配的 scaleorientation :

cv::Keypoints.octave
cv::Keypoints.angle

我很难理解如何计算位置。

我找到了一个 interesting slide只有 一个匹配项,我们才能绘制边界框:

但我不明白如何只用一场比赛就绘制出边界框。有帮助吗?

最佳答案

您正在寻找匹配从图像 1 到图像 2 的几何变换的最大匹配特征集。在本例中,它是相似变换,它有 4 个参数:平移 (dx, dy),比例变化 ds,旋转 d_theta

假设您已匹配特征:图像 1 中的 f1 和图像 2 中的 f2。令 (x1,y1) 为图像 1 中 f1 的位置,令 s1 是它的规模,让 theta1 是它的方向。同样,对于 f2,您有 (x2,y2)s2theta2

两个特征之间的转换是(dx,dy) = (x2-x1, y2-y1)

两个特征之间的尺度变化是ds = s2/s1

两个特征之间的旋转是d_theta = theta2 - theta1

因此,dxdydsd_theta 是霍夫空间的维度。每个bin对应一个相似度变换。

执行 Hough 投票并找到最大 bin 后,该 bin 会为您提供从图像 1 到图像 2 的转换。您可以做的一件事是获取图像 1 的边界框并使用该转换对其进行转换:应用对图像的角进行相应的平移、旋转和缩放。通常,您将参数打包到变换矩阵中,并使用齐次坐标。这将为您提供图像 2 中与您检测到的对象相对应的边界框。

关于opencv - SIFT 匹配和识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com