3、亮度统计信息:直方图统计、分区统计、网格/区域权重、Y通道统计、R/G/B通道统计、亮度均值与标准差

亮度统计,说白了就是AE的眼睛。没有它,自动曝光就是瞎调。

我刚开始做ISP的时候,总觉得曝光嘛,测一下平均亮度不就完了?后来被现实狠狠教育了一回——拍逆光人像,人脸全黑,背景却过曝。从那以后我才明白,统计信息怎么算、怎么加权,直接决定了AE的智商。

3.1 直方图统计

直方图是最直观的亮度分布工具。它把0~255的亮度值分成256个bin,每个bin统计有多少像素落进去。

我个人习惯先看直方图的三个关键区域:

  • 暗部(0~85):如果这里堆得太多,画面大概率欠曝
  • 中间调(86~170):主体信息通常在这里
  • 亮部(171~255):这里如果出现尖峰,小心过曝

举个例子,你拍一张室内人像,直方图左边隆起、右边空荡荡,那基本可以判断——补光不够。

核心用途:直方图能帮你快速判断曝光倾向,但它不告诉你「哪里亮、哪里暗」。说白了,它只告诉你「有多少」,不告诉你「在哪里」。

3.2 分区统计(网格/区域权重)

直方图不够用怎么办?分区统计上场。

把画面切成M×N个网格,每个格子独立算亮度。然后给不同区域分配权重——人脸区域权重高,天空区域权重低。

我记得有一次做车载摄像头AE,场景里经常有大面积天空。如果平均加权,地面细节全丢。后来我把画面分成5×5网格,给中间三行加权重,效果立竿见影。

常见的分区方式:

  • 3×3网格:简单,适合入门
  • 5×5网格:精度适中,我常用
  • 15×15网格:配合人脸检测,做精细曝光

我的经验:权重分配别太极端。我曾经把中心区域权重设到80%,结果画面边缘全黑,用户投诉「四周看不清」。后来改成中心60%、边缘20%、过渡区20%,平衡多了。

3.3 Y通道统计

Y通道就是亮度通道。在YCbCr色彩空间里,Y分量直接代表亮度,跟颜色无关。

为什么单独提Y通道?因为RGB三个通道对亮度的贡献不一样。人眼对绿色最敏感,对蓝色最不敏感。直接用RGB平均算亮度,误差很大。

标准公式:

Y = 0.299 * R + 0.587 * G + 0.114 * B

嗯,这个系数不是拍脑袋定的,它来自人眼视觉模型。我在项目中见过有人直接用(R+G+B)/3算亮度,结果画面偏紫时曝光乱跳——这就是没走Y通道的坑。

3.4 R/G/B通道统计

有时候只看Y通道还不够。比如拍夕阳,红色通道特别亮,绿色通道偏暗。如果只看Y通道,你可能会觉得「嗯,亮度还行」,但实际画面已经偏色严重。

R/G/B通道统计能帮你做两件事:

  • 检测色偏:某个通道明显偏高,说明光源偏色
  • 辅助AWB:自动白平衡需要知道各通道的统计分布

我建议在AE算法里同时保留Y通道和RGB通道的统计结果。Y通道做主控,RGB通道做辅助判断。比如某个通道饱和度过高,AE可以适当降低增益,防止单通道溢出。

注意:RGB通道统计要小心「通道饱和」。一旦某个通道达到255,再往上加增益也没用,反而会让其他通道失真。我曾经在强光场景下吃过这个亏——红色通道全饱和,画面变成一片惨白。

3.5 亮度均值与标准差

均值和标准差,这两个指标搭配使用,效果1+1>2。

  • 均值:告诉你画面整体亮不亮。目标值通常设在100~120(8bit数据)
  • 标准差:告诉你画面反差大不大。标准差小,画面灰蒙蒙;标准差大,对比度强

举个例子:

场景 均值 标准差 判断
阴天户外 90 25 偏暗,反差适中
逆光人像 110 60 均值还行,但反差太大,人脸可能欠曝
雾天 120 15 亮度够,但画面发灰

我个人习惯把标准差作为「场景复杂度」的参考。标准差低的时候,AE可以激进一点;标准差高的时候,AE要保守,防止亮部过曝或暗部欠曝。

3.6 知识体系总览

下面这张图,是我梳理的亮度统计信息核心逻辑。你看一遍,基本就清楚每个模块怎么配合了。

亮度统计信息知识体系 原始图像数据 直方图统计 全局亮度分布 分区统计 网格+区域权重 通道统计 Y/R/G/B 256个bin统计 暗部/中间调/亮部 3×3 / 5×5 / 15×15 权重分配策略 Y = 0.299R+0.587G+0.114B 单通道饱和度检测 均值 + 标准差

3.7 实战建议

说了这么多,总结几条我在项目中沉淀下来的经验:

  1. 直方图做粗调,分区统计做精调。先看直方图判断整体曝光趋势,再用分区统计锁定重点区域。
  2. Y通道是主力,RGB通道是辅助。别把RGB通道的统计结果直接喂给AE,容易受色温干扰。
  3. 标准差别忽略。很多AE算法只盯着均值调,结果高反差场景翻车。我建议把标准差作为AE收敛速度的调节因子——标准差大时步长减小,防止过调。
  4. 权重分配要留余量。别把某个区域的权重设到100%,给边缘区域留10%~20%的权重,能避免很多极端场景。

一个小技巧:调试阶段,把直方图和分区统计结果可视化出来。我习惯在调试工具里同时显示直方图曲线和网格热力图,一眼就能看出曝光问题出在哪。

亮度统计是AE的基石。这块做扎实了,后面的曝光策略才能有的放矢。你想想看,如果连画面哪里亮哪里暗都搞不清楚,怎么调曝光?