工业级 ISP 常用压缩算--自适应位宽 (Adaptive Bit-depth)具体原理

目录

[0. 一句话核心原理](#0. 一句话核心原理)

[1. 分块原理(决定随机访问能力)](#1. 分块原理(决定随机访问能力))

[1.1 为什么必须分块?](#1.1 为什么必须分块?)

[1.2 工业标准块大小](#1.2 工业标准块大小)

分块方式(光栅分块)

块独立性

[2. 压缩流程(逐步骤细化原理)](#2. 压缩流程(逐步骤细化原理))

[步骤 1:读取一个 16×4 块像素](#步骤 1:读取一个 16×4 块像素)

[步骤 2:DPCM 预测与残差计算(缩小动态范围)](#步骤 2:DPCM 预测与残差计算(缩小动态范围))

规则:

原理:

[步骤 3:统计残差块的 Min / Max / Range](#步骤 3:统计残差块的 Min / Max / Range)

[步骤 4:根据 Range 自适应选择位宽模式](#步骤 4:根据 Range 自适应选择位宽模式)

原理:

[步骤 5:残差归一化( you wanted: Base + Res )](#步骤 5:残差归一化( you wanted: Base + Res ))

[步骤 6:位打包 Bit Packing(紧凑存储)](#步骤 6:位打包 Bit Packing(紧凑存储))

硬件原理:

[步骤 7:添加块头](#步骤 7:添加块头)

[步骤 8:写入 DDR 并维护块地址表](#步骤 8:写入 DDR 并维护块地址表)

[3. 解压缩流程(逐步骤细化原理)](#3. 解压缩流程(逐步骤细化原理))

[步骤 1:像素坐标 → 块定位](#步骤 1:像素坐标 → 块定位)

[步骤 2:解析块头](#步骤 2:解析块头)

[步骤 3:位解包 Bit Unpacking](#步骤 3:位解包 Bit Unpacking)

[步骤 4:恢复原始残差](#步骤 4:恢复原始残差)

[步骤 5:IDPCM 逆预测重建像素](#步骤 5:IDPCM 逆预测重建像素)

[步骤 6:输出重建像素到 3DNR](#步骤 6:输出重建像素到 3DNR)

[4. 关键原理总结](#4. 关键原理总结)

[4.1 分块原理](#4.1 分块原理)

[4.2 压缩原理](#4.2 压缩原理)

[4.3 解压缩原理](#4.3 解压缩原理)

[4.4 核心价值原理](#4.4 核心价值原理)


自适应位宽(Adaptive Bit-depth, ABD) 的原理,主要流程:分块规则 → 压缩全流程 → 解压缩全流程。


0. 一句话核心原理

把图像切成固定大小的独立小块,对每块统计动态范围,只分配刚好能表示该块的最小位宽,用 "基值 + 残差" 方式紧凑存储,实现块独立、可随机访问、近无损压缩。

它是为 ISP 帧缓存 / 3DNR 参考帧 设计的专用压缩,不是通用压缩


1. 分块原理(决定随机访问能力)

1.1 为什么必须分块?

  • 整帧压缩无法随机读取一小块(随机访问)。
  • 块必须独立编码、独立解码、无跨块依赖
  • 块大小要适配 ISP 行流水线DDR 突发长度

1.2 工业标准块大小

最常用:16×4(宽 16,高 4)其他可选:8×4、4×4

分块方式(光栅分块)

  • 横向块数 = 图像宽度 ÷ 16
  • 纵向块数 = 图像高度 ÷ 4
  • 所有块按从左到右、从上到下顺序排列

块独立性

  • 块 A 的编码不依赖块 B 的任何像素
  • 想读任意像素 → 只需要读取它所在的一个块
  • 这是 ABD 能用于 3DNR 随机参考读取 的根本原因

2. 压缩流程(逐步骤细化原理)

16×4 块、8bit 像素、左向 DPCM 为例。

步骤 1:读取一个 16×4 块像素

输入块结构:

plaintext

复制代码
P00 P01 P02 ... P015
P10 P11 P12 ... P115
P20 P21 P22 ... P215
P30 P31 P32 ... P315

64 像素

步骤 2:DPCM 预测与残差计算(缩小动态范围)

目的:让残差数值尽可能小,更容易进入低位宽模式。

规则:

  • 每行第一个像素:Res=Px,y
  • 其余像素:左向预测Pred=Px−1,yRes=Px,y−Pred
  • 差值为负时做无符号化Res += 256

原理:

图像局部空间强相关,预测后残差 Range 大幅缩小,大部分区域残差接近 0。

步骤 3:统计残差块的 Min / Max / Range

对 64 个残差计算:Min=min(Res0​...Res63​)Max=max(Res0​...Res63​)Range=Max−Min

Range 决定该块能压到多低位宽。

步骤 4:根据 Range 自适应选择位宽模式

典型量产模式表(组合逻辑查表):

Range 分配位宽 模式 (2bit)
0~3 2bit 00
4~15 4bit 01
16~63 6bit 10
≥64 8bit 11(Bypass)

原理:

找到满足 2N−1≥Range 的最小 N

步骤 5:残差归一化( you wanted: Base + Res )

Resnorm​=Res−Min

  • Min 称为 Base(基值)
  • 归一化后残差一定落在 [0, Range]
  • 刚好可以用选定的位宽无损表示

步骤 6:位打包 Bit Packing(紧凑存储)

将 64 个归一化残差按 bit 连续排列不按 8bit 字节对齐

例:4bit 模式

  • 64 像素 × 4bit = 256bit = 32Byte
  • 原始 8bit 需要 64Byte
  • 压缩比 = 2.0×

硬件原理:

多级移位 + 或门阵列,并行打包,无状态、固定延迟。

步骤 7:添加块头

每个块前固定头格式:

plaintext

复制代码
[2bit Mode][8bit Base]

最终压缩块物理格式:

plaintext

复制代码
Mode(2bit) + Base(8bit) + Packed_Residuals

步骤 8:写入 DDR 并维护块地址表

  • 每个压缩块写入 DDR
  • 建立块号 → DDR 地址的索引表
  • 支持后续随机寻址读取任意块

3. 解压缩流程(逐步骤细化原理)

步骤 1:像素坐标 → 块定位

给定 (x,y):

  • 块列号 = x ÷ 16
  • 块行号 = y ÷ 4
  • 查块地址表 → 得到该块在 DDR 的物理地址
  • 从 DDR 只读出这一个块

步骤 2:解析块头

从压缩块头部取出:

  • Mode(2bit)→ 确定解包位宽
  • Base(8bit)→ 残差偏移

步骤 3:位解包 Bit Unpacking

按 Mode 指定位宽,从比特流中逐像素恢复 Resnorm​。

纯组合逻辑:移位 + 掩码 + 拼接。

步骤 4:恢复原始残差

Res=Resnorm​+Base

步骤 5:IDPCM 逆预测重建像素

  • 每行第一个像素:Px,y=Res
  • 其余像素:Px,y=Px−1,y+Res
  • 超出 0~255 时取模还原

步骤 6:输出重建像素到 3DNR

块重建完成,送后续处理。


4. 关键原理总结

4.1 分块原理

  • 固定大小 16×4 独立块
  • 块间无依赖 → 支持随机访问
  • 适配 ISP 行流水线与 DDR 突发

4.2 压缩原理

  1. 分块
  2. DPCM 预测 → 缩小残差范围
  3. 统计 Min/Max/Range
  4. 自适应选择最小合法位宽
  5. Base + 残差归一化
  6. Bit Packing 紧凑存储
  7. 附加块头
  8. 写入 DDR 并维护地址表

4.3 解压缩原理

  1. 坐标 → 块寻址
  2. 读块、解析 Mode + Base
  3. Bit Unpacking 恢复残差
  4. 残差 + Base 还原
  5. IDPCM 重建像素
  6. 输出到 3DNR

4.4 核心价值原理

  • 块独立 → 随机访问
  • 自适应位宽 → 高压缩比
  • Base + 残差 → 无损 / 近无损
  • DPCM → 进一步提升压缩率
  • 固定最大长度 → DDR 带宽可预测
  • 全组合逻辑 → 硬件友好、固定低延迟

自适应位宽是一种块级、独立、近无损、支持随机访问的帧缓存压缩技术。

  • 分块:16×4 固定独立块。
  • 压缩:DPCM 预测 → 统计 Range → 自适应位宽 → Base + 残差 → 位打包。
  • 解压:解析块头 → 位解包 → 残差恢复 → IDPCM 重建。
  • 优势:随机访问、低延迟、硬件友好、不影响 3DNR 去噪效果。
相关推荐
跨境小技2 天前
静态住宅ISP代理:企业如何选择住宅代理IP?2026深度解析指南
网络·tcp/ip·接口隔离原则
BD_Marathon11 天前
设计模式——接口隔离原则
java·设计模式·接口隔离原则
CheungChunChiu13 天前
模拟 GStreamer 获取帧率能力:CIF 与 ISP 的差异
linux·网络·接口隔离原则·isp·cif·gst
8K超高清16 天前
博冠8K广播级讯道摄像机获国际设计大奖
网络·算法·fpga开发·接口隔离原则·智能硬件
SmkbknJLGX16 天前
牛顿拉夫逊基波潮流计算通用型程序,runpf函数的替换,可提供matlab版和python版
接口隔离原则
程序员zgh23 天前
C++ 纯虚函数 — 抽象接口
c语言·开发语言·c++·经验分享·笔记·接口隔离原则
chem41111 个月前
STM32 ISP下载
stm32·单片机·接口隔离原则
奋进的芋圆1 个月前
SerialCommManager 详解:从嵌入式通信管理器到 Spring Boot 后端服务
java·spring boot·接口隔离原则
qq_381454991 个月前
接口隔离原则:拆分“胖接口”,让依赖回归最小精准
接口隔离原则