c++ - SURF 和 SIFT 的旋转变化性能

标签 c++ opencv surf sift

Matching percentage when the rotation is changed

你好,

上面是我将图像换成不同角度并尝试比较 SURF 和 SIFT 时得到的匹配百分比图。

我想知道曲线中形状的原因是什么。如果有人能向我解释这一点,那将是一个很大的帮助。 谢谢。

最佳答案

形状自然,混叠导致的合成旋转性能较低,会创建新点并移动旧点的位置。通过别名我的意思是阶梯对角线(非垂直和非水平线)。例如,请参见此处的第二个矩形。 Add 'fake' antialiasing to rotated rectangle

锯齿是由插值算法引起的(我想您使用的是没有抗锯齿的线性插值)。当您将图像旋转 90、180 或 270 度时,您并没有创建新的对角线,因此图像保持不变。

奇怪的是,它是反峰的,匹配的关键点少了 2 倍 - 它必须不超过最大值的 70-80%...例如,我从 ASIFT 源获得的 SIFT 的相同图片- 由于代码中的错误,他们稍微移动了下一级 Octave 音阶,这导致关键点位置错误。 SIFT 和 SURF 的性能会随着旋转而降低一点点,但不必降低太多。或者第二种可能,SIFT和SURF还可以,但是插值真的很糟糕。

关于c++ - SURF 和 SIFT 的旋转变化性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20066842/

相关文章:

c++ - 如何将 cv::Mat 转换为 void*

c++ - mfc中如何改变列表控件的高亮颜色

python - 区分 PIL 和 CV2 图像

python - 如何在 Jupyter 笔记本上导入 openCV?

algorithm - 哪种特征检测器算法最容易学习?

c++ - 是否可以仅使用每个 Surf Descriptor 获得两个图像之间的旋转和缩放?

C++ 将静态库链接到共享库

c++ - 将 vector 中的数字放到 vector<vector>> 中,两个数字的差值为 1

python - 模块 'cv2.cv2' 没有属性 'xfeatures2d' (OpenCV 4.1.2)

c++ - OpenCV - 仅在绘制单应性时打印对象名称