python - 关键点描述符匹配 : How to calculate a goodness-of-fit per template?

标签 python opencv keypoint ransac goodness-of-fit

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

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

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

现在,我计算 cv2.findHomography 返回的 cv2.RANSAC 内点数(顺便说一句,它不返回拟合优度统计数据)并取具有最高编号的模板。

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

https://en.wikipedia.org/wiki/Random_sample_consensus看起来很有用。

非常感谢指导 - 谢谢!

最佳答案

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

事实上,OpenCV 会在内部计算重投影误差并且不会返回它。但是一旦获得单应性,您就可以自己做同样的事情,不是吗? 事实上,该算法最小化了所有点的重投影误差之和。在 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) )

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

关于python - 关键点描述符匹配 : How to calculate a goodness-of-fit per template?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51721466/

相关文章:

python - 使用 numpy/python 从头开始​​进行多项式展开

python - 使用 scipy least_squares 时出现 ValueError

Python3 - 如何从现有抽象类定义抽象子类?

c++ - 将 cv::Mat 转换为 pangolin::Image?

python - OpenCV 描述符移除关键点

opencv - 在不使用 "drawmatches"函数的情况下在特征点之间画一条线

c++ - 加载关键点和绘图

Python - Selenium 遍历数组

opencv:视频稳定模块示例对于任何具有不同错误的视频都失败

SVM 的 C++ 数据