常用的无损数据压缩方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-10-11
Βιβλιοθήκη Baidu
13
6.3.2 算术编码
译码过程如下: 译码过程如下:
步 骤
1 2 3 4 5 6 7 8
2011-10-11
译码间隔
0.51439在间隔 [0.5, 0.7) 0.51439在间隔 [0.5, 0.7)的第1个1/10 0.51439在间隔[0.5, 0.52)的第7个1/10 0.51439在间隔[0.514, 0.52)的第1个1/10 0.51439在间隔[0.514, 0.5146)的第5个1/10 0.51439在间隔[0.5143, 0.51442)的第7个1/10 0.51439在间隔[0.51439, 0.5143948)的第1个1/10 译码消息:10 00 11 00 10 11 01
2011-10-11 8
6.3.2 算术编码
算术编码( 算术编码(arithmetic coding AC)是利用 )是利用0 之间的间隔来表示信源编码的一种方法, 和1之间的间隔来表示信源编码的一种方法, 之间的间隔来表示信源编码的一种方法 其编码值是间隔的上、 其编码值是间隔的上、下限包含的相同二 进制。 进制。编码过程中的间隔决定了符号压缩 后的输出。 后的输出。 算术编码用到两个基本的参数
2011-10-11 11
6.3.2 算术编码
符号 概率
2011-10-11
A 0.1
B 0.4
12
C 0.2
D 0.3 [0.7,1]
初始编码间 隔
[0,0.1) [0.1,0.5) [0.5,0.7)
6.3.2 算术编码
消息的编码输出可以是最后一个间隔中的任 意数,整个编码过程如下图所示。 意数,整个编码过程如下图所示。最后在 [0.5143876,0.514402)中选择一个数作为编码 中选择一个数作为编码 输出值: 输出值:0.51439。 。 解码时,解码器由编码输出值: 解码时,解码器由编码输出值:0.51439,可 , 马上解得一个字符为C, 马上解得一个字符为 ,然后依次得到唯一 解A,D,A,C,D,B。 。
重复步骤2、 ,直到出现的概率和为1。 重复步骤 、3,直到出现的概率和为 。 分配代码
• 代码分配从最后一步开始反向进行,对最后两个概 代码分配从最后一步开始反向进行, 一个赋予0代码 一个赋予1代码 代码, 代码。 率一个赋予 代码,一个赋予 代码。记录下从树的 根到每个信源符号终节点的0和 序列 序列。 根到每个信源符号终节点的 和1序列。
2011-10-11 15
6.3.3 行程长度编码
RLE(Run-Length Encoding)是一个针对 ( ) 包含有顺序排列的多次重复的数据的压缩 方案。 方案。其原理就是把一系列的重复值用一 个单独的值再加上一个计数值来取代, 个单独的值再加上一个计数值来取代,行 程长度就是连续且重复的单元数目 就是连续且重复的单元数目。 程长度就是连续且重复的单元数目。如果 想得到原始数据, 想得到原始数据,只需展开这个编码就可 以了。 以了。
据公式
− ∑ P( x j ) ⋅ log 2 P( x j )
j =1 n
图像信源熵为: 图像信源熵为:
H(X) = -(0.4×log20.4+0.2×log20.2+0.12×log20.12+ × × ×
0.15×log20.15+0.1×log20.1+0.03×log20.03) × × × = 2.25 bit 根据哈夫曼编码结果,平均码字长度: 根据哈夫曼编码结果,平均码字长度:
14
译 码
10 00 11 00 10 11 01
6.3.2 算术编码
在算术编码中需要注意的几个问题: 在算术编码中需要注意的几个问题: 由于计算机精度不可能无限长, 由于计算机精度不可能无限长,运算中容易出现 溢出,但多数机器都有16位 位或者64位的精 溢出,但多数机器都有 位、32位或者 位的精 位或者 因此可使用比例缩放方法解决。 度,因此可使用比例缩放方法解决。 算术编码器对整个消息只产生一个码字, 算术编码器对整个消息只产生一个码字,这个码 字是在间隔[0, 1)中的一个实数, 因此译码器在 中的一个实数, 字是在间隔 中的一个实数 接受到所有位之前不能进行译码。 接受到所有位之前不能进行译码。 算术编码也是一种对错误很敏感的编码方法,如 算术编码也是一种对错误很敏感的编码方法, 果有一位发生错误就会导致整个消息译错。 果有一位发生错误就会导致整个消息译错。
2011-10-11
19
6.3.3 行程长度编码
RLE的性能好坏主要取决于图像本身的特 的性能好坏主要取决于图像本身的特 点。RLE压缩编码尤其适用于计算机生成 压缩编码尤其适用于计算机生成 的图像, 的图像,对减少图像文件的存储空间非常 有效。 有效。 然而, 然而,由于颜色丰富的自然图像在同一行 上具有相同颜色的连续像素往往很少, 上具有相同颜色的连续像素往往很少,而 连续几行都具有相同颜色值的连续行数就 更少,如果仍然使用RLE编码方法,不仅 编码方法, 更少,如果仍然使用 编码方法 不能压缩图像数据, 不能压缩图像数据,反而可能使原来的图 像数据变得更大。 像数据变得更大。
2011-10-11
3
6.3.1 Huffman编码 编码
Huffman编码中求平均码长的方法: 编码中求平均码长的方法: 编码中求平均码长的方法
概率× 概率×码长
2011-10-11
4
6.3.1 Huffman编码 编码
Huffman编码练习一 编码练习一: 编码练习一
设输入图像的灰度级{a1,a2,a3,a4,a5,a6}出现的 出现的 设输入图像的灰度级 概率分别是0.4、 、 概率分别是 、0.2、0.12、0.15、0.1、0.03。 、 、 、 。 试进行哈夫曼编码,并计算平均码字长度 平均码字长度。 试进行哈夫曼编码,并计算平均码字长度。
2011-10-11
17
6.3.3 行程长度编码
如图所示,假定一幅灰度图像, 如图所示,假定一幅灰度图像,第n行的像 行的像 素值为: 素值为:
编码方法得到的代码为: 用RLE编码方法得到的代码为: 编码方法得到的代码为 3150841160。代码红色斜体表示的数字是 。 行程长度,后面的数字代表像素的颜色值。 行程长度,后面的数字代表像素的颜色值。 代表有连续50个像素具 例如红色斜体字50代表有连续 个像素具 代表有连续 有相同的颜色值,它的颜色值是8。 有相同的颜色值,它的颜色值是 。
2011-10-11
10
6.3.2 算术编码
如果消息序列的输入为: 如果消息序列的输入为:CADACDB,其 , 编码过程如下: 编码过程如下:
首先输入的符号是C,找到它的编码范围是[0.5, 首先输入的符号是 ,找到它的编码范围是 0.7); ; 由于消息中第2个符号 的编码范围是[0, 个符号A的编码范围是 由于消息中第 个符号 的编码范围是 0.1), , 因此它的间隔就取[0.5, 0.7 )的第一个 的第一个1/10作为 因此它的间隔就取 的第一个 作为 新间隔[0.5, 0.52 ) ; 新间隔 编码第3个符号 时取新间隔为[0.514, 0.52 ); 个符号D时取新间隔为 编码第 个符号 时取新间隔为 ; 编码第4个符号 个符号A时 取新间隔为[0.514, 编码第 个符号 时,取新间隔为 0.5146 ) ,…。 。
2011-10-11
5
Huffman编码练习一答案 编码练习一答案
1 1 0 0 0 0
1
最终编码结果为: 最终编码结果为: a1 =1, a2 =011 , a3 =001, a4 =010, a5 =0001, a6 =0000
2011-10-11
6
Huffman编码练习一答案 编码练习一答案
Lc=0.4×1+0.2×3+0.15×3+0.12×3+0.1×4+0. × × × × × 03×4 =2.33 ×
编码效率、压缩比和冗余度分别为: 编码效率、压缩比和冗余度分别为:
H 2.25 η= = = 96.6% L c 2.33
2011-10-11
96.6%、1.2、3.4% 、 、
C= 3 = 1 .2 2.33 7
2011-10-11 18
6.3.3 行程长度编码
对比RLE编码前后的代码数可以发现,在 编码前后的代码数可以发现, 对比 编码前后的代码数可以发现 编码前要用73个代码表示这一行的数据 个代码表示这一行的数据, 编码前要用 个代码表示这一行的数据, 而编码后只要用10个代码表示代表原来的 而编码后只要用 个代码表示代表原来的 73个代码,压缩前后的数据量之比约为 , 个代码, 个代码 压缩前后的数据量之比约为7:1, 即压缩比为7:1。这说明RLE确实是一种压 即压缩比为 。这说明 确实是一种压 缩技术,而且编码技术实用。 缩技术,而且编码技术实用。
2011-10-11
2
6.3.1 Huffman编码 编码
至于哪个为“ 哪个 至于哪个为“1”哪个 具体的编码步骤 则无关紧要, 为“0”则无关紧要, 则无关紧要 将信源出现的概率由大到小排序。 将信源出现的概率由大到小排序。 最后的结果仅仅是分 配的代码不同, 配的代码不同,而代 将两处最小概率组合相加,形成新概率。 将两处最小概率组合相加,形成新概率。 码的平均长度是相同 将新概率与未编码的字符一起重新排序。 将新概率与未编码的字符一起重新排序。 的。
6.3 常用的无损数据压缩方法
6.3.1 Huffman编码 编码 6.3.2 算术编码 6.3.3 行程 行程RLE编码 编码 6.3.4 词典编码
2011-10-11
1
6.3.1 Huffman编码 编码
基本原理
依据信源字符出现的概率大小来构造代码, 依据信源字符出现的概率大小来构造代码,对 出现概率较大的信源字符 给予较短码长, 的信源字符, 出现概率较大的信源字符,给予较短码长,而 对于出现概率较小的信源字符,给予较长的码 出现概率较小的信源字符 对于出现概率较小的信源字符,给予较长的码 最后使得编码的平均码字最短。 长,最后使得编码的平均码字最短。
r = 1-η = 3.4%
6.3.1 Huffman编码 编码
Huffman编码注意事项 编码注意事项
哈夫曼编码没有错误保护功能,在译码时, 哈夫曼编码没有错误保护功能,在译码时,如 果码串中没有错误, 果码串中没有错误,那么就能一个接一个的正 确译出代码。但如果码串中有错误, 确译出代码。但如果码串中有错误,哪怕仅是 1位出现错误,不但这个码本身译错,后面的 位出现错误, 位出现错误 不但这个码本身译错, 译码可能全错,这种现象称为错误传播 译码可能全错,这种现象称为错误传播 (Error Propagation)。 )。 哈夫曼编码是可变长度码, 哈夫曼编码是可变长度码,很难随意查找或调 用压缩文件中间的内容,然后再译码, 用压缩文件中间的内容,然后再译码,这就需 要在存储代码之前加以考虑。 要在存储代码之前加以考虑。
符号的概率和它的编码间隔。 符号的概率和它的编码间隔。
信源符号的概率决定压缩编码的效率, 信源符号的概率决定压缩编码的效率,也 概率决定压缩编码的效率 决定编码过程中信源符号的间隔 间隔, 决定编码过程中信源符号的间隔,而这些 间隔包含在0到 之间 之间。 间隔包含在 到1之间。
2011-10-11 9
2011-10-11
16
6.3.3 行程长度编码
例如,计算机制作图像中, 例如,计算机制作图像中,不需要存储每 一个像素的颜色值, 一个像素的颜色值,而仅存储一个像素的 颜色值以及具有相同颜色的像素数目就可 颜色值以及具有相同颜色的像素数目就可 或者存储一个像素的颜色值, 以,或者存储一个像素的颜色值,以及具 有相同颜色值的行数, 有相同颜色值的行数,这种压缩编码称为 行程编码。 行程编码。具有相同颜色的连续的像素数 目称为行程长度。 目称为行程长度。
6.3.2 算术编码
编码过程: 编码过程
设信源符号为{A, B, C, D},其概率分别为 0.1, 设信源符号为 ,其概率分别为{ 0.4, 0.2, 0.3 },按概率可把间隔 1]分成 个子 分成4个子 ,按概率可把间隔[0, 分成 间隔: 间隔:[0, 0.1), [0.1, 0.5), [0.5, 0.7), [0.7, 1],其 , 表示半开放间隔, 不包含y, 中[x,y)表示半开放间隔,即包含 不包含 ,如 表示半开放间隔 即包含x不包含 下表所示。 下表所示。 A B C D 符号 0.1 0.4 0.2 0.3 概率 初始编码间隔 [0,0.1) [0.1,0.5) [0.5,0.7) [0.7,1]