RANSAC 算法在 cv2.FindHomography 中使用哪些内点来查找单应矩阵?

Which inliers is the RANSAC Algorithm using in cv2.FindHomography to find the homography matrix?

1) OpenCV 中的 RANSAC 算法如何选择异常值而不是异常值?我假设它计算了匹配关键点之间的总最小二乘匹配。

2) 我完全知道除了 H 矩阵,cv2.FindHomography 还输出掩码。从这个掩码中,一个匹配的关键点 1 被认为是一个内点 0 被认为是一个离群点 。但是 RANSAC 算法选择哪些内点来找到 cv2.FindHomography 输出的最终 H 单应性 ?是不是都考虑了才找到H矩阵?

documentation没有正确解释这两个问题。

findHomography 文档中的 ransacReprojThreshold 参数描述了异常值与异常值:

对于 1),RANSAC 计算观察到的投影 dstPoint_i 与使用候选单应性 H 计算的 srcPoint_i 的投影之间的误差(向量范数)。然后它只是做一个简单的阈值检查。用户可以将 ransacReprojThreshold 设置为您认为最适合您的数据的任何值。如果您使用的是像素坐标,则只需设置像素距离的最大误差即可将某个点视为内点。任何具有更大错误的东西都被认为是异常值。

对于2),RANSAC算法会根据你设置的阈值简单地选择最大化inliers数量的H矩阵。所以对你来说 returns 的掩码是具有最大内点数的集合。

这有意义吗?它看起来并没有在随机样本大小、迭代次数等方面为您提供大量选项。Here's the source,如果您感兴趣的话。