求解:无真实世界坐标下相机外参(R、t)计算及视觉里程计适配问题
相机外参计算与视觉里程计投影矩阵问题
我已获取相机内参矩阵,但不清楚在无真实世界坐标的情况下如何计算外参(旋转矩阵R与平移向量t),以得到用于视觉里程计项目的投影矩阵。在KITTI数据集测试视觉里程计代码时,将t向量设为0的结果精度尚可,但自有数据集因复杂度较高出现参数适配问题。
以下是我的相机参数:
cameraParameters with properties: Camera Intrinsics IntrinsicMatrix: [3×3 double] FocalLength: [1.4133e+03 1.4188e+03] PrincipalPoint: [950.0639 543.3796] Skew: 0 RadialDistortion: [-0.0091 0.0666] TangentialDistortion: [0 0] ImageSize: [1080 1920] Camera Extrinsics RotationMatrices: [3×3×33 double] TranslationVectors: [33×3 double] Accuracy of Estimation MeanReprojectionError: 0.6450 ReprojectionErrors: [80×2×33 double] ReprojectedPoints: [80×2×33 double] Calibration Settings NumPatterns: 33 WorldPoints: [80×2 double] WorldUnits: 'millimeters' EstimateSkew: 0 NumRadialDistortionCoefficients: 2 EstimateTangentialDistortion: 0
解决方案
1. 无真实世界坐标时的外参定义
外参描述的是相机相对于自定义参考坐标系的位姿,无需依赖真实世界坐标:
- 选定序列第一帧作为参考基准,将其外参设为:
R = 单位矩阵,t = 零向量。 - 后续帧的外参通过帧间位姿估计(特征匹配+PnP/ICP等算法)得到相对位姿,再累积为相对于参考帧的全局位姿。
2. 自有数据集适配问题的修复
- 优先做畸变校正:用已有的畸变参数对所有图像做校正,这是消除系统误差的基础,复杂场景下未校正的畸变会严重影响特征匹配和位姿估计。
- 优化特征匹配流程:复杂场景易出现特征点不足或误匹配,可调整特征提取器(如ORB/SIFT)的参数增加特征数量,加入RANSAC、LMeds等鲁棒算法剔除误匹配对。
- 解决尺度歧义:单目视觉里程计天生存在尺度问题,KITTI有真值可对齐尺度,自有数据集可通过:
- 引入已知尺寸的标定物/场景元素做尺度校准;
- 改用双目相机或融合IMU数据来固定尺度。
- 放弃零平移假设:KITTI场景结构规则,零平移假设误差累积慢,但复杂场景下每帧的平移量不可忽略,必须通过帧间估计得到真实的t向量。
3. 投影矩阵的计算方式
投影矩阵P的计算公式为:
P = K * [R | t]
其中K是内参矩阵,[R | t]是3×4的外参矩阵(3×3旋转矩阵R拼接3×1平移向量t),只要得到每帧相对于参考帧的R和t,即可生成对应投影矩阵。
4. 利用现有标定数据
你提供的参数中已包含33组标定板相对于相机的外参(RotationMatrices和TranslationVectors),可用于:
- 验证畸变校正的效果;
- 作为已知尺度的参考,校准视觉里程计的输出尺度。
内容的提问来源于stack exchange,提问作者RABİA SENA UYSAL
相关产品推荐
相关产品推荐

