微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相对相机姿态估计的错误结果

如何解决相对相机姿态估计的错误结果

我正在尝试估计两个图像之间相机姿势的差异。特别是我用同一​​个相机(已知的内在参数矩阵 K)拍了两张照片。第二个是在绕 y 轴旋转 24 度后拍摄的,垂直于地板,沿 x 和 z 轴平移约 5 厘米。

在 python 中,我使用 SIFT 提取特征,然后应用 RANSAC 来过滤内点。从内点,我使用 cv2.findEssentialMatrix 计算基本矩阵,然后使用 cv2.decomposeEssentialMat 来分解它。它返回 2 个矩阵,但我选择一个矩阵不是问题,因为我知道我正在寻找的矩阵代表绕 y 轴的主要旋转,理论上没有绕其他两个轴旋转。我遇到的第一个问题是,平均来说算法还可以,估计旋转了 23-26 度,但有时结果差异太大,比如 30 或 10 度。发生这种情况是由于选择了内点,但我尝试同时调整特征匹配器中的 Lowe 比率和 ransac 中的阈值,但没有任何改进。有没有办法改善这一点?

我遇到的另一个问题是翻译向量。一方面,它没有假设预期值,我认为这与上面的部分有关。此外,相机兼作深度相机,因此我可以访问每个特征与相机平面的距离,我希望这可以用于将基本矩阵分解产生的单位向量传递给 3D 向量(例如以米为单位)。

我会留下一些代码来帮助阅读。

model,inliers = ransac(
        (src_pts,dst_pts),EssentialMatrixTransform,min_samples=8,residual_threshold=.05,max_trials=10000
    )
E = cv2.findEssentialMat(src,dst,K)
[R1,R2,t_dec]=cv2.decomposeEssentialMat(E[0])

我也搜索了这些函数的源代码,但没有找到。 我希望有人能在这些问题上启发我,真的很感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。