cv::findHomography
API来计算两个平面图像的单应矩阵。匹配的关键点是通过SIFT提取并由BFMatcher匹配。据我所知,cv:findHomography
使用RANSAC迭代来找到最佳的四个对应点以获取单应矩阵。因此,我用对象边缘的单应矩阵绘制了选定的四对点和计算出的轮廓。结果如下链接所示:
如我们所见,RANSAC选择的匹配点是正确的,但轮廓显示单应矩阵不准确。
但这些测试表明选定的匹配点和单应矩阵都是正确的:
我的猜测是,如果选定的匹配点太近,则像素位置的小误差将导致单应矩阵的显著误差。如果四个点在图像的角落里,则4-6像素的匹配点偏移仍会得到良好的单应矩阵。 (根据齐次坐标,我认为这是合理的,因为近平面的小误差在远处会被放大)
我的问题是:
1.我的猜测正确吗?
2.由于四个匹配点是通过RANSAC迭代生成的,所有关键点的整体误差是最小的。但如何获得稳定的单应矩阵,至少使轮廓映射正确?该理论证明如果找到一个平面上的四个对应点,则应计算单应矩阵,但在工程工作中是否有什么技巧?