资源描述
DCT变换
一、 实验目的:
1.熟悉图像变换的思想;
2.熟悉掌握DCT变换的处理过程;
3.深入学习和了解DCT变换的公式以及规律;
4.掌握图像的DCT变换的Matlab实现;
5.掌握图像的DCT变换,求出图像的频谱。
二、实验内容:
练习图像的DCT变换的Matlab实现
三、 实验原理:
离散余弦变换是一种实数域变换,其变换核心为实数余弦函数。对一幅图像进行离散余弦变换后,许多有关图像的重要可视信息都集中在DCT变换的一小部分系数中。因此,离散余弦变换是有损图像压缩JPEG的核心,同时也是所谓“变换域信息隐藏算法”的主要“变换域(DCT域)”之一。因为图像处理运用二维离散余弦变换,所以直接介绍二维DCT变换。
离散余弦变换(DCT)的定义
其逆变换:
离散余弦变换使图像压缩中常用的一个变换编码方法,任何是对称函数的傅里叶变换中只含余弦项,就成为余弦变换,因此余弦变换是傅里叶变换的特例。余弦变换与傅里叶变换一样有明确的物理意义,是简化傅里叶变换的重要方法。
四、实验步骤:
DCT变换的Matlab实现
[A,map]=imread('lenna');
%显示原图
imshow(A,map),
title('原图');
image=double(A);
N=8;
for x=1,
a(x)=sqrt(1/N);
end,
for x=2:8,
a(x)=sqrt(2/N);
end,
%dct
rimage=zeros(8,8);
for x=1:32,
for y=1:32,
for u=1:N,
for v=1:N,
for i=1:N,
for j=1:N,
rimage(i,j)=image(i+(x-1)*8,j+(y-1)*8);
b(i,j)=rimage(i,j).*cos((2*(i-1)+1)*(u-1)*pi/(2*N)).*cos((2*(j-1)+1)*(v-1)*pi/(2*N));
end,
end,
d(u,v)=sum(sum(b,1),2);
C(u,v)=a(u).*a(v).*d(u,v);
end,
end,
xhimage{x,y}=C;
end,
end,
aa=zeros(8,8);
b1=zeros(256,256);
for x=1:32,
for y=1:32,
aa=xhimage{x,y};
for i=1:8,
for j=1:8,
b1(i+(x-1)*8,j+(y-1)*8)=aa(i,j);
end,
end,
end,
end,
figure,imshow(uint8(b1));title('DCT');
五、实验结果:
实验频谱图:
上图是lenna图像为例,利用DCT变换函数得到的DCT系数的性质,改图显示了变化的结果,其中DCT系数用光谱的形式给出,直观的表明了低频和高频系数的分不规律。
2
展开阅读全文