opencv - 为什么sift特征对平面单应变换也是不变的

标签 opencv graphics computer-vision sift

我看过 sift features 的论文,我明白为什么它是旋转不变的。 但我不明白为什么它对平面单应变换也不变,正如我的测试代码所示。 在两幅图像之间的单应变换中,变化不仅仅包括旋转和缩放。 例如,一个矩形可以转换为其他四边形,每个角都小于或大于 90 度。你可以想象物体的形状发生了变化,但为什么关键点的特征仍然匹配?

在算法细节上,当关键点周围的像素发生变化而旋转度数不相同时,关键点的128维特征减去关键点的梯度角后的值就会不同。

谁能解释一下为什么?

最佳答案

据我所知,SIFT 描述符对于投影变换(单应性)不是不变的。然而,当实际的单应性足够接近相似变换时,它就足够好用了。

paper by Mikolajczyk and Schmid提出了一种兴趣点检测器,它是仿射不变的。他们还通过变换计算描述符的图像 block 使描述符具有仿射不变性。

关于opencv - 为什么sift特征对平面单应变换也是不变的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19514372/

相关文章:

c++ - 将两个点转换为矩形 (cv::Rect)

qt - QGraphicsItem 沿着路径移动

graphics - 垂直于圆锥体的表面

python - KeyError : "Couldn' t find enum caffe. EmitConstraint.EmitType"

python - 用于特定内容边界框测量的最佳线检测器算法

c++ - 我们可以使用 pthread 库进行 opencv C++ 编程吗?

python - 通过这段代码,我想收集脸部样本,但它给了错误

opencv - 在 OpenCV 中量化描述符

python - 如何在 PyQt5 中更新窗口?

python - 在 resnet 模型中拟合图像时出现尺寸问题