实验二 图像的频域变换处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二图像的频域变换处理
一、实验目的:
1、掌握Fourier,DCT和Radon变换、反变换的算法实现,并初步理解Fourier、Radon 和DCT变换的物理意义。
2、利用傅里叶变换、离散余弦变换处理图像。
二、实验要求:
1.用Fourier、Radon和DCT变换算法对图像作二维Fourier、Radon和DCT变换,并输出变换结果,分析图像频域和空域之间的关系。
2.用Fourier、Radon和DCT反变换算法对图像作二维Fourier、Radon和DCT反变换。
3.分别选择频域低通、高通滤波器对同一幅图像进行滤波,观察分析滤波后的图像变化特征。
三、实验步骤:
1.用Fourier、Radon和DCT变换算法,对图像作二维Fourier、Radon和DCT变换和反变换(考虑图像为256*256,可以采用快速Fourier变换方法),并比较反变换后
的图像与原图像的视觉效果;
2.用DCT变换实现图像的压缩,计算压缩比。
3.利用高斯滤波器对图像进行滤波处理后输出。
实验方法:
设计matlab程序,在计算机中处理图像,输出结果。
1.设计程序生成一幅图像图像,利用函数F=fft2(‘name’,m,n)对图像进行傅里叶变换。
利用函数imshow(log(abs(F),[ ] )输出图像的幅频特性,
2.利用函数F=ifft2(‘name’)完成傅里叶反变换。
3.利用函数B=dct2(‘name’,[m,n])对图像进行离散余弦变换。利用函数imshow(log(abs(B),[ ] )输出图像的幅频特性,
4.利用函数B=idct2(‘name’)完成傅里叶反变换。
5.利用dct变换对图像进行压缩处理,计算压缩前后的图像大小。
实验要求:
1、进实验室前必须设计好程序。
2、认真调试,记录结果。
3、实验报告必须有实验结论分析。
实验设备:
MATLAB实验环境,图像输入输出设备,图像处理设备。
实验结果;
I=imread('E:\qiaole.jpg');
A=rgb2gray(I);
subplot(1,2,1),imshow(A);
xlabel('原图');
B=dct2(A);
subplot(1,2,2),imshow(log(abs(B)),[0 5]);
xlabel('二维离散余弦变换');
I=imread('E:\qiaole.jpg');
subplot(1,3,1);imshow(I); xlabel('原图');
fftI=fft2(I);
subplot(1,3,2);imshow(fftI); xlabel('FFT变换'); sfftI=fftshift(fftI);
subplot(1,3,3);imshow(sfftI); xlabel('中心化');
I=imread('E:\qiaole.jpg');
A=rgb2gray(I);
subplot(1,3,1),imshow(A);
xlabel('原图');
B=dct2(A);
subplot(1,3,2),imshow(log(abs(B)),[0 5]); xlabel('二维离散变换');
I=idct2(B)/200;
subplot(1,3,3),imshow(I);xlabel('反变换');
l=imread('E:\qiaole.jpg');
f=double(l);
g=fft2(f);
g=fftshift(g);
[M,N]=size(g);
d0=1530100;
m=fix(M/2);n=fix(N/2);
for i=1:M
for j=1:M
d=sqrt((i-m)^2+(j-n)^2);
if(d<=d0);
h=1;
else h=0;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1)); imshow(J2)
title('理想低通滤波')
l=imread('E:\qiaole.jpg'); f=double(l);g=fft2(f); [M,N]=size(g);
d0=80;
m=fix(M/2);n=fix(N/2); for i=1:M
for j=1:M
d=sqrt((i-m)^2+(j-n)^2); if(d>=d0);
h=1;
else h=0;
end
result(i,j)=h*g(i,j);end end
result=ifftshift(result);
J1=ifft2(result);
J2=uint8(real(J1)); figure(1)
imshow(J2)
title('理想高通滤波')
实验总结:
调试该程序的时候出了不少错,subplot(1,2,2),imshow(log(abs(B)),[0 5]);在这一句中由于的我粗心把subplot写成了subpolt,结果程序运行出错,经过我的查找找到错误并改正后程序运行正确,并得出我目标图。由于课前的准备,在课堂上调试程序中并没有遇到太大的恐难。
通过本次实验我学会了掌握Fourier,DCT和Radon变换、反变换的算法实现,并初步
理解Fourier、Radon和DCT变换的物理意义;利用傅里叶变换、离散余弦变换处理图像。