相机内参标定,相机和激光雷达联合标定

一、相机标定原理

1.1 成像过程

现实物体在相机中的成像过程离不开世界坐标系、相机坐标系、图像坐标系以及像素坐标系,只有理解了这些才能对获取的图像进行准确的分析。

成像过程:
在这里插入图片描述
四个坐标系如下图所示:
在这里插入图片描述
世界坐标系(world coordinate system):
现实世界的三维坐标系,是现实世界的物理模型,单位为m。

相机坐标系(camera coordinate system):
以镜头硬件的光电系统为基础,建立的坐标系,为了从相机的角度描述物体位置而定义,首先建立相机的坐标系,作为沟通现实世界和图像/像素坐标系的中间桥梁,单位为m;世界坐标系到相机坐标系只涉及旋转和平移,所以是刚体变换,不涉及形变。

世界坐标系 —> 相机坐标系
在这里插入图片描述
绕Z轴旋转的坐标关系如下:
在这里插入图片描述
所以从世界坐标系到相机坐标系的转换关系如下所示:
在这里插入图片描述
用齐次坐标表示:
在这里插入图片描述

图像坐标系(image coordinate system):
为了描述成像过程中物体从相机坐标系到图像坐标系的投影透射关系而引入,方便进一步得到像素坐标系下的坐标,单位为m;从相机坐标系到图像坐标系,属于透视投影关系,从3D转换到2D。如图所示此时相机坐标到图像坐标的关系表示为:
在这里插入图片描述

其中,相机坐标系的Z轴,与图像坐标系的Z轴,同方向。

像素坐标系(pixel coordinate system):
为了描述物体成像后的像点在数字图像上(相片)的坐标而引入,是真正从相机内读取到的信息所在的坐标系,单位为个(像素数目);以图像左上角为原点建立以像素为单位的直接坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。(在OpenCV中u对应x,v对应y)图像坐标到像素坐标如下图所示:
在这里插入图片描述
所以,
世界坐标系到像素坐标系的,变换为:
在这里插入图片描述
其中:
在这里插入图片描述
是相机内参;
在这里插入图片描述
是相机外参。

图片来源:
计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换
参考大佬:
1、相机针孔模型----从世界坐标系,到相机坐标系,再到图像物理坐标系,最后到图像像素坐标系的转换过程解析
2、世界坐标系、相机坐标系、图像坐标系、像素坐标系
3、相机内参详解

其中相机的内参和外参可以通过张正友标定获取(戳这里查看张正友标定的资料)。通过最终的转换关系来看,一个三维中的坐标点,的确可以在图像中找到一个对应的像素点,但是反过来,通过图像中的一个点找到它在三维中对应的点就很成了一个问题,因为我们并不知道等式左边的Zc的值。

1.2 标定详解

转换公式:

在这里插入图片描述
内参矩阵:
在这里插入图片描述
相机内参分别为:
f:焦距,单位毫米
fx:使用像素来描述x轴方向焦距的长度
fy:使用像素来描述y轴方向焦距的长度
u0v0:主点坐标(相对于成像平面),单位也是像素
γ:为坐标轴倾斜参数,理想情况下为0

内参矩阵是相机自身的属性,通过标定就可以得到这些参数。

外参矩阵:

在这里插入图片描述
相机的外参是世界坐标系在相机坐标系下的描述,R是旋转参数是每个轴的旋转矩阵的乘积,T是平移参数。

畸变参数: k1、k2、k3径向畸变系数,p1、p2是切向畸变系数。径向畸变发生在相机坐标系转图像物理坐标系的过程中。而切向畸变是发生在相机制作过程,其是由于感光元平面跟透镜不平行。其如下:

1、径向畸变:产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲径向畸变主要包含枕形畸变(左图)桶形畸变(右图)两种。下面两幅图是这两种畸变的示意:

在这里插入图片描述
现实中真实照片:
在这里插入图片描述在这里插入图片描述
2、切向畸变:产生的原因透镜不完全平行于图像平面,这种现象发生于成像仪被粘贴在摄像机的时候。下面图片来自于《学习opencv》p413:
在这里插入图片描述

相机标定:
相机标定是后续计算机视觉工作的前提,其标定的目的是为了确定相机的内参、外参以及畸变参数。标定的方法有:线性标定法、非线性优化标定法、两步标定法。线性标定法:运算速度快但是标定的精度不高,因为相机畸变都是非线性的。非线性优化标定法:标定精度高,但模型复杂。两步标定法有:Tsai的经典两步法和张正友的标定方法。

参考大佬:
1、内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解
2、相机标定的几何数学原理–操作流程–应用管理

二、相机和激光雷达联合标定

2.1 标定方法汇总

这里列举开源的五种标定方案,即百度阿波罗标定方法、but_calibration_camera_velodyne方法、基于ArUco_ros和ArUco_mapping包的方法、Autoware标定工具Calibration Tool Kit、览沃科技标定方法。

方案比较:
在这里插入图片描述

综合来看,选用Autoware来进行激光雷达和相机的联合标定。

2.2 Autoware的安装与运行

温馨提醒:记得换源,保证网速的可靠。安装1.10版本,此处环境:Ubuntu16.04+ROS kinetic,Qt5.2.1虽然指明要求 5.2.1以上但是测试中发现Qt4也能正常使用,CUDA安装是可选的没有CUDA也能顺利安装使用,但是要安装CUDA的话记住一定要选择10.0版本,不然会出错。另外经过我的实践,显卡配置一般(显存<8G)的时候在使用autoware的过程中选择CUDA加速节点也会卡死。

Autoware现在有基于ROS1的Autoware.AI和基于ROS2的Autoware.Auto两个大的版本,其中Autoware.AI将在2020年年底停止更新,同时Autoware.Auto将拥有现在.ai有的所有功能(不过他官网上2019年的时间树还没填满,存疑)。本篇博客讲述Autoware.AI的安装,下面直接称autoware。

2.2.1 安装方式

autoware的安装分为Docker和Source两种,docker安装相对简单,但是为了以后更方便的查看和研究源码,此处选择源码安装。
【注】:ROS和Qt的安装不再赘述,请自行安装。

2.2.2 安装Autoware的依赖(Ubuntu16.04 /kinetic)

sudo apt-get update
sudo apt-get install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin gksu
sudo apt-get install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools

2.2.3 编译Autoware

1.创造工作空间
mkdir -p autoware.ai/src
2.下载Autoware源码

建议直接下载源码放在autoware.ai/src下,操作如下:
网址:https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/tree/1.10.0
在这里插入图片描述

3.其他依赖

除官方提到的内容之外,测试中我们发现运行时无法出现图形化界面,因此可以先安装psutil模块

sudo apt-get install python-pip
pip install --upgrade psutil

4.编译

AutoWare是基于ROS开发的,因此编译前需要按照ROS的通用要求安装依赖库,即在源码中的ros文件夹下:

// 1. 进入 autoware 的 ros 目录下
cd autoware.ai/src/ros

// 2. rosdep 安装依赖
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

// 3. 编译运行
// 在源码的ros文件夹下直接运行脚本进行编译(有可能会遇到拒绝访问的问题,给src中所有文件赋予执行权限:https://blog.youkuaiyun.com/weixin_48262500/article/details/120058215)
./catkin_make_release

// 4. 运行脚本
./run
5.效果

正常的图形化界面如图所示,终端可能出现一些错误信息,但是能出现该界面说明运行正常,测试中虽然报了一些错误信息,但是标定过程一切正常。
在这里插入图片描述

2.3 Autoware标定激光雷达和相机的外参过程

参考大佬:
1、自动驾驶之Autoware的安装,此篇文章有不同系统版本的对应安装版本。
2、Ubuntu16.04下Autoware1.10编译安装
3、Ubuntu16.04下Autoware安装与demo测试
4、Autoware 标定工具 Calibration Tool Kit 联合标定 Robosense-16 和 ZED 相机!
5、激光雷达和相机的联合标定
6、autoware 激光-相机联合标定
7、无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定

【番外】:
1、自动驾驶(七十八)---------Apollo之标定模块
2、手眼标定之基本原理

<think>好的,用户想了解激光雷达相机联合标定的方法教程。首先,我需要回忆一下相关的知识。联合标定的主要目的是建立两个传感器之间的坐标转换关系,这样可以将激光雷达的三维点云与相机的二维图像融合。根据之前用户提供的引用内容,比如引用[1]提到标定建立了对应关系,引用[3]提到了变换矩阵的结构,这可能涉及到坐标变换标定板的用法。 接下来,用户可能需要具体的步骤方法。根据引用[2]中的方法,用户使用ROS的rosbag来同步数据,这是一个常见的做法,因为时间同步是关键问题。另外,标定板的使用也很常见,比如棋盘格或者ArUco标记。需要详细说明标定板的选择放置,比如多个角度距离,以确保标定精度。 然后,我需要考虑用户可能的实际操作步骤。比如如何采集数据,如何处理数据,使用什么工具。MATLABROS都是常用的工具,用户可能需要具体的操作流程。比如在MATLAB中使用Lidar Camera Calibrator工具,或者在ROS中录制bag包进行同步。 还要注意用户可能遇到的问题,比如时间同步、特征点匹配的准确性,以及如何计算外参矩阵。引用[3]中提到的T矩阵的结构需要解释清楚,包括旋转矩阵平移向量。此外,验证标定结果的方法也很重要,比如投影点云到图像并检查对齐情况。 用户可能需要相关的参考资料或教程链接,但根据规定不能提供外部链接,所以需要描述清楚方法步骤,确保用户能根据描述自行查找。同时,用户可能有不同的传感器配置,需要说明不同情况下的注意事项,比如不同品牌的激光雷达相机的接口差异。 最后,生成相关问题时要围绕标定方法、工具、常见问题、优化等,帮助用户进一步深入学习。比如标定工具的选择、时间同步的其他方法、标定精度的影响因素等。</think>### 激光雷达相机联合标定方法 #### 一、标定原理 激光雷达相机联合标定的核心是通过标定板建立传感器间的坐标转换关系。定义以下参数: - **激光雷达坐标系**:以激光雷达为原点,点云坐标为$P_L=(x_L,y_L,z_L)$ - **相机坐标系**:以相机光心为原点,像素坐标为$P_C=(u,v)$ - **外参矩阵**:包含旋转矩阵$R_{3×3}$平移向量$T_{3×1}$,构成齐次变换矩阵: $$ T = \begin{bmatrix} R & T \\ 0 & 1 \end{bmatrix} $$ 用于将激光雷达点云转换到相机坐标系[^3]。 #### 二、标定步骤 1. **数据采集** - 使用棋盘格或ArUco标定板,在20+不同位姿下同步采集: - 激光雷达点云(需包含完整标定板平面) - 相机RGB图像(需清晰显示标定板角点) - **同步技巧**:通过ROS的`rosbag record`录制点云图像的第一帧数据[^2] 2. **特征提取** - **激光雷达**:使用RANSAC算法拟合标定板平面,提取平面角点坐标 - **相机**:调用OpenCV的`findChessboardCorners()`检测棋盘格角点 3. **参数求解** - 构建对应点约束方程: $$ s\begin{bmatrix}u \\ v \\ 1\end{bmatrix} = K[R|T]\begin{bmatrix}x_L \\ y_L \\ z_L \\ 1\end{bmatrix} $$ 其中$K$为相机内参矩阵 - 通过最小二乘法求解$R,T$,MATLAB中可使用`estimateLidarCameraTransform`函数[^1] #### 三、验证方法 1. **投影验证**:将激光雷达点云投影到图像平面,检查边缘对齐程度 2. **重投影误差**:计算标定板角点的投影误差,一般要求<2像素 3. **动态验证**:在移动场景中测试融合效果 #### 四、工具推荐 | 工具 | 特点 | 适用场景 | |-------------|-------------------------------|------------------| | MATLAB | 图形化界面,内置标定工具箱 | 科研、快速验证 | | Autoware | 支持多传感器融合标定 | 自动驾驶开发 | | ROS Calibration | 支持时间同步标定 | 机器人实时系统 | #### 五、注意事项 1. **标定板要求**:建议使用金属材质棋盘格,边长>40cm 2. **环境光照**:避免强反光影响相机识别 3. **距离控制**:标定距离建议在2-5米范围内
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值