
029、车载环视系统架构——海思Hi3559的4路鱼眼拼接与实时性优化中的ISP资源分配老规矩先讲个真事儿。上个月有个兄弟项目组拿着Hi3559A做环视四路720P鱼眼要求30帧实时拼接出鸟瞰图。方案评审的时候拍胸脯说没问题结果一上板子ISP跑起来CPU占用直接飙到85%拼接线程饿得嗷嗷叫画面卡成PPT。查到最后问题出在ISP资源分配上——四路Sensor全开了在线模式每路都占着独立的ISP通道还都开了3DNR和WDR把ISP的硬件资源吃干抹净CPU还得帮着做畸变校正和查表不卡才怪。这活儿我干了十年Hi3559A的ISP资源分配说白了就是个“分蛋糕”的游戏。蛋糕就那么大——ISP总带宽、硬件加速单元比如LDC、NR、Sharpen、DDR带宽还有CPU的算力预算。你得想清楚哪路画面是给驾驶员看的哪路只是用来做拼接的中间产物优先级完全不同。先看硬件底牌。Hi3559A的ISP是支持多路复用的但别被“4路”给骗了。它内部其实有多个ISP核但共享一套硬件加速器。你四路Sensor同时进来每路都要做Bayer处理、去噪、Gamma、畸变校正如果全走硬件LDC那LDC模块的吞吐量就是瓶颈。我见过有人把四路全开LDC结果每路只能跑到15帧还互相抢带宽画面撕裂。正确做法是——拼接用的鱼眼图畸变校正别在ISP里做扔给CPU或者GPU做软件校正。为什么因为鱼眼拼接本来就要做球面投影映射你ISP里做一次LDCCPU再做一次投影等于做了两遍几何变换浪费算力不说还引入两次插值误差。具体怎么分我的习惯是四路Sensor两路走ISP在线模式开全功能——3DNR、WDR、Sharpen全开这两路是给驾驶员看的前视和后视画质要求高。另外两路左视和右视走ISP的“旁路模式”或者叫“直通模式”只做最基本的Bayer处理和黑电平校正连Gamma都别开直接输出RAW或者简单的YUV。为什么因为左右视的图最终是要进拼接融合的拼接算法本身会做亮度均衡和色彩校正你ISP里做一遍Gamma拼接时再做一遍色调就偏了。而且旁路模式省下的ISP资源正好补给前视后视的3DNR——环视系统最怕夜间噪点前视后视的3DNR强度直接决定夜视效果。再说实时性。Hi3559A的ISP有个特性叫“帧同步”或者“Sensor同步”四路Sensor必须同时曝光同时出帧不然拼接时运动物体会错位。这个必须在ISP的时序配置里做别指望靠CPU去对齐时间戳。我踩过坑——当时图省事四路Sensor各跑各的结果车一动拼接缝里的行人直接“分身”被客户当场拍桌子。后来老老实实配了Sensor的同步信号把四路曝光时间对齐问题才解决。但同步之后有个副作用——四路同时出帧ISP的DDR带宽会瞬间冲高这时候你得给ISP的DDR通道设置优先级前视后视的帧优先写入左右视的帧可以稍微延迟反正拼接算法要等四路齐了才处理晚个几毫秒无所谓。还有个容易忽略的点——ISP的“帧率降级”策略。Hi3559A支持在ISP负载过高时自动降低非关键路的帧率比如左右视从30帧降到15帧。这个功能默认是关的你得手动打开并且设置好阈值。我一般把ISP的负载阈值设在70%超过就降左右视的帧率保证前视后视的30帧稳定。别小看这个环视系统在车辆转弯时左右视的画面变化快但驾驶员主要看前视和后视左右视降帧率对体验影响不大却能救回整个系统的实时性。再聊聊CPU和ISP的配合。Hi3559A的ISP输出的是YUV数据拼接算法在CPU上跑。这里有个关键——ISP输出的数据格式和拼接算法的输入格式必须匹配。我见过有人ISP输出NV12拼接算法却要RGB888结果CPU还得做一次颜色空间转换白白吃掉20%的算力。正确做法是ISP直接输出拼接算法需要的格式比如YUV420SP然后拼接算法里用NEON优化做查表映射别用浮点运算。海思的SDK里其实有现成的拼接库但很多人不用非要自己写写就写吧还不用NEON跑起来慢得跟蜗牛似的。最后说个实战技巧——用Hi3559A的“Region Of Interest”功能。环视拼接时四路鱼眼图的边缘区域就是畸变最大的地方其实对拼接结果贡献很小但ISP照样全分辨率处理。你可以把每路Sensor的ROI设置成只输出中心区域比如只输出80%的宽度和高度这样ISP的带宽和DDR占用直接降一半。拼接算法那边边缘区域用插值补一下就行反正鱼眼边缘的像素本来就被拉伸得不成样子补一点看不出来。这个技巧我用了好几年每次都能把ISP负载降下来20%以上。总结一下我的经验——别把Hi3559A当万能神器它的ISP资源是有限的你得学会“按需分配”。前视后视是亲儿子给最好的资源左右视是干活的够用就行。ISP里能不做的事就别做扔给CPU或者算法去做但前提是CPU那边你得留好预算。还有帧同步和ROI这两个功能一定要用这是海思平台白送你的性能优化手段不用白不用。最后调试的时候别光看CPU占用率要看ISP的负载计数器——海思SDK里有这个接口能看到每个ISP模块的实时占用率哪个模块吃满了一目了然。这行干久了你会发现影像系统优化不是堆硬件而是抠资源。每一路Sensor、每一个ISP模块、每一毫秒的DDR带宽都是你手里的牌。怎么打全看你对系统的理解有多深。