数字图像处理Matlab-傅里叶变换及其应用(附代码)

目录

    • 1.Objectives:
    • 2.Experiment Content:
    • 3.Experiment Principle:
    • 4.Experiment Steps Result and Conlusion:

1.Objectives:

1、 掌握二维 DFT 变换及其物理意义
2、 掌握二维 DFT 变换的 MATLAB 程序
3、 空间滤波及频域滤波

2.Experiment Content:

学习使用函数 fft2,ifft2,abs,angle,fftshift,imfilter,fspecial,freqz2;对数形式显示方法;
实现正反傅里叶变换、 Gaussian 低通滤波和 laplacian高通滤波。

3.Experiment Principle:

见书《数字图像处理》

(冈萨雷斯著作,电子工业出版社于2009年12月1日出版)

4.Experiment Steps Result and Conlusion:

1、 利用 MATLAB 实现数字图像的傅里叶变换
读入并显示图 Fig0316(3)(third_from_top).tif,作该图的二维 FFT 变换 F,将其直流分量移到频谱中心 F1,计算其实部 RR、虚部 II、相 角 Angle, 用两种方法计算及幅值 A1=abs(F1)和 A2=sqrt(RR.2+II.2), 分别显示 A1 和 A2,并加以比较。
数字图像处理Matlab-傅里叶变换及其应用(附代码)_第1张图片
CON:从第一张图来看,进行傅里叶变换后,频率范围主要集中在低频区域,可以看到图像中间有一个亮点,其余为黑色

数字图像处理Matlab-傅里叶变换及其应用(附代码)_第2张图片
CON:经对数增强后,可以看到低频分量的细节信息,发现两种求幅值的方法得到的频谱图还是有些区别的,不过整体的布局还都大致相同

2、近似冲击函数二维傅里叶变换

冲激函数A,作 A 的二维傅里叶变换 B,将 B 直流分量移到频谱中心 B1,分别用 函数 imshow 和 mesh 显示 A 和 B1 模的对数(log(1+abs(B1)))
数字图像处理Matlab-傅里叶变换及其应用(附代码)_第3张图片
CON:左图是生成的类似冲击函数,中间有亮点,四周为黑色右图为其频谱图,从左图中可以看出,其中大部分区域的图颜色要么白,要么黑,基本没有变化,因此低频分量还是占绝大多数,在黑白交接的地方,颜色变化比较快,因此也会有一些高频分量,因此在右图中的四周,代表高频分量的区域会有亮块。

CON:这两个是mesh画出的立体图,与上面两个图对应,上图亮的地方这个的幅值就高

3、空间滤波与频域滤波

将图 Fig0504(a)(gaussian-noise).ti(f f)分别进行空间与频域滤波。

空间滤波:用 fspecial 产生 9*9,标准差为 2 的高斯滤波器 w,用函数 imfilter对 f 进行空间滤波,得到滤波后的图像 fi1。

频域滤波:将上述高斯滤波器 w 用函数 freqz2 获得其 256*256 频域形式 W, 用 W 在频域滤波图像 f(注意 W 的直流分量在频谱中心),得到 Ff,

求其傅里叶逆变换(ifft2),得到滤波后的图像 fi2

数字图像处理Matlab-傅里叶变换及其应用(附代码)_第4张图片
用函数 imshow 显示 w,用函数 mesh 显示 W,用 imshow 显示 f, fi1,Ff 的模的对数,fi2。
比较 fi1 与 fi2。

CON:原图为有噪声的图,经过滤波后可以明显看到滤波效果

CON:左上图是空间滤波器的时域图像,右上图是频域,所以主要还是低频滤波器。左下图是经过频率滤波后图像的频谱图,可以看到低频分量(分布在四周)区域要亮一些,代表数值大一些,右下图是经过滤波之后的图

【附录】程序

clear all;clc;
%第1题
f=imread('E:\数字图像处理\程序与图像\图像库\Fig0316(3)(third_from_top).tif');  %读取图像,获得信息
figure(1);
subplot(2,2,1);
imshow(f);%显示图像
title('原图');  

F=fft2(f);%傅里叶变换
subplot(2,2,2);
F1=fftshift(F);%居中
S=abs(F1);%居中的傅里叶谱
imshow(S, [])%显示图像
title('居中的傅里叶谱');     

RR=real(F1);%傅里叶谱的实部
II=imag(F1);%傅里叶谱的虚部
Angle=atan2(imag(F1),real(F1));%相角
A1=abs(F1);
A2=sqrt(RR.^2+II.^2);
subplot(2,2,3);
S1=log(1+A1);
imshow(S1, [])%显示图像
title('A1');
subplot(2,2,4);
S2=log(1+A2);
imshow(S2, [])%显示图像
title('A2');    
%第2题
A=zeros(99,99); 
A(49:51,49:51)=1;
B=fft2(A);
B1=fftshift(B);%居中
S1=log(1+abs(B1));%对数增强
S2=log(1+abs(A));%对数增强
figure(2); 
subplot(2,2,1);
imshow(A)%显示图像
title('原图');   
subplot(2,2,2);
imshow(S1, [])%显示图像
title('对数增强后的频域图像');
subplot(2,2,3);
mesh(A);
title('原图的立体图');
subplot(2,2,4);
mesh(S1);
title('对数增强后的的立体图');
%第3题
f=imread('E:\数字图像处理\程序与图像\图像库\Fig0504(a)(gaussian-noise).tif');  %读取图像,获得信息
w=fspecial('gaussian',[9 9],2);
fi1=imfilter(f,w,'replicate');  

W=freqz2(w,256,256);
W1=ifftshift(W);
F=fft2(f);
Ff=F.*W1;
fi2=ifft2(Ff);%fi2=uint8(fi2);
fi2=mat2gray(fi2); 

figure(3);
subplot(3,2,1);
imshow(w,[]);
title('高斯空间滤波器'); 

subplot(3,2,2);
mesh(W);
title('高斯频域滤波器'); 

subplot(3,2,3);
imshow(f);
title('原图'); 

subplot(3,2,4);
imshow(fi1,[]);
title('高斯空间滤波器的结果'); 

subplot(3,2,5);
imshow(log(1+abs(Ff)),[]);
title('对数增强的高斯空间滤波的结果'); 

subplot(3,2,6);
imshow(fi2);
title('高斯频域滤波器的结果');

【图像上文已给出】

你可能感兴趣的:(数字图像处理-Matlab)