关键点描述符匹配:如何计算每个模板的拟合优度?

Keypoint Descriptor Matching: How to calculate a goodness-of-fit per template?

我不确定这是否属于 Whosebug 或其他 stackexchange 站点 - 非常欢迎在这里输入。

我已经使用 python OpenCV 将目标图像的 BRISK 关键点描述符匹配到 - 反过来 - 三个不同的模板。

确定哪个模板最合适的实用、稳健、统计可靠的方法是什么?

现在我计算 cv2.RANSAC 内点 return 由 cv2.findHomography 编辑的数量(顺便说一下,这不是 return 拟合优度统计数据)和取编号最高的模板。

我看过描述符距离的直方图,它似乎总是以高斯为中心(奇怪地)在大约 105(单位?)。

https://en.wikipedia.org/wiki/Random_sample_consensus 好像很有用

非常感谢指导 - 谢谢!

这开始是评论,但有点太长了。

事实上,OpenCV 会在内部计算重投影误差,而不是 return。但是一旦获得单应性,您就可以自己做同样的事情,不是吗? 事实上,该算法最小化了所有点的重投影误差之和。 OpenCV docs

中对该过程进行了相当完整的描述

因为你有匹配(因此源点和模板点的图像坐标)。您可以为每个模板计算平均重投影误差,可能只使用被视为内点的点,然后选择最低的一个。

来自另一个站点的a similar answer

computed_pt = H * source_pt
error_pt = sqrt( (computed_pt.x - dst_pt.x)*(computed_pt.x - dst_pt.x) + (computed_pt.y - dst_pt.y)*(computed_pt.y - dst_pt.y) )

计算两点之间的欧氏距离。