4、AE算法核心:直方图统计与权重,测光模式

曝光算法说白了就是回答一个问题:当前场景到底该亮多少? 答案不在传感器上,而在直方图里。我做了这么多年ISP,见过太多团队把AE调成“死黑一片”或者“过曝成片”,根源都是没吃透直方图和测光模式的关系。

今天咱们就把这块硬骨头啃下来。

4.1 直方图统计:曝光的“体检报告”

直方图是什么?它统计了图像里每个亮度等级上有多少像素。横轴是亮度(0~255,8bit),纵轴是像素数量。你想想看,一张图如果大部分像素挤在左边,那就是欠曝;挤在右边,就是过曝;中间鼓起来,说明细节丰富。

核心公式: 目标亮度 = Σ(亮度值 × 权重) / Σ(权重)

但这里有个坑——直接拿原始直方图做平均,结果往往不对。为什么?因为场景里可能有大面积天空、白色墙壁或者黑色背景,这些区域会严重拉偏统计结果。

我举个例子。有一次调试户外监控摄像头,画面里一半是天空,一半是地面行人。直接用全图平均,AE把曝光压得很低,地面人脸全黑了。后来怎么解决的?给天空区域降权,给地面区域加权。这就是权重的作用。

4.1.1 权重分配策略

权重不是拍脑袋定的,一般分三层:

  • 亮度权重:中间调(64~192)给高权重,暗部和亮部给低权重。因为中间调承载了大部分细节。
  • 空间权重:图像中心区域权重高,边缘权重低。这是模仿人眼注意力。
  • 内容权重:人脸区域、运动区域、高对比度区域,权重可以动态提升。

实际工程里,我习惯把这三层权重做成一张权重图,跟直方图逐像素相乘,再做统计。这样算出来的目标亮度才靠谱。

我的经验: 权重图不要用浮点数,用8bit整数查表实现。速度能快3~5倍,精度损失几乎看不出来。

4.2 测光模式:四种武器

测光模式决定了“用哪些像素、怎么加权”来计算曝光。不同场景选不同模式,这是AE调优的基本功。

测光模式 核心思想 适用场景 我踩过的坑
全局测光 全图像素等权平均 光照均匀的场景 逆光时主体全黑
中央重点测光 中心区域权重高(约70%~80%) 人像、主体居中的场景 主体偏离中心时失效
点测光 只取画面中心1%~5%区域 舞台、逆光、高反差场景 对焦点选错直接翻车
矩阵测光 画面分区,每区独立统计+智能加权 复杂场景、自动模式 算法复杂度高,调参周期长

4.2.1 全局测光:简单但粗暴

全局测光就是把全图所有像素的亮度加起来除以像素总数。实现简单,但问题也明显——它假设所有区域对曝光贡献一样。这在光照均匀的室内还行,一到逆光、夜景、高反差场景,结果就惨不忍睹。

我曾经在一个逆光人像项目里,用全局测光怎么调都调不好。人脸黑成剪影,背景却正常。后来换成中央重点测光,问题立刻解决。所以全局测光只适合“安全场景”,别指望它处理复杂情况。

4.2.2 中央重点测光:人像利器

中央重点测光给图像中心区域分配高权重,边缘权重低。权重分布通常是一个高斯核或者圆形渐变。中心半径占画面20%~30%时,效果最自然。

嗯,这里要注意:中央重点测光不是点测光。它仍然考虑了背景,只是中心权重更大。所以当主体偏离中心时,曝光会偏向背景,导致主体曝光不准。这时候就得靠人脸检测来动态调整权重中心了。

4.2.3 点测光:精准但危险

点测光只取画面中心一个很小的区域(通常1%~5%),完全忽略其他区域。精度极高,但风险也极高——对焦点选错,整个画面就废了。

我记得有一次调试舞台追光场景,演员站在聚光灯下,背景全黑。用点测光对准演员脸部,曝光完美。但一旦演员移动,对焦点滑到背景上,画面立刻过曝。所以点测光必须配合自动对焦联动或者触摸选择测光点,否则就是定时炸弹。

避坑指南: 我曾经在手机项目里,用户用点测光拍月亮,结果对焦点选在月亮旁边的夜空上,整个画面过曝成白板。后来我们加了一个“测光点锁定”功能,长按屏幕锁定测光区域,才解决这个问题。

4.2.4 矩阵测光:智能但复杂

矩阵测光是目前手机和相机的主流方案。它将画面分成M×N个区域(常见16×16、32×32),每个区域独立统计直方图,然后根据区域内容(亮度、对比度、色彩、人脸等)动态分配权重。

说白了,矩阵测光就是一个小型AI决策系统。它需要大量的场景库和调参经验才能做好。我见过有些团队把矩阵测光调成“玄学”,参数改一个数字,效果天差地别。

我个人习惯的做法是:先固定权重模板,用几百张典型场景图跑一遍,看哪些场景曝光不准,再针对性地调整分区权重。不要一上来就搞动态权重,那会陷入调参地狱。

4.3 直方图与测光模式的联动

直方图是“数据”,测光模式是“策略”。两者必须联动,才能做出好的AE。

举个例子。你用中央重点测光拍人像,直方图统计时,中心区域的像素权重是80%,边缘是20%。算出来的目标亮度,会优先保证中心区域曝光正常。然后AE根据这个目标亮度,调整曝光时间、增益、光圈。

但这里有个细节:直方图统计的权重,和测光模式的权重,是同一张权重图吗? 答案是:可以共用,也可以独立。我建议独立。测光模式权重决定“哪些区域重要”,直方图权重决定“哪些亮度重要”。两者相乘,得到最终的统计权重。

最终权重公式: W_total(x,y) = W_测光(x,y) × W_亮度(I(x,y))

这样设计的好处是:测光模式负责空间选择,直方图权重负责亮度选择,互不干扰,调参也清晰。

4.4 知识结构图

下面这张图总结了直方图统计、权重分配和四种测光模式的关系。你可以把它当作AE算法的“地图”。

AE算法核心:直方图统计与测光模式 原始图像数据 直方图统计(亮度分布) 权重分配(亮度权重 + 空间权重) 全局测光 中央重点测光 点测光 矩阵测光 目标亮度计算 → AE控制(曝光时间/增益/光圈) 核心逻辑:直方图提供数据,权重决定关注区域,测光模式选择策略,三者联动输出目标亮度 实际工程中,权重图建议独立于测光模式,便于独立调参

4.5 实战建议

最后给几条实在的建议:

  • 先定测光模式,再调权重。模式选错了,权重调得再好也没用。
  • 权重图用查表法实现。别在AE循环里做浮点运算,性能扛不住。
  • 矩阵测光不要一上来就搞动态权重。先固定权重跑通流程,再逐步加入场景识别。
  • 点测光必须配合测光点锁定。否则用户手一抖,曝光就崩了。

直方图和测光模式是AE的基石。这块搞明白了,后面联动AWB、调优策略才能顺起来。