ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AVM环视系统搭建全流程:从硬件选型到图像拼接与标定

AVM环视系统搭建全流程:从硬件选型到图像拼接与标定 AVM环视系统这几年已经快成新车标配了从十万级家用车到高端智能电动车都能看到这个功能。所谓AVM就是通过装在车身前后左右的四路鱼眼摄像头实时采集车辆周围的图像经过畸变矫正、俯视变换、拼接融合等一系列处理后把车辆周边一圈的景象合成一个完整的鸟瞰俯视图显示在中控屏上。我自己完整走过好几个AVM系统从零搭建的项目从硬件选型、软件链路、现场标定到量产调试每个环节都有不少值得记录的细节。这篇文章就把整套系统搭建的整体流程从头到尾梳理一遍适合刚接触这个方向的嵌入式工程师、准备做搭载方案的产品经理以及想搞明白全景影像背后原理的爱好者。1. 系统整体认知AVM环视到底在解决什么问题1.1 从用户视角理解AVM的输入与输出先不急着谈芯片选型和算法公式我们从用户实际使用场景出发。驾驶员坐在车里车身周围存在大量盲区尤其是车头前方、车侧下方、右后角这些位置光靠后视镜和倒车影像很难兼顾。AVM系统要做的事情就是在中控屏上给驾驶员一个“上帝视角”——像是有一台无人机悬在车顶正上方往下拍把整车和周围环境连同一屏。要做到这个效果系统的输入是四路摄像头画面输出是一路拼接好的俯视全景视频。中间还穿插着动态引导线、障碍物距离提示、车身模型叠加这些辅助元素。整个过程对实时性要求很高从摄像头采集到屏幕显示端到端时延一般要求控制在150毫秒以内否则驾驶员打方向盘时画面跟不上体验会非常差。1.2 系统组成与各模块的职责边界AVM环视系统从物理构成上看主要由四大部分组成摄像头模组、计算平台、显示设备以及连接这三者的线束与连接器。软件层面则分为采集、处理、显示三大链路。从项目管理的角度系统搭建的核心工作其实是在“算”和“拼”这两个字上。“算”是指将每路鱼眼图像去畸变、转换成鸟瞰视角“拼”是指把四路独立画面统一到一个坐标系下对齐接缝、融合亮度。任何一环出问题最后呈现出来的都是重影、变形或者颜色断裂。模块主要职责关键选型点摄像头模组采集车身周围原始图像镜头视场角、sensor低照度、HDR能力计算平台跑ISP、去畸变、拼接算法、渲染输出NPU/GPU算力、ISP通道数、内存带宽显示设备呈现全景画面和交互层分辨率、刷新率、接口类型线束连接图像传输、供电、触发同步传输协议、线束屏蔽、防水等级1.3 系统设计的核心矛盾与权衡思路AVM系统搭建中最核心的矛盾是成像质量与算力成本之间的矛盾。四路摄像头如果全上2K分辨率、HDR、高帧率画面细节确实好但计算平台的ISP处理压力、内存带宽、功耗都会大幅上升。而如果为了省成本压低分辨率亮度一致性和暗光表现又会变差。另一个矛盾是标定精度与生产效率的矛盾。AVM之所以需要标定是因为每辆车装配时摄像头的安装角度、高度都存在公差同一个型号的车摄像头实际姿态都会有轻微差异。标定越精细拼接效果越好但标定时间越长产线节拍就越难保证。所以系统搭建前期就要定清楚指标重影控制在一个像素以内还是三个像素以内这直接决定标定算法和标定场地的复杂程度。2. 硬件选型摄像头和计算平台怎么定不踩坑2.1 摄像头模组选型的四个硬指标摄像头是整套AVM系统的眼睛选型主要看镜头、sensor、接口、结构这四个维度。镜头方面AVM几乎无一例外用鱼眼镜头普通镜头视场角(FOV)顶多120度左右覆盖不了车身近处的地面区域。鱼眼镜头可以做到190度到210度的视场角这样才能保证车头车尾左右四个方向拼接后没有大范围盲区。常规项目推荐视野角度不低于190度焦距在1.8mm到2.5mm之间具体根据摄像头安装高度和朝向微调。sensor方面分辨率目前量产主流是200万像素也就是1080P级别。再往上的2K甚至4K传感器对芯片的ISP和带宽要求会翻倍提升除非你是做高端旗舰车型否则性价比不高。低照度能力非常重要地下车库、夜间窄道泊车是AVM高频使用场景sensor的最低照度如果做不到0.1Lux级别夜间画面全是噪点拼接算法再强也无力回天。HDR方面也别只看标称要看真实动态范围大光比场景下比如隧道出口如果高光溢出、暗部死黑那这套系统就是不合格的。接口层面车规摄像头主流有MIPI CSI-2、GMSL、FPD-Link三类。MIPI适合摄像头到SoC距离短的方案通常在一米以内成本低但抗干扰弱。GMSL和FPD-Link支持一根同轴线传输十几米抗干扰强适合摄像头分布车身四角、主机集中在座舱的方案量产车基本都用这两种。2.2 计算平台选型的关键评价维度AVM对算力的需求没有智驾那么夸张但也绝不是随便一个MCU能跑的。拼接算法涉及四路图像的畸变矫正、坐标映射和像素级融合纯CPU跑会导致延迟高、发热大所以选择计算平台时重点看三样东西ISP能力、并行计算单元、内存带宽。ISP决定图像质量下限。四路摄像头需要四通道ISP同时输入每个通道都要能独立做3A自动曝光、自动白平衡、自动对焦和降噪。GPU或加速器方面畸变矫正和透视变换本质上是大量像素坐标映射适合GPU、VPU或者专用的图像加速单元并行处理。内存带宽则是最容易被忽略的瓶颈四路1080P30fps的原始数据量大约是4乘60MB/s相当于约240MB/s的写入流量如果还用双倍缓冲、多图层叠加带宽占用会非常可观选平台时至少留出50%以上的冗余。目前市面上常见的方案包括瑞萨R-Car系列、TI的TDA4VM、高通SA8155P、地平线征程系列、海思Hi3559A等。这些平台的差异在于ISP效果、AI算力大小、生态工具链成熟度。如果项目只做AVM选带成熟汽车ISP的SoC就够没必要为多余算力买单。2.3 安装布局与硬件层面的坑摄像头安装位置直接决定标定难度和最终效果。前视摄像头一般装在中网或车标附近距离地面约40-60厘米注意不要被车牌遮挡视角。后视摄像头装在牌照灯附近常见问题是容易被人手触碰或雨水遮挡选型时考虑防水和防污设计。左右摄像头装在后视镜下方注意镜壳罩的影响确保镜片伸出量足够否则车身侧面近处会形成盲区。硬件还有一个容易翻车的点是电磁兼容。四路摄像头线束如果布线靠近高压线束视频信号容易被干扰画面出现水波纹。项目初期的结构评审就要规划好线束路径连接器选带屏蔽的车规级接插件摄像头端做好接地。3. 软件链路搭建四路图像如何变成一幅全景图3.1 软件架构的分层设计整套AVM软件从下往上可以分成四层驱动与BSP层、图像处理层、拼接算法层、显示应用层。驱动层负责接收sensor数据做最基本的I2C配置、中断处理图像处理层跑ISP和3A输出标准YUV或RGB图拼接算法层处理去畸变、透视变换、图像融合显示应用层负责合成整车模型、动态引导线最终送到屏幕。这四层之间用清晰的数据接口解耦每层输出的是标准格式的图像缓存。我在实际项目里强烈建议在每层之间加打印标记或帧号这样调试时能快速定位问题出在谁的环节。比如画面黑屏先看驱动层有没有出图再看图像处理层有没有数据省得大家互相扯皮。3.2 图像采集与ISP的关键细节摄像头采集的原始数据一般是RAW格式的Bayer图必须经过ISP处理才能变成人眼可见的画面。ISP的处理流程包括黑电平校正、去马赛克、白平衡、色彩校正、伽马校正、降噪等。AVM场景最需要注意的就是自动曝光和自动白平衡的处理策略。普通拍照场景下AE和AWB是持续自动调节的。但在AVM中四路摄像头各自独立调节曝光很容易导致同一时刻四个画面的亮度不一致。例如左侧摄像头朝向阳光曝光压低了右侧摄像头处在阴影里自动提亮了拼接出来就一边亮一边暗视觉上非常突兀。合理的做法是曝光模式改成区域测光并做四路AE联动或者在对车外环境做一次稳定测量后锁定曝光参数只对整体增益做微调。3.3 鱼眼畸变矫正与鸟瞰透视变换鱼眼镜头为了获得大视场角引入了非常严重的桶形畸变画面边缘的直线全部弯曲。所以AVM算法的第一步就是利用标定得到的内参和畸变系数对原始图像做去畸变。去畸变的数学原理是反查映射对输出图像的每个像素通过畸变模型找到它在原始图像上的采样坐标。去畸变之后得到的还是斜视视图要变成鸟瞰图还需要做透视变换。透视变换在数学上是一个3x3的单应矩阵把图像平面映射到地面平面。乍一听有点抽象打个比方你站在高楼往下看地面是一个正方形的地砖但在倾斜的相机画面里地砖是一个梯形。透视变换就是把这个梯形拉回正方形。AVM利用标定得到的地面俯视方向再配合标定布上的参考点来求解这个单应矩阵。3.4 多路图像拼接与融合算法四路鸟瞰图并不是简单拼在一起每路图像的边缘区域因为视角倾斜像素被过度拉伸只能保留中间质量较好的区域相邻两路摄像头之间的画面必须有重叠区才能拼接。融合的核心是接缝处理和亮度均衡。最简单的融合方法是对重叠区域做线性加权权重由像素到重叠边界的距离决定也就是Alpha Blending。但这种方法的缺点是接缝若隐若现。实际项目中可以采用多频段融合或拉普拉斯金字塔融合在保留细节的同时平滑过渡但算力开销更大。另一个实用技巧是在重叠区域放置若干特征点做局部微调对齐这样可以应对摄像头安装公差造成的毫米级错位。4. 标定流程实操从棋盘格到拼接参数生成的完整链路4.1 标定为什么是AVM搭建绕不开的一步摄像头安装到车身上之后虽然设计图纸说装在某个位置但实际安装总会存在角度偏差可能是俯仰角偏了2度也可能是横滚角偏了1度。这1到2度的偏差反映到图像上就是几十个像素的偏移直接拼接必然产生重影。标定的目的就是精确估算每个摄像头相对车身的真实姿态参数也就是外参旋转和平移再用这些参数重新计算鸟瞰变换和全景拼接映射表。4.2 标定场地和工装准备标定场地的要求比很多人想象中严格。地面必须平整不能有坡度光照要均匀最好是阴天或者室内漫射光源避免强直射光造成高光反射。地面上铺设专用的标定布标定布通常是棋盘格或者圆形标靶图案黑白格尺寸需要精确已知一般单格边长在10到20厘米之间。车辆状态也要规范胎压调整到标准值油箱建议加一半以上油量车内坐一名驾驶员或者放置等重配重。这些看起来不起眼的因素都会影响车身姿态进而影响摄像头外参标定结果。如果这些没定义好同样一台车上午标和下午标的结果都会不同。4.3 单路摄像头标定的实操步骤单路摄像头标定分为内参标定和外参标定两步。内参标定就是求镜头的焦距、光心位置和畸变参数。做法是手持棋盘格标定板在摄像头前面多个角度摆放拍摄15到20张清晰照片程序检测棋盘格角点后用张正友标定法解算出内参。这一步在产线上通常已经由模组厂做过一次系统搭建阶段我们更关注外参。外参标定求的是摄像头坐标系到车身坐标系的旋转矩阵和平移向量。具体操作中车辆停在标定布中心标定布四个方向分别位于前、后、左、右摄像头的视野范围内。程序提取标定布上的棋盘格角点已知每个角点在车身坐标系下的精确坐标又知道角点在图像中的像素坐标通过PnP算法就能求得摄像头外参。4.4 拼接参数生成与线下验证四路摄像头的外参标定完成后接下来要生成最终的拼接参数。具体过程是在车身周围地面选取一个统一的输出坐标系对输出全景图的每个像素判断它落在哪个摄像头的视野范围内再通过对应摄像头的内外参反查出应该取该摄像头原始图像的哪个像素。这个过程一次性生成一张查找表运行时查表取像素即可避免在MCU或SoC上做实时浮点运算。拼接参数生成之后不能直接上量产要先做验证。摆几个已知尺寸的锥桶或者标定柱在车身周围看全景图上锥桶的位置、大小是否和实际一致以及车辆四个角落是否有盲区。还要看相邻画面的接缝是否对齐尤其是车身四个角落区域那里是两个摄像头视野交界的地方最容易出现重影或错位。5. 实车集成与调试效果调优和一些常见问题5.1 从离线参数到上车联调标定参数生成后真正的战场在实车。第一次上车联调通常问题最多先是图像通道顺序不对左右画面反了再是摄像头启动时间不同步画面闪跳。这时候先在调试界面里把四路摄像头画面独立显示出来逐个确认视角方向、色彩还原基本正常后再叠加鸟瞰拼接。车辆模型和动态引导线也要在这个阶段对齐。车身模型的长宽比必须精确对应实际尺寸否则车身模型在画面的位置与视觉感受不匹配。引导线的对齐需要将方向盘转角信号接入AVM系统转向时引导线跟随转动如果转角信号标定不一致引导线就会歪。5.2 画质调优的三个重点方向实车调优中亮度一致性是最普遍的问题。车身左右两侧光照差异大四路摄像头测光模式不一致很容易出现一边亮一边暗。处理手段有几个层面优先做硬件曝光同步若平台支持多路sensor的同步曝光控制最好其次是软件层面对每路图像做亮度统计以四路平均亮度为基准做增益补偿最后在融合阶段对重叠区做渐入渐出的亮度过渡掩盖残差。颜色一致性同样重要。四路摄像头即使同一个型号因为镜头镀膜、sensor灵敏度的细微差异输出颜色也会略有差别。调试时在车辆前方放一张标准色卡分别看四路画面在相同色块上的RGB数值差距在ISP的颜色校正矩阵里做微调。还有一个容易忽略的细节是图像的清晰度一致性。有些摄像头安装位置容易被污渍遮挡比如后视摄像头朝上容易积灰导致画面整体发灰、清晰度下降。实车调试阶段需要定义好脏污检测功能如果镜头被遮挡超过一定比例系统给出提示否则用户会对系统效果产生怀疑。5.3 AVM系统常见问题排查速查表问题现象可能原因排查思路全景图出现重影外参标定精度不够或摄像头安装松动重新标定检查安装螺栓力矩画面随机闪烁或黑屏视频线束EMC干扰、接触不良检查线束屏蔽层和连接器锁紧四路亮度差异巨大曝光策略不一致光照突变开启多sensor同步曝光或锁定曝光接缝处出现物体断裂感融合权重不合理重叠区过小调整融合带宽度增加特征点微调动态物体有残影帧率不足刷新率设置偏低检查采集帧率、算法处理耗时车身边角有盲区摄像头视角被遮挡或安装位置偏低现场看摄像头安装调整安装支架5.4 动态场景实测的验收方法系统调通后还需要一套完整的验收流程。低速绕桩测试主要用于观察拼接效果和动态畸变车辆围绕锥桶缓慢行驶全程看屏幕检查锥桶是否在穿越接缝时发生跳变。泊车入位测试重点验证引导线和距离提示的准确性在车辆前后放置泡沫障碍物对比全景画面中的距离显示与实际距离差。窄路会车和通道行驶则检验画面实时性和色彩稳定性。6. 系统搭建过程中的几点个人经验这套AVM系统搭建流程走下来有几点体会比较深刻。第一尽可能早地把摄像头装到实车上不要长时间停留在仿真环境里。仿真环境很难复现真实的光照条件、镜头脏污和安装公差很多问题只有上车才会暴露。哪怕前期只是拿一台代步车手工安装摄像头也比纯粹跑数据有价值得多。第二标定工具链的自动化程度决定项目效率。手工标定一套流程可能要二十分钟自动标定可以压缩到三分钟以内。我们后期做了一套自动触发、自动角点检测、自动生成参数的脚本把整个标定流程降到两分钟级别大幅提升了现场调试的效率。这块投入非常值得尤其是计划量产的项目。第三做AVM系统搭建不要只盯拼接算法还要关注和整车其他系统的配合。比如AVM画面需要叠加雷达的障碍物报警信息那就要做好雷达坐标系与AVM坐标系的统一比如倒车时AVM画面需要和倒车雷达的距离提示联动那就要处理好几路信号的时间同步。系统越往后做越是一个工程问题不单纯是图像算法问题。最后分享一个小技巧调试时准备一台可以实时冻结画面的设备或者让系统支持单帧回放。现场有些偶发问题比如画面闪断、接缝抖动一直盯屏幕不一定能抓到但回放冻结帧就能快速定位是采集丢帧还是融合算法偶发错乱。这个习惯帮我们排查了至少三四个疑难问题值得参考。
返回列表