RANSAC算法在cv2.FindHomography中使用了哪些内联线来寻找单应矩阵?

2024-06-01 19:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

1)OpenCV中的RANSAC算法如何在异常值上选择一个内联值?我假设它计算了匹配的关键点之间的总体最小二乘匹配

2)我完全知道,除了H矩阵,cv2.FindHomography还输出掩模。从这个掩码中,匹配的关键点a1被认为是一个内部的,而a0被认为是一个异常值。但是RANSAC算法选择哪个内联线来查找cv2.FindHomography输出的最终H单应?找到H矩阵是否考虑了所有这些因素

报告没有正确地解释这两个问题


Tags: 算法a1矩阵a0cv2opencv关键点因素
1条回答
网友
1楼 · 发布于 2024-06-01 19:26:52

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

enter image description here

对于1),RANSAC计算观测投影dstPoint_i和用候选单应性计算的srcPoint_i投影H之间的误差(向量范数)。然后它只做一个简单的阈值检查。用户可以将ransacreprojectthreshold设置为您认为最适合您的数据的任何值。如果是在像素坐标系中,则只需设置像素距离中的最大误差,即可将某个点视为内联线。任何误差较大的都被视为异常值

对于2),RANSAC算法将简单地选择H矩阵,该矩阵根据您设置的阈值最大化内联数。因此,它返回给您的掩码是具有最大内联数的集合

这有意义吗?如果你感兴趣的话,在随机样本大小、迭代次数等方面,它看起来并没有给你很多选择

相关问题 更多 >