作者丨十点雨@知乎

来源丨https://zhuanlan.zhihu.com/p/404762012

编辑丨3D视觉工坊

LiDAR Camera Calibration (LCC)系列,主要介绍激光雷达相机外参标定相关内容。本文主要介绍相关的开源代码和软件,主要包括target-based和targetless两类方法,每个方法对应标题后说明了方法的提出年份和开源代码的语言(c : c++, p: python, m: matlab)。

Github同步更新:https://github.com/Deephome/Awesome-LiDAR-Camera-Calibration

1. target-based方法

一般就是使用标定板,可以是一块普通的矩形板,可以添加视觉效果(比如棋盘格,ArUco),可以在矩形板上镂空出特定形状。

1.0 CamLaserCalibraTool (2004c)

主要参考了华盛顿大学2004年的论文,旷视提供了开源实现和博客解读。2D激光雷达和相机标定。主要利用点到平面和边缘的约束。详情见旷视的博客和开源:

1)github:https://github.com/MegviiRobot/CamLaserCalibraTool

2)博客:标定系列三 | 实践之Camera-Lidar标定(https://zhuanlan.zhihu.com/p/137501892)

3)参考论文:Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration)(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

参考论文:2005_Fast Extrinsic Calibration of a Laser Rangefinder to a Camera

1.2 cam_lidar_calib (2010c)

来自密歇根大学,ROS / C++实现。

使用checkerboard,最少需要3个视图。自动提取特征,图像中提取checkerboard在相机坐标系中的法向量和距相机原点的距离,点云中提取checkerboard的平面点。

Github开源:https://link.zhihu.com/?target=https%3A//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开源:github.com/ankitdhall/l

参考论文:LiDAR-Camera Calibration using 3D-3D Point correspondences (2017)(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

参考论文:2017_Remot Sensing_Reflectance Intensity Assisted Automatic and Accurate Extrinsic Calibration of 3D LiDAR and Panoramic Camera Using a Printed Chessboard(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

参考论文:2018_ROBIO_Extrinsic Calibration of Lidar and Camera with Polygon

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

参考论文:Lipu Zhou and Zimo Li and Michael Kaess, "Automatic Extrinsic Calibration of a Camera and a 3D LiDAR using Line and Plane Correspondences", "IEEE/RSJ Intl. Conf. on Intelligent Robots and Systems, IROS", Oct, 2018.

csdn博客:MATLAB终于可以完成相机与激光雷达的标定啦!!(包含matlab2020下载链接)

只能使用matlab的lidar toolbox,看不到源代码
该方法与plycal(2018c)的标定板点云特征提取方法类似。

1.7 extrinsic_lidar_camera_calibration (2020m)

来自 Robotics Institute, University of Michigan。matlab实现。

主要创新点是标定板点云的角点估计方法。假设在lidar原点有一个大小已知的参考标定板(reference target),希望标定板点云通过H变换后,与这个参考标定板尽量重合。优化求解H,将参考标定板角点反变换,即可得到点云中的角点位置。

之前方法采用先拟合边缘再直线相交的思路,只利用了边缘点,受点云深度测量误差影响,最后提取的四个角点可能与target真实几何不兼容。该方法的角点估计考虑了所有点,估计的四个角点也是与真实target形状兼容。
该方法与ILCC(2017p)方法类似,都是通过与一个参考的标定板拟合,从而对标定板点云参数化建模,求得角点。只是ILCC利用了点云反射强度,本方法只利用点云几何信息。

github开源:https://github.com/UMich-BipedLab/extrinsic_lidar_camera_calibration

该开源代码也实现了Matlab Lidar Toolbox (2018m)参考论文中点云边缘提取的方法:1)先ransac拟合平面,2),找到每条scanline的端点(边缘点),3)将标定板点云投影到拟合平面,4)拟合每条scan line, 5)将边缘点投影到拟合的scan line, 6)用ransac拟合边缘,去除边缘点粗差
参考论文:2020_IEEE access_Improvements to Target-Based 3D LiDAR to Camera Calibration

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

参考论文:ACSC: Automatic Calibration for Non-repetitive Scanning Solid-State LiDAR and Camera Systems

1.10 velo2cam_calibration (2021c)

来自 Intelligent Systems Lab (LSI), Universidad Carlos III de Madrid, Leganes, ROS + C++实现。可以将激光雷达、单目相机、立体相机进行任意成对标定。需要比较特殊的标定板:

github开源:https://github.com/beltransen/velo2cam_calibration

参考论文:Beltrán, J., Guindel, C., and García, F. (2021). Automatic Extrinsic Calibration Method for LiDAR and Camera Sensor Setups. arXiv:2101.04431 [cs.RO]. Submitted to IEEE Transactions on Intelligent Transportation Systems.

1.11 autoware

采用标定板的方法 (calibration_tookit, autoware1.10之后没有)

github: https://github.com/XidianLemon/calibration_camera_lidar

博客: 无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定、Autoware calibration toolkit激光雷达与相机外参联合标定

直接手动选点的方法 :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.md

csdn博客: 激光雷达和相机的联合标定(Camera-LiDAR Calibration)之apollo

备注:感谢微信公众号「3D视觉工坊」整理。

2.2 autoware

没有target,但是需要手动标记图像和点云中的对应点,至少选择9对。

github文档:https://github.com/Autoware-AI/utilities/tree/master/autoware_camera_lidar_calibrator

csdn博客:激光雷达和相机的联合标定(Camera-LiDAR Calibration)之Autoware

2.3 ExtrinsicCalib (2012c)

先将图像进行灰度化和直方图均衡化,得到灰度图像,然后根据点云的反射强度和法向量特征将点云投影为图像,使用标准化互信息衡量灰度图像和点云生成图像之间相关性。使用粒子群优化算法不断改变外参,直到粒子收敛,达到标准化互信息的最大值。

论文:2012_Automatic Targetless Extrinsic Calibration of a 3D Lidar and Camera by Maximizing Mutual Information

官网:(包含代码,数据)http://robots.engin.umich.edu/SoftwareData/ExtrinsicCalib

局限性:对于图像,光照会影响像素亮度,且存在阴影问题;点云强度则不同,由于激光是主动式。因此,利用多视图数据,可以尽量避免光照、阴影造成的噪声,使误差函数相对平滑,便于优化。

2.3 CamVox (2020c)

来自南方科技大学。图像先灰度化再提取边缘,点云先分别得到反射强度图和深度图,再提取边缘。通过ICP优化,求解最佳外参。

github:https://github.com/xuankuzcr/CamVox

论文: VCamVox: A Low-cost and Accurate Lidar-assisted Visual SLAM System

2.4 livox camera calib (2020c)

来自香港大学。分别提取点云和图像中的边缘特征,然后匹配特征,最后优化求解最佳外参来更好地对齐点云边缘和图像边缘。

论文:Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments

作者:Chongjian Yuan (香港大学)

Github:https://github.com/hku-mars/livox_camera_calib

论文详细解读请参考:

博客:【LCC系列】不用标定目标,实现高分辨率激光雷达和相机的像素级自标定

场景选择:避免圆柱物体,避免纹理过多(树木,花草等),边缘均匀分布,多个方向的边缘 Issue with finding depth-continuous regions (github)(https://github.com/hku-mars/livox_camera_calib/issues/4)

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

激光雷达和相机联合标定之开源代码和软件汇总(2004-2021)相关推荐

  1. 激光雷达和相机联合标定 之 开源代码和软件汇总 (2004-2021)

    关注公众号,发现CV技术之美 本文转自知乎,获作者授权转载: https://zhuanlan.zhihu.com/p/404762012 LiDAR Camera Calibration (LCC) ...

  2. ubuntu20.04 实测 机械式激光雷达与相机联合标定

    ubuntu20.04 实测 机械式激光雷达与相机联合标定 安装功能包 功能包测试 利用功能包标定自己的激光雷达和相机 设置参数 启动相机和激光雷达 启动功能包 安装功能包 实测 ubuntu20.0 ...

  3. 开源代码和软件汇总!激光雷达和相机联合标定(2004-2021)

    作者 | 十点雨  编辑 | 我爱计算机视觉 原文链接:https://zhuanlan.zhihu.com/p/404762012 点击下方卡片,关注"自动驾驶之心"公众号 AD ...

  4. 激光雷达和相机联合标定之cam_lidar_calibration

    关于cam_lidar_calibration(2021)安装使用 一.简介 在众多的lidar和camera标定的开源程序中,效果相对不错的就是cam_lidar_calibration了,其余开源 ...

  5. 激光雷达和相机联合标定

    前言 最近搞了一下激光和相机的联合标定,分别用c艹+pcl与python+open3d写了写linux/windows上相应的联合标定软件,记录一下. 绪论 方法基于标定板,目的就为了求取传感器之间的 ...

  6. ubuntu18.04 使用calibration_camera_lidar 实现激光雷达和相机联合标定

    Autoware1.10以上的软件都需要单独安装这个calibration标定工具箱 1.nlopt安装 新开一个终端: git clone git://github.com/stevengj/nlo ...

  7. 激光雷达和相机联合标定之-but_velodyne_camera

    1. 概述 1.该方法适用于相机和激光雷达朝向方向相同或者近似相同的状态,相机和激光雷达之间的R矩阵较小,主要标定误差为T矩阵. /ps:可以先将激光雷达旋转到与相机安装坐标系相似的世界坐标系下,再使 ...

  8. 激光雷达与视觉联合标定综述!(系统介绍/标定板选择/在线离线标定等)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨汽车人 来源丨自动驾驶之心 点击进入->3D视觉工坊学习交流群 后台回复[相机标定]获取超 ...

  9. autoware 激光-相机联合标定

    autoware进行激光-相机联合标定 ~~~ 刚开始进行激光-相机联合标定的时候,出现了不少问题,在此记录一下整体标定流程,以防忘记.在此,特别感谢佳明师弟,在录制数据集时提供的帮助. ~~~ 0. ...

最新文章

  1. httpClient 处理SSL问题
  2. Activiti工作流从入门到入土:入门实例
  3. 莫队算法(Mo's_Algorithm)
  4. 22. loacte命令
  5. Eclipse中看java源代码
  6. putty 连接虚拟机_使用Putty连接虚拟机
  7. 黑苹果 wifi android,动动手指零负担让你的黑苹果连上Wifi
  8. phpMyAdmin4.4.10安装
  9. Kubernetes 证书过期
  10. loj#2073. 「JSOI2016」扭动的回文串
  11. TransactionScope 事务使用说明
  12. 深入理解Intel Core Microarchitecture
  13. [工具]实现文件夹和文件名称批量修改
  14. 追逐冠军的少年 | 算法工程师岗毕业三年总结
  15. QImage 图像格式小结,QImage::Format
  16. java身高排队问题_抓狂的java之小朋友排队
  17. 基于matlab的步进电机转速控制仿真,matlab步进电机转速控制仿真(课程设计).doc
  18. 为什么推荐使用付费代理IP
  19. 使用多电脑进行AirSim联合仿真
  20. python3中的os.path模块

热门文章

  1. js控制文本栏只能输入数字
  2. 翻译连载 | 第 9 章:递归(下)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  3. 高招攻略 领英助你清晰解读大数据专业
  4. php 字符串处理
  5. 3最短路的几种解法 ------例题 最短路
  6. 使用matlab进行mex编译时的路径问题mexopts
  7. Ubuntu14.04 工作区设置
  8. [数分提高]2014-2015-2第4教学周第2次课
  9. JAVA学习笔记--4.多线程编程 part5.这些年的那些坑
  10. 在 MOSS2007 集成 SQL Server 2008 报表服务