4. RAW数据格式:从传感器到数字世界的第一次握手
各位同学,欢迎来到第四章。前面我们聊了摄像头的光学系统和传感器基础,今天终于要触及ISP流程中最原始、也最核心的数据形态——RAW数据。
说白了,RAW就是传感器“看到”的原始电信号,经过模数转换后得到的数字值。它还没经过任何美化处理,就像一张没修过的底片。我经常跟团队里的新人说:理解RAW,你就理解了ISP的一半。
4.1 RAW数据的位深与存储
先说说位深。位深决定了每个像素能记录多少灰度等级。
- 8-bit RAW:0~255,共256级。早期手机传感器常用,动态范围有限。
- 10-bit RAW:0~1023,共1024级。目前主流安防和车载传感器标准。
- 12-bit RAW:0~4095,共4096级。高端相机和旗舰手机标配。
- 14-bit / 16-bit RAW:专业领域使用,数据量巨大。
你可能会问:位深越高越好吗?理论上是的,但代价也很明显——存储和带宽压力成倍增加。10-bit RAW比8-bit数据量多25%,12-bit则多50%。
存储格式上,RAW数据通常以线性或压缩格式保存。常见的存储方式有:
- 纯RAW(.raw / .dng):无压缩,保留全部信息,文件巨大。
- MIPI RAW(打包格式):传感器通过MIPI接口传输时,10-bit数据常用“打包”方式,每5个字节存4个像素。
- 压缩RAW:如无损或近无损压缩,用于节省存储空间。
这里有个坑——字节对齐。10-bit数据在内存中如果不做对齐处理,读写效率会很低。我见过一个项目,工程师直接用16-bit存10-bit数据,白白浪费了37.5%的带宽。嗯,后来优化成打包格式,带宽问题就解决了。
4.2 Bayer模式:RGGB、GBRG、BGGR、GRBG
传感器上的每个像素只能感知光的强度,不能区分颜色。那彩色图像怎么来的?答案就是Bayer滤色阵列。
Bayer模式的核心思想:在像素上覆盖红、绿、蓝滤色片,按特定排列方式。人眼对绿色最敏感,所以绿色像素占一半,红蓝各占四分之一。
常见的四种Bayer模式:
| 模式名称 | 第一行 | 第二行 | 常见应用 |
|---|---|---|---|
| RGGB | R G R G ... | G B G B ... | Sony、OmniVision多数传感器 |
| GBRG | G B G B ... | R G R G ... | 部分三星传感器 |
| BGGR | B G B G ... | G R G R ... | 老旧CCD传感器 |
| GRBG | G R G R ... | B G B G ... | 部分安防传感器 |
为什么会有这么多模式?说白了就是传感器厂商的封装习惯不同。但无论哪种模式,本质都是2×2的重复单元。ISP的第一步就是根据Bayer模式,把RAW数据正确解析出来。
下面这张图展示了Bayer阵列的基本结构:
4.3 黑电平与暗电流
接下来聊一个容易被忽视但极其重要的概念——黑电平。
理想情况下,传感器完全遮光时,输出应该是0。但现实是,即使没有光,传感器也会产生微弱的电流,这就是暗电流。暗电流导致输出不为0,这个偏移量就是黑电平。
黑电平的典型值:
- 8-bit RAW:通常偏移16~64
- 10-bit RAW:通常偏移64~256
- 12-bit RAW:通常偏移256~1024
为什么要校正黑电平?我举个例子:假设一个10-bit传感器,黑电平是64。如果某个像素在暗场下读出值是70,那实际信号只有6个LSB。如果不减去64,后续的增益、白平衡都会放大这个偏移,导致暗部发灰、偏色。
校正后像素值 = RAW原始值 - 黑电平值注意:校正后可能出现负值,需要做截断或钳位处理。
暗电流受温度影响很大。温度每升高6~8°C,暗电流大约翻一倍。这就是为什么手机拍夜景时,暗部噪点会明显增多——传感器温度升高了。
黑电平校正的常见方法:
- 固定值减法:最简单,但温度适应性差。
- OB像素统计法:传感器边缘有遮光的像素,用它们的平均值作为黑电平。
- 行/列相关校正:考虑不同行或列的暗电流差异。
4.4 RAW数据的动态范围
动态范围,简单说就是传感器能同时记录的最亮和最暗细节的能力。单位是dB或档位(stops)。
计算公式:
动态范围(dB) = 20 × log10(满阱容量 / 读出噪声)
其中:
- 满阱容量:像素能容纳的最大电子数
- 读出噪声:读出电路引入的噪声(均方根值)
举个例子:一个传感器满阱容量为60000个电子,读出噪声为5个电子,那么:
动态范围 = 20 × log10(60000 / 5) = 20 × log10(12000) ≈ 81.6 dB
81.6 dB大约相当于13.6档。这意味着传感器能同时记录从最暗到最亮约13.6档光圈的细节。
影响动态范围的因素:
- 位深:12-bit比10-bit多4倍量化级数,但动态范围还受模拟端限制。
- 像素尺寸:大像素满阱容量大,动态范围更高。
- 读出噪声:噪声越低,暗部细节越丰富。
- 双增益/多增益技术:现代传感器通过高低增益两次读出,合成高动态范围。
最后,用一张图总结本章的知识体系: