多媒体技术与应用

多媒体技术与应用

论文题目:图像压缩编码班 级:姓 名:学 号:

2010-12-09

摘要:

多媒体信息中视频、音频的数据量非常大,数据的传输、提高处理速度和节约存储空间成为多媒体的重点课题。因此数据压缩成了多媒体技术的关键技术之一。 图象和视频通常在计算机中表示后会占用非常大的空间,而出于节省硬盘空间的考虑,往往要进行压缩。同时,传输过程中,为了节省珍贵的带宽资源和节省时间,也迫切要求压缩。压缩之后,传输过程中的误码率也会相应地减少

关键字:图像、压缩、编码

正文:

1、图像压缩编码技术概述

图像的数据量非常大。为了有效地传输和存储图像,有必要压缩图像的数据量。随着现代通信技术的发展,要求传输的图像信息的种类和数据量愈来愈大。若不对此进行数据压缩,便难以推广应用。 图像数据可以进行压缩有几方面的原因。首先,原始图像数据是高度相关的,存在很大的冗余。数据冗余造成比特数浪费,消除这些冗余可以节约码字,也就是达到了数据压缩的目的。大多数图像内相邻像素之间有较大的相关性,这称为空间冗余。序列图像前后帧内相邻之间有较大的相关性,这称为时间冗余。其次,若用相同码长来表示不同出现概率的符号也会造成比特数的浪费,这种浪费称为符号编码冗余。如果采用可变长编码技术,对出现概率高的符号用短码字表示,对出现概率低的符号用长码字表示,这样就可大大消除符号编码冗余。再次,有些图像信息(如色度信息、高频信息)在通常的视感觉过程中与另外一些信息相比来说不那么重要,这些信息可以认为是心里视觉冗余,去除这些信息并不会明显地降低人眼所感受到的图像质量,因此在压缩的过程中可以去除这些人眼不敏感的信息,从而实现数据压缩。

在满足一定保真度的要求下,对图像数据的进行变换、编码和压缩,去除多余数据减少表示数字图像时需要的数据量,以便于图像的存储和传输。即以较少的数据量有损或无损地表示原来的像素矩阵的技术,也称图像编码。图像压缩编码可分为两类:一类压缩是可逆的 ,即从压缩后的数据可以完全恢复原来的图像 ,信息没有损失 ,称为无损压缩编码;另一类压缩是不可逆的 ,即从压缩后的数据无法完全恢复原来的图像 ,信息有一定损失 ,称为有损压缩编码。

2、常用图像压缩编码算法简介

图像压缩编码技术从不同的角度出发,有不同的分类方法。根据压缩过程有无信息损失,可分为有损编码和无损编码。根据压缩原理进行划分,可以分为预测编码、变换编码、统计编码等。

有损编码:有损编码又称为不可逆编码,是指对图像进行有损压缩,致使解码重新构造的图像与原始图像存在一定的失真,即丢失了了部分信息。由于允许一定的失真,这类方法能够达到较高的压缩比。有损压缩多用于数字电视、静止图像通信等领域

无损编码:无损压缩又称可逆编码,是指解压后的还原图像与原始图像完全相同,没有任何信息的损失。这类方法能够获得较高的图像质量,但所能达到的压缩比不高,常用于工业检测、医学图像、存档图像等领域的图像压缩中。

预测编码:预测编码是利用图像信号在局部空间和时间范围内的高度相关性,以已经传出的近邻像素值作为参考,预测当前像素值,然后量化、编码预测误差。预测编码广泛应用于运动图像、视频编码如数字电视、视频电话中。

变换编码:变换编码是将空域中描述的图像数据经过某种正交变换(如离散傅里叶变换DFT、离散余弦变换DCT、离散小波变换DWT等)转换到另一个变换域(频率域)中进行描述,变换后的结果是一批变换系数,然后对这些变换系数进行编码处理,从而达到压缩图像数据的目的。

统计编码:统计编码也称为熵编码,它是一类根据信息熵原理进行的信息保持型变字长编码。编码时对出现概率高的事件(被编码的符号)用短码表示,对出现概率低的事件用长码表示。在目前图像编码国际标准中,常见的熵编码方法有哈夫曼(Huffman)编码和算术编码。

3、本文实现的图像压缩编码介绍

本文运用DCT变换编码算法进行图像。

说明:以上给出的是单个彩色分量的编码、解码过程,对于彩色图像,可将多个分量分别处理 编码步骤: DCT变换

JPEG采用8X8像素的二维DCT变换,在编码器输入端把原始图像顺序分割成8X8的子块。如原始图像的采样精度为P位,是无符号整数,则将[0,2P-1]转换为[-2P-1,2P-1]的有符号整数,作为CT的输入。

解码时,经DCT逆变换后得到8X8的图像数据块,在将[-2P-1,2P-1]变回[0,2P-1],获得重构的图像

原始图像数据块经过DCT变换后,输出64个DCT变换系数,形成一个8X8矩阵,其中包含一个代表直流分量的DC系数(矩阵的左上角,代表此块的彩色分量的平均值)和63个代表交流分量的AC系数(代表该块的彩色分量的起伏变化的剧烈程度)

DCT逆变换通过这64个DCT变换系数重建这8X8图像,由于计算过程中的精度损失和量化,不可能完全恢复原始图像——有损压缩 量化:

为达到压缩数据的目的,对DCT变换系数F(u,v)进行量化处理。量化是造成图像质量下降的最主要原因。利用人的视觉特性,经过大量实验,获得了一下的量化表Q(u,v)。量化公式为

FQ(u,v)=Integer ( Round(F(u,v)/Q(u,v)) DCT系数的编码:

DCT变化系数经过量化后,直流分量DC数值比大,而且相邻的两个8X8块的DC系数有很强的相关性,变化不大, 因此采用DPCM对相邻两块的DC的差值Delta进行编码

Delta=DCi-DCi-1

DCT变换系数经过量化之后,有大量AC会变成0,采用游程编码进一步进行数据压缩。为增加编码效率,采用“Z”字形的次序来进行游程编码,可以增加连续0的个数。

4、程序实现过程中所遇压缩编码到的问题,及其解决方法

在程序实现过程中,遇到了一系列的压缩编码问题。发现在解压中出现大量异常,调试后发现输出字节中出现大量负数,分析知是读取文件字节类型时转换到整数时出错,将读到的char型强制转化为int时出错,故将其先转化为无符号char后再转为int后问题得到解决。遇到很多解压缩串码的问题,调试发现在压缩/解压缩多处有误,改正后程序运行正确。 遇到程序解码时程序卡死情况,分析出出错位置后得到解决。 遇到解压文件提前结束情况,分析得遇到1A结束,查询知:1A就是EOF。打开文件的时候指定为二进制方式后问题得到解决。

5、总结:

1、程序设计难点:

本程序的难点在于字典算法的实现及生成文件规则的制定。 2、程序设计中的不足:

本程序功能上实现了对文件的压缩,但是在物理、及时间复杂性上还有待优化。同时,还需将其进一步使用在网络通信上。 3、训练体会:

这次训练我最大的收获有两个:

其一、设计软件前一定要将核心的算法用伪代码写出来,这样会极大的避免一些在程序调试过程中的麻烦,可以省不少时间。

其二、调试软件时,遇到程序跑死情况,可以使用对程序分段标记来查找问题出处。此外,多写信息记录点也是一个良好的习惯。

联系客服:779662525#qq.com(#替换为@)