opencv - 寻找两帧之间的转换

标签 opencv video transformation

我有两个来自视频源的连续帧,我使用 FAST 算法检测它们的关键点。我使用差平方和法 (SSD) 匹配关键点。
所以基本上我已经匹配了两个帧之间的关键点。现在我想从一组匹配的关键点计算两个帧之间的仿射变换(缩放 + 旋转 + 平移)。
我知道如何从一对两点计算仿射变换。
我的问题是我们如何计算超过两个或三个点?我知道我必须使用最小中值平方法,但我是这个领域的新手,所以我不知道如何使用它。
有人可以详细解释一下或提供一个有用的链接以简单的方式执行此操作吗?

最佳答案

您可以使用函数 findHomographydoc为此目的。

如果您提供的所有点匹配都是很好的匹配,您可以保留参数 method 的默认值(即值 0)。然后将使用最小二乘法。

但是,如果您从 SSD 关键点匹配中获得点匹配,您可能会在真实匹配中出现一些错误匹配。因此,您将使用稳健的方法(例如 RANSAC 或最小中位数)获得更好的结果。

请注意,此 findHomography 函数返回透视变换(即完整的 3x3 矩阵)。如果您真的想要仿射变换(2x3 矩阵),则必须自己实现最小二乘法(参见 this post)或 RANSAC(参见 this post)。

关于opencv - 寻找两帧之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255049/

相关文章:

python - 通过 pip 全新安装 OpenCV 后,它会抛出 ImportError : DLL load failed

opencv - 使用 Makefile 编译时对 opencv 函数的 undefined reference

opencv - 在openCV中做SparseMat(稀疏矩阵)操作

xml - Azure 集成帐户( map - XSLT)- 使用逻辑应用将 2 个不同的 XML 合并为单个 xml

xslt-1.0 - XSLT 按索引获取节点

python - 使用 OpenCV 3.4 加载 CNN tensorflow 模型时出错

c++ - 如何更改通过 C++ 上的 FFMPEG 库提取的帧的配色方案?

iOS RTMP 流媒体库 - LFLiveKit vs VideoCore lib vs alternative

video - 使用不同时基转换 ffmpeg filter_complex 中的视频以使用 xfade

python - openCV中的旋转矩阵