OpenCV 使用视觉里程计计算立体相机位置

时间:2021-07-12 00:18:32

标签: opencv computer-vision translation visual-odometry

我正在尝试使用视觉里程计估计立体相机系统的相机的 3D 轨迹。现在我只需要从帧到帧的翻译。

问题:我不能使用solvePnPRansac函数的旋转和平移向量来绘制我的轨迹吗?还是需要使用Rodrigues函数来计算旋转矩阵?

为了更好地理解我已经完成的工作,我总结了我的步骤。

我校准了立体相机并获得了所有外在和内在参数。 在特征检测之前重新映射所有图像。

第一张图片的迭代 (t-1):

1.) 图像左右特征检测、描述和匹配得到关键点。

以下图像的迭代 (t):

1.) 对新图像进行左右特征检测、描述和匹配以获得关键点。

2.) 左(t-1)和左(t)以及右(t-1)之间的匹配和正确的(t)。 这样我就可以确保找到的关键点在所有 4 张图像中。

3.) findEssentialMat 使用上一个和当前图像的关键点。

4.) recoverPose 并将同质 3D 点转换为笛卡尔坐标

5.) 过滤内点以获得最佳关键点

6.) solvePnPRansac 得到旋转和平移向量。 distCoeff 数组为空,因为图像已预先重新映射。

7.) rodrigues 用于旋转向量。转置结果旋转并计算 -rotation_inv * 平移。

8.) 保存当前图像的关键点以备下次迭代使用。

0 个答案:

没有答案