大家好!最近在使用HandBot-S1采集的数据进行相机内参标定的过程中,踩过坑也收获不少。总结以了几个方面的内容,希望能帮你少走弯路,高效搞定标定!
一. 相机内参是什么?
内参(Intrinsics):就是相机自己的视力参数——它决定了三维世界中的点,在拍成照片时会落在图像的哪个位置。
如图所示一个空间三维点(X,Y,Z),投影到那一个像素坐标(U,V)上,就是由相机的内参所决定。
二. 常见的相机模型与畸变模型
相机类型 | 投影模型(Projection) | 畸变模型(Distortion) |
|---|---|---|
单目 / 双目(普通镜头) | pinhole(针孔) | radtan(径向+切向) |
鱼眼相机 | pinhole+ | 推荐 |
注:Kalibr没有独立的
fisheye投影模型,而是通过 pinhole 投影 + equidistant 畸变来建模鱼眼相机。这是其与OpenCV的fisheye模型的主要区别。
三. 如何进行内参标定?
3.1 准备标定板
这里我们使用Apriltag标定板,参数文件详解如下。
target_type: 'aprilgrid' #标定板类型:使用AprilTag阵列(AprilGrid)tagCols: 4 # 列有4个AprilTagtagRows: 6 # 行有6个AprilTagtagSize: 0.07 # 单个AprilTag的边长tagSpacing: 0.3 # 白色间隔与tagSize的比值codeOffset: 0 # 第一个AprilTag的ID起始编号
3.2 采集数据
这里我们用HandBot-S1录制采集数据,需要注意:标定板的位姿尽量丰富一些,使其出现在相机画面的各个位置;保持标定板清晰、无运动模糊。
3.3 运行标定命令
单目相机标定
kalibr_calibrate_cameras --bag data1.bag --topics /image_right --models pinhole-equidistant --target april_4x6.yaml双目相机标定
kalibr_calibrate_cameras --bag data2.bag --topics /image_right /image_left --models pinhole-equidistant pinhole-equidistant --target april_4x6.yaml注:输出包含两个相机各自的内参,以及它们之间的相外参。
鱼眼相机标定(单目或双目)
kalibr_calibrate_cameras --bag fisheye_data.bag --topics /image_raw --models pinhole-equidistant --target april_4x6.yaml关键:必须使用equidistant畸变模型,否则标定结果会很差。
3.4 输出结果说明
程序会输出三个文件:
.pdf:PDF版本的结果报告,包含重投影误差和标定姿态分布。
.txt:以文本文件储存的标定结果。
.yaml:以YAML格式储存的标定结果。
3.5 标定质量分析
看重投影误差:单目时重投影误差在1pix以内。
看标定板位姿是否丰富:尽量充满图像的所有区域。
注:重投影误差 > 1pixel时重新采集数据,避免模糊、遮挡、低纹理区域。
三. 新手如何避开常犯的三大典型误区?
平面不足——只有二维,没有三维:仅对一个静止平面进行多次拍摄,若该平面本身未发生空间姿态变化(即仅有平移、无旋转,尤其缺乏Z方向的高度变化),那么所有图像在几何上提供的信息本质上是冗余的——看似拍了20张,实则只相当于一张图像的约束。
解决方案至少从3~5个不同的空间位置进行拍摄;其中应包含 至少2~3次明显的高度变化(Z方向位移);平面不能仅做平移,必须引入旋转或倾斜。这样才能确保多视角图像提供真正独立的三维信息,支撑可靠的重建或标定。
姿态单一(没有旋转,就没有几何信息):如果标定过程中相机或标定板的姿态缺乏有效旋转——例如仅轻微倾斜、仅沿单一方向移动,或所有姿态几乎共面——那么各图像之间的几何差异极小。算法难以从中提取足够的三维约束,导致标定结果不稳定或精度低下。
解决方案: 覆盖X、Y、Z三个旋转轴,避免仅绕单一轴转动; 每个轴上的旋转角度建议不小于 10°–20°,以产生显著的视角变化; 姿态分布应尽量均匀,避免全部集中在同一空间象限(如只在左上前方),以提升标定的鲁棒性和参数可观测性。只有这样,才能为标定算法提供丰富且独立的几何信息。
角度过小:当旋转角度过小时,从数学和几何的角度来看,这些微小的变化几乎等同于没有旋转。这意味着算法无法有效捕捉到足够的空间变换信息,导致标定或重建的精度严重下降。
解决方案: 平面倾角应不小于15°,以保证有足够的几何变换; 图像中的角点需展示出明显的透视变化,这是评估平面是否正确旋转的重要指标之一,透视变化越大,提供的三维信息越丰富。
采购HandBot-S1
采购方式如下: