天天看点

Intel IPP 之图像压缩编码

2.4 图像压缩编码

2.4.1 信息编码

数据的传输和存储都需要很大的成本,所传输数据量越大,成本就越高(因为传输的数据量大,流量就越大,耗费电力、路由等一系列计算资源的成本就越多),数据量大,存储所占的空间也就越多,成本也会越大。尽管由于成本的原因 ,有很多的数据仍然不是用最精简的方式保存的,而是用最适宜于处理这些数据的方式保存的。比如字处理软件中用ASCII的格式保存文本,因为这样处理方便;计算机的程序用二进制代码进行保存,因为其能直接在计算机上执行。和最精简的编码方式相比,这些容易直接使用和方便处理的编码方式所形成的文件大概要大一倍左右。对于很多其他的应用,精简的编码方式会更加有效,我们将解决这类问题的技术通称为数据压缩技术。

数据压缩技术就是对信息采用高效的编码,数据压缩技术中有很多种高效的压缩算法。通常每一个压缩算法,都是将数据的编码方式从容易处理的编码方式转换为较精简的编码方式,精简的方式虽然并不是最容易处理的方式,但是其所占得空间较小,传输会更快。在需要处理的时候,我们再将编码的方式转化为容易处理的方式。

图像文件的一个明显特点就是占用空间大。因此,研究图像编码与压缩是数字图像处理与图像通信中必不可少的内容。近年来,随着计算机与数字通信技术的迅速发展,网络和多媒体技术的兴起,图像编码与压缩作为数据压缩的一个分支,已受到越来越多的关注。

我们举一个实例来说明图像压缩的应用。大家知道,数字图像有不同的文件格式(编码格式),有位图形式的(bmp格式),也有JPEG格式的,我们会发现,同样大小的图像,通常JPEG文件比位图文件所占的空间要小很多,这是因为位图文件是没有对图像进行压缩的文件,而JPEG是对原始图像进行压缩后形成的文件。当需要对JPEG文件进行显示的时候,我们需要首先将其解码成位图文件(可以直接显示图像格式),然后再进行显示。

压缩的策略有很多种,有相对简单的策略,也有比较复杂的。我们可以按照信息是否在压缩的过程中存在丢失将压缩的策略分为无损压缩和有损压缩。

2.4.2 无损压缩

无损压缩的技术可以将压缩后的文件通过解码完全还原成压缩前的文件,而没有任何信息失真,无损压缩在很多情况下是必须需要保证的,比如二进制可执行文件,如果压缩过程中存在信息丢失,还原后的二进制文件即使只有一个位信息被修改(0变成1,或1变成0),造成的结果都将是不可想象的,对字处理软件所产生的文件进行压缩,同样要保证信息的无损性。在后续的章节中,我们会介绍,无算的压缩方法有行程(run-length)编码、哈弗曼编码(Huffman)、delta编码和LZW编码。这些编码的算法我们会在第三章来详细阐述。

2.4.3 有损压缩

在很多的领域,比如图像和信号领域,我们在很多的时候没有必要保存原始的数据。只要这些改变不会很大的影响我们的感知的效果,其实,在现实的测量和数字化的过程中,本来就引入了噪音数据,如(数字化过程中由于电路的噪音引起的(如温度升高会带来量化上的某些变化)),如果我们压缩的变化类似于这种噪音数据,这样的变化就是我们可以接受的。和无损压缩不同的是,有损压缩的压缩比通常会更好,越大的压缩比,噪音数据成份就会越多。我们用一个详细的实例来说明有损压缩的重要性,拿互联网上的图片来说,假设我们通过一个33.6kbps的调试解调器(modem,猫)来浏览一个具有图片的网页,如果图片没有压缩(比如TIFF格式),它会具有600kB的数据。如果用无损压缩技术(如GIF格式),数据量大约少一半,有300KB;如果采用有损压缩(如JPEG格式)技术,数据量就会减少到50KB。对应的是,我们下载的时间分别是142秒,71秒和12秒,这之间有这么大的差距,如果让一个冲浪者用142秒的时间等待一幅图片,可想而知这样的用户体验是多么的难以接受。