Kalibr&TartanCalib开源项目进行单目相机标定

声明:本文使用的TartanCalib的安装方法,它集成了Kalibr环境,项目运行基于Kalibr

一.环境准备

        1.Ubuntun版本 20.04

        2.安装Docker,克隆项目到本地

        详细信息参考网站:GitHub - D2SLAM-Fusion/tools-tartancalib: TartanCalib: Iterative Wide-Angle Lens Calibration using Adaptive SubPixel Refinement of AprilTags

  1. 克隆并构建docker映像

     git clone https://github.com/castacks/tartancalib
     cd tartancalib
     docker build -t tartancalib -f Dockerfile_ros1_20_04 .
    
  2. 挂载数据文件夹并在GUI容器中共享xhost。有关更多信息,请阅读ROS维基在Docker上。

     FOLDER=/path/to/your/data/on/host
     xhost +local:root
     docker run -it -e "DISPLAY" -e "QT_X11_NO_MITSHM=1" \
         -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
         -v "$FOLDER:/data" tartancalib

 补充命令:source devel/setup.bash       

//用于设置ROS的环境变量,以便在当前shell会话中能够使用ROS的命令和工具。

二.资源准备-并放入挂载的文件中

1.准备标定板与标定图片,并将标定图片转换为.bag格式

标定板:

        可以使用Aprilgrid板或棋盘格

标定图片:

        ①准备不同角度的棋盘格照片30-50张,标定板需要拍全。官方的步骤:固定相机,移动标定板在不同的角度以获得校准图像。

        ②图片命名格式有要求,一般使用19位的数字命名。否则执行打包报错!

打包成bag文件:

        rosrun kalibr kalibr_bagcreater --folder dataset-dir/. --output-bag awsome.bag

2.根据使用的标定板准备标定板参数YAML文件

        参考网址:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

target_type: 'checkerboard' #gridtype 这里采用了棋盘格
targetCols: 6               #内角点的列数
targetRows: 7               #内角点的行数
rowSpacingMeters: 0.06      #对于方形棋盘格来说 ,这里的角点间距指正方形棋盘格边长
colSpacingMeters: 0.06      #单位m

3.相机模型

相机模型的一些参数说明:

omni-radtan:鱼眼相机-畸变模型

②omni-none:鱼眼相机无畸变

③pinhole-radtan:小孔相机(普通相机)-畸变模型

④eucm-none;通用型相机模型 无畸变

pinhole-equi:针孔相机-等距畸变模型,对鱼眼相机适用性更好

pinhole-fov:针孔相机-fov畸变模型

三.运行脚本->输出

执行命令:

rosrun kalibr kalibr_calibrate_cameras --target checkerboard.yaml --models pinhole-radtan --topics /cam0/image_raw --bag awsome.bag

得到结果一个yaml文件和一个txt文件

yaml文件主要参数说明
 intrinsics(内参)焦距(Focal Length):通常以f_xf_y表示或fu,fv(fu,fv,pu,pv)
光心(Optical Center):也称为图像中心(Image Center),通常以c_xc_y表示或pu,pv
distortion_coeffs(畸变系数)径向畸变和切向畸变系数(k1,k2,r1,r2)
distortion_model(畸变模型)
camera_model(相机类型)

补充材料,针对不同的摄像头,得到的yaml文件参数也不同:

对于相机内参

对于畸变参数

四.总结

        标定完成后我们得到了相机的内参和畸变系数,利用这两个数据可以矫正图像。本次矫正效果如图所示:

矫正前:

矫正后:

 

可以看出,左下角,右下角矫正效果存在不足,讨论自身的操作原因能够尝试优化的点:

①数据集数量和质量

②矫正模型和相机模型的选择

③标定板的选择、标定板的yaml文件参数

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值