ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

WDR模式详解

WDR模式详解

OS08A20 与海思平台 WDR 三种模式讲义

关键词:OT_WDR_MODE_BUILT_IN、OT_WDR_MODE_2To1_LINE、OT_WDR_MODE_2To1_FRAME、OS08A20、Staggered HDR、Sequential HDR、MIPI VC

目录

  1. 三种 WDR 模式总览
  2. 基本概念
  3. BUILT_IN 模式
  4. 2To1_LINE 模式
  5. 2To1_FRAME 模式
  6. 三种模式对比
  7. MIPI Lane 与 VC
  8. OS08A20 对应关系(核心修正项)
  9. 常见误区(逐条修正)
  10. 工程检查清单
  11. 一句话总结

1. 三种 WDR 模式总览

海思平台 MPP 定义的 3 种 WDR 模式:

模式合成位置Sensor 输出平台角色
OT_WDR_MODE_BUILT_INSensor 内部完成 WDR 融合 + 非线性压缩单路压缩后的合成 RAW(非线性格式)ISP 仅做 Expander 解压,不参与长短帧合成
OT_WDR_MODE_2To1_LINE海思 ISP 行间合成行交替长曝光行/短曝光行,分两路 RAW(VC0/VC1)VI 拆分两路行数据,ISP 做行间 2To1 融合
OT_WDR_MODE_2To1_FRAME海思 ISP 帧间合成完整长帧 RAW、完整短帧 RAW 先后串行输出VI 缓存两帧图像,ISP 做帧间 2To1 融合,占用双帧 Buffer

一句话精简:

  • BUILT_IN:Sensor 合成 + 压缩,ISP 只负责解压,无多帧融合动作。
  • 2To1_LINE:长短曝光行交错输出,ISP 行间融合,运动鬼影最轻。
  • 2To1_FRAME:长短整帧先后输出,ISP 帧间融合,必须双帧缓存。

2. 基本概念

2.1 WDR 宽动态

通过两组独立曝光采集:

  • 长曝光 Long:拉高暗部信噪比,高光易饱和;
  • 短曝光 Short:保住亮部不溢出,暗部噪声大;

后端将两路线性 RAW 合并为一帧宽动态画面。

2.2 两大采集架构

  1. Sensor 端融合(BUILT_IN):片内完成长短帧合并 + PWL 非线性压缩,输出单路压缩 RAW;
  2. ISP 端融合(2To1_LINE / 2To1_FRAME):Sensor 只输出两路独立线性 RAW,不做任何合成,由 ISP 完成融合。

重点:2To1_LINE / 2To1_FRAME 下,长短帧数据始终是线性 RAW,没有片内压缩。

3. BUILT_IN 模式

3.1 数据流

ISP AE计算曝光/增益 → 写入Sensor寄存器 ↓ Sensor采集长短曝光 → 片内完成WDR融合 → PWL分段压缩 ↓ 输出单路压缩RAW(一路MIPI数据流) ↓ 海思MIPI RX接收 ↓ ISP Expander模块加载PWL曲线,执行反向解压 ↓ 正常去拜耳、3A、ToneMapping处理

3.2 核心特性

  1. Sensor 内部完成长短帧融合,ISP没有两路 RAW 输入,不执行 WDR 融合算法;
  2. 输出为压缩 RAW,必须配置 Expander 分段线性曲线还原动态范围;
  3. AE 只下发一组曝光与增益,不需要分别配置长帧、短帧两套参数;
  4. 带宽开销低,只占用 1 路 MIPI 数据流,不需要多路 VC。

3.3 关键修正(针对 OS08A20)

⚠️重大结论:OS08A20 原生硬件不支持 BUILT_IN 片内合成 + 压缩输出!
OS08A20 仅支持两路独立线性 RAW 输出(Staggered/Sequential HDR),无片内 WDR 融合与压缩电路,无法直接跑OT_WDR_MODE_BUILT_IN;该模式仅适用于带 Built-in WDR 的 Sensor(如部分 OV/索尼 DCG HDR 型号)。

4. 2To1_LINE 模式(Staggered HDR,OS08A20 原生首选)

4.1 工作时序

Sensor 逐行交替曝光:奇数行 = 长曝光,偶数行 = 短曝光;
一行 Long、一行 Short 循环读出,输出两路独立 RAW 数据流。

4.2 两种输出方案(修正原文误区)

  1. 双 VC 模式(主流方案)
    长行数据走 VC0,短行数据走 VC1;MIPI 一进两路逻辑流,VI 直接拆分 VC0/VC1 得到两路行数据,无需软件逐行解析。
  2. 单 VC 无虚拟通道模式
    长短行共用同一个 VC,依靠 Dummy Line + 行计数区分长行/短行,由 VI 软件逐行切割两路数据;兼容性弱,只在 VC 资源不足时使用。

4.3 模式特点

  • 长短曝光时间差只有一行读出时间,运动物体鬼影、重影最轻;
  • 仅需要少量行缓存,DDR 开销远小于 2To1_FRAME;
  • 两路 RAW 都是线性未压缩数据,ISP 可以自由调节曝光比 Ratio;
  • AE 必须分别配置 Long Exp/Gain、Short Exp/Gain 两组参数;
  • 短板:行交替会带来行间噪声差异,容易出现水平横纹,需要 ISP 做行均衡降噪。

5. 2To1_FRAME 模式(Sequential HDR,帧交替双曝光)

5.1 工作时序

  1. 输出一整帧完整长曝光 RAW(Long Frame);
  2. 紧接着输出一整帧完整短曝光 RAW(Short Frame);
  3. 循环往复:长帧 → 短帧 → 长帧 → 短帧。

两帧先后串行输出,共用一路 MIPI,可以用 FS/帧序号区分长短帧。

5.2 模式特点

  • 长短帧是两张完整图像,像素一一对应,帧配准简单;无行间横纹问题;
  • 必须开启双帧帧缓存,DDR 占用显著升高;
  • 两帧采集存在一帧的时间差,运动场景一定会出现 Ghost 重影;
  • 有效输出帧率直接减半:Sensor 输出 30fps,WDR 合成后只有 15fps;
  • 同样输出两路线性 RAW,无片内压缩,AE 独立控制长短帧曝光比。

补充:OS08A20 本身没有原生 Sequential 帧交替模式;2To1_FRAME 是靠驱动配置 Context 切换 + 组保持(Group Hold)时序,软件模拟实现的,并非硬件原生时序。

6. 三种模式对比

项目BUILT_IN2To1_LINE(Staggered)2To1_FRAME(Sequential)
融合位置Sensor 片内ISP 行间融合ISP 帧间融合
RAW 数据非线性压缩 RAW两路线性 RAW两路线性 RAW
MIPI 输出单路数据流双 VC(VC0/VC1)为主单路、帧序号区分
时间差无(片内同时采集)仅一行时间整整一帧时间
运动鬼影几乎无轻微严重
缓存开销极小,无需双路缓存仅行缓存双帧缓存,DDR 开销大
OS08A20 支持❌ 硬件不支持✅ 原生硬件支持⚠️ 软件时序模拟
AE 参数仅一组曝光增益长短帧两套独立参数长短帧两套独立参数

7. MIPI Lane 与 VC

  1. VC(Virtual Channel 虚拟通道)是 MIPI 协议逻辑标签,不是物理线;Lane 才是物理差分数据线,二者互不冲突;
  2. 2To1_LINE 标准配置:物理 Lane 只用 1 组(2/4 lane),逻辑上拆分 VC0(长行)、VC1(短行),一路物理 MIPI 承载两路逻辑数据流;
  3. 2To1_FRAME 不需要双 VC:长帧、短帧先后分时输出在同一个 VC 下,依靠帧起始 FS 和帧序号区分;
  4. 无 VC 模式:不是关闭 VC 字段,而是长短两路复用同一个 VC 编号,只能依靠行计数/Dummy Line 做软件切分。

8. OS08A20 对应关系(核心修正项)

OS08A20 硬件只具备2-exposure Staggered HDR(行间交替双曝光),无内置 WDR 融合压缩功能,对应关系严格如下:

OS08A20 HDR 工作模式数据输出形态海思 WDR 模式映射硬件原生性
Staggered HDR(行间交替)长短行交替,支持 VC0/VC1 双路输出OT_WDR_MODE_2To1_LINE✅ 硬件原生支持,首选方案
Sequential HDR(帧交替)整长帧 + 整短帧先后输出OT_WDR_MODE_2To1_FRAME⚠️ 仅能通过 Context 切换 + Group Hold 软件模拟,非原生时序
Built-in WDR 片内合成单路压缩合成 RAWOT_WDR_MODE_BUILT_IN❌硬件不支持,无法启用

重要结论:OS08A20 工程上只能跑 2To1_LINE,2To1_FRAME 为软件模拟方案,BUILT_IN 模式直接不可用。

9. 常见误区(逐条修正)

误区 1:VC 是物理 Lane

❌ 错误。VC 是 MIPI 协议的逻辑通道标签,Lane 是物理差分线;一路物理 MIPI 可以承载多个 VC 数据流。

误区 2:Staggered HDR 只输出一帧交织图像

❌ 不准确。Sensor 输出交织行,但 MIPI 通过 VC0/VC1 拆分成两路独立 RAW 流;VI 接收后先拆成长行、短行两路数据,再送入 ISP 做行间融合,不是单帧数据。

误区 3:无 VC 模式就不带 VC 字段

❌ 错误。无 VC 模式只是长短两路共用同一个 VC 编号,MIPI 包依然携带 VC 字段;只是不再依靠 VC 区分长短曝光,改用行号、Dummy Line 软件切分。

误区 4:BUILT_IN 模式下 ISP 不用配置曝光寄存器

✅ 正确。ISP 依然负责 AE 闭环,依然要下发曝光与增益,只是只下发一组参数,不需要区分长短帧;同时必须配置 Expander 解压曲线。

误区 5:2To1_FRAME 和 2To1_LINE 只是名字区别

❌ 错误:

  • 2To1_LINE:行间采集,时间差极小,行缓存,鬼影轻微;OS08A20 原生硬件;
  • 2To1_FRAME:帧间采集,时间差一整帧,双帧缓存,运动重影严重;OS08A20 只能软件模拟时序。

误区 6:OS08A20 可以直接开启 BUILT_IN 模式

❌ 错误。OS08A20 没有片内 WDR 融合 + PWL 压缩电路,硬件原生不支持 BUILT_IN 模式,无法配置该模式运行,不要在 SDK 里尝试开启。

误区 7:2To1 模式下 Sensor 输出是非线性 HDR RAW

❌ 错误。2To1_LINE / 2To1_FRAME 都属于 HDR 采集模式,但长短帧每一组曝光都是线性 12bit RAW,Sensor 不做任何压缩,所有融合与非线性映射都交给 ISP 处理。

10. 工程检查清单

10.1 2To1_LINE(Staggered HDR,正式项目首选)

  • Sensor 寄存器配置为 Staggered 2-exposure HDR,关闭帧交替时序;
  • 开启 MIPI 双 VC 输出:长行 → VC0,短行 → VC1;
  • VI 配置双路 RAW 接收,绑定 VC0/VC1 分别对应长帧、短帧数据流;
  • ISP WDR 模式选择OT_WDR_MODE_2To1_LINE,开启行间融合;
  • AE 配置双路曝光:分别设置 Long Exp/Gain、Short Exp/Gain,配置曝光比 Ratio;
  • 校验长短行对齐、行时序无错位,避免出现水平横纹;
  • 若启用无 VC 单通道模式,提前调试 Dummy Line 与行计数切分逻辑。

10.2 2To1_FRAME(仅测试场景,不推荐量产)

  • 驱动配置 Context 切换 + Group Hold,软件模拟长帧 → 短帧交替时序;
  • 配置 FS 帧标记,让 VI 能够识别当前帧是长帧还是短帧;
  • VI 开启双帧乒乓缓存,满足帧间融合的数据缓存需求;
  • ISP 选择OT_WDR_MODE_2To1_FRAME,开启帧间配准与融合;
  • 提前评估运动鬼影风险,必须做运动检测与鬼影抑制;
  • AE 依然分开控制长短帧两套曝光与增益。

10.3 BUILT_IN 模式(OS08A20 直接跳过,无需调试)

本条直接备注:OS08A20 硬件不支持片内合成压缩,禁止配置该模式,无需调试 Expander 模块。

11. 一句话总结

  1. BUILT_IN:Sensor 片内融合 + 压缩输出,ISP 仅做解压,OS08A20 硬件不支持,无法使用;
  2. 2To1_LINE(Staggered):OS08A20 原生硬件方案,长短曝光行交替输出,依靠 VC0/VC1 拆分两路线性 RAW,ISP 行间融合,运动鬼影最轻,是量产首选;
  3. 2To1_FRAME(Sequential):靠驱动时序模拟整帧交替输出,必须双帧缓存,运动重影严重,仅适合静态场景测试;
  4. 所有 2To1 类 WDR 模式,Sensor 输出都是两路独立线性 RAW,片内无压缩,长短帧曝光比完全由 ISP AE 自由控制。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进