第一章 高通ISP架构概览:从传感器到显示器的图像数据流
各位好,我是老高。在高通平台做相机系统优化,前前后后也有七八年了。今天咱们聊聊ISP的整个数据流——说白了,就是一张照片从镜头进来,到屏幕上显示出来,中间到底经历了什么。
很多人刚接触高通平台时,总觉得ISP是个黑盒子。传感器给个RAW数据,出来就是漂亮的照片了。其实不然。这里面的门道,我当年也是踩了不少坑才摸清楚的。
1.1 整体数据流:从光子到像素
先看一张整体流程图,把脉络理清楚。
这张图我建议你多看两眼。它把整个ISP流水线分成了三段:前端、主处理、后端。每一段处理的数据格式都不一样。我刚开始做高通平台时,总以为ISP就是一个大模块,后来才发现,每一段都有自己的硬件加速器,配置方式也完全不同。
1.2 ISP Pipeline核心模块解析
1.2.1 Bayer域:最原始的图像数据
传感器出来的数据,就是Bayer RAW。每个像素只记录一种颜色——R、G、B中的一种。为什么是绿色多一倍?因为人眼对绿色最敏感。这个设计,说白了就是模仿人眼的视觉特性。
Bayer域要处理的事情不少:
- 黑电平校正(BLC):去掉传感器暗电流带来的偏置。我记得有次项目,客户说暗部偏紫,查了半天,就是BLC没校准好。
- 镜头阴影校正(LSC):镜头边缘进光量少,亮度会暗下来。高通平台有专门的LSC硬件,查表校正。
- 坏点校正(DPC):传感器总有那么几个坏点,得用周围像素插值补上。
- 增益控制:模拟增益和数字增益,直接影响ISO。
1.2.2 Demosaic:从马赛克到全彩
Bayer数据只有1/3的颜色信息,Demosaic就是要把缺失的颜色猜出来。怎么猜?插值。
最简单的做法是双线性插值——周围四个像素平均一下。但这样边缘会有锯齿。高通平台用的是自适应插值,会根据边缘方向选择插值权重。
这里有个关键点:Demosaic的质量直接决定了后续所有处理的上限。如果这一步搞砸了,后面再怎么调色彩、降噪,都救不回来。
1.2.3 RGB域:色彩的世界
Demosaic之后,每个像素都有了R、G、B三个值。这时候就可以做真正的色彩处理了:
- 白平衡(AWB):让白色物体在任何光源下都看起来是白的。说白了就是调整R、G、B的增益比例。
- 颜色校正矩阵(CCM):把传感器色彩空间映射到标准色彩空间。不同传感器,CCM完全不同。
- Gamma校正:人眼对暗部更敏感,Gamma就是做这个非线性映射。
你想想看,RGB域处理完,图像已经很好看了。但为什么还要转到YUV?
1.2.4 YUV域:压缩与显示的基础
YUV把亮度和色度分开。Y是亮度,U和V是色度。人眼对亮度敏感,对色度不敏感。所以YUV域可以放心地对色度做降采样,节省带宽。
高通平台在YUV域主要做这些事:
| 模块 | 功能 | 我踩过的坑 |
|---|---|---|
| 降噪(NR) | 分亮度和色度降噪,参数独立 | 色度降噪太强,颜色会发灰 |
| 锐化(Sharpness) | 增强边缘对比度 | 锐化过头,人脸毛孔都出来了 |
| 缩放(Scaler) | 输出不同分辨率的图像 | 预览和拍照用不同scaler,参数要分别调 |
| 色彩增强 | 饱和度、对比度、色调调整 | 客户总喜欢饱和度拉满,但会丢失细节 |
1.3 Qualcomm ISP硬件加速器介绍
高通ISP之所以强,很大程度上靠的是硬件加速器。软件做一遍同样的算法,功耗和延迟都扛不住。
我列一下高通平台常见的硬件加速器:
- IFE(Image Front-End):处理Bayer域,包括BLC、LSC、DPC等。速度极快,一条流水线搞定。
- IPE(Image Processing Engine):处理RGB和YUV域,包括Demosaic、CCM、Gamma、NR、Sharpen等。这是ISP的核心。
- BPS(Bayer Processing Segment):有些平台把Bayer处理单独拿出来,和IFE配合使用。
- VFE(Video Front-End):视频专用的前端处理,和IFE类似但针对视频流优化。
我记得有一次,客户想在IFE阶段加一个自定义的降噪算法。我跟他说,IFE只处理Bayer域,你加不了RGB算法。后来我们在IPE阶段用高通自带的NR硬件,调了调参数,效果一样好。这就是硬件加速器的好处——你不需要自己写算法,调参就行。
1.4 从传感器到显示器的完整旅程
最后,咱们串一下整个流程:
- 传感器曝光:光子打到像素上,转换成电荷,读出电压值。
- RAW数据输出:通常是10-bit或12-bit的Bayer格式,通过MIPI CSI接口传给ISP。
- IFE处理:Bayer域校正,输出干净的Bayer数据。
- IPE处理:Demosaic → RGB处理 → YUV转换 → 后处理。
- 显示输出:YUV数据送到显示控制器,最终显示在屏幕上。
整个过程,从传感器曝光到屏幕显示,延迟通常在30ms以内。你按下快门,照片就出来了。这背后,是ISP硬件加速器和3A算法在毫秒级别内完成了数十亿次运算。
嗯,第一章就到这里。内容不多,但都是基础。后面的章节,我们会深入每个模块的细节,包括怎么调参、怎么debug、怎么优化性能。到时候,我会把我在项目中遇到的实际案例拿出来,跟大家一起分析。