ISP图像效果参数压缩的可行性分析(二)差分序列做 BLE (RLE) 压缩原理

目录

[差分序列做 BLE (RLE) 压缩原理](#差分序列做 BLE (RLE) 压缩原理)

[0. 先明确前提](#0. 先明确前提)

[1. 核心思想:BLE = RLE + 变长存储](#1. 核心思想:BLE = RLE + 变长存储)

[2. 为什么要分「小差值」和「大差值」?](#2. 为什么要分「小差值」和「大差值」?)

[3. 详细解析:小差值(-64 ~ +63)→ 1 字节存储](#3. 详细解析:小差值(-64 ~ +63)→ 1 字节存储)

[4. 详细解析:大差值 → 标记 0x80 + 2 字节](#4. 详细解析:大差值 → 标记 0x80 + 2 字节)

[5. 详细解析:计数 → 固定 1 字节](#5. 详细解析:计数 → 固定 1 字节)

[6. 最终 BLE (RLE) 存储格式](#6. 最终 BLE (RLE) 存储格式)

[7. 例子](#7. 例子)


差分序列做 BLE (RLE) 压缩原理

底层原理:

  1. 小差值(-64 ~ +63):用 1 字节存
  2. 大差值:用 标记 0x80 + 2 字节存
  3. 计数:固定 1 字节

0. 先明确前提

你现在已经做完 组间差分 得到了一串 90 个 int16 差值

复制代码
diff[0...89]

这些差值特点:

  • 大部分 = 0
  • 少量 = ±1、±2、±3
  • 极少 = 超过 ±63

所以我们要做的就是:把这 90 个数字,用尽可能少的字节存起来


1. 核心思想:BLE = RLE + 变长存储

BLE = Basic Line Encoding

本质 = RLE(行程编码)+ 自适应短值压缩

RLE 原理一句话:连续相同的数字,不重复存,只存(值,重复次数)

例如:

复制代码
0,0,0,0,0 → 存成 (0, 5)

2. 为什么要分「小差值」和「大差值」?

因为:

  • 99% 的差值都很小(-64 ~ +63)
  • 没必要每个都用 2 字节存
  • 能塞进 1 个字节 就用 1 字节
  • 塞不下才用 2 字节 + 标记位

这就是 变长存储,压缩比极高。


3. 详细解析:小差值(-64 ~ +63)→ 1 字节存储

范围:-64 ≤ diff ≤ +63

存储格式:

复制代码
[1字节 有符号差值]

为什么是 -64 ~ +63?

因为:1 个字节(8bit)有符号数范围 = -128 ~ +127 但我们用 最高位作为标志位(后面讲)所以可用范围只剩:

复制代码
-64 ~ +63(共 128 个值)

例子:

  • 差值 = 0 → 存 0x00
  • 差值 = 5 → 存 0x05
  • 差值 = -1 → 存 0xFF
  • 差值 = -64 → 存 0xC0

全部 只用 1 字节


4. 详细解析:大差值 → 标记 0x80 + 2 字节

范围:差值 <-64 或 差值> +63

存储格式:

复制代码
[0x80 标记] + [2字节 完整int16差值]

规则:

  • 只要看到第一个字节是 0x80
  • 就知道:这是一个大差值
  • 后面 2 字节 才是真实值

为什么用 0x80 做标记?

因为:

  • 小差值范围:0x00 ~ 0x7F = 0 ~ 127
  • 0x80 不在小差值范围内
  • 不会冲突
  • 解压时能精准识别

例子:

差值 = 100 → 存储:

复制代码
0x80, 0x00, 0x64

差值 = -100 → 存储:

复制代码
0x80, 0xFF, 0x9C

5. 详细解析:计数 → 固定 1 字节

计数 = 连续相同差值出现多少次

复制代码
[1字节 计数]

范围:1 ~ 255

足够用了,因为你总共才 90 个参数。


6. 最终 BLE (RLE) 存储格式

情况 A:小差值

复制代码
[1字节 差值] + [1字节 计数]
→ 总共 2 字节

情况 B:大差值

复制代码
[0x80] + [2字节 差值] + [1字节 计数]
→ 总共 4 字节

7. 例子

假设差分序列是:

复制代码
0,0,0,0, 1,1, -2,-2,-2, 5, 100

压缩过程:

  1. 0,0,0,0 → 小值 → 0x00, 0x04
  2. 1,1 → 小值 → 0x01, 0x02
  3. -2,-2,-2 → 小值 → 0xFE, 0x03
  4. 5 → 小值 → 0x05, 0x01
  5. 100 → 大值 → 0x80, 0x00, 0x64, 0x01

最终压缩数据:

复制代码
00 04, 01 02, FE 03, 05 01, 80 00 64 01

效果:

原始:11×2 = 22 字节 压缩后:12 字节

相关推荐
大熊背8 天前
如何利用Lv值实现三级降帧
算法·自动曝光·lv·isppipeline
大熊背10 天前
ISP Pipeline中Lv实现方式探究之三--lv计算定点实现
数据结构·算法·自动曝光·lv·isppipeline
大熊背10 天前
ISP Pipeline中Lv实现方式探究之二
自动白平衡·自动曝光·lv·isppipeline·bv
大熊背10 天前
ISP中Lv和ISO系统并存的意义
自动曝光·iso·lv·isppipeline
KhalilRuan12 天前
LZMA和LZ4的底层原理
压缩
大熊背13 天前
根据ISP各个ISO节点标定后的参数,如何插值生成当前增益下对应的ISP参数
iso·isppipeline·isp插值·log域
William.csj15 天前
Mac——加密压缩
macos·压缩
大熊背23 天前
ISP图像效果参数压缩的可行性分析(一)
压缩·gamma·isppipeline
大熊背25 天前
ISP离线模式应用(一)
人工智能·isppipeline·离线模式