自动曝光(AE)基础:曝光三要素与目标亮度

各位同学,今天我们正式进入3A算法的第一站——自动曝光(AE)。

说实话,我在高通Spectra平台做了这么多年,发现很多工程师对AE的理解停留在“调调亮度”这个层面。但真正要把AE做好,你得先吃透曝光的基本原理。今天这一讲,我们就从最基础的曝光三要素开始,一步步把AE的底子打牢。

曝光三要素:光圈、快门、ISO

曝光说白了,就是让传感器接收到合适的光量。控制这个光量的,就是三个核心参数:光圈(Aperture)、快门速度(Shutter Speed)、ISO感光度。我习惯把它们称为“曝光三角”。

参数 物理含义 对曝光的影响 典型范围(手机)
光圈 镜头通光孔径大小 F值越小,进光量越大 F1.4 ~ F2.8
快门速度 传感器感光时间 时间越长,进光量越大 1/8000s ~ 30s
ISO 信号放大增益 ISO越高,信号越亮但噪声越大 50 ~ 6400

这里有个关键点:光圈和快门控制的是物理进光量,ISO控制的是电子放大倍数。我在项目中遇到过不少新手,为了提亮画面直接拉ISO,结果噪点满天飞。其实优先调快门和光圈才是正道。

我的经验:在Spectra平台上,AE策略的优先级通常是:先调快门,再调光圈(如果有),最后才动ISO。这样能最大程度保证画质。

18%灰卡与目标亮度

好,现在问题来了:相机怎么知道“曝光正确”是什么样子?

这就引出了摄影史上一个经典概念——18%灰卡。你想想看,自然界中物体的反射率千差万别,但平均下来,大约18%的光线会被反射。所以相机默认把画面中所有物体的平均亮度,映射到18%灰这个标准上。

在AE算法里,我们把这个18%灰对应的亮度值叫做目标亮度(Target Luminance)。算法会不断调整曝光参数,让当前画面的平均亮度尽量靠近这个目标值。

核心公式:

当前亮度 = f(光圈, 快门, ISO, 场景反射率)
目标亮度 = 18%灰对应的数字值(通常为Y通道的100~120/255)
AE目标:|当前亮度 - 目标亮度| → 0

不过我要提醒你,18%灰只是一个基准。实际场景中,雪景、夜景、逆光这些特殊场景,如果死磕18%灰,拍出来反而会偏暗或偏亮。所以高通Spectra的AE引擎里,还有一套场景检测逻辑,会动态调整目标亮度。

避坑指南:我曾经在调试一个户外监控项目时,发现画面总是偏暗。查了半天,原来是AE把蓝天当成了主场景,目标亮度压得太低。后来加了场景分类器,把天空区域权重降低,问题才解决。

直方图与曝光评价

直方图是AE算法里最直观的曝光评价工具。它统计了图像中每个亮度级别的像素数量。

我一般把直方图分成三个区域:

  • 暗部(0~85):左侧,像素堆积说明画面欠曝
  • 中间调(86~170):中间,主体信息集中区
  • 亮部(171~255):右侧,像素堆积说明画面过曝

在Spectra的AE算法里,直方图不只是看看而已。我们会计算几个关键指标:

  1. 平均亮度:全图亮度均值,用于粗调
  2. 亮度标准差:判断场景对比度
  3. 过曝/欠曝像素占比:超过阈值则触发保护机制
  4. 峰值位置:主场景的亮度集中区

举个例子,如果直方图显示亮部区域像素占比超过5%,AE就会主动降低曝光量,防止高光溢出。这个逻辑在手机拍夜景时特别重要——你肯定不想把路灯拍成一片死白。

实用技巧:调试AE时,我习惯同时看直方图和实时图像。如果直方图中间调饱满、两端不溢出,基本就是一张曝光合理的图。如果直方图像一座“悬崖”贴在左边或右边,那肯定有问题。

AE核心流程:从场景到参数

好了,我们把上面这些知识点串起来。在高通Spectra ISP里,AE的完整流程是这样的:

AE核心流程图 场景输入 直方图统计 亮度评价 目标亮度对比 曝光参数调整 反馈迭代 说明:AE是一个闭环反馈系统,每次调整后重新统计直方图,直到亮度误差小于阈值

这个流程看起来简单,但实际工程实现时有很多细节。比如直方图统计,我们不会直接用RGB三个通道,而是转成YUV后只统计Y(亮度)通道。再比如目标亮度对比,不是简单比大小,还要考虑场景的动态范围。

我记得在调试Spectra 480平台时,遇到一个棘手的问题:室内灯光场景下,AE总是在两个曝光值之间来回跳,画面一闪一闪的。后来发现是反馈增益设得太高,每次调整都过冲。把步长调小、加入滞回区后,问题就解决了。

本章核心要点:

  • 曝光三要素:光圈(进光量)、快门(感光时间)、ISO(信号增益)
  • 18%灰卡是AE的目标亮度基准,但特殊场景需要动态调整
  • 直方图是曝光评价的核心工具,关注平均亮度、过曝/欠曝占比
  • AE是一个闭环反馈系统,参数调整需要防过冲、加滞回