工业级 ISP 常用压缩算法设计原理

目录

一、为什么通用压缩算法不能用?(核心痛点)

[二、工业级 ISP 压缩的核心设计原理](#二、工业级 ISP 压缩的核心设计原理)

[原则 1:分块独立编码 (Tile-Coding)](#原则 1:分块独立编码 (Tile-Coding))

[原则 2:自适应位宽 (Adaptive Bit-depth)](#原则 2:自适应位宽 (Adaptive Bit-depth))

[原则 3:固定带宽约束 (Fixed Budget)](#原则 3:固定带宽约束 (Fixed Budget))

[原则 4:像素紧凑打包 (Pixel Packing)](#原则 4:像素紧凑打包 (Pixel Packing))

三、典型硬件架构与数据流

[3.1 硬件模块组成](#3.1 硬件模块组成)

[3.2 3DNR 参考帧写入流程](#3.2 3DNR 参考帧写入流程)

[3.3 3DNR 参考帧读取流程](#3.3 3DNR 参考帧读取流程)

四、经典算法实现详解(以通用自适应模板为例)

[Step 1:块头定义 (Header)](#Step 1:块头定义 (Header))

[Step 2:差分脉冲编码调制 (DPCM)](#Step 2:差分脉冲编码调制 (DPCM))

[Step 3:存储布局](#Step 3:存储布局)

[五、这种设计对 3DNR 的独特价值](#五、这种设计对 3DNR 的独特价值)

六、总结


通用压缩算法(如 JPEG、LZ77、H.264)绝对不能用于 ISP 实时帧缓存 ,因为它们无法支持随机访问(Random Access)

真正在SoC/ISP/DPU 芯片中量产的参考帧压缩技术,统称为帧内无损 / 近无损、基于块的自适应压缩算法


一、为什么通用压缩算法不能用?(核心痛点)

在 ISP Pipeline 中,3DNR、AF、AWB 等模块访问内存不是按顺序从头到尾读,而是随机跳跃的。

特性 通用压缩 (JPEG/DEFLATE) 工业级帧缓存压缩 (Tile-Based)
数据流 串行流,依赖前后文 独立块,无跨块依赖
随机访问 必须从头解压到目标位置,延时爆炸 定位块地址 -> 直接解压单块,延时 < 1 周期
错误扩散 1bit 错误导致整图花屏 错误仅限当前小块,鲁棒性极高
带宽控制 压缩比浮动大,DDR 带宽不可控 设定压缩上限,保证最坏情况不爆带宽
硬件实现 复杂,需大缓存 极简,流水线友好

结论 :ISP 参考帧压缩的第一准则是 ------必须支持任意 8x8/16x4 像素块的独立解码,且解码延迟固定。


二、工业级 ISP 压缩的核心设计原理

所有量产方案(如高通 HXCR、三星 MBZ、ARM Frame Buffer Compression)都遵循以下四大黄金原则

原则 1:分块独立编码 (Tile-Coding)

将一帧图像切割成固定大小的微小像素块。

  • 标准块大小4x4、8x4、16x4(高度通常为 1,适配行扫描)。
  • 原理:每一块的数据头 + 数据独立存储。
  • 访问逻辑
    1. 根据像素坐标计算块索引。
    2. 通过 ** 索引表(Lookup Table)** 查到该块在 DDR 中的物理地址。
    3. 仅读取该块的几十字节数据。
    4. 硬件解码器即时解压。
  • 优势:想读哪里读哪里,完全模拟原始未压缩内存的访问习惯。

原则 2:自适应位宽 (Adaptive Bit-depth)

利用图像空间相关性,计算块内像素的动态范围,只分配够用的位数。

  • 步骤
    1. 计算块内最大值 Max 和最小值 Min
    2. 计算差值 Range = Max - Min
    3. 根据 Range 决定所需位宽(如 2bit、4bit、6bit、8bit)。
    4. 块头记录 Base 值(Min)和位宽模式。
    5. 像素数据存储为相对于 Base 的残差。
  • 数学模型Pixel = Base + Resample(Residual)
  • 优势 :平坦区域(如天空)压得很小,纹理区域保持清晰,视觉无损

原则 3:固定带宽约束 (Fixed Budget)

这是芯片稳定运行的关键。

  • 原理:强制规定每个块的最大存储字节数。
  • 策略
    • 如果压缩后小于预算,填充 0 或截断。
    • 如果难以压缩(如噪点极大的块),直接旁路(Bypass),即不压缩原样存储。
  • 优势:DDR 控制器可以精确计算最坏情况下的带宽,避免带宽溢出导致的 Pipeline 卡死。

原则 4:像素紧凑打包 (Pixel Packing)

摒弃标准的 8 位字节对齐,利用位拼接引擎实现比特级紧凑存储。

  • 示例 :一个 16x4 块,自适应为 4bit / 像素。
    • 总数据量 = 16 * 4 * 4bit = 256bit = 32Byte
    • 硬件直接连续打包写入 DDR,无字节空隙。

三、典型硬件架构与数据流

3.1 硬件模块组成

  1. 地址转换单元(ATU)
    • 维护块地址表。记录每一个压缩块存在 DDR 的哪个位置。
    • 负责虚拟像素坐标 -> 物理 DDR 地址的转换。
  2. 压缩 / 解压缩引擎(CODEC)
    • 纯组合逻辑或短流水线,无帧缓存
    • 并行处理多个 Tile。
  3. DDR 控制器
    • 以 Burst 方式读写压缩块。

3.2 3DNR 参考帧写入流程

  1. 当前帧输出送入压缩引擎
  2. 按 16x4 切分 Tile。
  3. 逐 Tile 进行自适应预测、残差计算、位宽压缩。
  4. 将压缩后的数据写入 DDR。
  5. 将该 Tile 的起始地址更新到ATU 块地址表

3.3 3DNR 参考帧读取流程

  1. 3DNR 模块需要读取(x, y)处的参考像素。
  2. 向 ATU 发送坐标请求。
  3. ATU 计算出 Tile 索引,查表得到 DDR 地址。
  4. 从 DDR 读取该单个压缩块
  5. 解压缩引擎即时解压出 16x4 像素块。
  6. 送出目标像素给 3DNR 计算。
  7. 整个过程仅需读取几十字节,而非整帧数据。

四、经典算法实现详解(以通用自适应模板为例)

我们以最常见的16x4 块、2bit 模式头为例,讲解内部编码细节:

Step 1:块头定义 (Header)

每个块前固定 2bit,指示编码模式:

  • 00:Bypass 模式(8bit / 像素,共 64Byte)
  • 01:6bit 模式(共 48Byte)
  • 10:4bit 模式(共 32Byte)
  • 11:2bit 模式(共 16Byte)

Step 2:差分脉冲编码调制 (DPCM)

为了提高压缩效率,块内并非直接存残差,而是使用前向预测

plaintext

复制代码
Predicted Pixel = Left Neighbor Pixel
Residual = Current Pixel - Predicted Pixel
  • 第一个像素使用绝对数值。
  • 后续像素存储与左边像素的差值。
  • 由于差值通常很小,更低位宽即可表示。

Step 3:存储布局

plaintext

复制代码
[2bit Mode][Base Value][Residual Data (Packed)]
  • 解压时,先读 Mode,确定位宽;再读 Base,逐像素重建。

五、这种设计对 3DNR 的独特价值

  1. 运动估计精准 :由于是帧内压缩,不涉及帧间预测,不会引入额外的运动矢量误差,保证了 3DNR 运动检测的准确性。
  2. 抑制噪声漂移:采用近无损压缩,不会像视频编码那样产生振铃效应,避免噪声被压缩算法放大后带入下一帧,导致噪声累积。
  3. 低时延反馈:3DNR 计算当前行时,能瞬间解压出参考帧对应行的块,完美匹配流水线时序,无需额外的行缓冲缓存整行解压数据。

六、总结

工业级 ISP 参考帧压缩,本质上是一种 "带地址索引的、分块的、自适应位宽的 DPCM 打包存储系统"。

它牺牲了极致的压缩比(通常压缩比在 1.5x~2.5x),换取了等同于未压缩内存的随机访问能力硬件级的实时性。这是在 DDR 带宽、芯片面积、图像质量三者之间做出的最优工程妥协,也是现代高清 ISP 能够实时运行 3DNR 的底层技术支柱。

相关推荐
KhalilRuan12 天前
LZMA和LZ4的底层原理
压缩
William.csj15 天前
Mac——加密压缩
macos·压缩
大熊背22 天前
ISP图像效果参数压缩的可行性分析(二)差分序列做 BLE (RLE) 压缩原理
压缩·isppipeline
大熊背23 天前
ISP图像效果参数压缩的可行性分析(一)
压缩·gamma·isppipeline
大熊背25 天前
ISP离线模式应用(二)-如何利用 ISP 离线模式 加速 3DNR 收敛
linux·算法·rtos·isp pipeline·3dnr
大熊背2 个月前
LSC(Lens Shading Correction,镜头阴影校正)是 ISP pipeline 中的位置以及原因(一)
isp pipeline·lsc
十五年专注C++开发2 个月前
libarchive: 一个几乎可以解压所有压缩文件的C语言库
c·压缩·7z·解压·libarchive
humors2212 个月前
使用deepseek压缩简历文档6页变2页
面试·排版·招聘·求职·压缩·简历·应聘
大熊背2 个月前
APEX自动曝光调整逻辑
apex·自动曝光·isp pipeline