当前位置:文档之家› 图像处理Microsoft Word 文档 (2)

图像处理Microsoft Word 文档 (2)

图像处理Microsoft Word 文档 (2)
图像处理Microsoft Word 文档 (2)

目录

摘要.................................................. I ABSTRACT ............................................. II 前言.. (1)

1 图像压缩编码 (2)

1.1数字图像处理 (2)

1.2图像压缩编码的发展、现状及前景 (2)

1.3图像压缩编码的必要性和可能性 (3)

1.4图像压缩编码的方法 (3)

1.4.1 图像压缩编码方法的简介 (3)

1.4.2 无损压缩 (4)

1.4.3 有损压缩 (6)

1.5处理后图像性能的衡量指标 (7)

2 离散余弦变换DCT (8)

2.1DCT的基本原理 (8)

2.2DCT的定义 (8)

2.3DCT的算法 (9)

2.4DCT变换矩阵方法与基于FFT的快速算法DCT的比较 (10)

2.52D-DCT与2D-FFT的比较 (14)

2.6各种正交变换的比较 (15)

2.7DCT的研究展望 (16)

3 DCT图像压缩 (19)

3.1DCT图像压缩的原理 (19)

3.2DCT图像压缩的模型 (20)

3.3DCT图像压缩的方法 (20)

3.4DCT系数的量化 (23)

3.5Z IG-Z AG 扫描 (25)

3.6基于DCT编码的新进展 (26)

3.6.1 RS-DCT编码的进展 (27)

3.6.2 整型DCT编码的进展 (27)

3.6.3 若干改进的DCT编码比较 (28)

4 仿真及分析 (29)

4.1DCT图像压缩 (29)

4.2DCT与DWT的比较 (30)

5 小结 (33)

致谢 (34)

参考文献: (35)

附录: (36)

英语原文: (48)

中文翻译: (56)

摘要

影像风暴已经席卷我们的生活,人们对计算机实时处理图像信息的要求越来越高。如何在保证图像质量的前提下,同时兼顾实时性和高效性就成了一个值得关注的问题。于是,对图像信息进行一定的压缩处理成为了一个不可或缺的环节。

本文在分析对比近年来图像压缩一般方法的基础上,了解了基于DCT变换的图像压缩的基本原理及其实现步骤。简单介绍了图像压缩的原理与发展现状,深入分析了DCT变换算法并与其它的压缩方法作进一步的比较,提出了采用DCT变换压缩的依据。图像压缩过程的最后步骤是编码量化了的图像。在此,我采用的是Huffman编码方法。并使用MATLAB6.5实现DCT图像压缩的仿真。

仿真结果表明,用MATLAB来实现离散余弦变换的图像压缩,具有方法简单、速度快、误差小的优点,大大提高了图像压缩的效率和精度。

【关键词】DCT变换图像压缩MATLAB仿真

【论文类型】理论研究软件设计

ABSTRACT

With the popularization of images in our lives, many people demand that computer should deal with the information of images better for real-time. How to give consideration to real-time and higher efficiency with high quality of images compression is worth for taking attention to. Hence, it is an important progress for compress images.

In this paper, it shows basic principle and progress of images compression based on DCT, that compare to any other methods of images compression in the past few years. In the meantime, it simply introduces the principle and development of images compression, deeply analyzes the DCT algorithm and compares it with other compression methods further, makes foundation about using DCT to compress. Coding the image quantization is the final step of image compression process, and I use Huffman coding method in here. I use function and orders of MATLAB image procession toolbox, for simulating DCT image compression.

Much simulation experiments show that using MATLAB to achieve Image Compression based on DCT is simple, rapid and with little error. It can improve the efficiency and precision of the image compression greatly.

【Key words】DCT transform Image compression Simulation by MATLAB

【Type of Thesis】theory research software design

前言

如今,人类已步入信息化社会,新信息技术革命使人类被日益增多的多媒体信息所包围,这也正好迎合了人类对提高视觉信息的需求。多媒体信息主要有三种形式:文本、声音和图像。从信息传输的发展史(电报、电话、传真、收音机、电视机直至现在的网络)可以看出,人们逐渐将信息传输的重点从声音转向图像,然而图像是三种信息形式中数据量最大的,这给图像的传输和存储带来了极大的困难,已经成为图像通信发展中的瓶颈。图像的数字化表示使得图像信号可以高质量地传输,并便于图像的检索、分析、处理和存储。但是数字图像的表示需要大量的数据,必须进行数据的压缩。即使采用多种方法对数据进行压缩,其数据量仍然巨大,对传输介质、传输方法和存储介质的要求较高。因而快速的图像压缩编码技术,对于许多以图像数据为基础的应用场合具有非常重要的意义。也正是由于图像压缩编码技术及传输技术的不断发展、更新,推动了现代多媒体技术应用的迅速发展。图像压缩技术的应用为传真、视频点播、电视会议、医用图像传输等领域带来了巨大经济效益。

在计算机数字图像文件常用格式中,目前常用的图像文件格式有十几种,其中作为

静止图像压缩编码技术国际标准推出的JPEG格式由于占用空间小,图像质量高,而为用户广泛采用。在JPEG各类图像压缩算法中,基于离散余弦变换(DCT ,Discrete Cosine Transform) 的图像压缩编码过程称为基本顺序过程,它应用于绝大多数图像压缩场合,并且它能在图像的压缩操作中获得较高的压缩比。另外,重构图像与源图像的视觉效果基本相同。DCT变换是在最小均方误差条件下得出的最佳正交变换,且已获得广泛应用,并成为许多图像编码国际标准的核心。DCT变换的变换核心为余弦函数,计算速度较快,有利于图像压缩和其他处理。

MATLAB是由美国Math2Works公司推出的用于数值计算和图形处理的科学计算软件,它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面,友好的用户环境。本文主要应用MATLAB6.5中发布的影像处理工具箱中的相关函数和命令来实现基于DCT的图像压缩编码理论算法的仿真。

1 图像压缩编码

1.1 数字图像处理

数字图像处理是利用计算机(或数字技术)对图像信息进行加工处理,以改善图像质量、压缩图像数据或从图像数据中获取更多信息。

数字图像处理的主要方法可分为两大类:空域法和变换域法。

a. 空域法

把图像看作是平面中各个象素组成的集合,然后直接对这个二维函数进行相应的处理。

b. 频域法(变换域法)

首先对图像进行正交变换,得到变换域系数阵列,然后再实行各种处理,处理后再反变换到空间域,得到处理结果。这类处理包括:滤波、数据压缩和特征提取等。1.2 图像压缩编码的发展、现状及前景

自1984年提出电视信号数字化,同时就开始了对图像压缩编码的研究工作,至今已有40多年的历史。开始时,即50和60年代,限于客观条件,仅对帧内预测法和亚取样内插复原法进行研究,对视觉特性也做了一些极为有限但可贵的工作。1966年J.B.O Neal对比分析了DPCM和PCM并提出了用于电视的实验数据。1969年进行了线性预测编码的实际试验。1969年举行首届图像编码会议(Picture Coding Symposium)。70年代开始进行帧间预测编码的研究。80年代初开始对作运动补偿(MC)所用的运动估值(ME)进行研究。变换编码是1968年H.CAndrews等人提出的,采用的是二维离散傅里叶变换。此后相继出现了用其它变换方法的变换编码,其中包括二维DCT。对模型编码的研究始于80年代初。

于1988年形成草案、1990年通过的ITU-T H.261建议,是图像编码技术走向实用化的重要一步。它是图像编码40年研究成果的结晶。90年代初相继提出MPEG-1,MPEG-2,H.263等都是在H.261基础上的发展和改进的。这些国际建议普遍采用的混合编码技术是当今最实用的高效编码方法,得到广泛的推广应用,已成为当今图像编码方法的主流。

进入90年代以后,ITU-T和ISO制定了一系列图像编码国际建议。标志着图像技术已经成熟。开始由学术研究走向产业化,前景十分诱人。目前,国外已出现了有线电视公司和通信、计算机公司之间的相互合作(甚至合并),如:美国最大的有线公司(Tel Qcommunication)和软件公司Microsoft合作开发交互式(interactive)电视等。现在的情况已不是简单地满足某些用户的图像压缩的要求,而是正在以图像编码为核心技术之一大规模地积极开拓新的产品和应用领域。

1.3 图像压缩编码的必要性和可能性

图像压缩编码的目的是以尽量少的比特数表征图像,同时保持复原图像的质量,使它符合预定应用场合的要求。压缩数据量、提高有效性是图像压缩编码的首要目的。图像编码是一种信源编码,其信源是各种类型的图像信息。

研究表明,在人类所接受到的全部信息中,有70%以上是通过视觉得到的。和其他信息相比,图像包含的信息量更大、更直观、更确切,因此具有很高的使用效率和更广泛的适应性。因此在多媒体通信中,数字图像通信占有很重要的地位。但是由于数字图像的数据量非常巨大,若不经压缩,数字图像传输所需的高传输速率和数字图像存贮所需的巨大容量阻碍了图像通信的发展。所以有必要对图像进行压缩编码。

图像数据可以进行压缩有以下几方面的原因。首先,原始图像数据是高度相关的,存在很大的冗余度。如图像内相邻象素之间的空间冗余度。序列图像前后帧之间的时间冗余度。多光谱遥感图像各谱间的频率域冗余度。数据冗余造成比特数浪费,消除这些冗余就可以节约码字,也就达到了数据压缩的目的。其次,基用相同码长表示不同出现概率的符号也会造成符号冗余度。如果采用可变长编码技术,对出现概率高的符号用短码字、对出现概率低的符号用长码字表示,就可消除符号冗余度,从而节约码字。

允许图像编码有一定的失真也是图像可以压缩的一个重要原因。在许多应用场合,并不要求压缩及复原以后的图像和原图像完全相同,可以允许有少量失真。只要这些失真并不被人眼所察觉,这就给压缩比的提高提供了十分有利的条件。图像质量允许的损失愈多,可以实现的压缩比就愈大。这种有失真的编码称为限失真编码,在多数应用中,人眼往往是图像信息的最终接收者(信宿)。如果能充分利用人眼的视觉特性,就可以在保证所要求的图像主观质量的前提下实现较高的压缩比。这就是利用了视觉冗余度。其实人类的视觉系统(HVS)是有缺陷的。其对某些失真不敏感,难以觉察。

1.4 图像压缩编码的方法

1.4.1 图像压缩编码方法的简介

图像压缩算法就是要在保证图像一定的重建质量的同时,通过去除冗余数据可以节约文件所占的码字从而极大地降低原始图像数据量,解决图像数据量巨大的问题,以达到对图像压缩的目的。图像数据压缩技术就是研究如何利用图像数据的冗余性来减少图像数据量的方法。因此,进行图像压缩研究的起点是研究图像数据的冗余性。

图像压缩方法主要分成两种类型:一种是基于空间线性预测技术,即差分脉冲编码调制的无失真压缩算法,另一种是基于DCT的有失真压缩算法,并进一步应用熵编码。

a. 无失真预测编码压缩算法

无失真预测编码压缩算法能准确无误地恢复原信息,它只是去掉了信源的冗余部分,却不能提供较高的压缩比。

b. 基于DCT的有失真压缩编码算法

基于DCT的有失真压缩编码算法包括基本系统和增强系统两种不同层次的系统。并定义了顺序工作方式和累进工作方式。基本系统只采用顺序工作方式,熵编码时只能采用Huffman编码,且只能存储两套码表。增强系统是基本系统的扩充,可采用累进工作方式,熵编码时可选用Huffman码或算术编码。有失真压缩能提供较高的压缩比,但由于损失了信源的熵,压缩后的数据是无法准确无误地恢复,而是利用人的视觉特性使解压缩后的图像看起来与原始图像一样。主要方法有预测编码、变换编码、模型编码、基于重要性的编码以及混合编码方法等。压缩比随着编码方法的不同差别较大。二维图像块经过各种正交变换后比较它们的优越性:DCT、DST、K—L>斜坡变换>哈达码变换、哈尔变换(随图像块尺寸增大而饱和)。虽然DCT变换在处理过程中需要用乘法电路,但由于LSI技术发展已使乘法器较为容易实现,所以DCT是正交变换编码的主要方式。基于DCT编码的过程为先进行DCT正变换,再对DCT系数进行量化,并对量化后的直流系数和交流系数分别进行差分编码或行程编码,最后再进行熵编码。

1.4.2 无损压缩

无损压缩利用数据的统计特性来进行数据压缩,典型的编码有Huffman编码、行程编码和算术编码。码无损压缩的压缩率一般为2:l~5:1。

a. Huffman编码

一种用概率匹配方法进行信源编码的熵编码方法,通过利用已变换信号的统计特性,给其分配高效代码来实现数据压缩,用于去除图像数据的统计冗余。Huffman编码是一种长度不均匀的、平均码率可以接近信息源熵值的一种编码方法。它有两个明显的特点:一是哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,充分利用了短码;二是缩减信源的最后二个码字总是最后一闪不同,从而保证了哈夫曼码是即时码。编码后使平均码长减小,以达到压缩的目的。

信息熵的计算公式:

公式(1-1) 哈夫曼码的平均码长计算公式:

公式(1-2)

的概率。

其中,是信源符号的码长;是信源符号x

i

信息传输速率:

公式(1-3)

由此可见,哈夫曼码的平均码长最小,消息传输速率最大,编码效率最高。然后哈夫曼编码方法得到的码并非是唯一的,它们的平均码长相等,编码效率也相等,但是质量不完全相同,可用码方差来表示:

公式(1-4)

由经验得,进行哈夫曼编码时,为得到码方差最小的码,应使合并的信源符号位于缩减信源序列尽可能高的位置上,以减少再次合并的次数,充分利用短码。

Huffman编码的算法如下:

(1)将n个信源消息符号按其出现的概率大小依次排列,

;

(2)取两个概率最小的分别分配以0和1两码元,并将这两个概率相加作为一个新的概率,与所分配的二进符号生新排队;

(3)对重排后的两个概率最小符号重复步骤2的过程;

(4)不断继续上述过程,直到最后的两个符号配以0和1为止;

(5)从最后一级开始,向前返回得到各信源符号所对应的码元序列,即相应的码字。

在计算Huffman表时需要对原始图像数据扫描两遍:第一遍要精确地统计出原始图像中每个灰度值出现的概率;第二遍是建立哈夫曼树并进行编码。由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢。但是该编码方法简单有效,而且编码效率相当高,因而得到了广泛应用。Huffman 编码小变字长编码方法是最佳的, 其码字平均长度很接近信息符号的熵值。Huffman 编码的最高压缩效率可达到8∶1。

b. 行程编码(Run-Length Encoding)

仅存储一个象素值以及具有相同颜色的像素数目的图像数据编码方式称为行程编码,或称游程编码,常用RLE(Run-Length Encoding)表示。该压缩编码技术相当直观和经济,运算相当简单,因此解压缩速度很快。RLE压缩编码尤其适用于计算机生成的图形图像,对减少存储容量很有效。在此方式下每两个字节组成一个信息单元。第一个字节给出其后面相连的象素的个数。第二个字节给出这些象素使用的颜色索引表中的索引。例如:信息单元03 04,03表示其后的象素个数是3个,04表示这些象素使用的是颜色索引表中的第五项的值。压缩数据展开后就是04 04 04,同理04 05 可以展开为05 05 05 05。信息单元的第一个字节也可以是00,这种情况下信息单元并不表示数据单元,而是表示一些特殊的含义。这些含义通常由信息单元的第二个字节的值来描述。

c. 算术编码

一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在

于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤ n < 1.0)的小数n。

1.4.3 有损压缩

有损压缩不能完全恢复原始数据,而是利用人的视觉特性使解压缩后的图像看起来与原始图像一样。主要方法有预测编码、变换编码、模型编码、基于重要性的编码以及混合编码方法等。压缩比随着编码方法的不同差别较大。

a. 预测编码

预测编码直接利用图像信号相邻象素之间相关性的空间域或时间域特点来压缩冗余信息。用前面已出现的象素值估计当前象素值,对实际值与估计值的差值进行编码。

b. 变换编码

变换编码利用图像相关性的频域或变换域特点来压缩冗余信息。变换编码的主要思想是利用图像块象素值之间的相关性,把图像变换到一组新的基上,使得能量集中到少数几个变换系数上,通过存储这些系数而达到压缩的目的。在变换编码中,由于对整幅图像进行变换的计算量太大,所以一般把原始图像分成许多个矩形区域子图像独立进行变换。常用的有离散余弦变换(DCT)。

c. 模型编码

模型编码采用模型的方法对传输的图像进行参数估测。

d. 混合编码

混合编码是合并变换和预测技术的编码。

类似于音频数据,图形图像也同样有一个比常规计算机数据文件优越的地方:在压缩/扩展的循环中,他们可以被略微改动,而不会影响图像的质量。如果仔细修改,那么各处象素的精确灰度可以完全不被注意地进行小的改变。研究人员最初试验了用于语音信号的同样的技术,例如差分编码和自适应编码,虽然这些技术对图像有帮助,但并没有达到所希望的那么好,原因之一是音频数据和视频数据根本不同。

差分调制依赖于模拟数据趋于“平缓”的变化。这种压缩方法中所产生的损失是来自于:使用标准的差分方法不可能总是精确地编码。差分编码的有损性可以很好地处理,以产生出好的信号。当压缩图形数据时,差分调制有很多问题。首先,图形中的象素依赖于平缓的增加或减少是不可靠的,一幅图中不同分量间的明显界限是常有的事情。这意味着,使用差分编码的系统需要接受样点间的大的不同和小的不同。这就限制了压缩的效率。带有数据长结构的许多图像可以压缩得很好。长结构中的象素,彼此之间没有什么差别或差别很少;但是,带有突变部分的那些图像不可能压缩得很好。通常,图形图像的差分编码似乎不产生非常强于最好的无损算法的压缩结果,它当然也不会产生所需要的、对压缩的数量级上的改进。

自适应编码(常常与差分编码一同使用)是根据前面看到的一些象素而对将要到来的一些象素的信息做预测。例如,如果一幅灰度级照片中最新的十个象素的值都在45到50之间,那么自适应压缩系统可能预测下一个象素很大可能也在这个范围中,之后,类似于霍夫曼或算术编码那样的基于熵的编码方案可能给将来到来的各种代码赋以概率值。可以代替地使用压缩-扩展方法,将最细的粒度赋给最接近预测的范围。

1.5处理后图像性能的衡量指标

重构图像的质量有两种评价标准来衡量图像的恢复质量:图像质量的客观度量和主观度量。

a.客观质量

信噪比(SNR)衡量在某一压缩比特率上,压缩图像同源图像之间的失真程度。信噪比计算如下:

公式(1-5) 其中,为源图像的方差,是源图像与重建图像误差的方差。

在实际系统中,通常用峰值信噪比(PSNR)代替信噪比(SNR),作为客观评价指标。峰值信噪比PSNR计算如下:

公式(1-6)

其中,MSE是源图像与重建图像之间的均方误差。b为源图像样本值的取值范围。MSE按下式计算:

公式(1-7)

其中,为图像信号的尺寸,表示源图像样本值,表示重构图像的样本值。

b. 主观度量

由于没有考虑人类的视觉系统模型,信噪比或者峰值信噪比,不能单独用来评价压缩系统的好坏。还需要从主观上,根据人类视觉系统的特性来进行评价。然而,主观评价因人而异,没有统一的定论,通常使用平均判分(MOS:Mean Opinion Score)方法,即请每个试验者对待测图像进行N级质量或者失真判分。

2 离散余弦变换DCT

2.1 DCT的基本原理

DCT变换在图像压缩中有很多应用,它是JPEG,MPEG等数据压缩标准的重要数

学基础。在压缩算法中,先将输入图像划分为8×8 或16×16,的图像块,对每个图像块作DCT变换;然后舍弃高频的系数,并对余下的系数进行量化以进一步减少数据量;最后使用无失真编码来完成压缩任务。解压缩时首先对每个图像块做DCT反变换,然后将图像拼接成一副完整的图像。

2.2 DCT的定义

DCT变换利用傅立叶变换的性质,采用图像边界褶翻将图像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。

二维离散余弦变换DCT(Discrete Cosine Transform)的定义为,假设矩阵A的大小为M ×N。

公式(2-1)

其中,称为矩阵A的DCT系数。在MATLAB中,矩阵的下标从1开始而不是从0开始的,所以MATLAB中的矩阵元素A(1,1)和B(1,1)分别对应于上面定义中的

值A

00和B

00

,依此类推。

DCT是一种可逆变换,离散反余弦变换定义如下:

公式(2-2) 上式的含义是任何M×N的矩阵A都可以表示为一系列具有下面形式的函数的和:

这些函数称为DCT变换的基函数。这样,就可以看成是应用于每个基函数的加权。

2.3 DCT的算法

离散余弦变换可以由定义式出发进行计算。但这样的计算量太大,在实际应用中很不方便。所以需要寻求一种快速算法。以一维离散余弦变换为列,对快速算法进行推导。

首先,从定义出发,作如下推导:

= =

= (Re是取实部的意思)公式(2-3)

对时域数据向量做如下列延拓:

当x=0,1,2,……N-1时=

当x=N,N+1,……2N-1时=0

则Fe(x)的离散余弦变换可写成下列:

= 公式(2-4)

=

=

= 公式(2-5)由上式可见:是2N点的离散傅立叶变换。所以在做离散余弦变

换时,可以把序列长度延拓为2N,然后作离散傅立叶变换,产生的结果取其实部即可得到余弦变换。

同理对于离散余弦反变换IDCT,可首先在变换空间将[F(u)]作如下延拓:

当u=0,1,2,3…,N-1时=

当u=N,N+1,N+2…,2N-1时=0

那么,反变换可表示:

=

=

=

= 公式(2-6)

由上式可见,IDCT可以由的2N点的IDFT的快速算法实现。

在计算二维的DCT变换时,可使用下面的计算公式把二维的DCT变

换变成一维的DCT变换:

公式(2-7)

公式(2-8) 2.4 DCT变换矩阵方法与基于FFT的快速算法DCT的比较

经过二维DCT 变换后的矩阵,其非零元素主要集中于某一个区域,通常是左上角,而右下角大部分是零。利用这一特点就可以实现图像压缩( Image Compression)。在实际传输时,仅仅传输代表低频份量的左上角,并对其进行量化编码,其余均去掉(反变换时,把去掉点填零来处理) ,这样就可以达到图像压缩的目的。

应用MATLAB6.5影像处理工具箱中提供的相关函数和命令,从两个不同的角度来实现基于DCT的JPEG图像压缩算法。一种是DCT变换矩阵方法,变换矩阵方法非常适合做8×8或16×16的图像块的DCT变换,工具箱提供了dctmtx 函数来计算变换矩阵。另一种是基于FFT的快速算法,这是通过MATLAB工具箱提供的dct2 函数实现的。

方法1:该方法的出发点是分别对分解后的每个数据小方块进行DCT变换,主要应用MATLAB 的影像处理工具箱中dctmtx 函数返回DCT 变换矩阵,而后进行相关处理的程序实现:

%主要应用MATLAB影像处理工具箱中的dctmtx函数实现算法

%出发点是采用分别对分解后的每个数据小方块进行DCT变换

I=imread('cameraman.tif'); %装入原始图像,该图片在安装matlab的目录中找,原图为灰度图像

I1=im2double(I);%图像存储类型转换,将图像变换成双精度格式

T=dctmtx(8);%离散余弦变换矩阵,处理后返回一个8 ×8 阶DCT 变换矩阵

B=blkproc(I1,[8,8],'P1*x*P2',T,T');%对原图像进行DCT变换,每个不同8 ×8 块应用矩阵式′P1*x *P2′进行处理,必要时补0 ,其中P1 = T ,P2 = T′

mask= [1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 0

1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0];%二值掩模,用来压缩DCT 的系数,选取10 个DCT系数重构图像

B2=blkproc(B,[8,8],'P1.*x',mask);%只保留DCT 变换的10个系数,数据压缩,丢弃右下角高频数据

I2=blkproc(B2,[8,8],'P1*x*P2',T',T);%进行DCT反变换,得到压缩后的图像

subplot(2,2,1)

imshow(I1)

title('原始图像')

subplot(2,2,2)

imshow(I2)

title('压缩后的图像');%显示原始图像I1和压缩图像I2

图2-1 原始图像图2-2 DCT变换矩阵方法的重构图像仿真中取了10 个DCT 系数,占15 %比较原图和重构图像,可以发现:在抛弃85 %的DCT 系数后,重构图像时并不会因此而带来其画面质量的显著下降,即重构图像的失真不大. 当然,采用这种方法来实现压缩算法时,可以通过修改mask 变量中的DCT 系数来更好地比较仿真结果。

方法2:该方法出发点是对整幅图像进行DCT变换,主要应用MATLAB的影像处理工具箱中的基于FFT的有大量输入的快速算法进行处理的dct2函数。具体程序实现: %主要应用MATLAB 影像处理工具箱中的dct2 和idct2函数进行处理;

%基于FFT 的有大量输入的快速算法函数dct2 ,对整幅图像进行处理.

I =imread('cameraman.tif'); %从内存中读取图像

J =dct2(I);%对I 进行二维DCT ,返回的I包含DCT 系数

imshow(log(abs(J)),[ ]);

colormap(jet(64));

colorbar;%进行DCT 变换后的二维变换谱

J(abs(J)<10)=0;%将DCT 变换值小于10 的元素设为0

K =idct2(J)/255;%对逆DCT 变换值归一化

L=idct2(I);%求二维DCT 逆变换,重构图像

imshow(I);

title('原始图像');

figure;

imshow(K);

title('经DCT压缩后再重建的图像');

figure;

imshow(J);

title('经DCT变换后的变换谱');

figure;

imshow(L);

title('经DCT反变换后的变换谱');

图2-3 原始图像图2-4 整幅图像经DCT变换后的重建图从图中可以看出,按照这种方法重构的图像与原图几乎没有差别。但如果是在对图像的象素要求很高的情况下,还是可以看出图像经过分块做DCT变换后的压缩图像还原的效果要好一些。

图2-5 经DCT变换后的变换谱图2-6 经DCT反变换后的变换谱

DCT将8×8 图像块变换为频率域时数值集中在矩阵的左上角,即低频分量都集中在左上角,高频分量分布在右下角(DCT 变换实际上是空间域的低通滤波器) 。由于该低频分量包含了图像的主要信息(如亮度) ,所以可以忽略部分高频分量,从而达到压缩的目的。从上图可以很明显看出,图像变换为频率域时数值集中在左上角,即低频分量都集中在左上角,高频分量分布在右下角。而在反变换之后,图像的高、低频分量分布均匀。

2.5 2D-DCT与2D-FFT的比较

重点分析和二维快速傅立叶变换(2D-FFT)和二维离散余弦变换(2D-DCT)的程序。在程序中,这两种变换分别调用了1D-FFT和1D-DCT变换,而1D-DCT又是以1D-FFT为核心的。

设计的程序是以频率抽取的基2FFT算法为基本理论的,因此蝶形运算后,需要进行排序,根据理论推算应该采取倒位序的方法,对于一个N=8的蝶形运算,其结果下标排列应是:0,4,2,6,1,5,3,7。倒位序后回到了自然排列顺序0,1,2,3,4,5,6,7。一维快速傅立叶正反变换包含于一个核心子程序中,所以在求其反变换时,先将X(K)取共轭变换,在将X(K)的虚部乘以-1,然后就可以直接访问FFT的子程序,最后再对运算结果取一次共轭变换并乘以常数1/N即可得到x(n)值。这种IFFT算法可以完全不改动FFT的程序。在进行二维的FFT变换时,可把二维的FFT变换变成一维后直接调用FFT子程序。因为,二维离散傅立叶变换(DFT)处理图像的时间比较长,其处理结果和FFT处理结果相同;FT运算量非常大,实时性差,处理图像时没有实用性,所以本文就不对其进行讨论了。

图2-7 2D-FFT的变换谱图2-8 2D-DCT的变换谱可以看出,原图像经FFT变换后频域能的量主要集中在两条对角线附近;DCT变换后变换域的能量主要集中在低频分量附近(也即左上角)。图像压缩中的DCT编码正是利用DCT变换的这一特性,在对二维图像进行DCT变换后,只对变换域低频分量进行编码,抛弃部分高频分量,减少携带的信息量,从而实现对图像的有损压缩编码。

DCT变换与FFT变换类似,但DCT变换可以使用较少的频谱系数来表示被变换的图像数据。在接收端,用逆变换IDCT将这些频谱系数恢复成的图像数据,与变换前的数据更接近。因此在图像压缩算法中常用DCT变换。

2.6 各种正交变换的比较

1.哈达码变换,在低频分量功率集中度上不如傅立叶变换;

2.K-L变换,求解特征值的运算复杂,并且最优变换矩阵随输入图像的局部性质而变化,实用性差。

3.DCT,只用余弦函数的变换,具有快速算法,有可能用一片LSI实现图像的实时变换,并且低频分量功率集中。

4.斜坡变换,高效表示图像中的倾斜成分,接近DCT整体编码效率。

5.哈尔变换,运算简单,近似于哈达码。表现图像局部特性,但是特定成分的功率集中度不高。

以表示一个二维图像,其中,,,象素集构成的矩阵记为。对图像进行变换,图像的变换域表示为,变换系数表示为

。下正交变换的一个重要性质是满足能量保持的特性,即满足二维Passevel定理:

公式(2-9)

如果在变换域内存在失真,得到的失真的变换系数,相应空间域内失真同样存在,记为,则有误差能量e:

公式(2-10)

从图像压缩的角度考虑,我们希望图像的能量以过变换后聚集在尽可能少的系数上。经过量化,能够得到较高的压缩比。

对于各种正交变换,针对仅保留其前的变换系数进行测试。对于N×N的图像,变化系数为,在保留系数时,将的系数舍弃,归一化剩余误差定义为(保留系数集用符号表示)

公式(2-11)

对于一阶序列,它的相关系数为,取=0.95进行实验,结果如下所示:

表2-1 各种正交变换能量集中特性比较

由上表可见,DCT可以较好地使能量集中在尽可能少的系数上,即能量的集中性很好。此特性有利于图像的压缩。

总结DCT图像压缩的优缺点如下:

相关主题
文本预览
相关文档 最新文档