opencv - 本质分解的稳定翻译
问题描述
当使用单个相机实现单目 SLAM 或运动结构时,可以估计到未知尺度的平移。事实证明,如果没有任何其他外部信息,这个规模是无法确定的。但是,我的问题是:如何在所有子翻译中统一这个比例。例如,如果我们有 3 帧(Frame0、Frame1 和 Frame2),我们应用跟踪如下:
- Frame0 -> Frame 1 : R01, T01 (R&T 可以使用 F Matrix 和 K 矩阵以及 Essential Matrix 分解来提取)
- 框架 1-> 框架 2 : R12, T12
问题是 T01 和 T12 被归一化,因此它们的幅度为 1。但是,实际上,T01 幅度可能是 T12 的两倍。
如何恢复 T01 和 T12 之间的相对震级?
PS我不想知道究竟是T01还是T12。我只想知道|T01| = 2 * |T12|。
我认为这是可能的,因为单目 SLAM 或 SFM 算法已经存在并且运行良好。所以,应该有一些方法可以做到这一点。
解决方案
计算第 2 帧和第 0 帧之间的 R,t 并在三个帧形成的三个顶点之间连接一个三角形。当相对平移已知到一个尺度时,将形成唯一可能的闭合三角形(最多一个尺度)。
推荐阅读
- tensorflow - CPU 是否有实时对象检测算法?
- docker - docker容器中的terraform init出错-x509:证书由未知机构签名
- elasticsearch - 尝试为定义的 Elasticsearch 模板中缺少的字段建立索引
- php - 在 php 中注销时出现 500 内部服务器错误
- laravel - laravel 中的更新方法问题(不支持 POST 方法)
- angular - 如何获取打字稿对象的属性
- python - 在 .insert_picture() 之后访问 python-pptx 图片占位符时出错
- python - 如何将推荐 Keras 模型从 Tensorflow 示例导出到 tflite?
- reactjs - 使用 react-spring,如何在不提供“from”值的情况下使用“useSpring()”进行动画处理?
- java - 如何使用通用方法获取实例