图像及图像压缩的研究

一、图片格式、应用场景

1、BMP格式 

BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。随着Windows操作系统的流行与丰富的Windows应用程序的开发,BMP位图格式理所当然地被广泛应用。

这种格式的特点是包含的图像信息较丰富,几乎不进行压缩,但由此导致了它与生俱生来的缺点--占用磁盘空间过大。所以,目前BMP在单机上比较流行。 

2、GIF格式 

GIF是英文Graphics Interchange Format(图形交换格式)的缩写。顾名思义,这种格式是用来交换图片的。事实上也是如此,上世纪80年代,美国一家著名的在线信息服务机构CompuServe针对当时网络传输带宽的限制,开发出了这种GIF图像格式。 

GIF格式的特点是压缩比高,磁盘空间占用较少,所以这种图像格式迅速得到了广泛的应用。

      最初的GIF只是简单地用来存储单幅静止图像(称为GIF87a),后来随着技术发展,可以同时存储若干幅静止图象进而形成连续的动画,使之成为当时支持2D动画为数不多的格式之一(称为GIF89a),而在GIF89a图像中可指定透明区域,使图像具有非同一般的显示效果,这更使GIF风光十足。

目前Internet上大量采用的彩色动画文件多为这种格式的文件,也称为GIF89a格式文件。 

此外,考虑到网络传输中的实际情况,GIF图像格式还增加了渐显方式,也就是说,在图像传输过程中,用户可以先看到图像的大致轮廓,然后随着传输过程的继续而逐步看清图像中的细节部分,从而适应了用户的"从朦胧到清楚"的观赏心理。

目前Internet上大量采用的彩色动画文件多为这种格式的文件。 但GIF有个小小的缺点,即不能存储超过256色的图像。尽管如此,这种格式仍在网络上大行其道应用,这和GIF图像文件短小、下载速度快、可用许多具有同样大小的图像文件组成动画等优势是分不开的。

GIF文件格式是Web页上使用最普通的图形文件格式,因此有极少数低象素的数码相机拍摄的影像文件可以该格式存储。 

3、JPEG格式 

JPEG也是常见的一种图像格式,它由联合照片专家组(Joint Photographic Experts Group)开发并以命名为"ISO 10918-1",JPEG仅仅是一种俗称而已。JPEG文件的扩展名为.jpg或.jpeg,其压缩技术十分先进,它用有损压缩方式去除冗余的图像和彩色数据,获取得极高的压缩率的同时能展现十分丰富生动的图像,换句话说,就是可以用最少的磁盘空间得到较好的图像质量。同时JPEG还是一种很灵活的格式,具有调节图像质量的功能,允许你用不同的压缩比例对这种文件压缩,比如我们最高可以把1.37MB的BMP位图文件压缩至20.3KB。当然我们完全可以在图像质量和文件尺寸之间找到平衡点。 

由于JPEG优异的品质和杰出的表现,它的应用也非常广泛,特别是在网络和光盘读物上,肯定都能找到它的影子。目前各类浏览器均支持JPEG这种图像格式,因为JPEG格式的文件尺寸较小,下载速度快,使得Web页有可能以较短的下载时间提供大量美观的图像,JPEG同时也就顺理成章地成为网络上最受欢迎的图像格式。

     JPEG图像格式是数码相机应用最多的图像存储格式。JPEG属于有损压缩,压缩比在10:1至40:1之间,在数码相机选用压缩比往往在4:1至16:1之间。压缩比越大,越可将指定影像文件压缩得越小,但图象中的细节也就会丢失得越多,在用数码相机拍摄时,选择压缩比有时令人颇为为难,一般把握的原则是:如果景物的色彩非常丰富、明暗过渡阶调多,宜选择低压缩比;用高分辨率拍摄时,可选择较高的压缩比。

JPEG格式是目前网络上最流行的图像格式,是可以把文件压缩到最小的格式,在 Photoshop软件中以JPEG格式储存时,提供13级压缩级别,以0—12级表示。其中0级压缩比最高,图像品质最差。即使采用细节几乎无损的10 级质量保存时,压缩比也可达 5:1。以BMP格式保存时得到4.28MB图像文件,在采用JPG格式保存时,其文件仅为178KB,压缩比达到24:1。经过多次比较,采用第8级压缩为存储空间与图像质量兼得的最佳比例。

4、JPEG2000格式 

JPEG 2000同样是由JPEG 组织负责制定的,它有一个正式名称叫做"ISO 15444",与JPEG相比,它具备更高压缩率以及更多新功能的新一代静态影像压缩技术。 

JPEG2000 作为JPEG的升级版,其压缩率比JPEG高约30%左右。与JPEG不同的是,JPEG2000 同时支持有损和无损压缩,而 JPEG 只能支持有损压缩。无损压缩对保存一些重要图片是十分有用的。JPEG2000的一个极其重要的特征在于它能实现渐进传输,这一点与GIF的"渐显"有异曲同工之妙,即先传输图像的轮廓,然后逐步传输数据,不断提高图像质量,让图象由朦胧到清晰显示,而不必是像现在的 JPEG 一样,由上到下慢慢显示。

此外,JPEG2000还支持所谓的"感兴趣区域"特性,你可以任意指定影像上你感兴趣区域的压缩质量,还可以选择指定的部份先解压缩。 JPEG 2000 和 JPEG 相比优势明显,且向下兼容,因此取代传统的JPEG格式指日可待。 

JPEG2000可应用于传统的JPEG市场,如扫描仪、数码相机等,亦可应用于新兴领域,如网路传输、无线通讯等等。

   

5、TIFF格式 

TIFF(Tag Image File Format)是Mac中广泛使用的图像格式,它由Aldus和微软联合开发,最初是出于跨平台存储扫描图像的需要而设计的。它的特点是图像格式复杂、存贮信息多。正因为它存储的图像细微层次的信息非常多,图像的质量也得以提高,故而非常有利于原稿的复制。

       该格式有压缩和非压缩二种形式,其中压缩可采用LZW无损压缩方案存储。不过,由于TIFF格式结构较为复杂,兼容性较差,因此有时你的软件可能不能正确识别TIFF文件(现在绝大部分软件都已解决了这个问题)。目前在Mac和PC机上移植TIFF文件也十分便捷,因而TIFF现在也是微机上使用最广泛的图像文件格式之一。

TIFF(.TIF)是一种无损压缩的文件格式,不会破坏任何图象数据,更不会劣化图象质量,但压缩比非常小,只有2:1,这种压缩方式仅出现于较高档的数码相机,柯达DCS 520、DCS 560、DCS620、DCS660、佳能EOS D2000、EOS D6000等专业数码相机拍摄存储影像文件,都采用该格式。

6、PSD格式 

这是著名的Adobe公司的图像处理软件Photoshop的专用格式Photoshop Document(PSD)。PSD其实是Photoshop进行平面设计的一张"草稿图",它里面包含有各种图层、通道、遮罩等多种设计的样稿,以便于下次打开文件时可以修改上一次的设计。

  在Photoshop所支持的各种图像格式中,PSD的存取速度比其它格式快很多,功能也很强大。由于Photoshop越来越被广泛地应用,所以我们有理由相信,这种格式也会逐步流行起来。 

7、PNG格式 

PNG(Portable Network Graphics)是一种新兴的网络图像格式。在1994年底,由于Unysis公司宣布GIF拥有专利的压缩方法,要求开发GIF软件的作者须缴交一定费用,由此促使免费的png图像格式的诞生。PNG一开始便结合GIF及JPG两家之长,打算一举取代这两种格式。1996年10月1日由PNG向国际网络联盟提出并得到推荐认可标准,并且大部分绘图软件和浏览器开始支持PNG图像浏览,从此PNG图像格式生机焕发。

PNG是目前保证最不失真的格式,它汲取了GIF和JPG二者的优点,存贮形式丰富,兼有GIF和JPG的色彩模式;它的另一个特点能把图像文件压缩到极限以利于网络传输,但又能保留所有与图像品质有关的信息,因为PNG是采用无损压缩方式来减少文件的大小,这一点与牺牲图像品质以换取高压缩率的JPG有所不同;它的第三个特点是显示速度很快,只需下载1/64的图像信息就可以显示出低分辨率的预览图像;第四,PNG同样支持透明图像的制作,透明图像在制作网页图像的时候很有用,我们可以把图象背景设为透明,用网页本身的颜色信息来代替设为透明的色彩,这样可让图像和网页背景很和谐地融合在一起。

PNG的缺点是不支持动画应用效果,如果在这方面能有所加强,简直就可以完全替代GIF和JPEG了。Macromedia公司的Fireworks软件的默认格式就是PNG。现在,越来越多的软件开始支持这一格式,而且在网络上也越来截止流行。、

8、SWF格式 

利用Flash我们可以制作出一种后缀名为SWF(Shockwave Format)的动画,这种格式的动画图像能够用比较小的体积来表现丰富的多媒体形式。

  在图像的传输方面,不必等到文件全部下载才能观看,而是可以边下载边看,因此特别适合网络传输,特别是在传输速率不佳的情况下,也能取得较好的效果。事实也证明了这一点,SWF如今已被大量应用于WEB网页进行多媒体演示与交互性设计。此外,SWF动画是其于矢量技术制作的,因此不管将画面放大多少倍,画面不会因此而有任何损害。

     综上,SWF格式作品以其高清晰度的画质和小巧的体积,受到了越来越多网页设计者的青睐,也越来越成为网页动画和网页图片设计制作的主流,目前已成为网上动画的事实标准。 

9、SVG格式 

SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。

     它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有互交功能,并可以随时插入到HTML中通过浏览器来观看。 

它提供了目前网络流行格式GIF和JPEG无法具备了优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;只在SVG图像中保留可编辑和可搜寻的状态;平均来讲,SVG文件比JPEG和GIF格式的文件要小很多,因而下载也很快。可以相信,SVG的开发将会为Web提供新的图像标准。

10、Webp格式

WebP (发音"weppy"),是一种同时提供了有损压缩与无损压缩的图片文件格式,派生自图像编码格式VP8 。是由Google购买On2 Technologies后发展出来的格式,以BSD授权条款发布。

WebP是Google新推出的影像技术,它可让网页图档有效进行压缩,同时又不影响图片格式兼容与实际清晰度,进而让整体网页下载速度加快。

由于目前互联网上传输的数据有65%都是图片,WebP就是出于减少数据量、加速网络传输的目的而开发的。为了改善JPEG的图片压缩技术,他们使用了一种基于VP8编码(已在2010五月开源)的图片压缩器,利用预测编码技术,同时还采用了一种基于RIFF的非常轻量级的容器。这种容器只会给每张图片增加20字节,但能让图片作者保存他们想要存储的元数据。

与JPEG相同,WebP是一种有损压缩利用预测编码技术。但谷歌表示,这种格式的主要优势在于高效率。他们发现,“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%。

目前, Google放出了WebP文件解码器(libvpx)和命令行工具(webpconv),用于JPEG等格式图片与WebP格式之间的转换,不过系统支持暂时仅限Linux,Windows版本将在稍后推出。

WebP团队还在开发WebKit内核补丁,用于在Google Chrome浏览器中提供对WebP格式的原生支持。

美中不足的是,WebP格式图像的编码时间“比JPEG格式图像长8倍”。

分析人士认为,尽管WebP格式尚未像JPEG格式那样,得到各种软硬件的广泛支持,但谷歌推广这一格式的优势在于Chrome浏览器。这款谷歌开发的浏览器的市场份额已达10%以上。

其它非主流图像格式: 

1、PCX格式 

PCX格式是ZSOFT公司在开发图像处理软件Paintbrush时开发的一种格式,这是一种经过压缩的格式,占用磁盘空间较少。由于该格式出现的时间较长,并且具有压缩及全彩色的能力,所以现在仍比较流行。   

2、DXF格式 

DXF(Autodesk Drawing Exchange Format)是AutoCAD中的矢量文件格式,它以ASCII码方式存储文件,在表现图形的大小方面十分精确。许多软件都支持DXF格式的输入与输出。 

3、WMF格式 

WMF(Windows Metafile Format)是Windows中常见的一种图元文件格式,属于矢量文件格式。它具有文件短小、图案造型化的特点,整个图形常由各个独立的组成部分拼接而成,其图形往往较粗糙。 

4、EMF格式 

EMF(Enhanced Metafile)是微软公司为了弥补使用WMF的不足而开发的一种Windows 32位扩展图元文件格式,也属于矢量文件格式,其目的是欲使图元文件更加容易接受 。

5、LIC(FLI/FLC)格式 

Flic格式由Autodesk公司研制而成,FLIC是FLC和FLI的统称:FLI是最初的基于320×200分辨率的动画文件格式,而FLC则采用了更高效的数据压缩技术,所以具有比FLI更高的压缩比,其分辨率也有了不少提高。  

6、EPS格式 

EPS(Encapsulated PostScript)是PC机用户较少见的一种格式,而苹果Mac机的用户则用得较多。它是用PostScript语言描述的一种ASCII码文件格式,主要用于排版、打印等输出工作。 

7、TGA格式 

TGA(Tagged Graphics)文件是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形、图像工业所接受。TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有着很大影响,是计算机生成图像向电视转换的一种首选格式。

8、Flash Pix格式

Flash Pix是由柯达、INTEL等公司联合开发的一种图象存储模式(.FPX),广泛应用于柯达轻便数码相机,与其它格式相比,该格式的影像在支持Flash Pix的图象处理软件中,具有显示快、复制快、传输快、加工快的优点,该格式下还记录快门速度、曝光、白平衡调整等信息。在一些数码相机上,以Flash Pix格式存储影像时,还可以选择是否使用JPEG压缩。

9、MPEG格式

MPEG(Motion Picture Expert Group)是活动视频影像压缩标准,VCD、DVD分别采用其中的MPEG-1、MPEG-2标准,这标准也被极少数兼具摄像功能的数码相机采用,将数码相机处于该格式下拍摄存储,所拍摄影像可动态播出。

二、图像压缩算法

1、基于信息论角度

  • 冗余度压缩方法:(无损压缩)在数学上可逆:哈夫曼编码、算术编码、行程编码、Lempel-zev 编码
  • 信息量压缩方法:(有损压缩)解码图像与原始图像有差:预测编码、频率域方法(正交变换编码如DCT、子带编码)、空间域方法(统计分块编码)、模型方法(分形编码、模型编码)、基于重要性(粒子、子采样、比特分配、矢量量化)
  • 图像及图像压缩的研究_第1张图片

2、按照压缩技术所依据和使用的数学方法进行分类

  • 预测编码:基本思想是根据数据统计特性得到预测值,然后传输图像像素与其预测值的差值信号,使传输的码率降低,达到压缩的目的。
  • 统计编码:主要针对无记忆信源,根据信息码字出现概率的分布特征而进行压缩编码,寻找概率与码字长度间的最优匹配,其编码的实质就是用短码来表示较大的码字,而用长码表示出现概率较小的码字。常用的有:行程编码、哈夫曼编码和算术编码三种。
  • 变换编码:基本思想是利用图像块内像素之间的相关性,把图像变换到一组新的基(一般是频率域)上,使得能量集中到少数几个变换系数上,通过存储这些系数达到压缩数据的目的。常用的有:DCT、整数DCT、小波变换。

3、具体算法

(1)统计编码之哈夫曼编码

  • 基本原理:将使用次数多的代码转换为长度较短的代码,而是用次数少的可以使用较长的编码,并保持编码的唯一可解性。
  • 基本原则:保证权值和最小(字符统计数字x字符编码长度之和)
  • 基本步骤:(1) 从左到右将信源符号频率从小到大的顺序排列 (2)将将两个最小概率进行组合相加,并继续这个步骤,始终将较高的概率分支放到上部,直到概率达到1为止 (3)对每对组合中上边的一个都指定为1,下边的一个指定为0,或者相反。(4)画出由每个信源符号到达概率为1.0处的路径,记下沿路径遇到的各个1和0。(5)对每个信源符号都写出1和0序列,则最后便得到了哈夫曼编码。

(2)统计编码之算术编码

  • 基本原理:算术编码的基本原理是将编码的消息表示成实数0和1之间的一个间隔,消息越长,编码表示它的间隔就越小,表示这一间隔所需的二进制位就越多。 算术编码用到两个基本的参数:符号的概率和它的编码间隔。
  • 算术编码是一种无失真的编码方法,能有效地压缩信源冗余度,属于熵编码的一种。算术编码的一个重要特点就是可以按分数比特逼近信源熵,突破了Haffman编码每个符号只不过能按整数个比特逼近信源熵的限制。对信源进行算术编码,往往需要两个过程,第一个过程是建立信源概率表,第二个过程是对信源发出的符号序列进行扫描编码。而自适应算术编码在对符号序列进行扫描的过程中,可一次完成上述两个过程,即根据恰当的概率估计模型和当前符号序列中各符号出现的频率,自适应地调整各符号的概率估计值,同时完成编码。尽管从编码效率上看不如已知概率表的情况,但正是由于自适应算术编码具有实时性好、灵活性高、适应性强等特点,在图像压缩、视频图像编码等领域都得到了广泛的应用。

(3)统计编码之行程编码

  • 基本原理:将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e。如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。
  • 行程编码的可行性讨论:行程编码的压缩方法对于自然图片来说是不太可行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编码方法来编码就适得其反,图像体积不但没减少,反而加倍。鉴于计算机桌面图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像来说是一种较好的编码方法。行程编码算法特点:有算法简单、无损压缩、运行速度快、消耗资源少等优点。
  • 大致方法:遍历所有像素点,一行一行的。从第一个开始,如果下一个相同,则num++,直到下一个不同值开始,等等。
  • RLE算法

图像及图像压缩的研究_第2张图片

从图中我们可以看出,AAAAAABBCDDEEEEEF 的17个字符成功被压缩成A6B2C1D2E5F1的12个字符,也就是12/ 17 = 70%,压缩比为70%,压缩成功了。

像这样,把文件内容用数据*重复次数的形式来表示的压缩方法成为RLE(Run Length Encoding, 行程长度编码)算法。RLE算法是一种很好的压缩方法,经常用于压缩传真的图像等。因为图像文件的本质也是字节数据的集合体,所以可以用RLE算法进行压缩。

  • RLE算法的缺点

RLE的压缩机制比较简单,所以RLE算法的程序也比较容易编写,所以使用RLE的这种方式更能让你体会到压缩思想,但是RLE只针对特定序列的数据管用。使用RLE对文本文件进行压缩后的数据很可能不但没有减小反而增大了!甚至是压缩前的两倍!因为文本字符种连续的字符并不多见。RLE 算法只针对连续的字节序列压缩效果比较好。

(4)预测编码之差分脉冲编码调制编码(DPCM)

  • DPCM是differential pulse code modulation的缩写,也就是差分脉冲编码调制的意思。他的主要思想是通过已知的数据预测下一个数据,然后传递预测值与实际值之间的差值。
  • 图像及图像压缩的研究_第3张图片

    如果直接使用DPCM进行编码的话,是得不到什么压缩的效率的。缘故是,需要传输或保存的是预测值后的值与实际值之间的差值,这与原来的数据占用同样的空间。为了满足我们原始的压缩数据的动机,你可以对这些差值进行各种各样的编码。因为,大部分情况下,差值都是像1,1,1,2,3,5,5,5之类的数。可以对它们进行通常的游程编码或者huffman编码,运气好的话能够得到很大的压缩比。这样做会有一个很大的弊端。因为有些数据可能之间的联系会呈线性或者某种连续函数的性质。但是大部分情况下,数据的分布还是有一定的离散性的。当数据之间出现很大的跳跃的时候,这种方法就显得很苍白无力了。我们可以这么做,每次对得到的差值用一个随着差值大小变化的数来除。这样就可以随着差值的变化,不断调整比例因子。这样出现较大的跳跃时也能把我们要存储的差值限定在一个较小的范围之内。
  • E.G. :假设差值是 diff,也就是 diff = X~i - Xi,那么,diff就有可能变动很大,如果引入一个不断变化的因子iDelta,那么,diff’ = diff / iDelta,而对于iDelta,每当diff变大的时候,他就变大比较大,当diff变得比较小的时候,他就相应的减小。这样,我们的diff’就能保持相对的稳定了。通过iDelta的引入,可以使得我们的DPCM编码自动的适应数据间大幅度的跳跃。这就是自适应脉冲编码调制,ADPCM的主要思想。
  • iDelta到底怎么变化,才能自动的匹配diff的变化?

一种可行的方法就是,把它定义为diff的一个函数,这个函数根据不同的diff的值的大小取不同大小的值。通常我们会做一个iDelta值的表,通过diff作为索引,这样,就可以根据不同的diff值,iDelta就可以作相应的变化了。

(5)预测编码之运动补偿

主要用于视频图像编码中,是一种描述相邻帧差别的方法,具体来讲是指描述前面一帧的每个小块怎样移动到当前帧中的某个位置去。常用来被视频压缩/视频编码解码器用来减少视频序列中的空域冗余。通常,图像帧是一组一组进行处理的。每组的第一帧在编码时不使用运动估计得方法,这种帧成为帧内编码帧,或I帧。该组中其他帧使用帧间编码帧,通常为P帧,这种编码方式成为IPPPP,表示编码的时候第一帧是I帧,其他帧是P帧。在进行预测的时候,不仅仅可以根据过去帧预测当前帧,还可以使用未来帧预测当前帧。即编码的顺序和播放的顺序是可以不同的。通常,这样的当前帧是使用过去和未来的I帧或者P帧同时进行预测的,成为双向预测帧即B帧。如:IBBPBBPBBPBB

(6)预测编码之增量调制编码

模拟信号数字化方法:一种把信号上的采样值作为预测值的单纯预测编码方式,是最简单的预测编码方式之一。将信号瞬时值与前一抽样时刻的量化值之差进行量化,而且只对差值的符号进行编码,不对大小编码。因此量化只限于正和负两个电平。接收端每收到一个“1”码,译码器的输出相对于前一个时刻上升一个量阶,当收到连“1”码时,表示信号持续增长。反之亦然。译码器的输出再经过低通滤波器滤除高频量化噪声,从而恢复原始信号。只要抽样频率足够高,量化阶矩大小适当,接收端的信号与原始信号就非常接近。

(7)变换编码之主成分变换(KLT)

  • KLT的基本原理:假设一幅图像在某个通信信道中传输了M次,由于任何物理信道均存在随即干扰因素,接收到的图像系列总混杂有许多随机干扰信号,称之为随机图像集合,集合中各图象之间存在相关性但又不相等。
  • KLT本质上市针对这类广泛的随机图像提出来,当对M个图像施加了KLT以后,变换后的M新图像组成的集合中各图象之间互不相关。由变换结果图像集中取有限个图像K(K

(8)变换编码之离散余弦变换(DCT)

JPEG图像格式的压缩算法采用的就是DCT。从原理上讲,可以对整幅图像进行DCT变换。但由于图像各个部分上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8x8或16x16的块,然后对每个图像块进行二维DCT变换,接着在对DCT系数进行量化,编码和传输,接受者通过对量化的DCT系数进行解码,并对图像块进行二维DCT反变换,最后拼接起来构成一幅完整的图像。对于一般的图像来讲,大多数的系数近似为0。所以,可以忽略之,并不影响效果。

(9)变换编码之小波变换

JPEG2000静态图像编码标准中的图像变换技术就采用了离散小波变换。最大的特点是在不丢失重要信息的同时,能以比较高的比率压缩图像,并且算法计算量小。

  • 基本原理:小波的图像分解思想是属于子带分解的一个特例。这个小波分解是完备的、正交的,且多分辨率的分解。在空间域里,小波分解将信号分解为不同层次分解运算的同时形成了频率域中的多层次分解。在频率域中的每个层次上,高频分量与低频分量的分布与原数据中频率分布的方向有关。利用小波变换对图像进行压缩的原理与子带编码方法一样,是将原图像信号分解成不同的频率区域,持续的压缩编码方法根据人的视觉、图像的统计、细节和结构等特性,对不同的频率区域采取不同的压缩编码手段,从而使数据量减少。利用小波变换进行图像压缩一般采用离散小波变换编码的方法。图像压缩中所用的离散正交小波一般是由滤波函数构造的。对于给定的数字信号矩阵,将其分解为一个高通的和一个低通的子信号,且两者是相互正交的。在必要时可以递归地对每一个子信号分下去,一直到需要的带宽为止,然后进行分析和运算。
  • 小波变换分析用于图像数据压缩主要有以下特征:小波变换编码方式仍属于分波段编码,是子带编码的改进型。这是因为大多数语音和图像信号倾向于非均匀频谱,只集中在某一时间段的某一频段,小波包基表示信号时正好有这种自适应性,可通过选定一个阈值将这此时间段和频段的相应系数保留编码而丢弃其他时间段和频段上的小幅值的系数;其次,小波包基的每次分解都把信号分成低频和高频两部分,而多数的语音和图像信号的统计特性表明大幅值的系数往往集中在低频区内,这样可给那些小幅值系数分配很少的比特数,甚至可以不传输或存储,从而压缩了数据。
  • 具体编码方法应用:小波(wavelet)变换作为20世纪80年代中期出现的新时频域信号分析工具。自1989年Mallat首次将小波变换引入图像处理以来,小波变换以其优异的时频局部能力及良好的去相关能力在图像压缩编码领域得到了广泛应用,并取得了良好的效果,其中, 由Shen 等提出的CEZW (color embeddedzerotree wavelet)算法及由Saenz等提出的CZW(color zerotree wavelet)算法被认为是目前国际上比较优秀的彩色图像压缩方法,它们均以著名的嵌入零树小波( embedded zerotree wavelet, 简记为EZW)编码思想为基础,其不仅结构简单无需任何训练、支持多码率,而且具有较高的信噪比和较好的图像复原质量。
  • 算法也存在一些不足,具体表现为:

(1)未能结合人眼视觉掩蔽特性进行系数量化;

(2)构造零树结构时,未能充分利用彩色分量之间的相关特性;

(3)未单独处理最低频子带;

(4)未能依据图像内容确定高频子带扫描次序。

(10)Lempel-Ziv算法

Lempel-Ziv,简称LZ, 拥有LZ77, LZ78, LZW几种不同的演变算法!LZ是一种典型的字典型压缩算法, 巧妙的利用字典, 减少信息量。

  • E.G.:

原始编码为: 101011011010101011

现在有空字典一个, 首先由第一的bit开始, 索引1对应1,因为字典中没有0这个元素, 所以索引2对应0, 第三个bit, 1已经出现在字典中, 我们推后一位10,没有出现在字典中,因此索引为3加入字典。 以此类推!

索引最终用二进制方式表示, 我们得到1,0,10,11,01,101,010,1011这8个字典项, 用3位码可以表示, LZ扩展了一位已表示各个元素间关系。 如下表就是一个完整的字典:

 位置

 内容

 编码

 001

 1

0001 

 010

 0

 0000

 011

 10

 0010

 100

 11

 0011

 101

 01

 0101

 110

 101

 0111

 111

 010

 1010

 1011

1101 

如上所示, 对应的编码是叠加的内容10, 1的位置为001, 10为001+0=0010, 以此类推!

在实际应用中, 使用的是LZ77, LZ78之类的算法。使用的是即时编码的方式,一边编码一边加入字典。

  • LZW算法

(1)LZW压缩算法

LZW算法基于转换串表(字典)T,将输入字符串映射成定长(通常为12位)的码字。在12位4096种可能的代码中,256个代表单字符,剩下3840给出现的字符串。LZW字典中的字符串具有前缀性,即 ωK∈T=>;ω!∈T。

LZW算法流程:

步骤1: 开始时的词典包含所有可能的根(Root),而当前前缀P是空的;
  步骤2: 当前字符(C) :=字符流中的下一个字符;
  步骤3: 判断缀-符串P+C是否在词典中
      (1) 如果“是”:P := P+C // (用C扩展P) ;
      (2) 如果“否”
          ① 把代表当前前缀P的码字输出到码字流;
          ② 把缀-符串P+C添加到词典;
          ③ 令P := C //(现在的P仅包含一个字符C);
  步骤4: 判断码字流中是否还有码字要译
      (1) 如果“是”,就返回到步骤2;
      (2) 如果“否”
          ① 把代表当前前缀P的码字输出到码字流;
          ② 结束。
  (2)LZW解压算法

具体解压步骤如下:

(1)译码开始时Dictionary包含所有的根。

(2)读入在编码数据流中的第一个码字 cW(它表示一个Root)。

(3)输出String.cW到字符数据流Charstream。

(4)使pW=cW 。

(5)读入编码数 据流 的下一个码字cW 。

(6)目前在字典中有String.cW吗?

        YES:1)将String.cW输出给字符数据流;

                   2)使P=String.pW;

                   3)使C=String.cW的第一个字符;

                   4)将字符 串P+C添 加进Dictionray。

        NO :1)使P=String.pW ;

                  2)使C=String.pW的第一个字符;

                  3)将字符串P+C输出到字符数据流并将其添加进Dictionray(现在它         与cW相一致)。

(7)在编码数据 流中还有Codeword吗?

        YES:返回(4)继 续进行 译码 。

        NO:结束译码 。

        

你可能感兴趣的:(windows)