1. 像素处理通路概述
什么是像素处理通路
像素处理通路,说白了就是图像传感器把「光信号」变成「数字图像」的那条完整链路。你想想看,手机拍照时从按下快门到屏幕上出现照片,中间经历了多少步?每一步都是像素处理通路的一部分。
我个人习惯把这条通路分成三段:前端采集、中间处理、后端输出。前端负责把传感器读出的原始数据做初步校正,中间做色彩重建和图像增强,后端则把处理好的数据打包成你需要的接口格式——比如 MIPI、LVDS 或者并行 RGB。
我在项目中遇到过不少新人,一上来就盯着某个模块写代码,结果连整个通路的数据流都没搞清楚。嗯,这其实是个大坑。你写 RTL 之前,脑子里必须有一张完整的通路图。
像素处理在图像传感器与显示系统中的作用
图像传感器输出的原始数据,其实很难看。为什么?因为 Bayer 模式的 RAW 图每个像素只记录一种颜色分量——要么 R、要么 G、要么 B。直接显示出来就是马赛克效果。像素处理通路要做的第一件事,就是去马赛克(Demosaic),把缺失的颜色插值出来。
除了去马赛克,还有一堆活要干:
- 黑电平校正:传感器暗电流带来的固定偏移,得先减掉
- 增益控制:调整整体亮度,AGC 那套东西
- 白平衡:让白色在不同光源下看起来都是白的
- Gamma 校正:人眼对亮度的感知是非线性的,得做映射
- 色彩空间转换:从 RAW 到 RGB 再到 YUV,不同场景用不同格式
我曾经调试过一个 ISP 项目,白平衡模块的增益系数算错了,结果拍出来的白色墙壁偏蓝。查了两天才发现是固定点小数位的截位策略有问题。这种坑,你写 RTL 时就得提前想好。
| 处理阶段 | 输入格式 | 输出格式 | 典型延迟 |
|---|---|---|---|
| 黑电平校正 | RAW 10/12bit | RAW 10/12bit | 1 行 |
| 去马赛克 | Bayer RAW | RGB 24bit | 3~5 行 |
| 白平衡 | RGB 24bit | RGB 24bit | 1 像素 |
| Gamma 校正 | RGB 24bit | RGB 24bit | 1 像素 |
| 色彩空间转换 | RGB 24bit | YUV 4:2:2 | 1 像素 |
课程整体架构与学习目标
这门课一共 30 章,我把它分成了四个大的阶段。你跟着走下来,应该能掌握从零搭建一条像素处理通路的能力。
第一阶段是基础,讲像素处理的基本概念和常用算法。第二阶段进入 RTL 设计,每个模块我都会带着你写一遍代码。第三阶段是验证,包括定向测试和随机验证。第四阶段是系统集成,把各个模块拼起来跑通。
具体来说,学完这门课你应该能做到:
- 理解像素处理通路的完整数据流——从传感器 RAW 到显示设备 YUV/RGB
- 独立设计核心模块的 RTL——包括去马赛克、白平衡、Gamma、CSC 等
- 编写验证环境和测试用例——用 SystemVerilog 搭建 UVM 验证平台
- 分析并解决通路中的时序和带宽问题——这是实际项目中最常遇到的
- 完成一个完整的 ISP 流水线设计——从算法到 RTL 再到验证
下面这张图是我自己画的像素处理通路整体框架。你每次写代码前,都可以回来看看这张图,确认自己当前模块在整个通路中的位置。
说实话,这门课的内容量不小。30 章走下来,你会接触到从算法定点化、RTL 编码、时序收敛到 UVM 验证的全流程。我建议你每章都动手写代码,光看是学不会的。