jpeg图像压缩
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要 (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 编码是一种长度不均匀的、平均码率可以接近信息源熵值的一种编码方法。
它有两个明显的特点:一是哈夫曼码的编码方法保证了概率大的符号对应于短码,概率小的符号对应于长码,充分利用了短码;二是缩减信源的最后二个码字总是最后一闪不同,从而保证了哈夫曼码是即时码。
编码后使平均码长减小,以达到压缩的目的。
信息熵的计算公式:
()()log ()i i i
H X p x p x =-∑ 公式(1-1)
哈夫曼码的平均码长计算公式:
10
1()i i i K p x K ==∑ 公式(1-2)
其中,i K 是信源符号i x 的码长;()i p x 是信源符号x i 的概率。
信息传输速率:
()H X R K
= 公式(1-3) 由此可见,哈夫曼码的平均码长最小,消息传输速率最大,编码效率最高。
然后哈夫曼编码方法得到的码并非是唯一的,它们的平均码长相等,编码效率也相等,但是质量不完全相同,可用码方差来表示: 10
2
2
21[()]()()t i i i i E k K p x k K σ==-=-∑ 公式(1-4) 由经验得,进行哈夫曼编码时,为得到码方差最小的码,应使合并的信源符号位于缩减信源序列尽可能高的位置上,以减少再次合并的次数,充分利用短码。
Huffman 编码的算法如下:
(1)将n 个信源消息符号按其出现的概率大小依次排列,(1)(2)......(10)p x p x p x ≥≥≥;
(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 )衡量在某一压缩比特率上,压缩图像同源图像之间的失真程度。
信噪比计算如下: 2210lg x e SNR σσ= 公式(1-5)
其中,2x σ为源图像的方差,2e σ是源图像与重建图像误差的方差。
在实际系统中,通常用峰值信噪比(PSNR )代替信噪比(SNR ),作为客观评价指标。
峰值信噪比PSNR 计算如下:
10lg 21
b MSE PSNR =-- 公式(1-6) 其中,MSE 是源图像与重建图像之间的均方误差。
b 为源图像样本值的取值范围。
MSE 按下式计算: 11
200
1((,)(,))M N m n MSE x m n y m n M N --===-⨯∑∑ 公式(1-7) 其中,N M ⨯为图像信号的尺寸,),(n m x 表示源图像样本值,),(n m y 表示重构图像的样本值。
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 。
11.00(21)(21)cos
cos 22M N p q p q mn m n m p n q
B A M N ππαα----++=∑∑ 公式(2-1)
01,01p M q N ≤≤-≤≤-
1p p p M α=≤≤-=
1q q q N α=≤≤-=
其中,,p q B 称为矩阵A 的DCT 系数。
在MATLAB 中,矩阵的下标从1开始而不是从0开始的,所以MATLAB 中的矩阵元素A(1,1)和B(1,1)分别对应于上面定义中的值A 00和B 00,依此类推。
DCT 是一种可逆变换,离散反余弦变换定义如下:
()()11002121cos
cos 22M N mn p q pq p q m p n q
A B M N ππαα----++=∑∑ 公式(2-2)
01,01m M n N ≤≤-≤≤-
上式的含义是任何M ×N 的矩阵A 都可以表示为一系列具有下面形式的函数的和: ()()2121cos cos 22p q pq m p
n q
B M N ππαα++
01,01p M q N ≤≤-≤≤-
这些函数称为DCT 变换的基函数。
这样,,p q B 就可以看成是应用于每个基函数的加权。
2.3 DCT 的算法
离散余弦变换可以由定义式出发进行计算。
但这样的计算量太大,在实际应用中很不方便。
所以需要寻求一种快速算法。
以一维离散余弦变换为列,对快速算法进行推导。
首先,从定义出发,作如下推导:
()F u
=
10(21)()cos 2x u f x N π-=+
= (21)120()Re{}x u j N f x e π+--=
= (21)120
()}x u N j N x f x e π+--=∑ (Re 是取实部的意思) 公式(2-3) 对时域数据向量做如下列延拓:
当x=0,1,2,……N-1时 ()fe x =()f x
当x=N,N+1,……2N-1时 ()fe x =0
则Fe(x)的离散余弦变换可写成下列:
(0)F
= 210N x -=∑()fe x 公式(2-4) (0)F
= 10(21)()cos 2N x X u fe x N
π-=+
=
(21)2120()}x u N j N x fe x e π+--=∑
=
2210()}u xu N j j x e fe x e ππ---=∑ 公式(2-5) 由上式可见:221
20()xu N j N x fe x e π--=∑是2N 点的离散傅立叶变换。
所以在做离散余弦变
换时,可以把序列长度延拓为2N ,然后作离散傅立叶变换,产生的结果取其实部即可得到余弦变换。
同理对于离散余弦反变换IDCT ,可首先在变换空间将[F(u)]作如下延拓: 当u=0,1,2,3…,N-1时 ()Fe u =()F u
当u=N,N+1,N+2…,2N-1时 ()Fe u =0
那么,反变换可表示:
()f x
= 10(21)(0)()cos 2N u x u Fe Fe u N π-=+∑
=
(21)210(0)()Re{}x
u N N j u Fe Fe u e π+-=∑
= 222121
(0)()}xu N u N j j N u Fe Fe u e e ππ-=∑
= 22210
(0)[()]}u N xu N j j u Fe Fe u e e ππ-=∑ 公式(2-6) 由上式可见,IDCT 可以由2()u N j Fe u e π 的2N 点的IDFT 的快速算法实现。
在计算二维的DCT 变换时,可使用下面的计算公式把二维的DCT 变换变成一维的DCT 变换:
]16)12(cos ),()[(21),(70
∑=+=i u i v i G u C v u F π 公式(2-7) ]16)12(cos ),()[(21),(70
∑=+=i v i j i f v C v i G π 公式(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 变换矩阵,而后进行相关处理的程序实现:。