我想使用单个相机逐帧估计相对相机姿势。
为实现这一目标,采用了以下步骤。
- 标定相机得到相机参数K
- 使用SIFT/SURF寻找对应点
- Fundamental Matrix Identification ;使用findFundamentalMat(),输入二维匹配点
- 通过 E = K'FK 估计基本矩阵并针对奇点约束修改 E
- 分解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/