图像传感器基础:CMOS传感器工作原理、Bayer阵列与色彩滤波、RAW数据格式解析
各位同学,今天我们来聊聊相机系统的“眼睛”——图像传感器。做AI ISP这些年,我接触过各种各样的传感器,从手机里的小底到工业相机的大靶面。说实话,搞懂传感器的工作原理,是后面所有图像处理算法的基础。你连RAW数据怎么来的都不清楚,谈何去优化它?
CMOS传感器工作原理
CMOS传感器,全称是互补金属氧化物半导体图像传感器。现在市面上99%的相机都在用CMOS,CCD基本退出了消费市场。为什么?因为CMOS功耗低、速度快、集成度高。
它的核心工作原理,我总结为三步:
- 光电转换:每个像素点上的光电二极管吸收光子,产生电子。光子越多,电子越多。
- 电荷积累:电子在像素内积累,形成电压信号。这个电压大小,就代表了光的强弱。
- 读出放大:通过行列寻址,把每个像素的电压信号读出,经过模数转换器(ADC)变成数字值。
嗯,这里要注意一个关键点:CMOS是每个像素自带放大器的。这意味着每个像素的读出可以并行进行,速度非常快。但代价是什么?像素之间的一致性会差一些,也就是所谓的“固定模式噪声”。
Bayer阵列与色彩滤波
CMOS传感器本身只能感知光的强度,它分不清颜色。那彩色图像是怎么来的?靠的是色彩滤波阵列(CFA)。最经典的,就是Bayer阵列。
Bayer阵列的排布方式是这样的:
| R | G | R | G |
|---|---|---|---|
| G | B | G | B |
| R | G | R | G |
| G | B | G | B |
你看,绿色像素占了总数的一半,红色和蓝色各占四分之一。为什么绿色这么多?因为人眼对绿色最敏感。说白了,这是仿生学的设计。
每个像素只能记录一种颜色。那缺失的另外两种颜色怎么办?靠插值算法去猜。这个猜的过程,就是后面章节要讲的“去马赛克”(Demosaic)。
RAW数据格式解析
传感器直接输出的原始数据,就是RAW格式。它没有经过任何处理——没有白平衡、没有伽马校正、没有去马赛克。说白了,就是最纯粹的“数字底片”。
RAW数据的特点:
- 位深:常见的有10bit、12bit、14bit。位深越高,动态范围越大。
- 线性:RAW数据是线性的,像素值和光强成正比。而人眼对光的感知是非线性的。
- Bayer模式:RAW数据里每个像素只记录一种颜色,排列方式就是Bayer阵列。
举个例子,一个1200万像素的传感器,输出12bit的RAW数据。那么一帧的数据量是多少?
1200万像素 × 12bit = 14400万bit
14400万bit ÷ 8 = 1800万字节 ≈ 17.2MB
嗯,一帧就17MB。如果每秒30帧,那就是510MB/s的数据量。这个带宽要求,对ISP的传输接口是个不小的考验。
知识结构图:CMOS传感器到RAW数据
下面这张图,我把从光子打到传感器,到输出RAW数据的整个流程画了出来。你可以对照着看,加深理解。
不同RAW格式对比
实际项目中,不同厂商的RAW格式略有差异。我整理了一个表格,方便你对比:
| 格式 | 位深 | Bayer模式 | 常见应用 |
|---|---|---|---|
| Bayer RAW | 10/12/14bit | RGGB | 手机、相机 |
| Quad Bayer | 10/12bit | 2x2合并 | 高像素手机 |
| RGB-IR | 10/12bit | RGB+红外 | 安防监控 |
| RCCB | 10/12bit | 红+青+蓝 | 低光照场景 |
你看,不同的应用场景,Bayer阵列的排布方式也不同。比如安防监控需要红外夜视,所以用了RGB-IR。而低光照场景下,RCCB能收集更多光线,但色彩还原难度更大。
总结一下
这一章我们讲了三个核心概念:
- CMOS工作原理:光电转换→电荷积累→读出放大。每个像素自带放大器,速度快但噪声略大。
- Bayer阵列:绿色占一半,红蓝各四分之一。人眼对绿色最敏感,这是仿生设计。
- RAW数据:最原始的“数字底片”,线性、未处理。位深越高,动态范围越大。
嗯,这些内容看起来基础,但非常重要。我记得刚入行时,有个老工程师跟我说:“你连RAW数据都读不对,就别谈什么AI ISP了。”这句话我一直记到现在。希望你们也能把基础打牢,后面几章我们会一步步深入,从RAW数据开始,构建完整的AI ISP处理链路。