实验二 图像变换(DFT、DCT 变换) 一、实验目的 1、熟练掌握 DFT、DCT 变换的 MATLAB 实现; 2、利用 MATLAB 完成(DFT、DCT)变换,求出图像的频谱; 二、实验原理及内容 二维傅立叶变换的 matlab 实现: fft: 一维 DFT 变换 ifft: 一维 DFT 反变换 fft2: 二维 DFT 变换 ifft2: 二维 DFT 反变换 fftn: N 维 DFT 变换 fftn: N 维 DFT 反变换 fftshift: 将经过 fft、fft2 和 ffn 变换后的频谱中心(0 频)移到矩阵或向量的 2、离散余弦变换(DCT) 离散余弦变换的 matlab 实现: dct2:二维 DCT 变换 idct2:二维 DCT 反变换 内容 1、编程求给定图像lena.bmp 的傅立叶频谱; 2、将给定图像lena.bmp 旋转 45 度,求其傅立叶频谱; 3、编程求给定图像lena.bmp 的 DCT 频谱; 4、利用 DCT 反变换求原始图像; 5、利用 DCT 实现对图像lena.bmp 的压缩,压缩率为 80%。 三、实验程序、结果及框图 1、DFT 变换及 DCT 变换 实验框图 实验程序 (1) clear all; %清空所有变量 I=imread('lena.jpg'); %读入图像 J=fftshift(fft2(I)); %对原图进行DFT 变换,并将其中心移到零点 J2=imrotate(I,45); %将图像旋转 45 度 J3=fftshift(fft2(J2)); %对旋转后图像求 DFT 频谱 subplot(2,2,1);imshow(I); xlabel('原图') %显示原图 subplot(2,2,2);imshow(log(abs(J)),[8 10]); xlabel('原图DFT 变换频谱') %显示原图频谱 subplot(2,2,3);imshow(J2); xlabel('旋转 45 度图像') %显示旋转后图像 subplot(2,2,4);imshow(log(abs(J3)),[8 10]); xlabel('旋转图像DFT 频谱') %显示旋转图像频谱 (2) J4=dct2(I); %对原图进行DCT 变换 开始 读入图像 进行DFT 及 DCT 变换 显示各图像 结束 清空变量和空间 J5=idct2(J4)/255; %进行DCT 逆变换 J6=uint8(round(J5*255)); %将double 转换为 uint8 型 I2=I-J6; %求差值 figure; subplot(2,2,1);imshow(I); xlabel('原图') %显示原图 subplot(2,2,2);imshow(log(abs(J4)),[]); xlabel('原图 DCT 频谱') %显示原图 DCT 频谱 subplot(2,2,3);imshow(J5); xlabel('DCT 反变换图像') %显示 DCT 反变换图像 subplot(2,2,4);imshow(I2); xlabel('变换前后图像差值') %显示 DCT 变换前后差值 (1)DFT 变换 (2)DCT 2 、图像压缩 实验框图 实验程序...