离散余弦变换原理特点及程序

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

1 离散余弦变换(Discrete Cosine Transform ,DCT)原理

1)离散余弦变换定义

(1)一维离散余弦变换的定义由下式表示:

式中F(u)是第u 个余弦变换系数,u 是广义频率变量,u=1,2,3.....N-1,f(x)是时域N 点序列,x=0,1,2...N-1

(2)一维离散余弦反变换由下式表示:

(3)二维离散余弦变换的定义由下式表示:

最后的式子是正变换公式。其中f(x,y)是空间域二维向量之元素,其中x,y=0,1,2...N-1, F(u,v)是变换系数阵列之元素。式∑-==10)(1)0(N x x f N F N u x x f N u F N x 2)12(cos )(2)(10π+=∑-=N u x u F N F N x f N u 2)12(cos )(2)0(1)(11π++=∑-=N

v y N u x y x f N v u F N

u x y x f N u F N v y y x f N v F y x f N F N x N y N y N x N x N y N x N y 2)12(cos 2)12(cos ),(2),(2)12(cos ),(2)0,(2)12(cos ),(2),0(),(1)0,0(1010101010101010ππππ+⋅+=+=+⋅==∑∑∑∑∑∑∑∑-=-=-=-=-=-=-=-=

中表示的阵列为N ×N 。

(4)二维离散余弦反变换由下式表示:

2) 性质: (1)余弦变换是实数、正交。

(2)离散余弦变换可由傅里叶变换的实部求得

(3)对高度相关数据,DCT 有非常好的能量紧凑性

(4)对于具有一阶马尔可夫过程的随机信号,DCT 是K-L 变换的最好近似

2 离散余弦变换Matlab 实现

(1)二维离散余弦变换

f=imread('trees.tif');

f=im2double(f);

F=dct2(f);

subplot(121),imshow(f,[]);

subplot(122),imshow(log(1+20*abs(F)),[])

N

v y N u x v u F N N u x u F N N v y v F N F N y x f N u N v N u N v 2)12(cos 2)12(cos ),(2

2)12(cos )0,(22)12(cos ),0(2)0,0(1),(11111111ππππ+⋅++++++=∑∑∑∑-=-=-=-=

图1 原图以及进行离散变换后图对比再进行逆变换:

I=idct2(F);

subplot(121),imshow(f);

subplot(122),imshow(I)

图2 原图与恢复后的图对比

将数据进行压缩再逆变换:

CLF

f=imread('cameraman.tif');

F=dct2(f);

F(abs(F)<50)=0;

k=idct2(F);

subplot(121),imshow(f,[]);

subplot(122),imshow(k,[])

图3 对比图

(2)将输入图像分解成8×8的图像块,然后对每个图像块进行DCT 变换,保留64个DCT系数部分,然后通过压缩保存数据。还原时,进行DCT逆变换重构图像。

I1=im2double(imread('moon.tif'));

T=dctmtx(8);

B=blkproc(I1,[8 8],'P1*x*P2',T,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];

B2=blkproc(B,[8 8],'P1.*x',mask);

I2=blkproc(B2,[8 8],'P1*x*P2',T',T); subplot(121),imshow(I1,[]);

subplot(122),imshow(I2,[])

图4 原始图像与压缩图像

4 讨论分析

离散余弦变换是傅里叶变换的实数部分,比傅里叶变换有更强的信息集中能力。对于大多数自然图像,离散余弦变换能将大多数的信息放到较少的系数上去,提高编码的效率。在图像的变换编码中有着非常成功的应用。

图像进行DCT变换后,在频域中矩阵左上角低频的幅值大而右下角高频幅值小,经过量化处理后产生大量的零值系数,在编码时可以压缩数据,因此DCT被广泛用于视频编码图像压缩。

相关文档
最新文档