寻找两帧之间的变换

Posted

技术标签:

【中文标题】寻找两帧之间的变换【英文标题】:Finding transformation between two frames 【发布时间】:2014-08-12 01:59:35 【问题描述】:

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

【问题讨论】:

【参考方案1】:

您可以为此目的使用函数findHomography、doc。

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

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

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

【讨论】:

有没有办法在 SSD 匹配中包含 RANSAC? 你可以,但是 RANSAC 需要从假定的匹配中估计一个模型。因此,您应该确定要估计的东西,即单应性变换、基本矩阵等。这就是为什么在您的情况下,最自然的方法是使用 RANSAC 估计仿射变换。

以上是关于寻找两帧之间的变换的主要内容,如果未能解决你的问题,请参考以下文章

数字信号处理序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )

数字信号处理序列傅里叶变换 ( 序列傅里叶变换与反变换 | 序列绝对可和 与 存在傅里叶变换之间的关系 | 序列傅里叶变换性质 )

在 R 中寻找 Box-Cox 变换的最佳 Lambda

在视口和变换后的矩形之间变换坐标的矩阵

广义霍夫变换和 OpenCv [关闭]

LeetCode 6. Z 字形变换 / 564. 寻找最近的回文数 / 258. 各位相加