2、高通ISP硬件架构:骁龙ISP硬件模块介绍(IFE、IPE、BPS等)、数据流走向

做ISP调试,第一件事不是调参数,而是看懂硬件怎么干活。

很多人一上来就对着3A算法猛调,结果发现效果出不来——其实问题出在数据流上。你想想看,如果连图像数据从哪个模块进、哪个模块出都没搞清楚,调出来的参数很可能被后面的模块“吃掉”了。

这一章,我带你把骁龙ISP的硬件骨架摸一遍。不搞玄学,只讲你调试时真正需要知道的东西。

2.1 骁龙ISP整体架构概览

高通的ISP不是一个单一模块,而是一套流水线。我习惯把它分成三段:

  • 前端接收:从传感器拿原始数据,做初步处理
  • 中间处理:核心图像处理,降噪、锐化、色彩
  • 后端输出:编码、显示、存储

这套流水线里,有三个模块你必须要记住:IFE、IPE、BPS。它们就是高通ISP的“三驾马车”。

核心记忆点:

  • IFE:Image Front-End,图像前端,处理RAW数据
  • IPE:Image Processing Engine,图像处理引擎,做YUV处理
  • BPS:Bayer Processing Segment,Bayer处理段,做Bayer域处理

嗯,这里要注意:不同骁龙平台,这三个模块的集成方式可能不一样。比如有些平台把BPS和IFE合并了,有些则分开。但逻辑功能是不变的。

2.2 IFE(图像前端)——传感器的“翻译官”

IFE是ISP的第一道关卡。传感器送过来的RAW数据,直接进IFE。

我在项目中遇到过一个问题:某款传感器输出的RAW数据有坏点,IFE的坏点校正没开,结果后面的IPE怎么调都调不干净。后来才发现,坏点校正必须在IFE阶段做,过了这个村就没这个店了。

IFE主要干这几件事:

  • 坏点校正(DPC):静态和动态坏点都得处理
  • 黑电平校正(BLC):去掉传感器暗电流的影响
  • 增益控制:模拟增益和数字增益
  • 线性化:把传感器的非线性响应拉直

调试小技巧:

IFE阶段的参数调整,直接影响后面所有模块。我建议你在调IPE之前,先确认IFE的输出是干净的。否则后面调得再好,也是“垃圾进,垃圾出”。

2.3 BPS(Bayer处理段)——Bayer域的“精加工”

BPS这个模块,说白了就是专门处理Bayer格式数据的。它和IFE的区别在于:IFE做的是“粗加工”,BPS做的是“精加工”。

BPS的核心功能:

  • 去马赛克(Demosaic):把Bayer数据变成RGB
  • 白平衡(AWB):调整色温
  • 颜色校正(CCM):把传感器色彩空间映射到标准色彩空间
  • Gamma校正:调整亮度响应曲线

我曾经踩过一个坑:某次调试时,BPS的白平衡参数没配好,导致IPE阶段的色彩校正怎么调都偏色。后来查了半天,发现是BPS的AWB增益给错了。记住,BPS的输出质量决定了IPE的上限。

避坑指南:

我曾经在BPS阶段把Gamma曲线调得太陡,结果暗部细节全丢了。后来花了三天才追回来。Gamma校正要谨慎,尤其是暗部区域,宁可留一点余量,也不要切得太狠。

2.4 IPE(图像处理引擎)——YUV域的“总导演”

IPE是ISP流水线的最后一站。这时候数据已经变成YUV格式了。IPE负责做所有“看起来好看”的处理。

IPE的主要模块:

模块 功能 调试要点
降噪(NR) 去除亮度和色度噪声 注意亮噪和色噪的平衡,别把细节磨没了
锐化(Sharpening) 增强边缘细节 过度锐化会产生振铃,宁欠勿过
色彩增强(CE) 提升色彩饱和度 肤色保护要单独处理
亮度映射(LTM) 局部亮度调整 高动态场景下特别有用

我个人习惯在IPE阶段先调降噪,再调锐化。因为降噪会模糊细节,如果先锐化再降噪,锐化的效果会被降噪抵消掉,白费功夫。

2.5 数据流走向——一张图看懂

说了这么多,不如一张图来得直观。下面这张图展示了骁龙ISP的典型数据流:

骁龙ISP数据流走向图 传感器 RAW数据 IFE 前端处理 BPS Bayer处理 IPE YUV处理 输出 YUV/RGB 说明: 数据从传感器以RAW格式进入IFE,经过BPS的Bayer域处理后,进入IPE做YUV域处理,最终输出。 数据格式变化:RAW(传感器) → RAW(IFE输出) → RGB(BPS输出) → YUV(IPE输出) 注意: 实际骁龙平台中,IFE和BPS可能并行处理多个传感器数据(多摄场景)。 IPE也可以同时处理多路YUV流(如预览流和拍照流)。

2.6 多摄场景下的数据流

现在的手机至少三个摄像头。多摄场景下,数据流会变得复杂。

我记得有一次调试双摄虚化,发现主摄和副摄的画面始终对不上。后来查数据流才发现,两个摄像头的IFE参数不一致,导致输出延迟不同步。

多摄场景的关键点:

  • 同步:所有摄像头的IFE必须使用同一套时序
  • 带宽:多路数据同时进IPE,带宽容易成为瓶颈
  • 融合:BPS输出的RGB数据,需要在IPE之前做对齐

实战经验:

多摄调试时,我建议你先单独调好每个摄像头,再开融合。否则出了问题,你根本不知道是哪个摄像头的问题。

2.7 总结一下

这一章我们把高通ISP的硬件骨架过了一遍。你记住三件事:

  1. IFE:RAW数据入口,做基础校正
  2. BPS:Bayer域精加工,输出RGB
  3. IPE:YUV域总导演,做最终美化

数据流就是:传感器 → IFE → BPS → IPE → 输出。这个顺序不能乱,每个模块的输入输出格式也不能搞错。

嗯,这一章的内容就到这里。你把这些硬件模块的关系理清了,后面调参数的时候,心里就有底了。