我不确定这是属于stackoverflow还是另一个stackexchange网站-在此处输入非常欢迎。
我已经使用python OpenCV将目标图像的BRISK关键点描述符与三个不同的模板进行匹配。
一种实用,可靠,统计合理的方法来确定哪个模板最合适?
现在,我计算cv2.RANSAC
返回的cv2.findHomography
个Inlier的数量(顺便说一下,它不会返回拟合优度统计信息),并采用具有最大数量的模板。
我查看了描述符距离的直方图,描述符距离似乎总是以高斯为中心(怪异地)约105(单位?)。
https://en.wikipedia.org/wiki/Random_sample_consensus似乎很有用。
非常感谢指导-谢谢!
答案 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) )
计算两点之间的欧式距离。