图像文件压缩算法浅析

2009-06-20 08:45
消费导刊 2009年9期
关键词:图像文件算法

王 平

[摘 要]通常所说的图象文件即位图(Bitmap),又称光栅图(Raster graphics),是使用像素阵列来表示的图像,每个像素的色彩信息由RGB组合或者灰度值表示。根据颜色信息所需的数据位分为1、4、8、16、24及32位等,位数越高颜色越丰富,相应的数据量越大。通常使用24位RGB组合数据位表示的的位图称为真彩色位图。图像压缩是数据压缩技术在数字图像上的应用,它的目的是减少图像数据中的冗余信息从而用更加高效的格式存储和传输数据。图像压缩可以是有损数据压缩也可以是无损数据压缩。

[关键词]图像文件(Image File) 压缩(compression) 算法(Algorithm)

作者简介:王平,男,河南经贸职业学院,工艺美术系,研究方向:电脑艺术。

电脑中的图片类型大致分为两类,位图图像和矢量图形。矢量图主要用于电脑创作的卡通图及数学上的规则图形等,而通常生活中接触较多的,如数码照片,扫描进电脑的图片都是位图。

对于矢量图来说,压缩是没有必要的,因为矢量图是通过命令来实现的,并不是以点阵的形式表现,所以无论你把他放多大,缩多小,它的命令还是那几条,根本就没有改变,而且格式也是没法改变的,如果改变格式的话将会失去矢量图的各种功能,所以本文就不讨论矢量图,主要谈谈位图的压缩技术。

对于位图的压缩,从根本上来说有两种方法:

第一种方法,格式类型转换压缩

这种途径就是利用一些技术,对图象重新编码。对于图片文件,扩展名有很多,如bmp、jpeg(jpg)、gif等等很多很多,每一种方件格式都对应一种图像的编码,在这么多编码中,jpeg技术可以达到少损(不能说无损)压缩图片,如果图片的文件扩展名是。BMP,那么就应该先用这种方式可以直接转换为扩展名是。JPG的压缩图片,压缩后的图片大小甚至不到原来的十分之一。操作方法很简单,用windowXP自带的画图板将图片打开,然后另存为的时候,把格式选择成jpg或jpeg就可以了。如果是windows2000操作系统,无法用画图板保存为jpg文件,可以在开始菜单选择程序-〉附件-〉图象处理来完成上述操作,操作方法一样。也可以用QQ的自动转换功能来转换图片格式,方法是将一幅图片发给别人,然后“右单击”QQ上显示的图片,选择另存为。那么保存后的图片便是被压缩后的图片。当然也有很多的软件都会带有这种功能,特别是需要批量处理的时候建议最好使用软件的帮助,如PhotoShop,ACDSEE。

现在最流行的技术就是采用jpeg编码压缩图片:压缩文件的基本原理是查找文件内的重复字节,并建立一个相同字节的“词典”文件,并用一个代码表示,比如在文件里有几处有一个相同的词"中华人民共和国"用一个代码表示并写入“词典”文件,这样就可以达到缩小文件的目的。

由于计算机处理的信息是以二进制数的形式表示的,因此压缩软件就是把二进制信息中相同的字符串以特殊字符标记来达到压缩的目的。为了有助于理解文件压缩,请在脑海里想象一幅蓝天白云的图片。对于成千上万单调重复的蓝色像点而言,与其一个一个定义“蓝、蓝、蓝……”长长的一串颜色,还不如告诉电脑:“从这个位置开始存储1117个蓝色像点”来得简洁,而且还能大大节约存储空间。这是一个非常简单的图像压缩的例子。其实,所有的计算机文件归根结底都是以“1”和“0”的形式存储的,和蓝色像点一样,只要通过合理的数学计算公式,文件的体积都能够被大大压缩以达到“数据无损稠密”的效果。总的来说,压缩可以分为有损和无损压缩两种。如果丢失个别的数据不会造成太大的影响,这时忽略它们是个好主意,这就是有损压缩。有损压缩广泛应用于动画、声音和图像文件中,典型的代表就是影碟文件格式mpeg、音乐文件格式mp3和图像文件格式jpg。但是更多情况下压缩数据必须准确无误,人们便设计出了无损压缩格式,比如常见的zip、rar等。压缩软件(compression software)自然就是利用压缩原理压缩数据的工具,压缩后所生成的文件称为压缩包(archive),体积只有原来的几分之一甚至更小。当然,压缩包已经是另一种文件格式了,如果想使用其中的数据,首先得用压缩软件把数据还原,这个过程称作解压缩。常见的压缩软件有winzip、winrar等。

有两种形式的重复存在于计算机数据中,zip就是对这两种重复进行了压缩。

一种是短语形式的重复,即三个字节以上的重复,对于这种重复,zip用两个数字:1。重复位置距当前压缩位置的距离;2。重复的长度,来表示这个重复,假设这两个数字各占一个字节,于是数据便得到了压缩,这很容易理解。

一个字节有 0 - 255 共 256 种可能的取值,三个字节有 256 * 256 * 256 共一千六百多万种可能的情况,更长的短语取值的可能情况以指数方式增长,出现重复的概率似乎极低,实则不然,各种类型的数据都有出现重复的倾向,一篇论文中,为数不多的术语倾向于重复出现;一篇小说,人名和地名会重复出现;一张上下渐变的背景图片,水平方向上的像素会重复出现;程序的源文件中,语法关键字会重复出现,以几十 K 为单位的非压缩格式的数据中,倾向于大量出现短语式的重复。经过上面提到的方式进行压缩后,短语式重复的倾向被完全破坏,所以在压缩的结果上进行第二次短语式压缩一般是没有效果的。

第二种重复为单字节的重复,一个字节只有256种可能的取值,所以这种重复是必然的。其中,某些字节出现次数可能较多,另一些则较少,在统计上有分布不均匀的倾向,这是容易理解的,比如一个 ASCII 文本文件中,某些符号可能很少用到,而字母和数字则使用较多,各字母的使用频率也是不一样的,据说字母 e 的使用概率最高;许多图片呈现深色调或浅色调,深色(或浅色)的像素使用较多(png 图片格式是一种无损压缩,其核心算法就是 zip 算法,它和 zip 格式的文件的主要区别在于:作为一种图片格式,它在文件头处存放了图片的大小、使用的颜色数等信息);上面提到的短语式压缩的结果也有这种倾向:重复倾向于出现在离当前压缩位置较近的地方,重复长度倾向于比较短(20字节以内)。这样,就有了压缩的可能:给 256 种字节取值重新编码,使出现较多的字节使用较短的编码,出现较少的字节使用较长的编码,这样一来,变短的字节相对于变长的字节更多,文件的总长度就会减少,并且,字节使用比例越不均匀,压缩比例就越大。

第二种方法:图片大小的调节或者叫做是分辨率的调节

这种方法其实就是改变图片的尺寸大小,一张3000*2000的照片,将其大小调整为600*400 它的大小将变为原来的 25分之1。当然就位图表示的原理还可以考虑减少图象的颜色数,但一般不这样处理。windowsXP操作系统的用户可以用系统自带的画图板进行修改,操作方法很简单,将图片用画图板打开后,在“图像”菜单里面选择“拉伸/扭曲”(或者用快捷见ctrl+w),输入要缩小的比例,最后保存图片。

目前互联网上还出了不少个人开发的专用于图片体积压缩的专门软件,如MyPhotoZip、JpegImager、ImageOptimizer等,使用它们还可以对图片进行更加精准的体积压缩,不过这些软件的使用相对会比较麻烦一点。但是采用的原理无非就是上面所说的两种方法。

图象的数字化表示使得图象信号可以高质量地传输,并便于图像的检索、分析、处理和存储。但是数字图像的表示需要大量的数据,必须进行数据的压缩。即使采用多种方法对数据进行了压缩,其数据量仍然巨大,对传输介质、传输方法和存储介质的要求较高。因此图象压缩编码技术的研究显得特别有意义,也正是由于图象压缩编码技术及传输技术的不断发展、更新,推动了现代多媒体技术应用的迅速发展。

参考文献

[1]邓鲁华,《数字图像处理》,机械工业出版社,2005

[2]DavidAForsyth,《计算机视觉 一种现代的方法》,清华大学出版社,2004

猜你喜欢
图像文件算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
算法初步两点追踪
UHS-I SD卡
图像电子文件的归档格式及其转换研究
基于增强随机搜索的OECI-ELM算法
一种改进的整周模糊度去相关算法
医学成像设备图像文件的规范性研究
“扫描”珍贵记忆