1. 课程导入

当你坐进一辆配备 360° 全景影像的汽车,中控屏上呈现出一幅从车顶俯视的完整画面,车身周围没有盲区——这背后并不是一颗"超广角摄像头"的功劳,而是多颗摄像头协同工作的结果。多摄像头视觉感知与环视工程,正是研究如何用多颗相机获取、处理、融合环境信息,并最终为驾驶员或自动驾驶系统提供可靠空间认知的一门交叉工程学科。

它至少包含三层含义:感知层负责从图像中提取目标、车道线、可行驶区域等信息;环视层负责把多路图像拼接成统一的车周俯视视图;工程层则关注标定、同步、算力分配、量产一致性与功能安全。三者缺一不可,只做算法不做标定,画面就会错位;只做拼接不做感知,环视就只是"好看"而非"有用"。

一、核心原理:从单目到多目的跨越

单目相机只能提供二维投影,深度信息天然缺失;而多摄像头系统通过视差、重叠视场与几何约束恢复三维空间关系。其核心链条可以概括为:

  1. 成像与标定:获取每颗相机的内参(焦距、主点、畸变系数)与外参(相对车身的位置与姿态)。
  2. 同步与对齐:保证多路图像在同一时刻曝光,并统一到同一坐标系。
  3. 投影与拼接:将图像重投影到地面或虚拟视点,形成环视鸟瞰图。
  4. 感知与融合:在统一视图上检测目标、估计距离,并与雷达、超声波等传感器融合。

其中,外参标定精度直接决定环视效果。若某颗相机俯仰角偏差 1°,在 5 米处就可能产生约 9 厘米的投影误差,拼接缝处会出现明显错位。因此量产车通常要求外参误差控制在 0.1° 量级。

多摄像头环视感知系统架构 车辆 前 后 左 右 多路图像输入 前/后/左/右 4~6 路 内外参标定 畸变校正 / 外参 时间同步 硬触发 / 软对齐 图像预处理 去噪 / 增强 / 校正 环视鸟瞰图 2D/3D 全景拼接 目标检测 行人 / 车辆 / 锥桶 距离估计 单目测距 / 视差 决策与告警 AEB / 泊车 / 盲区 多视图几何变换与重投影 重叠区域配准与融合 统一坐标系下的感知推理 关键工程约束 标定精度 · 时间同步 · 算力预算 · 量产一致性

二、发展历程:从倒车影像到环视感知

多摄像头视觉的发展大致经历四个阶段:

阶段时间典型形态核心能力
单目后视1990s—2000s倒车影像单一后方视野,无拼接
多路拼接2007—20142D 环视四路鱼眼拼接成俯视图
3D 环视2015—20203D 全景 / 透明底盘虚拟视点、动态视角
感知融合2020 至今BEV + 多传感器鸟瞰特征、目标检测、测距

可以看到,行业重心已从"看得见"转向"看得懂"。早期环视只解决拼接问题,而今天的系统需要在鸟瞰图上直接输出目标框、距离和可行驶区域,甚至与激光雷达、毫米波雷达做前融合。

三、典型应用场景

  • 低速泊车与窄道通行:环视拼接 + 超声波融合,识别车位线、路沿与障碍物。
  • 盲区监测与变道辅助:侧后视摄像头检测相邻车道车辆,输出 TTC 告警。
  • 自动紧急制动(AEB):前视摄像头识别行人、骑行者,结合测距触发制动。
  • 记忆泊车与代客泊车:多摄像头构建局部语义地图,支持路径复现。
  • 商用车与工程机械:多路环视消除大型车辆盲区,配合声光告警。
环视系统的价值不只是"给驾驶员看",更在于为下游感知与规控模块提供统一的空间输入。理解这一点,才能理解为什么标定、同步这些"底层工作"如此关键。

四、整体课程框架与常见误区

本课程共 30 章,整体按"基础—标定—拼接—感知—融合—量产"的主线展开:

  1. 基础篇:相机模型、坐标系、畸变模型、多视图几何。
  2. 标定篇:内参标定、外参标定、在线标定与一致性校验。
  3. 拼接篇:鱼眼校正、投影变换、接缝融合、3D 环视。
  4. 感知篇:目标检测、车道线、可行驶区域、单目/多目测距。
  5. 融合篇:BEV 特征、多传感器时空对齐、前融合与后融合。
  6. 量产篇:算力优化、功能安全、数据闭环与量产一致性。
初学者最常见的三个误区:一是认为"环视就是拼接",忽略了下游感知需求;二是把标定当成一次性工作,忽视了温度、振动带来的外参漂移;三是只关注算法精度,忽略了嵌入式平台的实时性与算力约束。这三类问题在量产项目中往往比算法本身更棘手。

下面这段伪代码展示了环视处理主循环的典型结构,可以帮助你建立工程直觉:

for each frame:
    imgs = capture_sync(cameras)          # 多路同步采集
    imgs = undistort(imgs, intrinsics)    # 畸变校正
    bev  = project_to_ground(imgs, extrinsics)  # 投影到地面
    bev  = blend_seams(bev)               # 接缝融合
    dets = detect(bev)                    # 目标检测
    dist = estimate_distance(dets)        # 距离估计
    output(bev, dets, dist)               # 输出给下游

从这段流程可以看出,多摄像头视觉感知与环视工程是一门"链条很长"的学科:任何一环出问题,最终画面或感知结果都会失真。接下来的章节,我们将从相机模型与坐标系开始,逐层拆解这条链路。