图像质量基础:分辨率与帧率、曝光与增益、白平衡原理、色彩空间与噪声分析

做摄像头调试这些年,我最大的感受是:图像质量是系统工程。它不是调一个参数就能搞定的事。你调好了亮度,噪声上来了;压了噪声,颜色又偏了。说白了,这是一场多方博弈。

今天这一章,我们把基础打牢。分辨率、帧率、曝光、增益、白平衡、色彩空间、噪声——这些概念你天天用,但真的吃透了吗?我带你过一遍,顺便聊聊实战中踩过的坑。

核心观点:图像质量优化的本质,是在信噪比、动态范围、色彩还原、时序约束之间寻找平衡点。没有“最好”的参数,只有“最适合场景”的配置。
图像质量基础 · 知识体系 图像质量 分辨率 & 帧率 曝光 & 增益 白平衡 色彩空间 像素数量 FPS 限制 曝光时间 模拟/数字增益 色温估计 G/R, G/B 增益 RAW / RGB / YUV 转换矩阵 散粒噪声 读出噪声 / 暗电流 💡 实战要点 • 分辨率越高,帧率越低——受限于 sensor 读出带宽和 ISP 处理能力。 • 增益越大,噪声越明显——优先调曝光时间,再考虑增益。 • 白平衡不准,色彩空间转换会放大色偏——先做 AWB,再做 CCM。

分辨率与帧率:一对天生的冤家

分辨率决定了图像的细节丰富度,帧率决定了运动的流畅度。但这两者之间,存在一个硬约束——带宽。

我举个例子。你用一个 500 万像素的 sensor,输出 2592x1944 的 RAW10 数据。单帧数据量是多少?2592 × 1944 × 10 bits ≈ 50.4 Mbits。如果 MIPI 接口是 4-lane、每 lane 1.5 Gbps,理论带宽约 6 Gbps。扣除开销,实际能跑的大概是 4.8 Gbps。算下来,满分辨率下帧率上限大约是 95 fps。但如果你要跑 120 fps,就得降分辨率,或者用 binning 模式。

我在一个行车记录仪项目里遇到过这种情况。客户要求 4K 30fps,但 sensor 的读出噪声在高温下飙升。我们最后不得不降到 1440p 30fps,换来了更好的信噪比。嗯,有时候你得学会取舍。

分辨率 像素数 典型帧率上限 (MIPI 4-lane) 适用场景
640×480 (VGA) 0.3 MP 120~240 fps 工业检测、高速抓拍
1920×1080 (FHD) 2.1 MP 60~120 fps 安防、消费电子
3840×2160 (4K) 8.3 MP 30~60 fps 高端安防、运动相机
7680×4320 (8K) 33.2 MP 15~30 fps 专业影视、医疗影像
我的习惯:调试时先确认 sensor 的 PCLK 和 MIPI 速率,算出理论帧率上限。然后留 20% 余量给 ISP 处理。别把带宽跑满,否则高温下容易丢帧。

曝光与增益:亮度的两个旋钮

曝光时间决定了 sensor 收集光子的时长。增益则是对收集到的电荷进行放大。这两个参数共同决定了图像的亮度,但它们的噪声特性完全不同。

曝光时间长了,运动物体会模糊。你想想看,拍一个跑步的人,1/30s 的快门肯定糊,1/500s 才能冻住。但曝光时间短了,画面就暗。

增益分两种:模拟增益和数字增益。模拟增益在像素读出前放大信号,会放大 sensor 本身的读出噪声。数字增益在 ADC 之后做乘法,会同时放大量化噪声。我个人的原则是:优先调曝光时间,模拟增益尽量不超过 16x(24dB),数字增益能不用就不用。

我曾经在一个低照度项目中吃过亏。为了省成本,用了小像素尺寸的 sensor,暗光下增益拉到 32x,结果满屏都是雪花。后来换了更大像素的 sensor,同样场景下增益只需要 8x,画面干净多了。

避坑指南:我曾经在调试自动曝光算法时,把曝光时间和增益的权重设反了。结果在室内灯光下,算法拼命拉增益而不是延长曝光时间,导致噪声爆炸。后来我加了一条规则:当曝光时间小于 1/60s 时,优先增加曝光时间;超过 1/30s 后,再考虑增益。

白平衡原理:让白色回归白色

白平衡的本质,是在不同色温的光源下,让白色物体看起来是白的。人眼会自动适应,但 sensor 不会。它老老实实地记录光谱能量分布,所以需要我们来校正。

白平衡的核心是估计光源色温,然后对 R、G、B 三个通道施加不同的增益。通常的做法是:

  1. 统计图像中灰色区域的 R/G 和 B/G 比值
  2. 根据预设的色温曲线,查表得到当前色温
  3. 计算 R 和 B 通道的增益,使 R/G 和 B/G 趋近于 1.0

这里有个坑:如果场景里全是单一颜色(比如一片绿草地),白平衡算法会误判。它以为整个画面偏绿,于是拼命拉 R 和 B 增益,结果草地变成了灰色。我遇到过这种情况,后来在算法里加了色温置信度判断,如果场景颜色饱和度太高,就降低白平衡的响应速度。

光源类型 色温 (K) R/G 比值 (典型) B/G 比值 (典型)
烛光 1800 1.8~2.2 0.4~0.6
白炽灯 2800 1.4~1.6 0.6~0.8
日光 (D65) 6500 1.0~1.1 0.9~1.1
阴天 7500 0.8~0.9 1.2~1.4

色彩空间:RAW、RGB、YUV 的三角关系

sensor 直接输出的是 RAW 数据。每个像素只记录一种颜色——R、G 或 B,按照 Bayer 模式排列。这就像一张黑白照片,但每个像素知道自己是红、绿还是蓝。

ISP 做的第一件事就是去马赛克(demosaic),把 RAW 插值成完整的 RGB 图像。然后做白平衡、颜色校正矩阵(CCM)、伽马校正,最后转成 YUV 用于编码或显示。

我经常看到新手搞混 RGB 和 YUV 的用途。RGB 适合做颜色处理,因为三个通道独立。YUV 适合做压缩和显示,因为 Y(亮度)和 UV(色度)分离,可以降低色度采样率而不影响亮度细节。说白了,YUV 是给视频编码准备的,RGB 是给图像处理准备的。

关键点:RAW 数据是线性的,RGB 是经过伽马校正的非线性空间,YUV 是面向人眼感知的空间。调试时一定要搞清楚当前数据在哪个空间,否则参数会互相打架。

图像噪声来源分析:敌人是谁?

噪声是图像质量的死敌。但噪声不是一种,而是多种。你得知道敌人是谁,才能对症下药。

  • 散粒噪声(Shot Noise):光子到达 sensor 的随机性造成的。光照越弱,散粒噪声越明显。这是物理极限,无法消除,只能通过增加曝光时间或增大像素尺寸来改善。
  • 读出噪声(Read Noise):sensor 读出电路产生的。包括像素复位噪声、源跟随器噪声、ADC 量化噪声。好的 sensor 读出噪声可以做到 1~2 e-,差的可能到 10 e- 以上。
  • 暗电流噪声(Dark Current Noise):sensor 在无光照下产生的热电子。温度每升高 6~8°C,暗电流翻倍。这就是为什么手机在夏天拍夜景全是噪点的原因。
  • 固定模式噪声(FPN):sensor 像素之间的不一致性造成的。表现为竖条纹或网格状。可以通过暗场校正来消除。

我记得有一次调试一个工业相机,客户投诉说图像有横条纹。我查了半天,发现是 sensor 的电源纹波耦合到了读出电路。后来在电源线上加了一个 LC 滤波器,问题就解决了。有时候噪声问题不在 ISP 里,而在硬件设计上。

我的调试顺序:先盖住镜头拍暗场,看有没有 FPN 或暗电流异常。再拍均匀光照的灰卡,分析散粒噪声和读出噪声。最后拍实际场景,看 ISP 的降噪算法是否有效。这样一步步排查,不会漏掉问题。