2. Camera 整体系统架构:从镜头到显示器的完整数据流
大家好,我是你们这门课的老朋友。
上一章我们聊了手机影像的江湖地位。这一章,咱们得把镜头盖拧开,看看里面到底是怎么跑的。
说白了,一张照片从按下快门到你在屏幕上看到,中间经历了一场“接力赛”。参与接力的选手有:镜头、Sensor、ISP、CPU、GPU、NPU,还有显示面板。它们各司其职,缺一不可。
我个人习惯把整个流程拆成三段:物理采集 → 数字处理 → 显示与增强。这样讲,思路会清晰很多。
2.1 完整数据流:一场光子的奇幻漂流
我们先走一遍主流程。你按下快门那一刻,故事就开始了。
- 镜头(Lens):外界的光线,经过镜头组的折射、滤光,汇聚到 Sensor 表面。这里会损失一部分光,也会矫正一些像差。
- 图像传感器(Sensor):光子打到像素点上,通过光电效应转换成电子信号。这时候还是模拟信号,也就是 RAW 数据。我记得早年做项目时,Sensor 输出的 RAW 直接拿给 CPU 去处理,结果帧率惨不忍睹。
- ISP(图像信号处理器):RAW 数据进入 ISP。这是整个 pipeline 的核心。ISP 会做黑电平校正、去噪、去马赛克、白平衡、色彩校正、Gamma 校正等等。输出的是 YUV 或 RGB 格式的图像。
- CPU(中央处理器):ISP 处理完后,CPU 开始介入。它负责控制整个流程的调度,比如启动相机、管理内存、处理用户交互。有时候也会做一些轻量级的图像后处理,比如缩略图生成。
- GPU(图形处理器):如果你开了美颜、滤镜、或者需要做图像旋转、缩放,GPU 就派上用场了。它擅长并行计算,处理这些图形学算法比 CPU 快得多。
- NPU(神经网络处理器):这是近几年才加入的“新兵”。它专门跑 AI 算法,比如场景识别、人像分割、超级夜景的降噪。NPU 的加入,让手机拍照有了“智慧”。
- 显示面板(Display):最终处理好的图像数据,通过 MIPI DSI 接口送到屏幕。你看到的,就是一张成片。
核心观点: 整个数据流是“流水线”作业。Sensor 在采集第 N 帧时,ISP 在处理第 N-1 帧,CPU/GPU/NPU 在处理第 N-2 帧。这种并行机制,才能保证你按下快门后,几乎感觉不到延迟。
嗯,这里要注意一点。很多人以为 ISP 处理完就结束了。其实不然。现代手机里,CPU、GPU、NPU 经常会对 ISP 的输出做“二次加工”。比如,NPU 做完人像分割后,会把 mask 送回 ISP,让 ISP 重新做一次局部调优。这叫“协同处理”。
2.2 Sensor、ISP、CPU、GPU、NPU 的协同分工
光知道流程还不够。你得明白,这帮“兄弟”是怎么分工的。我见过不少工程师,把 CPU 当 GPU 用,把 GPU 当 NPU 用,结果功耗和性能都崩了。
我们直接看一张对比表,一目了然。
| 组件 | 核心职责 | 擅长领域 | 不擅长领域 |
|---|---|---|---|
| Sensor | 光电转换,输出 RAW | 高灵敏度、高帧率、低噪声 | 无法处理逻辑,只能输出原始数据 |
| ISP | RAW 到 YUV/RGB 的硬件流水线 | 固定算法(去噪、去马赛克、AWB、AE) | 复杂逻辑判断、AI 推理 |
| CPU | 系统调度、控制流、轻量计算 | 逻辑控制、内存管理、启动相机 | 大规模并行计算、AI 推理 |
| GPU | 图形渲染、并行图像处理 | 滤镜、旋转、缩放、美颜(传统算法) | 高精度 AI 推理(功耗高) |
| NPU | AI 推理加速 | 场景识别、人像分割、超级夜景降噪 | 通用计算、图形渲染 |
你看,每个组件都有自己的“一亩三分地”。
- Sensor 是“原材料供应商”。它只管把光变成电,质量好不好,看它的底子和工艺。
- ISP 是“粗加工车间”。它用硬件流水线,快速把 RAW 变成能看的图像。我当年调试 ISP 时,最头疼的就是 tuning。每个 Sensor 的响应曲线都不一样,得一点点调参数。
- CPU 是“项目经理”。它不直接干活,但所有活都得它来安排。比如,它告诉 ISP:“你处理完这帧,通知我。”然后它再告诉 GPU:“你开始渲染吧。”
- GPU 是“装修队”。它负责把图像“打扮”得更好看。比如加个滤镜、磨个皮。但 GPU 的功耗比较高,所以现在很多轻量级任务都交给 NPU 了。
- NPU 是“智能大脑”。它专门跑 AI 模型。比如,它能识别出画面里有人脸,然后告诉 ISP:“把这个人脸的肤色调亮一点,背景虚化一点。”
避坑指南: 我曾经在一个项目里,试图用 CPU 去跑一个 1080P 的实时美颜算法。结果呢?CPU 占用率直接飙到 90%,手机烫得能煎鸡蛋。后来我把这个算法移植到 NPU 上,占用率降到了 20%,功耗也下来了。所以,选对处理器,比什么都重要。
2.3 协同架构的核心:数据流与控制流
你想想看,这么多组件协同工作,靠的是什么?两个东西:数据流和控制流。
- 数据流:就是图像数据本身。从 Sensor 到 ISP,再到内存,再到 GPU/NPU,最后到 Display。数据流是“单向”的,但可以有分支。比如,ISP 输出的数据,一份送给 GPU 做预览,一份送给 NPU 做分析。
- 控制流:就是命令和同步信号。CPU 通过 I2C/SPI 控制 Sensor 的曝光时间、增益。ISP 通过中断通知 CPU “一帧处理完了”。GPU 和 NPU 通过 fence 机制同步数据。
我画了一张图,帮你理解这个协同架构。
从这张图你能看到,内存(DDR)是整个系统的“数据枢纽”。所有组件都通过 DDR 交换数据。所以,DDR 的带宽和延迟,直接决定了整个系统的性能。我见过一些低端手机,拍照卡顿,就是因为 DDR 带宽不够,数据堵在路上了。
2.4 实际项目中的协同策略
讲完理论,咱们聊聊实战。我在做高通平台项目时,遇到过一个问题:夜景模式拍照,处理时间太长,用户体验很差。
怎么解决的?我们用了“NPU 辅助 ISP”的策略。
- 传统方案:ISP 做多帧合成 + 降噪,CPU 做后处理。耗时 2 秒。
- 优化方案:ISP 做基础降噪,NPU 做 AI 降噪 + 超分。耗时 0.8 秒。
你看,NPU 把 ISP 的一部分活接过去了。ISP 只做它擅长的硬件流水线,NPU 做它擅长的 AI 推理。这就是协同。
注意: 协同不是万能的。如果算法本身不适合硬件加速,硬往 NPU 上塞,反而会适得其反。比如,一些简单的像素操作(如亮度调整),用 GPU 的 shader 处理,比 NPU 快得多。所以,了解每个处理器的特性,是架构师的基本功。
另外,还有一个容易被忽略的点:功耗。CPU、GPU、NPU 都是耗电大户。如果同时全速运行,手机电池撑不了多久。所以,系统需要做动态调频。比如,预览场景下,只开 ISP 和 GPU 的低功耗模式;拍照场景下,再唤醒 NPU。
嗯,这一章的内容就到这里。你只要记住一句话:Camera 系统是一个多处理器协同的实时系统。每个处理器都有自己的角色,数据流和控制流把它们串在一起。理解了这一点,后面讲 ISP 的细节,你就能站在更高的维度去看问题了。