当前位置:文档之家› 图像编解码技术及应用

图像编解码技术及应用

图像编解码技术及应用1.图像编解码技术概论:在当前的图像压缩领域中常用的技术有:BMP、EPS、GIF、JPG、PDF、PIC、PNG、PSD、TIF。

上述技术间的差异主要存在于图像编解码的算法不同,通过对算法的研究可以使我们更加容易的理解图像压缩的原理。

位图格式(BMP)是在DOS时代就出现的一种元老级文件格式,因此它是DOS和WINDOWS操作系统上的标准的WINGDOWS点阵图像格式,以此文件格式存储时,采用一种非破坏性的RLE压缩,不会省略任何图像的细部信息。

EPS是最常见的线条稿共享文件格式,它是以PostScript语言为开发基础,所以EPS文件能够同时兼容矢量和点阵图形,所有的排版或图像处理软件如PageMaker或Illustrator等,都提供了读入或置入EPS格式文件的能力,而且RGB和CMYK对象也可以保有各自的原始的色彩模式。

GIF应该是在网络上最常见的一种压缩文件格式,它的英文全名Graphic Interchange format,当初研发的目的是为了最小化电缆上的传输,因此能采用LZW方式进行压缩,但可显示的颜色范围只局限于256索引色,目前所采用的GIF图形共有两种格式:87a和89a,常见于网页上建议的小动画制作,其中GIF89a还可提供透明色效果,点阵图形,灰度图形或者索引颜色模式皆可存储为此种文件格式JPG跟GIF一样为网络上最常见道的图像格式,其英文正式名称为Joint Photographic Experts Group,它是以全彩模式进行显示色彩,是目前最有效率的一种压缩格式,常用于照片或连续色调的显示,而且没有GIF去掉图像细部信息的缺点,但需要注意的是此类图像需要自行设置压缩程度,在打开时JPG 图像会自动解压缩,不过要注意的是JPG采用的压缩是破坏性的压缩,因此会在一定程度上减损图像本身的品质。

PDF是Adobe公司近几年权力推行的一种文件格式,它已Post Level2语言为其开发基础,同时可显示矢量及点阵的数码图形,同时还具有文件搜寻及网上预览的功能,即所谓电子化文件的观念,我们只要利用PageMaker或Illustrator设计完成一个出版文件,并以PDF格式输出便可发送出去,不会有分色、装订和印刷的烦恼,而且可适用相当多的平台,如Macintosh、Windows、UNIX以及DOS。

PDF文件的浏览器为Acrobat Reader。

PIC是苹果(Macintosh)操作系统的标准文件格式,以QuickDraw显示语言为开发基础,是少数可以同时支持矢量和点阵的图像类型,利用Macintosh 色彩上的优势,PIC可以支持任何颜色深度,尺寸及分辨率,甚至可支持到32位的图像。

PNG是由GIF衍生出来的一种新的图像格式,似乎有取代GIF的趋势,同样适用于网页图像显示,同时采用非破坏性的压缩方式来缩减文件大小,在传输时亦可以渐次的方式将接收到的图像显示出来,不必苦等数据传输完毕后才能一窥全貌。

PSD是Photoshop中的标准文件格式,是Adobe公司为Photoshop量身定做的定制格式,也是唯一支持Photoshop所有功能的文件类型,包括图层、通道、路径等,在存储时会进行非破坏性压缩以减少存储空间,打开时速度也较其他格式快些,在作品未定稿前强烈建议以此种文件格式存储,以便日后修改。

TIF是由Aldus公司早期所研发的一种文件格式,至今仍然是图像文件的主流格式之一,同时横跨苹果(Macintosh)和个人电脑(PC)两大操作系统平台,可以说是跨平台操作的标准文件格式,而且也广泛支持图像打印的规格,如分色的处理功能,它所使用的是一种LZW的非破坏性压缩。

遗憾的是不支持矢量图形。

2.BMP、GIF、JPEG图像编解码详解:一、行程长度压缩原理是将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替。

例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。

对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。

由RLE原理派生出许多具体行程压缩方法:1.PCX行程压缩方法: 该算法实际上是位映射格式到压缩格式的转换算法,该算法对于连续出现1次的字节Ch,若Ch>0xc0则压缩时在该字节前加上0xc1,否则直接输出Ch,对于连续出现N 次的字节Ch,则压缩成0xc0+N,Ch这两个字节,因而N最大只能为ff-c0=3fh(十进制为63),当N大于63时,则需分多次压缩。

2.BI_RLE8压缩方法:在WINDOWS的位图文件中采用了这种压缩方法。

该压缩方法编码也是以两个字节为基本单位。

其中第一个字节规定了用第二个字节指定的颜色重复次数。

如编码0504表示从当前位置开始连续显示5个颜色值为04的像素。

当第二个字节为零时第二个字节有特殊含义:0表示行末;1表示图末;2转义后面2个字节,这两个字节分别表示下一像素相对于当前位置的水平位移和垂直位移。

这种压缩方法所能压缩的图像像素位数最大为8位(256 色)图像。

3.BI_RLE压缩方法: 该方法也用于WINDOWS位图文件中,它与 BI_RLE8编码类似,唯一不同是:BI_RLE4的一个字节包含了两个像素的颜色,因此,它只能压缩的颜色数不超过16的图像。

因而这种压缩应用范围有限。

4.紧缩位压缩方法(Packbits):该方法是用于Apple公司的Macintosh机上的位图数据压缩方法,TIFF规范中使用了这种方法,这种压缩方法与BI_RLE8压缩方法相似,如1c1c1c2132325648 压缩为:83 1c 21 81 32 56 48,显而易见,这种压缩方法最好情况是每连续128个字节相同,这128个字节可压缩为一个数值7f。

这种方法还是非常有效的。

二、霍夫曼编码压缩:也是一种常用的压缩方法。

是1952年为文本文件建立的,其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同。

这些代码都是二进制码,且码的长度是可变的。

如:有一个原始数据序列,ABACCDAA则编码为A(0),B(10),C(110),(D111),压缩后为010011011011100。

产生霍夫曼编码需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中的每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。

三、LZW压缩方法LZW压缩技术比其它大多数压缩技术都复杂,压缩效率也较高。

其基本原理是把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串,如用数值0x100代替字符串"abccddeee"这样每当出现该字符串时,都用0x100代替,起到了压缩的作用。

至于0x100与字符串的对应关系则是在压缩过程中动态生成的,而且这种对应关系是隐含在压缩数据中,随着解压缩的进行这张编码表会从压缩数据中逐步得到恢复,后面的压缩数据再根据前面数据产生的对应关系产生更多的对应关系。

直到压缩文件结束为止。

LZW是可逆的,所有信息全部保留。

四、算术压缩方法算术压缩与霍夫曼编码压缩方法类似,只不过它比霍夫曼编码更加有效。

算术压缩适合于由相同的重复序列组成的文件,算术压缩接近压缩的理论极限。

这种方法,是将不同的序列映像到0到1之间的区域内,该区域表示成可变精度(位数 )的二进制小数,越不常见的数据要的精度越高(更多的位数),这种方法比较复杂,因而不太常用。

五、JPEG(联合摄影专家组 Joint Photographic Exprerts Group)JPEG标准与其它的标准不同,它定义了不兼容的编码方法,在它最常用的模式中,它是带失真的,一个从JPEG文件恢复出来的图像与原始图像总是不同的,但有损压缩重建后的图像常常比原始图像的效果更好。

JPEG的另一个显著的特点是它的压缩比例相当高,原图像大小与压缩后的图像大小相比,比例可以从1%到80~90%不等。

这种方法效果也好,适合多媒体系统。

介绍完了压缩算法,我们来简要介绍一下三种位图格式的异同和它们之间的相互转换。

2.1 BMP:图象文件就是描绘了一幅图象的计算机磁盘文件。

形成数字图象数据后,将其存储在计算机里的方法有2种,即位映射和向量处理方式。

我们这里主要讨论的是位图。

不同图象软件几乎都用各种的方法处理图象,图象格式也多种多样,它主要包括文件识别头和图象数据。

文件识别头用来让计算机判断是哪种文件格式,图象数据包含了整个对图象描绘相关数据,包括调色板、位图映象等。

根据压缩算法不同,映象方式也不同,下面简要介绍一下压缩算法。

位图文件头:包含BMP图象文件的类型、显示内容等信息。

typedef struct tagBITMAPFILEHEADER{WORD bfType;// DWORD bfSize;//位图文件的类型,必须为BM 位图文件的大小,以字节为单位WORD bfReserved1;// WORD bfReserved2;//位图文件保留字,必须为0 位图文件保留字,必须为0DWORD bfOffBits; // 位图数据的起始位置,以相对于位图文件头的偏移量表示} BITMAPFILEHEADER;0x0000H -0x0001H 2 BYTES 文件标识0x0002H - 0x0005H 4 BYTES 表示整个文件的大小little_Endian or big_Endian?0x0006H -0x0009H 4 BYTES 保留0x000AH -0x000DH 4 BYTES 位图数据的偏移量基本上就是'BM' 字节顺序是否固定必须设置为0从文件开始计算位图信息数据结构由BITMAPINFOHEADER和RGBQUAD两个数据结构组成接下来为位图信息头: typedef struct tagBITMAPINFOHEADER{ DWORD biSize;//本结构所占用字节数LONG biWidth;// LONG biHeight;// WORD biPlanes;// WORD biBitCount//位图的宽度,以像素为单位位图的高度,以像素为单位目标设备的级别,必须为1每个像素所需的位数,必须是1(双色),// 4(16色),8(256色)或24(真彩色)之一DWORD biCompression;//位图压缩类型,必须是0(不压缩), // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一DWORD biSizeImage;//位图的大小,以字节为单位LONG biXPelsPerMeter;// LONG biYPelsPerMeter;//位图水平分辨率,每米像素数位图垂直分辨率,每米像素数DWORD biClrUsed;//位图实际使用的颜色表中的颜色数DWORD biClrImportant; //} BITMAPINFOHEADER;位图显示过程中重要的颜色数其中BITMAPINFOHEADER数据结构包含了有关BMP图象的宽、高、压缩方法等信息。

相关主题