2. 传感器基础:相机成像原理(小孔模型)、激光雷达测距原理(TOF)

各位同学,欢迎来到第二讲。

做传感器融合,说白了就是让车子的眼睛(相机)和耳朵(激光雷达)能对上话。但要让它们好好配合,你得先搞清楚它们各自是怎么看世界的。这一讲,我们就来聊聊这两个传感器的“底层逻辑”。

2.1 相机成像:小孔模型

相机是怎么把三维世界塞进一张二维照片里的?

嗯,最经典的模型就是小孔成像。你想想看,初中物理课上那个暗箱实验,蜡烛火焰倒着映在屏幕上——就是这个原理。

核心思想: 光线沿直线传播,穿过一个小孔,在后面的成像平面上形成倒立的实像。

但在实际相机里,我们不会真的用一个小孔。因为小孔进光量太少,拍出来的照片太暗。所以现代相机用透镜组来代替小孔,既能聚光,又能矫正畸变。不过,在数学建模时,我们依然把它抽象成小孔模型。

2.1.1 坐标系与投影

要理解小孔模型,你得先搞明白四个坐标系:

  • 世界坐标系:我们生活的真实三维空间,单位是米。
  • 相机坐标系:以相机光心为原点,Z轴指向镜头前方。
  • 图像坐标系:在成像平面上,以物理尺寸(毫米)为单位。
  • 像素坐标系:我们最终看到的图像,以像素为单位,原点在左上角。

从世界坐标到像素坐标,中间经历了一系列的刚体变换和投影变换。我个人习惯把整个过程拆成三步:

  1. 外参变换:把世界坐标的点,转到相机坐标系下。说白了就是确定相机在哪儿、朝哪儿看。
  2. 内参投影:把相机坐标系下的3D点,投影到成像平面上。这一步由相机内参矩阵K决定。
  3. 去畸变:由于透镜的存在,实际图像会有畸变(主要是径向畸变和切向畸变),需要校正。

公式长这样(你不需要死记,但得知道它代表什么):

// 小孔模型投影公式(齐次坐标形式)
// [u, v, 1]^T = K * [R|t] * [X, Y, Z, 1]^T

// 其中:
// K = [fx, 0, cx;
//      0, fy, cy;
//      0,  0,  1]   // 内参矩阵
// [R|t] 是外参矩阵(旋转+平移)

我的经验: 内参矩阵里的 fx, fy 是焦距(以像素为单位),cx, cy 是光心偏移。我在项目里见过有人把 cx, cy 直接设为图像中心,结果标定出来的外参总是有偏差。记住,cx, cy 是标定出来的,不是猜出来的。

2.1.2 畸变模型

为什么照片边缘的直线会变弯?这就是畸变。

  • 径向畸变:光线在透镜边缘弯曲得更厉害,产生“桶形”或“枕形”畸变。
  • 切向畸变:透镜与成像平面不平行,导致图像倾斜。

校正公式通常用泰勒级数展开:

// 径向畸变校正
x_corrected = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_corrected = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

// 切向畸变校正
x_corrected = x + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_corrected = y + [p1*(r^2 + 2*y^2) + 2*p2*x*y]

避坑指南: 我曾经在标定一个广角相机时,只用了2个径向畸变参数(k1, k2),结果图像边缘的校正效果很差。后来加了k3,效果才明显改善。对于鱼眼相机,甚至需要用到k4、k5、k6。别偷懒,参数够用才行。

2.2 激光雷达测距:TOF原理

激光雷达(LiDAR)是怎么知道障碍物有多远的?

说白了,就是“扔个球出去,等它弹回来,算时间”。这个“球”就是激光脉冲。

2.2.1 TOF(Time of Flight)基本原理

TOF,飞行时间法。原理非常简单:

  1. 激光器发射一束极短的激光脉冲。
  2. 脉冲打到目标物体上,反射回来。
  3. 接收器检测到回波信号。
  4. 计算发射和接收的时间差 Δt。
  5. 距离 d = c * Δt / 2 (c是光速,除以2是因为光走了个来回)。

你想想看,光速是3×10^8 m/s,如果目标在100米外,光来回一趟只需要约0.67微秒。所以激光雷达的计时精度必须非常高,通常要达到皮秒(10^-12秒)级别。

关键点: 激光雷达测的是“单程距离”,但时间差是双程的,所以一定要除以2。这个错误我见过新手犯过,算出来距离直接翻倍。

2.2.2 激光雷达的点云数据

一束激光只能测一个点。那怎么得到周围环境的完整轮廓呢?

答案是:让激光转起来。

  • 机械旋转式:通过电机带动激光器旋转,扫描一圈得到360°的点云。Velodyne、Hesai的经典方案。
  • 固态式:没有旋转部件,通过光学相控阵(OPA)或微振镜(MEMS)来改变激光方向。体积小、寿命长,但视场角有限。
  • 混合固态:比如转镜式,内部有旋转镜面,但外壳不动。兼顾了性能和可靠性。

每个激光点包含的信息:

字段 含义 单位
x, y, z 三维坐标(通常以激光雷达自身为原点) 米
intensity 反射强度(与目标材质、颜色、距离有关) 无单位(0-255)
ring 激光线束编号(多线激光雷达特有) 整数
timestamp 该点的时间戳(用于去畸变) 秒

我的经验: 别小看intensity这个字段。在夜间或弱光环境下,相机可能看不清车道线,但激光雷达的反射强度可以帮你区分路面和标线。我在做车道线检测时,就靠这个字段做了不少文章。

2.2.3 激光雷达的优缺点

没有完美的传感器,激光雷达也一样。

  • 优点:
    • 直接测距,精度高(厘米级)。
    • 不受光照影响,白天黑夜都能用。
    • 能提供3D结构信息。
  • 缺点:
    • 成本高(虽然这几年降了不少)。
    • 受天气影响大(雨、雾、雪会衰减激光信号)。
    • 点云稀疏,尤其是远距离。
    • 无法获取颜色、纹理信息。

所以,相机和激光雷达是天然的互补关系。相机提供丰富的语义信息(颜色、纹理、类别),激光雷达提供精确的几何信息(距离、形状)。融合起来,才能让自动驾驶系统既看得清,又看得准。

2.3 本章知识体系

为了让你更直观地理解这两个传感器的工作原理,我画了一张图:

传感器基础:成像与测距原理 相机:小孔成像模型 坐标系变换 内参/外参 投影公式 畸变校正 激光雷达:TOF测距原理 发射/接收脉冲 计算飞行时间 距离 = c * Δt / 2 生成点云数据 联合标定:对齐相机与激光雷达

这张图把两个传感器的核心流程串在了一起。左边是相机,从三维世界到二维像素;右边是激光雷达,从发射脉冲到三维点云。最终,它们都要汇聚到“联合标定”这一步——也就是我们这门课的核心。

好了,这一讲就到这里。记住,理解传感器原理是标定的第一步。下一讲,我们会深入聊聊标定板的设计和特征点提取。到时候见。


可可精品资料库