opencv - 基本矩阵的相对相机姿态估计

标签 opencv camera computer-vision

我想使用单个相机逐帧估计相对相机姿势。

为实现这一目标,采用了以下步骤。

  1. 标定相机得到相机参数K
  2. 使用SIFT/SURF寻找对应点
  3. Fundamental Matrix Identification ;使用findFundamentalMat(),输入二维匹配点
  4. 通过 E = K'FK 估计基本矩阵并针对奇点约束修改 E
  5. 分解Essential Matrix得到旋转,R = UWVt/UW'Vt(U和Vt得到E的SVD),得到平移t;

但是这样做之后,平移t太小了。假设初始相机位置是(0,0,0)。相机向前移动20cm后,下一个姿势是(0,0,20),真正的平移应该是20cm。两者的水平差别很大。

怎么了?如何从翻译矩阵中获取真实的翻译?你能帮我吗?

最佳答案

基本矩阵仅按比例定义。分解 E 得到的平移向量是一个单位向量。如果没有更多信息(例如场景中已知大小的引用对象),您无法获得以世界单位表示的相机之间的实际距离。

关于opencv - 基本矩阵的相对相机姿态估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29622174/

相关文章:

android - 在 Android 的 openCV 中使用 CLAHE

ios - 在相机应用程序中单击使用按钮保存照片

python - 属性错误: 'module' object has no attribute 'io' in caffe

opencv - 从视频中聚类人脸

python - 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

c++ - 打印 CV_32F opencv 矩阵值

opencv - 检测信用卡大小卡片的算法

javascript - chrome 54 中默认使用前置摄像头的 webrtc

java - LibGDX 多相机

machine-learning - 我应该如何设置我的输入神经元来接收我的输入