子采样残差压缩(Subsampled Residual Compression)原理

目录

一、总体思想

二、核心结构

三、标准子采样模式(工业量产常用)

[模式 A:2×2 网格子采样(最常用)](#模式 A:2×2 网格子采样(最常用))

[模式 B:行 2:1 子采样(行方向降采样)](#模式 B:行 2:1 子采样(行方向降采样))

[模式 C:4:1 固定子采样(WDR 常用)](#模式 C:4:1 固定子采样(WDR 常用))

四、完整压缩流程(逐步骤工程化)

[Step 1:块输入](#Step 1:块输入)

[Step 2:生成子采样基图](#Step 2:生成子采样基图)

[Step 3:基图压缩(可选)](#Step 3:基图压缩(可选))

[Step 4:基图上采样插值(生成预测图)](#Step 4:基图上采样插值(生成预测图))

(1)最近邻插值(最常用)

(2)简单双线性(高阶一点)

[Step 5:残差计算](#Step 5:残差计算)

[Step 6:残差轻量化压缩](#Step 6:残差轻量化压缩)

[Step 7:写入 DDR](#Step 7:写入 DDR)

五、解压流程(支持随机访问)

[Step 1:坐标 → 块定位](#Step 1:坐标 → 块定位)

[Step 2:读取块头 + 基图 + 残差](#Step 2:读取块头 + 基图 + 残差)

[Step 3:基图上采样 → 预测值 Pred (x,y)](#Step 3:基图上采样 → 预测值 Pred (x,y))

[Step 4:恢复原始像素](#Step 4:恢复原始像素)

[Step 5:送给 ISP/3DNR/WDR](#Step 5:送给 ISP/3DNR/WDR)

六、关键特性(工业级必须满足)

[1. 块独立](#1. 块独立)

[2. 硬件极简单](#2. 硬件极简单)

[5. 带宽可预算](#5. 带宽可预算)

[3. 固定延迟](#3. 固定延迟)

[4. 无块效应](#4. 无块效应)

[5. 带宽可预算](#5. 带宽可预算)

[6. 近无损](#6. 近无损)

七、压缩比范围(量产真实值)

八、典型应用场景(真正工业在用)

[1. WDR 多曝光帧压缩(海思 / 安霸 / 联咏 大量使用)](#1. WDR 多曝光帧压缩(海思 / 安霸 / 联咏 大量使用))

[2. 电子防抖参考帧](#2. 电子防抖参考帧)

[3. Y 通道轻量缓存压缩](#3. Y 通道轻量缓存压缩)

[4. RAW 域预压缩(Bayer 帧)](#4. RAW 域预压缩(Bayer 帧))

[九、与自适应位宽 ABD 的区别](#九、与自适应位宽 ABD 的区别)


「子采样残差压缩(Subsampled Residual Compression)」完整、可工程落地、可用于芯片设计 的原理说明。它属于帧缓存专用轻量压缩(FBC) ,不是通用视频编码,核心特点:块独立、支持随机访问、硬件极简单、延迟固定、无跨块依赖


一、总体思想

用低分辨率子采样图做 "粗预测",原图与预测图的残差能量大幅降低,再用更低位宽存储残差,从而实现压缩。

预测越准 → 残差越小 → 残差可用更少 bit 存储 → 压缩比越高。

它是WDR 多帧、防抖参考帧、Y 缓存、RAW 域缓存里最常用的轻量压缩之一。


二、核心结构

子采样残差压缩由三部分固定构成:

  1. 子采样基图生成(低分辨率预测层)
  2. 预测重建(上采样插值)
  3. 残差计算 + 轻量残差压缩

存储格式固定为:基图(低分辨率) + 残差(高位图)

读取时:像素 = 插值基图 + 残差


三、标准子采样模式(工业量产常用)

ISP 里不会用复杂采样,只使用以下三种硬件最简模式:

模式 A:2×2 网格子采样(最常用)

  • 每 2×2 像素保留 1 个作为基图像素
  • 基图尺寸 = 原图 1/4
  • 硬件最简单:直接抽取,无需滤波

plaintext

复制代码
P00 P01 P02 P03
P10 P11 P12 P13 → 基图取 P00, P02, P20, P22
P20 P21 P22 P23

模式 B:行 2:1 子采样(行方向降采样)

  • 每行保留 1/2 像素
  • 适合行流水线 ISP

模式 C:4:1 固定子采样(WDR 常用)

不使用熵编码(无 CABAC/CAVLC),保证随机访问

Step 7:写入 DDR

存储格式:

plaintext

复制代码
[块头][基图压缩数据][残差压缩数据]

块头通常 8~16bit

五、解压流程(支持随机访问)

任何 (x,y) 都能单独读取,不需要解码整帧:

Step 1:坐标 → 块定位

复制代码
tile_x = x / 16
tile_y = y / 16
  • 用于长 / 短曝光帧残差压缩
  • 基图 = 短曝光帧下采样

四、完整压缩流程(逐步骤工程化)

16×16 块、2×2 子采样为例:

Step 1:块输入

读取 16×16 图像块(Y 或 RAW)。

Step 2:生成子采样基图

对 16×16 块做 2×2 抽取 ,得到 8×8 基图

plaintext

复制代码
  base(x/2, y/2) = img(x, y)

不做滤波、不做平滑,纯抽取,保证硬件最小。

Step 3:基图压缩(可选)

基图本身可以再做一次轻量压缩:

  • 固定位宽(6/8bit)
  • 或简单自适应位宽基图压缩率通常 1.2~1.5×。

Step 4:基图上采样插值(生成预测图)

将 8×8 基图恢复为 16×16 预测图 Pred

工业级只使用两种硬件最简插值:

(1)最近邻插值(最常用)

plaintext

复制代码
  Pred(x,y) = base(x//2, y//2)

纯路由选择,0 逻辑、0 延迟。

(2)简单双线性(高阶一点)

plaintext

复制代码
  Pred = (P0 + P1 + P2 + P3) / 4

仅加法 + 移位,无乘法。

Step 5:残差计算

plaintext

复制代码
  Res(x,y) = Orig(x,y) − Pred(x,y)

因为 Pred 是 "粗预测",残差动态范围大幅缩小 ,通常从 0~255 → 0~15 或 0~31

Step 6:残差轻量化压缩

残差已经很小,因此使用极轻量压缩

  • 常用策略(工业标准):

  • 固定 4bit 存储(最常见)

  • 或固定 6bit

  • 或简单 2/4/8bit 三档自适应位宽

  • 子采样模式

  • 基图位宽

  • 残差位宽

  • bypass 标志

Step 2:读取块头 + 基图 + 残差

Step 3:基图上采样 → 预测值 Pred (x,y)

Step 4:恢复原始像素

plaintext

复制代码
Orig(x,y) = Pred(x,y) + Res(x,y)

Step 5:送给 ISP/3DNR/WDR

完全块独立,无跨块依赖,随机访问零开销。


六、关键特性(工业级必须满足)

1. 块独立

任何块压缩 / 解压不依赖其他块,支持随机读写。

2. 硬件极简单

只有:抽取器、插值器、加法器、移位器 无树形运算、无复杂统计 面积 < 1.5k GE

因为预测是低分辨率平滑基图,残差连续,不会出现强块效应。

5. 带宽可预算

3. 固定延迟

压缩:3~4 拍解压:2~3 拍流水线可无缝插入 ISP。

4. 无块效应

5. 带宽可预算

残差固定位宽 → 块最大长度固定 → DDR 带宽可精确预算。

6. 近无损

残差足够保存细节,误差 ≤ 1 LSB


七、压缩比范围(量产真实值)

Y 通道:1.5 ~ 2.2× WDR 多帧:1.6 ~ 2.5×

比 ABD 低,但面积小 40%~60%

2. 电子防抖参考帧

3. Y 通道轻量缓存压缩

4. RAW 域预压缩(Bayer 帧)

    • RAW 域:1.4 ~ 2.0×

    • 比 ABD 低,但面积小 40%~60%


      八、典型应用场景(真正工业在用)

      1. WDR 多曝光帧压缩(海思 / 安霸 / 联咏 大量使用)

    • 长曝光帧作为主帧

    • 短曝光帧做子采样基图

    • 残差用 4~6bit 存储大幅减少 WDR 多帧 DDR 占用。

  • 参考帧用子采样基图 + 残差
  • 支持随机读取偏移区域
  • 不压缩 UV
  • Y 使用 2×2 子采样残差
  • 内存节省~50%
  • 在 ISP 前端压缩 RAW
  • 降低 DPC/DEMOSAIC 带宽压力

九、与自适应位宽 ABD 的区别

项目 子采样残差压缩 自适应位宽 ABD
预测方式 子采样插值 DPCM 空间预测
硬件面积 极小 中等
延迟 更低 中等
压缩比 1.5~2.2× 2.0~3.5×
随机访问 支持 支持
适用场景 WDR、防抖、低成本 高端 3DNR、ADAS
复杂度 中高

相关推荐
大熊背2 天前
ISP Pipeline 需要多次 DDR 读写以及一些行buffer缓冲原因
isp pipeline·行缓冲
大熊背4 天前
ISP 节点 DDR 读写位置图
ddr·isp pipeline
ae_zr6 天前
QT静态库如何使用
qt·压缩·静态exe
有梦想的攻城狮18 天前
kafka消息在发送时通过压缩算法进行压缩,在Broker是否会进行解压缩
分布式·kafka·压缩·lz4
初级代码游戏18 天前
C#:程序发布的大小控制 裁剪 压缩
c#·.net·dotnet·压缩·大小·发布·裁剪
lpfasd1232 个月前
压缩与解压缩原理全解
压缩
绝世唐门三哥3 个月前
MacOS-Terminal直接command解压缩文件文件夹
macos·命令行·压缩
七夜zippoe4 个月前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(三)
缓存·压缩·缓冲·多个场景
七夜zippoe4 个月前
压缩与缓存调优实战指南:从0到1根治性能瓶颈(二)
缓存·优化·压缩·底层原理