Android Camera ADRC Gain 详解

📅 2026/7/24 21:32:18 👁️ 阅读次数 📝 编程学习
Android Camera ADRC Gain 详解

ADRC Gain 详解 (Adaptive Dynamic Range Compression)

1. 什么是 ADRC

ADRC = Adaptive Dynamic Range Compression,即自适应动态范围压缩。它是高通 Spectra ISP 流水线中的一项关键技术,用于:

  • HDR(高动态范围)合成后的高 bit-depth 数据(如 14-bit)压缩到显示可用的低 bit-depth(如 10-bit)
  • 在压缩过程中保留暗部细节,同时防止高光过曝
  • 根据场景亮度自适应调整压缩曲线

2. 核心概念

场景亮度分布: 暗部 ──────────────────────── 亮部 ├──── 小增益压缩 ────┤──── 大增益压缩 ────┤ │ 保留暗部细节 │ 压缩高光动态范围 │

ADRC Gain本质上是一个逐像素(或逐区域)的增益映射表

参数含义
adrc_gain压缩增益值,通常范围 [1.0, ~64.0]
adrc_scale缩放因子,用于将增益映射到硬件寄存器
adrc_lut查找表(Look-Up Table),存储不同亮度级别的增益
adrc_max_gain最大允许增益,防止过度放大噪声
adrc_min_gain最小增益(通常为 1.0,即不放大)

3. 在 ISP 流水线中的位置

Sensor (RAW 14-bit) │ ├─→ BLS (Black Level Subtraction) ├─→ Roll-off (Lens Shading Correction) ├─→ BPC (Bad Pixel Correction) ├─→ Demosaic ├─→ Color Correction (CCM) ├─→ Gamma ├─→ ★ ADRC (Dynamic Range Compression) ★ ← 在这里应用 │ │ │ ├─→ 计算场景统计 (histogram) │ ├─→ 根据统计生成 adrc_gain LUT │ └─→ 逐像素应用增益映射 ├─→ ACE (Advanced Color Enhancement) ├─→ Tone Mapping └─→ 输出 (10-bit YUV)