图像压缩

数据压缩了是指减少表示给定信息量所需数据量的处理。在该定义中,数据和信息是不相同的事情;数据是信息传递的手段。因为相同数量的信息可以用不同数量的数据表示,包含不相关或重复信息的表示称之为冗余数据。二位灰度阵列受如下三种主要类型的数据冗余的影响:

1.编码冗余。

2.时间和空间冗余。

3.不相关的信息。多数二维灰度矩阵中包含有一些被人类视觉系统忽略或与用途无关的信息。

针对上述3种冗余数据进行各种编码,如霍夫曼编码、算术编码及LZW编码。

霍夫曼编码

消除编码冗余的一种最常用技术是霍夫曼编码,霍夫曼编码过程对一组符号产生最佳编码,其概率服从一次只能对一个符号进行编码的限制。利用权重构建哈夫曼树,权重最高的节点,编码最短。

Golomb编码

golomb编码主要作用在非负的整数编码,具有指数衰减概率分布的编码方法。步骤如下所示:

例子:G_{4}9(n=9,m=4)编码

步骤一:商9/4向下取整为2,二进制一元编码为110(11[2个1]+0)

步骤二:k=log_{2}4 = 2,c=2^2-4=0, r=9 % 4 = 1。 r > c, 故截断r'至2比特,故r'=01

步骤三:连接步骤一和步骤二结果:G_{4}9=11001

算术编码

算术编码的基本原理是将编码的消息表示成实数0和1之间的一个间隔(Interval),消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。消息中的每个符号根据其出现的概率来减少该区间的大小。步骤如下:

例子:ARBER

概率和出现次数如下:

字符 出现次数 概率
A 1 0.2
R 2 0.4
B 1 0.2
E 1 0.2

LZW编码

LZW编码是一种致力于图像中的空间冗余的无误差压缩方法,这种技术奖定长码子分配给变长信源符号序列。步骤如下:

例子:字符串:abaababac

步骤一:dict[a]=1,dict[b]=2,dict[c]==3

步骤二:key=P+C

步骤三:P+C (not) in dict

步骤四:循环步骤二、三

setp P C P+C P+C (not) in dict Action dict
1 NULL a a yes P=P+C  
2 a b ab no P=C dict[ab]=4
3 b a ba no P=C dict[ba]=5
4 a a aa no P=C dict[aa]=6
5 a b ab yes P=P+C  
6 ab a aba no P=C dict[aba]=7
7 a b ab yes P=P+C  
8 ab a aba yes P=P+C  
9 aba c abac no P=C dict[abac]=8
10 c NULL c no    

行程编码

行程编码是一种压缩空间冗余的无损压缩方法,其中每个行程对指定一个新灰度的开始合具有该灰度连续像素的数量,当相同元素较少时,该方面效果不好。基本原理:aaaa->a5,利用字符和数字来压缩整体空间。

符号编码

基于符号或者基于记号编码中,一幅图像被表示为多幅频繁发生的子图像集合,称为符号集合。图像中的任何一幅图像都可以用符号集合的符号表示。步骤如下:

1.将图像分割为多个符号,符号任何组合可以合成改图像。

2.将每个符号生成标记,如图b中所示。

3.遍历改图像,得到最终的三元组(前2个数子是图像坐标,后一个是符号标记)

比特平面编码

比特平面编码又称为位平面编码,位平面编码是一种通过单独地处理图像的位平面来减少像素间冗余的有效技术。它将一幅多级图像分解为一系列二值图像并采用种熟知的二值图像压缩方法对每一幅二值图像进行压缩。位平面编码分为两个步骤:位平面分解和位平面编码。

一幅m比特单色图像的灰度可以用如下形式的基2的多项式来表示:

基于上式,可以将一幅图像分解成多个多项式的m个系数分离为m个1比特的比特平面。针对每个多项式利用上述方法进行分别压缩。

块变换编码

块编码是把图像分解分成大小相等且不重叠的小块,并使用二维变换单独地处理这些块。在块变换编码中,用一种可逆线性变换(如傅立叶变换)把每个块或子图像映射为变换系数集合,然后,对这些变换系数进行量化和编码。步骤如下:

猜你喜欢

转载自blog.csdn.net/shushi6969/article/details/103152964