【摘要】 对几种无损图像压缩的方法进行了介绍、比较和分析、比较基于不同类型的图像数据,比较结果显示一种基于分片的无损编码(SLIC)方法(它属于一种区域扩散算法)在对医疗图像的压缩效果上比其它方法优越,但是它对一般通用图像的压缩效果并不是最好,这说明不同类型的图像体现不同类型的特征,针对不同类型的图像而采用相应的算法可以达到降低传输带宽和减少存储空间的效果。 而D为A和B的均方差 在图像压缩中,信噪比(SNR)通常为峰值对峰值(Peak-to-peak)信噪比(SNRp) 由于采用上述两种评定方法所得到的结果与人眼评定结果并不总是一致,主观评定也就成为不可缺少的方法。图像呈现给评定者,并让他们在1~5基础上打分。 诊断精确性评定在医疗图像中作用很重要,尤其应用在医院外科仿真如屏幕诊断等。在一系列外科诊断方法中,最常见的是ROC(Receiver Operating Characteristic),这是一种统计分析,针对不同的任务决定哪些图像压缩效果更好或更差。 除了上述提到的四种评定方法外,还可以采用另外两种方法来评价压缩方法:压缩效率和复杂度。压缩效率也经常被称为压缩比,它指的是原始图像数据与压缩图像数据的大小比率。复杂度反映了一种压缩方法的代价,它可以通过数据操作的数目来度量、如加、减,乘运算等。 对于有损压缩方法的判定,上述六种方法都可以使用,但对于有损压缩而言,比较也就只能基于压缩效率和复杂度。 本文旨在通过一组不同类型的图像(多为医疗图像)进行压缩,来比较哪一种效果更好些。文章的结构如下:第2节介绍一些图像压缩的背景知识;第3节提供一组无损图像方法:哈夫曼编码压缩,游长编码压缩,游长+哈夫曼编码压缩(R+H),算术编码压缩,LZW编码压缩,JPEG无损压缩以及SLIC压缩方法;第4节介绍了实验结果,并进行了一些阐述;第5节总结全文。 2 图像压缩的原理 对图像进行压缩可以不损失过多的视觉信息,这里主要有三个原因。首先,由于相邻像素之间的相关性,图像包含相当高的空间冗余度。其次,由于图像中不同色彩组成部分的相关性,它也包含一定程度的色谱冗余度。第三,人类视觉系统也造成了某种程度的心理视觉冗余度,从理论的角度来看,应针对图像数据中的冗余信息获得尽可能高的压缩度。 空间(统计)冗余度的存在主要在于:当所接触的图像中的像素值并非完全是随机的,它们体现了一定程度的渐进变化,人的心理视觉冗余度主要是由于人类视觉系统对某些空间频率并不敏感。典型的图像压缩系统主要由三部分组成:变换部分(Transformer)、量化部分(Quatizer)、和编码部分(Coder)。 变换部分 它体现了输入原始图像和经过变换的图像之间的一一对应关系。变换也称为去除相关,它减少了图像中的冗余信息,与输入原始图像数据相比,变换后的图像数据提供了一种更易于压缩的图像数据表示形式。 量化部分 量化部分把经过变换的图像数据作为输入进行处理后,会得到有限数目的一些符号。一般而言,这一步会带来信息的损失,而这也恰是有损压缩方法和无损压缩方法之间主要的区别。在无损压缩方法中,这一步骤并不存在,这是一个不可逆的过程,原因就在于这是多到一映射,存在有两种量化类型:标量量化与矢量量化,前者是在一个像素、一个像素的基础上量化,而后者对像素向量进行量化。 编码部分 这是压缩过程中最后一个步骤。这个部分将经过变换的系数(量化或未量化)编码为二进制位流,这个部分可以采用固定长编码,或变动长度编码,前者对所有符号赋予等长的编码,而后者则对出现频率较高的符号分配较短的编码,变动长度编码也叫熵(Entropy)编码,它能把经过变换得到的图像系数(Coefficients)数据以较短的信息总长度来表示,因而在实际应用中,多采用此类编码方式,得到的图像系数(Coefficients)数据可以一个离散随机过程S来表示。不同的系数(Coefficients)值形成一个字母表A={Ai| i=0,1,…N-1},Ai称为字母表中的一个字符,每个Ai出现的概率记为p(Ai),那么此过程的熵H(S)可以用下列公式来表示。 哈夫曼编码和算术编码为两种熵(Entropy)编码方式,虽然它们只代表上述三个步骤中的最后一个但由于这种编码方式比定长编码能达到压缩数据的方式它们当然也可以认为是无损压缩的方法。 3 算法与实现 哈夫曼编码 仙农的论文指出,存在一种对信息源编码方法,可以使编码长度与熵编码长度接近。仙农只是说明存在这样的一种算法:即对信息的编码有极限值——熵,他并未说明如何才能接近这个极限值。这个工作是由哈夫曼完成的。哈夫曼编码对由较高出现概率的符号使用较短编码,较低出现概率的符号使用较长的编码。 游长编码 游长编码利用了图像中的重复像素值,例如,一图像中往往包含许多连续的相同像素。这个方法的主要思想就在于:使用一个起始像素代表具有相同值的一连续像素串,用一整数代表这个串的长度。在实际应用中,这种方法并非总能压缩数据。对于那些具有足够多的连续像素串的图像而言。这种方法可以压缩,然而对那些在图像局部区域像素值经常发生变化的图像,这种方法会增大图像。 游长编码+哈夫曼编码 这意味着先对原始图像进行游长编码压缩,然后再对该压缩图像施用哈夫曼编码再压缩。有人认为这样一定会得到更高的压缩比率,实验结果显示在一些情况下,这种方法得到的压缩比并不如直接使用哈夫曼编码进行压缩。 算术编码 算术编码实际上是对具有变化长度的符号块分配变化长度的编码。在算术编码中有两个主要元素:每个符号的出现概率及区间0,1)。通过例子进行描述假设有4个符号00,01,10,11,相应的出现概率分别为0.1,0.3,0.4,0.2。对每个符号分配一概率区间结果为 假设有一条信息:01 11 00,在处理每个符号时与这条信息相关的区间缩小为分配给该字符的那部分区间,随着处理的进行区间变得越来越小。可以通过下述例子进行说明。 [0,0.1)[0.1,0.4)[0.40.8)[0.81.0) 01->区间 =[0.1,0.4) 11->区间 =[0.1+(0.4-0.1)×0.8,0.1+(0.4-0.1)×1.0) =[0.1+0.24,0.1+0.3) =[0.34,0.4) 00->区间 = [0.34+(0.4-0.34)×0,0.34+ (0.4-0.34)×0.1) =[0.340.34+0.006) = [0.34,0.346) 然后这条信息可以编码为区间[0.34,0.346),是在0.34,0.346)中的任何数。 LZW编码 LZW是一种基于字典算法的压缩方法。虽然这种方法到70年代后期才出现,它主要与日常生活中的很多事物类似,如在一本字典中,一个单词唯一由该单词所在的页号以及本页中的次序号决定,这样假若一个人向他人介绍所指的单词时,他只需指明页码号及次序号即可。实际上这就是一种用地址来指代信息的方法。在图像压缩中,可以采用同样的方法。一个像素序列若经常出现的话,就可以表示为一个索引信息。 JPEG无损压缩模式 JPEG标准(ISO/IEC IS 10918)定义了基于DCT的操作模式,这种模式是有损图像压缩。JPEG无损编码模式中定义了一个无损处理模式,它将一个预测过程与哈夫曼编码或算术编码相结合了。假设在一幅图像中,像素x的相邻像素a,b,c已经已知。问题就变成了如何预测x的像素值。预测可由下式给出,x的值用Px表示,可以用JPEG标准中所采用的8个方程式来进行预测。 选择值 预测 0 No prediction 1 Px=a 2 Px=b 3 Px=c 4 Px=a+b-c 5 Px=a+b-c /2 6 Px=b+a-c /2 7 Px=a+b /2 将像素的预测值与实际输入值的差距进行哈夫曼编码或算术编码就达到了压缩图像的目的。 SLIC算法 最近在IEEE期刊上有人提出了一种方法SLIC,这也是一种无损压缩的方法。其主要思想就 是先将输入的图像分解为几个不同的部分,然后再用JBIG压缩这些部分,它是一种基于康拓结构的方法(1982,Kocher and Kunt[1]),但是SLIC克服了原先存在于此类方法中的一些缺点,它引出了一种区域扩散的概念。(1)通过这个方法得到了一个不连续性图,而不是以往的产生一个康拓集;(2)基于相邻的像素差,产生一个差错图像;(3)用JBIG来对上述两个数据集合进行压缩比较有效;(4)变换处理不仅出现在区域扩散过程中,也出现在JBIG算法中。 图像在经过处理后分为三部分:差错图像数据部分,不连续索引图像数据部分和高位种子数据部分。前两个采用JBIG标准编码,第三部分不经压缩直接存储。 4 试验结果及分析 本小节的主要目的在于评价上述几种无损图像压缩算法的性能。它们被应用于16幅图像上,这组图像包含生活照片、超声波图像及医疗图像,医疗图像取自一个3D人头图像,所有图像的大小为256×256/512×512,8位像素。 总的来说,SLIC方法的图像压缩比最好,JPEG,算术,哈夫曼,游长+哈夫曼,LZW编码逐次递减。 在对三幅图的处理上,LZW实际上没有压缩图像,反而增大了图像,主要原因就在于这些图像数据由于缺少足够的重复像素值,因为LZW使用12位的索引来代替图像的8位像素值。 SLIC在对医疗图像的压缩方面,超过JPEG而称为最佳选择,但在图像Lenna(512×512)上,它的压缩比(4.9342)不如JPEG(4.6947)的好,这说明SLIC更适用于医疗图像,而并非一般图像。 对于游长+哈夫曼编码,有一点需要说明,尽管它对Lenna,Peper和超声波图像压缩效果比较好,它对于实验中采用的医疗图像压缩效果比仅采用哈夫曼编码效果差,这说明采用哈夫曼编码也可以得到很好的压缩效果,而采用将游长和哈夫曼编码结合起来的方法并不能得到较高的压缩比。
|
|