此只能去除数据冗余,属于底层压缩编码的范畴。其压缩过程是可逆的,在压缩和解压缩的过程中没有信息量的损失,从压缩后的图像能够完全恢复到原来的图像。目前技术提供的压缩率一般在2-10之间。无损压缩的压缩效率较低,但是可以分毫不差地重现原始数据。例如Huffman编码、算术编码、行程编码、LZW编码。
有损压缩是把对最终应用确实不需要的原始数据丢弃的一种压缩技术。在压缩过程中可以丢弃的东西包括对人眼感知不需要的东西,比如不必要的尖锐边缘或者很高的分辨率等,其压缩过程是不可逆的。因此这样的压缩技术不应该用在关键性的应用中,比如医学图像。但是,在网络和商业电视等应用中却很有用,因为它能达到很高的压缩比。例如预测编码、正交变换编码、子带编码。
2.2.1 哈弗曼编码
哈弗曼编码(Huffinan encoding)是常用的压缩方法之一,它是Huffinan在研究文本文件的压缩时提出来的。它是一种无损压缩方法,通过设计合理的代码取代数据来实现的。哈弗曼编码的基本思路是用变长的码字来使冗余量达到最小,出现频率越高的像素值,其对应的编码长度越短,反之出现频率低的像素值,对应的编码长度越长。这样就可以达到用尽可能少的代码表示信源数据的目的。
哈弗曼编码的实现步骤如下:
(1)将q个信源符号S按照概率分布的大小,以递减次序排列,设
P1≥P2≥P3≥...Pq
(2)将两个概率最小的信源符号赋以1和0,并将这两个符号合并成一个新符号,并将概率相加合并成新符号的概率,得到一个新的信源S1,包含q-1个符号。
(3)对少一个信源符号的信源凡,重新排队;重复步骤(2)直至概率和达到1为止。
(4)从最后一级开始,依照编码路径由后向前返回,就得到各个信源符号所对应的码元序列,即是信源符号相应的码字。
理论研究表明,哈弗曼编码是一种接近于信源嫡的编码方法。但是哈弗曼编码也存在不足,一是它必须精确地统计原始文件中每个值的出现概率,如果没有这个精确统计,压缩的效果会打折扣,甚至达不到预期的压缩效果。而在实际应用中,由于很难事先得知信源数据中各符号发生的概率,对那些要求实时编码的工作带来很大困难。其二它对位的增删比较敏感。由于哈弗曼编码的所有码字是合在一起的,没有分位,所以如果丢失一位或者增加噪声都会使解码结果面目全非。
2.2.2 方块编码
将一副二值图像分成大小为的子块,一共有种不同排列,种不同的子块图案。然后按每子块内像素的不同排列所出现的概率不同,采用哈弗曼编码为这些子块分配不同长度的码字,概率高的分配短码字,不常出现的分配长码,使平均码长达到最短。块编码最先就是用在二值图像上,如传真图像,后来推广到灰度图像。由于设备简单,可用于实时处理或传输系统中,因此引起人们越来越广泛的重视。
但当方块尺寸大于3x3时,符合集合将迅速增大,致使霍夫曼编码的码表过于庞大而难以实际应用,因此就提出了降低复杂度的次最佳编码方法。全白的方块最常出现,因此分配最短的码字"0",而其它含有黑色像素的排列均用直接编码,如图2.1所示(空白方格表示白像素)。
图2.1 方块编码
在实际中,大多数二值图像都是白色背景占大部分,黑色像素只是占图像像素总数的很少一部分,因此分解的子快中像素为全白的概率远大于其他情况,如果跳过这些白色区域,只传输黑色像素信息,就可使得每个像素的平均比特下降。跳白块(WBS)编码正式基于这一思想提出来的。
跳白块(White Block Skipping)编码是利用二值图像以白色像素为主、黑色像素相对较少这一特点而提出的编码方法。编码方法非常简单,首先将二值图像的各扫描行分成若干块仍lock),每块包括N个像素,其中像素全为白色像素的块,称为全白块 (White Block),编码时用1比特码字"0"表示,这是因为这种全白块在所有的块中出现的概率最大,因而分配最短的一个码字。
对于至少含有一个黑像素的非全白块,用N+1比特码字表示:第一个比特为"l",称为前缀码;其余N比特采用直接编码,白像素为"0",黑像素为"l"(反过来亦可)。注意,全白块对应的1比特"0"也可看作是前缀码,只不过此时全白块的编码看成只包括前缀码。前缀码的作用是使解码器在收到一系列的比特流时能够正确的判别每个码字。使用这种编码后,原图像平均每个像素的比特数,即比特率纵为
其中,是某块为全白的概率,通过对码字的统计得到。越小,压缩性能越好。
解码时,每收到一个"1",则判断其后的N比特为直接编码,而在该N比特以外的"0"则可判断为全白块,恢复为N个"0",进而唯一地恢复原像素序列,从而完成图像的重建。
一维WBS可以推广到二维,整个图像分成若干大小为 MxN像素的块,某块为全白像素时用1比特"0"表示;非全白块用1+MN个比特码字表示:一个前缀比特"1",其余MN比特采用直接编码。
2.2.3行程编码
行程长度编码,又叫做游程编码(Run-Length Coding, RLC),它的基本思想是,当二值图像按照从左到右的扫描顺序去记录每一行时,总会交替出现出现一定数量的连续白点和连续黑点,如图2.2所示。通常把具有相同灰度值的相邻像素组成的序列成为一个游程,游程中像素的个数成为游程长度,简称游长。游程编码就是将这些不同的游程长度构成的字符串用其数值和游长数值来表示。
对图像进行编码时,首先对图像进行扫描,如果有连续的L个像素具有相同的灰度值G,则对其作行程编码后,只需传送一个数组(G, L)就可代替传送这一串像素的灰度值。图中可写成白4、黑3、白5、黑2、白3(其含义是4个白、3个黑、5个白、2个黑、3个白)。然后,再对游程进行变长编码,根据出现概率的不同分配不同长度的码字。很明显,游程长度越长,游程编码效率越高,因而特别适用于灰度等级少,灰度值变化小的二值图像。
图2.2 连续白点和连续黑点
游程编码主要应用在ITU(CCITT)为传真制定的文件传真三类机G3-维标准中,在该标准中游长的霍夫曼编码分为行程码和终止码两种,对不同长度的黑游程和白游程采用不同的编码方式,如图2.3所示。
图2.3 游程编码
2.2.4 变换编码
将原来在空间域上描述的图像信号,通过数字变换变换到变换域中。我们常常会发现,各变换系数之问的相关性明显下降,能量较为集中,这样可以根据压缩比的要求,在满足一定失真度要求的情况下进行有损压缩编码。
变换编码的过程是先对每个子像块进行正交变换,生成变换域中的系数知阵,然后进行变换、量化、编码,再存储或者传输。典型的正交变换有离散傅里叶变换(简称DFT)、离散余弦变换(简称DCT),K-L变换和沃尔什变换等。变换编码之所以在图像信号处理中得到广泛应用,主要是它具有如下特性:
(1)能量集中性与保持特性。变换编码方法最重要的特点是使能量主要集中于低频区域,使大多数变换系数为0或者很小的数。在编码时,可以舍弃能量较小的系数,或者分配很少的比特,从而实现数据的压缩。
(2)去相关性。通过变换可以使相关的空间样值变为不相关或者弱相关的变换系数,即变换编码能够消除存在相关性中的冗余度。
2.2.5 位平面编码
对1幅用多个比特表示其灰度值的图像来说,其中的每个比特可看作表示了个二值的平面,也称位面,如图2.4所示。
图2.4 位平面
位平面编码是一种将多灰度值图象分解成一系列二值图,然后对每幅二值图再用二元压缩方法进行压缩的技术。这类方法主要有两个步骤:位平面分解和位平面编码。将图像所有像素的不同
上一篇:
基于vc++开放可编程网络控制件和转发件之间通信毕业论文(2003doc)
下一篇:
小学英语作文:讨厌的蟑螂(双语)