无损编码技术:算术编码、Golomb - Rice编码与游程编码
1. 算术编码
1.1 算术编码概述
算术编码是一种变长无损编码方案,在图像压缩标准中越来越受欢迎。它对于小字母表的信源更为高效,且无需存储码书。与之相比,霍夫曼编码需要存储大小为 (K^M) 的码书,其中 (K) 是信源字母表的大小,(M) 是符号长度。例如,对于一个有四个字母且符号长度为 8 的信源,需要存储的码字数量为 (4^8 = 65536) 个。
算术编码本质上是计算符号序列概率的累积分布函数(CDF),然后将得到的数值用二进制代码表示。这个二进制编码的数值被称为标签或标识符。编码器和解码器都无需存储码字,解码器可以使用标签唯一地解译编码序列。不过,解码器需要知道序列长度或有一个表示终止的特殊代码才能终止解码。
1.2 符号序列的算术编码过程
算术编码过程可分为两部分:(a)生成标签或标识符;(b)将标签表示为截断的二进制分数。假设信源有一个概率模型,即每个信源符号都有一定的出现概率。由于 CDF 介于 0 和 1 之间,标签值将位于半开区间 ([0, 1)) 内。
初始时,单位区间根据概率被划分为与信源符号数量相同的区间,每个区间的宽度对应于相应符号的概率。也可以理解为,单位区间的划分使得连续的区间对应于信源概率的 CDF。随着第一个符号的到来,该符号所在的区间会根据概率进一步划分为与信源符号数量相同的子区间,其余区间则被丢弃。第二个符号到来后,它所在的区间同样按概率划分,这个过程一直持续到序列中的最后一个符号。标签值位于最后一个区间内,该区间内的任何值都可以作为标签,一种常见的选择是使用最后一个区间的中间值。
确
超级会员免费看
订阅专栏 解锁全文
1357

被折叠的 条评论
为什么被折叠?



