Operator Library: Prototype
![]() |
免责声明 |
|---|---|
|
Library: Prototype 此模块是 Prototype 库的一部分。 它处于完全初步的状态,可能会发生重大更改甚至被移除。 因此,不得将此模块用于生产设计。 它仅包含在内用于测试目的。 |
PackbitsRLE 算子使用 packbits 算法对输入链路 I 处的图像流执行游程编码压缩 (RLE)。 Packbits 最初由 Apple 引入,是可用于 TIFF 文件无损压缩的 RLE 压缩算法之一。
Packbits 算法
光栅图像文件由一个标头(包含图像尺寸、色彩深度等信息) 和描述每个像素颜色的数据组成。 数据按顺序写入,即像素颜色信息必须被解释为从左到右、 从上到下的像素行。
在未压缩模式下,相同颜色的 n 个相邻像素的颜色信息会写入 n 次。这会导致冗余。
示例:

该图表示一个 4 像素乘 4 像素的黑白图像。 在未压缩格式中,像素表示如下(B=黑色,W=白色): BBWWWBBBBBBWWWWW 这种冗余通过 packbits 压缩得以减少。
packbits 数据流由带有单字节标头后跟数据的包组成。 标头是有符号字节。
数据用一个字节描述每个像素。如果标头包含值 n {-127 到 -1},则标头后面的字节 在解压输出中重复 -n+1 次。 因此,冗余信息(相同的像素颜色)与 Counter(标头)一起存储一次。 例如,BBBBBB 将存储为 -6B。 对于另一种颜色的第一个像素,会生成一个新的标头。
如果标头包含值 n {0 到 127},则标头后面的 n+1 个字节将保持未压缩状态(按字面意思复制)。
可以压缩的最长像素系列由 128 个字节组成。
使用 packbits 压缩后,上面的示例图像 (BBWWWBBBBBBWWWWW) 变为 -2B-3W-6B-5W,即可以用 8 个符号(字节)而不是 16 个来表示。
![]() |
效率 |
|---|---|
|
Packbits 用于灰度图像、调色板图像和双色调图像。 连续颜色相同的像素数量越多,算子压缩数据的效率就越高。 双色调(例如黑白)图像可实现最佳压缩效果。 (非常简单的)packbits 算法的优点在于其速度快,并且 对 Memory(256 字节)和处理能力的需求极低。 |

![[Caution]](../common/images/admon/caution.png)
![[重要]](../common/images/admon/important.png)

上一页

