Github同步更新:https://github.com/Deephome/Awesome-LiDAR-Camera-Calibration
▊ 1. target-based方法一般就是使用标定板,可以是一块普通的矩形板,可以添加视觉效果(比如棋盘格,ArUco),可以在矩形板上镂空出特定形状1.0 CamLaserCalibraTool (2004c)主要参考了华盛顿大学2004年的论文,旷视提供了开源实现和博客解读2D激光雷达和相机标定主要利用点到平面和边缘的约束详情见旷视的博客和开源:github:https://github.com/MegviiRobot/CamLaserCalibraTool博客:https://zhuanlan.zhihu.com/p/137501892参考论文:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.80.7118&rep=rep1&type=pdf
1.1 LCCT (2005m)来自CMU Robotics Institute, 已知最早3D Laser与相机标定的工作(2005年),基于matlab的图形用户界面,进行激光雷达相机外参标定target-based方法,使用标定板,采集多个点云图像对,在点云对应的深度图(range image)上框选标定板平面区域,即可求解外参(两阶段)第一阶段,分别最小化两个坐标系中相机中心到平面距离和平面法向量的差异,依次线性求解平移和旋转;第二阶段,最小化point-to-plane距离,迭代求解官方网站:http://www.cs.cmu.edu/~ranjith/lcct.html参考论文:https://www.ri.cmu.edu/pub_files/pub4/unnikrishnan_ranjith_2005_3/unnikrishnan_ranjith_2005_3.pdf
1.2 cam_lidar_calib (2010c)来自密歇根大学,ROS / C++实现使用checkerboard,最少需要3个视图自动提取特征,图像中提取checkerboard在相机坐标系中的法向量和距相机原点的距离,点云中提取checkerboard的平面点Github开源:https://github.com/SubMishMar/cam_lidar_calib参考论文: http://robots.engin.umich.edu/publications/gpandey-2010a.pdf
1.3 lidar_camera_calibration (2017c)来自印度IIIT Robotics Research Lab,ROS package (C++)实现, 介绍了两种方法第一种方法是基于2D-3D correspondence,采用中空矩形纸板作为目标,在图像上手动标记角点2D像素,在点云中手动框选线段,利用直线相交求解3D角点,然后利用PnP+ransac求解外参缺点是手动标记像素点,误差较大第二种方法是基于3D-3D correspondence,与方法一主要区别是图像中特征的提取通过采用ArUco二维码,可直接计算出角点在相机坐标系的3D坐标,然后利用ICP求解外参github开源:https://github.com/ankitdhall/lidar_camera_calibration参考论文:https://arxiv.org/pdf/1705.09785v1.pdf
1.4 ILCC (2017p)来自日本名古屋大学Nagoya University,python实现完整流程如下:该方法的3D角点提取方式比较独特基于点云反射强度和chessboard颜色模式的相关性,利用一个chessboard model来拟合(匹配)分割的点云,从而利用chessboard model的角点位置表示chessboard点云中角点位置github开源:https://github.com/mfxox/ILCC参考论文:https://arxiv.org/pdf/1708.05514.pdf
1.5 plycal (2018c)来自HKUST,C++实现采用要给矩形板作为target首先对激光雷达和相机时间同步,图像纠正全自动地在图像中提取矩形板角点和边缘,在点云中提取矩形板的边缘和平面点矩形特征2D-3D匹配采用point-to-line和point-inside-polygon约束进行优化github开源:https://github.com/ram-lab/plycal参考论文:https://www.semanticscholar.org/paper/Extrinsic-Calibration-of-Lidar-and-Camera-with-Liao-Chen/c52748f676ff0b082db61a49dee2d15320519744
1.6 Matlab Lidar Toolbox (2018m)target-based方法,使用了chessboard, 理论上采集一个pose就可以求解特征提取分别自动提取chessboard在相机和激光雷达坐标系的平面和边缘信息,利用line correspondence (direction constraint + point to line constraint)和plane correspondence (normal constraint + point to plane constraint)进行标定官方文档:https://ww2.mathworks.cn/help/lidar/ug/lidar-and-camera-calibration.html参考论文:http://www.cs.cmu.edu/~kaess/pub/Zhou18iros.pdfcsdn博客:https://blog.csdn.net/qq_27339501/article/details/110224436
只能使用matlab的lidar toolbox,看不到源代码,该方法与plycal(2018c)的标定板点云特征提取方法类似1.7 extrinsic_lidar_camera_calibration (2020m)来自 Robotics Institute, University of Michiganmatlab实现主要创新点是标定板点云的角点估计方法假设在lidar原点有一个大小已知的参考标定板(reference target),希望标定板点云通过H变换后,与这个参考标定板尽量重合优化求解H,将参考标定板角点反变换,即可得到点云中的角点位置之前方法采用先拟合边缘再直线相交的思路,只利用了边缘点,受点云深度测量误差影响,最后提取的四个角点可能与target真实几何不兼容该方法的角点估计考虑了所有点,估计的四个角点也是与真实target形状兼容该方法与ILCC(2017p)方法类似,都是通过与一个参考的标定板拟合,从而对标定板点云参数化建模,求得角点只是ILCC利用了点云反射强度,本方法只利用点云几何信息该开源代码也实现了Matlab Lidar Toolbox (2018m)参考论文中点云边缘提取的方法:1)先ransac拟合平面2)找到每条scanline的端点(边缘点)3)将标定板点云投影到拟合平面4)拟合每条scan line5)将边缘点投影到拟合的scan line6)用ransac拟合边缘,去除边缘点粗差github开源:https://github.com/UMich-BipedLab/extrinsic_lidar_camera_calibration参考论文:https://arxiv.org/pdf/1910.03126.pdf
1.8 livox_camera_lidar_calibration(2020c)Livox官方提供的Lidar-Camera标定代码,图像和点云都是手动标点github开源:https://github.com/Livox-SDK/livox_camera_lidar_calibration
1.9 ACSC (2020p)来自北航,python实现,针对固态激光雷达Livox.提出多帧点云集成精化算法(temporal-spatial-based geometric feature refinement)和基于反射强度分布的角点估计方法(reflectance intensity distribution-based 3D corner estimation )自动提取2D和3D角点,然后用基于Ransac的PnP求解github开源:https://github.com/HViktorTsoi/ACSC参考论文:https://arxiv.org/abs/2011.08516
1.10 velo2cam_calibration (2021c)来自 Intelligent Systems Lab (LSI), Universidad Carlos III de Madrid, Leganes, ROS + C++实现可以将激光雷达、单目相机、立体相机进行任意成对标定需要比较特殊的标定板:github开源:https://github.com/beltransen/velo2cam_calibration参考论文:https://arxiv.org/pdf/2101.04431.pdf
1.11 autoware采用标定板的方法 (calibration_tookit, autoware1.10之后没有)github:https://github.com/XidianLemon/calibration_camera_lidar博客:https://adamshan.blog.csdn.net/article/details/81670732https://www.cnblogs.com/xiangzh/p/14137345.html直接手动选点的方法 :https://dlonng.com/posts/autoware-calibr-1
最新版只有autoware_camera_lidar_calibrator, 直接手动选点的方法,在下文介绍使用标定板结果更准确一些,但是操作不方便1)需要手动grab多个关键帧2)使用glviewer显示点云,不好调整视角3)需要手动选择平面点云▊ 2. targetless方法2.1 apollo是基于自然场景的targetless方法,不需要手动标记,但是需要较准确初值(一个比较好的标定场景,包含路灯,树木,道路等物体)注意:核心代码没有开源github文档:https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_0_sensor_calibration_guide.mdcsdn博客https://blog.csdn.net/learning_tortosie/article/details/82351553?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242
2.2 autoware没有target,但是需要手动标记图像和点云中的对应点,至少选择9对github文档:https://github.com/Autoware-AI/utilities/tree/master/autoware_camera_lidar_calibratorcsdn博客:https://blog.csdn.net/learning_tortosie/article/details/82347694
2.3 ExtrinsicCalib (2012c)先将图像进行灰度化和直方图均衡化,得到灰度图像,然后根据点云的反射强度和法向量特征将点云投影为图像,使用标准化互信息衡量灰度图像和点云生成图像之间相关性使用粒子群优化算法不断改变外参,直到粒子收敛,达到标准化互信息的最大值论文:http://robots.engin.umich.edu/publications/gpandey-2012a.pdf官网:http://robots.engin.umich.edu/SoftwareData/ExtrinsicCalib
局限性:对于图像,光照会影响像素亮度,且存在阴影问题;点云强度则不同,由于激光是主动式因此,利用多视图数据,可以尽量避免光照、阴影造成的噪声,使误差函数相对平滑,便于优化2.4 CamVox (2020c)来自南方科技大学图像先灰度化再提取边缘,点云先分别得到反射强度图和深度图,再提取边缘通过ICP优化,求解最佳外参github:https://github.com/xuankuzcr/CamVox论文:https://arxiv.org/pdf/2011.11357.pdf
2.4 livox camera calib (2020c)来自香港大学分别提取点云和图像中的边缘特征,然后匹配特征,最后优化求解最佳外参来更好地对齐点云边缘和图像边缘论文:https://arxiv.org/pdf/2103.01627v2.pdf作者:Chongjian Yuan (香港大学)Github:https://github.com/hku-mars/livox_camera_calib论文详细解读请参考:https://blog.csdn.net/muyiyushan/article/details/118573929
场景选择:避免圆柱物体,避免纹理过多(树木,花草等),边缘均匀分布,多个方向的边缘(https://github.com/hku-mars/livox_camera_calib/issues/4)(图片来源网络,侵删)
0 评论