瑞芯微HDR图像合成与运动伪影处理 - 第2节

多帧曝光原理:长中短曝光帧的获取

做HDR合成,第一步就是拿到不同曝光量的原始帧。说白了,就是让传感器分别用短、中、长三种曝光时间各拍一张。为什么要三张?因为一张照片的动态范围有限,亮的地方过曝,暗的地方欠曝。三张合在一起,才能把场景里从最亮到最暗的细节都保留下来。

我记得刚接触多帧HDR时,有个误区:以为曝光时间越长越好。其实不是。曝光时间的选择,取决于场景的动态范围。比如室内窗边场景,窗外可能比室内亮1000倍。这时候长帧要保证室内暗部有信号,短帧要保证窗外亮部不过曝。

曝光时间的设定逻辑

瑞芯微平台支持灵活的曝光时间配置。一般我们会这样设:

  • 长帧:覆盖暗部区域,曝光时间最长,增益也最高
  • 中帧:覆盖中间亮度区域,曝光时间居中
  • 短帧:覆盖亮部区域,曝光时间最短,增益最低

三帧的曝光时间比例,我习惯用 16:4:1 或者 8:2:1。举个例子,如果长帧是 32ms,中帧就是 8ms,短帧是 2ms。这个比例不是固定的,得看场景。

我的经验:在安防监控场景下,我常用 16:4:1。因为监控场景往往有强光区域(比如车灯)和阴影区域,这个比例能较好地平衡两者。如果是室内会议场景,8:2:1 就够了,动态范围没那么大。

增益控制的讲究

曝光时间调完了,还有增益。增益分模拟增益和数字增益。模拟增益在传感器端完成,噪声相对小;数字增益在ISP里做,噪声会被放大。

我个人的原则是:优先调曝光时间,再调模拟增益,最后才动数字增益。为什么?因为数字增益会放大噪声,你想想看,暗部本来信噪比就低,再一放大,噪点全出来了。

参数 长帧 中帧 短帧
曝光时间 32ms 8ms 2ms
模拟增益 8x 4x 1x
数字增益 1x 1x 1x

上面这个配置是我在一个夜间停车场项目里用过的。长帧用了 8x 模拟增益,暗部的车牌还能看清。短帧只用 1x 增益,车灯区域没有过曝。

注意:增益不是越大越好。模拟增益超过 8x 后,噪声会明显增加。我曾经试过 16x 增益,结果暗部全是彩色噪点,后期根本救不回来。

瑞芯微ISP的AE策略

自动曝光(AE)是HDR的基础。瑞芯微的ISP有一套专门针对多帧HDR的AE策略。它跟普通单帧AE不一样——单帧AE只找一个合适的曝光值,多帧AE要同时确定三帧的曝光参数。

AE的工作流程

瑞芯微的AE策略大致分三步:

  1. 场景分析:统计当前帧的亮度直方图,判断动态范围
  2. 目标分配:根据动态范围,分配三帧的目标亮度区间
  3. 参数计算:算出每帧的曝光时间和增益

嗯,这里要注意:场景分析这一步很关键。如果判断失误,比如把低动态场景当成高动态,就会浪费算力,合成效果反而变差。

AE策略的两种模式

瑞芯微ISP支持两种AE模式:

  • 固定比例模式:三帧曝光时间按固定比例分配,适合动态范围稳定的场景
  • 自适应模式:根据场景实时调整比例,适合动态范围变化大的场景

我建议在大多数场景下用自适应模式。固定比例模式虽然简单,但遇到逆光或者夜景,效果就不行了。

核心要点:自适应AE模式会实时分析直方图,如果发现暗部像素占比超过30%,就自动拉长长帧曝光时间。如果亮部像素超过20%,就缩短短帧曝光时间。这个逻辑在瑞芯微的AE算法里是默认开启的。

AE与运动伪影的关系

这里有个坑:AE参数变化太快,会导致三帧之间的亮度差异不稳定,合成时出现运动伪影。我曾经遇到过一个案例:在快速移动的车辆上拍摄,AE一直在调整,结果合成出来的图像有严重的鬼影。

解决办法是:限制AE的调整速度。瑞芯微ISP里有个参数叫 ae_speed,控制AE的响应速度。我一般设成中等,既不会太慢导致曝光不准,也不会太快导致帧间不稳定。

// 瑞芯微AE参数配置示例
ae_config.enable = 1;
ae_config.mode = AE_MODE_ADAPTIVE;
ae_config.speed = AE_SPEED_MEDIUM;  // 中等速度
ae_config.target_brightness = 0.5;  // 目标亮度50%
ae_config.max_exposure_time = 48000; // 最大曝光时间48ms
ae_config.max_analog_gain = 8;      // 最大模拟增益8x

这段配置是我在一个户外监控项目里用的。目标亮度设成50%,是因为户外场景的亮度分布比较均匀。如果是在室内,我可能会设成40%,让画面稍微暗一点,保留高光细节。

多帧曝光的知识结构

下面这张图,把多帧曝光的核心逻辑串起来了。你可以看到,从传感器到ISP,每一步都有讲究。

多帧曝光与AE策略知识结构 图像传感器 长帧(暗部) 中帧(中间) 短帧(亮部) 瑞芯微ISP AE策略 场景分析(直方图) 目标亮度分配 曝光参数计算 合成HDR图像 核心逻辑:传感器 → 三帧获取 → AE策略分析 → 参数计算 → HDR合成

从这张图能看出来,整个流程是环环相扣的。传感器负责采集原始数据,AE策略负责分析场景并分配参数,最后ISP根据这些参数完成合成。任何一个环节出问题,都会影响最终效果。

避坑指南:我曾经在调试AE时,发现短帧的增益设得太高,导致亮部区域出现条纹噪声。后来查了瑞芯微的文档,才发现短帧的模拟增益建议不超过2x。超过这个值,传感器输出会有非线性失真。