数字图像处理DCT变换课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

1.相关知识

1.1 DCT变换在数字图像应用

1.2 数字图像处理的主要方法 (1)

1.3 DCT在MATLAB的实现 (1)

2. 课程设计分析 (3)

2.1 DCT 的基本原理 (3)

3. 程序 (6)

4. 仿真结果 (7)

4.1压缩前后图像对比 (7)

4.2 DCT变换三维投影 (8)

5. 结果分析 (9)

6.结论 (11)

7.参考文献 (12)

1.相关知识

1.1 DCT变换在数字图像应用

在JPEG各类图像压缩算法中,基于离散余弦变换(DCT ,Discrete Cosine Transform) 的图像压缩编码过程称为基本顺序过程,它应用于绝大多数图像压缩场合, 并且它能在图像的压缩操作中获得较高的压缩比。另外,重构图像与源图像的视觉效果基本相同。DCT变换是在最小均方误差条件下得出的最佳正交变换,且已获得广泛应用, 并成为许多图像编码国际标准的核心。DCT变换的变换核心为余弦函数,计算速度较快, 有利于图像压缩和其他处理。 MATLAB是由美国Math2Works公司推出的用于数值计算和图形处理的科学计算软件, 它集数值分析、矩阵计算、信号处理和图形显示多种功能于一体,构成了一个方便的界面,友好的用户环境。本文主要应用MATLAB6.5中发布的影像处理工具箱中的相关函数和命令来实现基于DCT的图像压缩编码理论算法的仿真。

1.2 数字图像处理的主要方法

空域法和变换域法。

a.空域法

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

b. 频域法(变换域法)

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

1.3 DCT在MATLAB的实现

第一种方法是使用函数dct2,该函数使用一个基于FFT的快速算法来提高当输入较大的输入方阵时的计算速度。dct2函数的调用格式如下:

dct2 B=(A,[M N])或B=dct2(A,M,N)

其中,A表示要变换的图像,M和N是可选参数,表示填充后的图像矩阵大小。B表示变换后得到的图像矩阵。

第二种方法使用由函数dctmtx返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(如或方阵)。dctmtx的调用格式如下:

D=dctmtx(N)

其中,N表示DCT变换矩阵的维数,D为DCT变换矩阵。

2. 课程设计分析

2.1 DCT 的基本原理

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

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

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

N

q

n M

p

m M m N n mn q p q p A B 2)12(cos

2)12(cos

101

.++=∑∑----ππαα

⎩⎨⎧-≤≤==11,/20,/1M p M p M p α ⎩

⎨⎧-≤≤==11,/20,/1N q N q N q α

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

依此类推。 DCT 是一种可逆变换,离散反余弦变换定义如下:

N

q

n M

p

m B A pq q M p N q p 2)12(cos

2)12(cos

1010

mn ++=∑∑----ππαα

10,10-≤≤-≤≤N n M m

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

和:

1

0,102)12(cos

2)12(cos

-≤≤-≤≤++N q M p N

q

n M

p

m B pq q p ππαα

这些函数称为 DCT 变换的基函数。这样, , B q p .就可以看成是应用于每个基函数的加权。 DCT 的算法 :

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

∑-=+=

102)12(cos )(2)(N x N

u x x f N u F π

⎭⎬⎫⎩⎨⎧∑-=+-102)12()(Re 2N x N u x j

e x

f N π

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

当x=0,1,2,.........N-1 fe(x) =f(x) 当x=N ,N+1,........2N-1时 fe(x)=0 则fe(x)的离散余弦变换可写成下列: ∑-==120

)(1

)0(N x x fe N F

∑-=+=

1202)12(cos )(2)0(N x N

u X x fe N F π

=⎭⎬⎫⎩⎨⎧∑-=+-1202)12()(Re 2N x N u x j

e x fe N π

=⎭

⎬⎫⎩⎨⎧∑-=--120222)(Re 2N x N xu j

N j e e x fe N ππ 由上

式可见:

∑-=-1

20

22)(N x N

xu j

e

x fe π

是2N 点的;离散傅里叶变换所以在离散余弦变换时,

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

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

相关文档
最新文档