Emgu CV立体标定异常:7组设备球体测量精度偏低
以下结合你的标定与测量流程,针对7组设备的系统性垂直误差提出具体排查点:
1. 棋盘格标定的垂直位姿覆盖不足
你的25张棋盘格图像可能在垂直俯仰角度的变化范围有限,导致单目内参的畸变参数(尤其是切向畸变、径向畸变高阶项)在垂直方向的拟合精度不足。虽然单目标定的RMSE无明显异常,但垂直方向的畸变校正偏差会在立体三角化过程中被放大,最终表现为球体垂直方向的倾斜与误差。
- 排查动作:补充拍摄至少5张**大俯仰角(向上/向下倾斜≥30°)**的棋盘格图像,重新执行单目标定与立体标定流程,对比测量结果。
2. FixIntrinsics标志的强制约束问题
开启FixIntrinsics会完全复用单目标定的内参,但单目标定与立体标定的场景(棋盘格光照、位姿分布)存在细微差异,部分设备的内参可能需要在立体联合优化中做微小调整才能适配。强制固定内参可能导致垂直方向的畸变校正与外参匹配出现偏差。
- 排查动作:关闭
FixIntrinsics,同时保留必要约束(如CALIB_FIX_PRINCIPAL_POINT、CALIB_FIX_FOCAL_LENGTH),允许StereoCalibrate对内参做微小修正,重新标定后验证测量精度。
3. 结构光投影的垂直方向畸变或匹配偏差
你是对畸变图像先做特征匹配再去畸变,但结构光投影仪本身可能存在垂直方向的畸变,或投影图案在垂直方向亮度不均,导致特征点检测/匹配的垂直方向偏差被放大。
- 排查动作:
- 用相机拍摄投影仪投射的棋盘格,标定投影仪内参与相对相机的外参,在特征匹配前对投影图案做去畸变处理;
- 检查投影图案的垂直方向亮度分布,确保特征点在垂直方向的检测一致性。
4. 单目内参主点的垂直方向标定误差
UndistortPoints输出的归一化坐标依赖主点(CameraMatrix中的cy)的准确性,若7组设备的cy存在系统性偏移,会导致去畸变后的垂直方向点坐标偏差,进而影响三角化结果。
- 排查动作:对比精度高的2组与误差大的7组的
cy值,若存在明显差异,手动微调cy后重新生成立体校正映射,验证测量误差是否改善。
5. StereoRectify的alpha参数设置问题
StereoRectify的alpha参数控制校正后图像的视场范围:alpha=0会裁剪畸变区域,可能导致垂直方向的特征点丢失或拉伸;alpha=1保留所有像素但会引入更多插值误差,部分设备对这种插值的垂直方向敏感度更高。
- 排查动作:尝试将
alpha调整为0.5,重新生成initUndistortRectifyMap的校正映射,再执行测量流程,观察垂直方向误差变化。
6. 硬件的隐性垂直方向安装偏差
即使硬件标称一致,仍可能存在左右相机光轴垂直方向不平行、相机与投影仪垂直方向相对位置偏移的隐性偏差。这种偏差在棋盘格标定中会被位姿拟合掩盖,但在球体三维重建中会暴露为系统性垂直误差。
- 排查动作:用高精度水平仪或校准台,检查左右相机的光轴垂直平行度,以及投影仪与相机的垂直相对位置,确认是否存在系统性偏差。
内容的提问来源于stack exchange,提问作者Scruffy10101

