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

时间:2018-08-07 07:44:32

标签: python opencv keypoint ransac goodness-of-fit

我不确定这是属于stackoverflow还是另一个stackexchange网站-在此处输入非常欢迎。

我已经使用python OpenCV将目标图像的BRISK关键点描述符与三个不同的模板进行匹配。

一种实用,可靠,统计合理的方法来确定哪个模板最合适?

现在,我计算cv2.RANSAC返回的cv2.findHomography个Inlier的数量(顺便说一下,它不会返回拟合优度统计信息),并采用具有最大数量的模板。

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

https://en.wikipedia.org/wiki/Random_sample_consensus似乎很有用。

非常感谢指导-谢谢!

1 个答案:

答案 0 :(得分:2)

这开始只是评论,但时间太长了。

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

中对此过程进行了非常完整的描述。

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

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) )

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