实验二 图像的频域变换处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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变换的物理意义;利用傅里叶变换、离散余弦变换处理图像。

相关文档
最新文档