【发布时间】:2012-06-18 16:00:13
【问题描述】:
当使用 OpenCV 的 findHomography 函数来估计来自不同图像的两组点之间的单应性时,即使您使用 RANSAC 或 LMEDS,有时也会由于输入点内的异常值而得到错误的单应性。
// opencv java example:
Mat H = Calib3d.findHomography( src_points, dst_points, Calib3d.RANSAC, 10 );
如何判断生成的 3x3 单应矩阵是否可接受?
我已在 Stackoverflow 和 Google 中寻找此问题的答案,但无法找到。
我找到了这篇文章,但对我来说有点神秘:
【问题讨论】:
-
如果您的相机移动受限,您可以尝试分解您的单应性并测试比例、旋转和/或平移参数以获得剧烈的值。其他方法:如果您知道(或接受约束)图像的大部分应该重叠,您可以在变形后计算重叠并确定它是否可能是明显错误的单应性。其他方法:如果您使用 RANSAC,您可以根据内点数(和/或内点/总比)决定是否应拒绝单应性)
-
@Micka 感谢您的帮助,我已经在使用 RANSAC,相机移动不受限制,我一直在寻找丢弃单应性(主要是数学)的方法,然后再进行更重的计算,例如应用单应性和检查重叠。
-
如果您使用内置的 openCV RANSAC,您甚至不会明确获得内嵌的数量,是吗?检查重叠是相当便宜的,因为您只需要转换图像的角落。 Francesco Callari 的帖子中显示的计算行列式也是常见的操作。
-
是的 OpenCV findHomography with RANSAC 为您提供了一个包含内点的数组。你是对的,将 H 应用到角落可能会很好。
标签: opencv geometry computer-vision homography