18组实验四王栩灿肖凌峰张皓Word文件下载.docx
《18组实验四王栩灿肖凌峰张皓Word文件下载.docx》由会员分享,可在线阅读,更多相关《18组实验四王栩灿肖凌峰张皓Word文件下载.docx(28页珍藏版)》请在冰点文库上搜索。
![18组实验四王栩灿肖凌峰张皓Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/c3e876b5-a75f-4f6e-bf4a-9b4c92eafde5/c3e876b5-a75f-4f6e-bf4a-9b4c92eafde51.gif)
截止频率位于距原点D0的n阶布特沃斯滤波器(BLPF)的传递函数概念为
与IFPF不同,BLPF并无字通过频率和滤除频率之间给出明显截止的急剧不持续性。
且空间域的一阶布特沃斯滤波器没有振铃现象。
④高斯低通/高通滤波器
高斯滤波器的二维形式由下式给出:
⑤Fresnel衍射与Fraunhofer衍射
在光学里,菲涅耳衍射(Fresneldiffraction)指的是在近场区域的,即光源或衍射的图样的屏与衍射孔(障碍物)的距离是有限的。
菲涅耳衍射积分式能够用来计算光波在近场区域的传播,因法国物理学者奥古斯丁·
菲涅耳而命名,是基尔霍夫衍射公式的近似。
夫琅禾费衍射是指把单色点光源放在透镜的核心上,通过透镜后的单色平行光垂直照射时,在屏后面不同距离上会观看到一些现象,其中当屏远离到足够大的距离后,中心显现一个较大的亮斑,外围是一些较弱的明暗相间的同心圆环,尔后再往外移动,衍射花腔显现稳固散布,中心处老是亮的,只是半径不断扩大罢了,这种衍射称为夫琅禾费衍射,又称(而当距离较近时为,较近时没有夫琅禾费衍射)。
四、实验程序与结果
①构造同时包括50Hz和120Hz的正弦信号进行傅里叶变换并分析。
主程序
f1=fun_GenSinWave(1000,1000,50);
%plot(f1);
f2=fun_GenSinWave(1000,1000,120);
%figure;
plot(f2);
f=f1+f2;
y=fft(f);
figure;
plot(y);
正弦波生成函数
function[output]=fun_GenSinWave(fs,N,f)
%partone,generate50Hzand100HzsinsignalanddoFourierchange
fsm=fs;
%采样频率
Ns=N;
n=0:
N-1;
t=n/fs;
f1=f;
x=sin(2*pi*f1*t);
能够看到不同的频率在做傅里叶变换后被区分开来。
②以高斯光束为例(自己选的例子亦可),利用matlab实现二维图像的傅里叶变换,选取不同的抽样距离,观看抽样距离对结果的阻碍并分析。
采纳lena图像进行二维傅里叶变换
主程序:
%二维傅里叶变换
f=imread('
'
);
%以lena图为例
f=rgb2gray(f);
%转为灰度图
f=double(f);
%转为double值
F1=fft2(f);
%利用MATLAB库傅里叶变换函数
F1=abs(F1);
F1=fftshift(F1);
%浮点移动到中央位置
F1=log10(F1);
F1=uint8(F1);
%取对数,恢复至无符号八位整形
imshow(F1,[])%显示图像。
imwrite(F1,'
F2=downsample(f,2);
%利用downsample函数进行降采样
F2=fft2(f);
F2=abs(F2);
F2=fftshift(F2);
F2=log10(F2);
F2=uint8(F2);
figure,imshow(F2,[])%显示图像。
imwrite(F2,'
原图像
二维傅里叶变换后图像二维傅里叶变换后图像(降采样)
采纳了matlab库函数中的快速傅里叶变换函数(FFT)进行变换,尽管从结果图上不易看到降采样产生的阻碍,可是在查看图像的矩阵中数值时能够观看到像元的值是不一样的。
③对某一图像(如)
clearall
clc
图3-5'
R1=30;
R2=90;
R3=160;
F=fft2(f);
F=fftshift(F);
%原图像的傅里叶逆变换
%------------------------理想低通滤波--------------------------------------
Lowpass_Filters1=fun_Lowpass_Filters(F,R1);
imwrite(Lowpass_Filters1,'
R=30的理想低通滤波.bmp'
Lowpass_Filters2=fun_Lowpass_Filters(F,R2);
imwrite(Lowpass_Filters2,'
R=90的理想低通滤波.bmp'
Lowpass_Filters3=fun_Lowpass_Filters(F,R3);
imwrite(Lowpass_Filters3,'
R=160的理想低通滤波.bmp'
%------------------------理想高通滤波--------------------------------------
Highpass_Filters1=fun_Highpass_Filters(F,R1);
imwrite(Highpass_Filters1,'
R=30的理想高通滤波.bmp'
Highpass_Filters2=fun_Highpass_Filters(F,R2);
imwrite(Highpass_Filters2,'
R=90的理想高通滤波.bmp'
Highpass_Filters3=fun_Highpass_Filters(F,R3);
imwrite(Highpass_Filters3,'
R=160的理想高通滤波.bmp'
%------------------------高斯低通滤波--------------------------------------
Gaussian_Lowpass_Filters1=fun_Gaussian_Lowpass_Filters(F,R1);
imwrite(Gaussian_Lowpass_Filters1,'
R=30的高斯低通滤波.bmp'
Gaussian_Lowpass_Filters2=fun_Gaussian_Lowpass_Filters(F,R2);
imwrite(Gaussian_Lowpass_Filters2,'
R=90的高斯低通滤波.bmp'
Gaussian_Lowpass_Filters3=fun_Gaussian_Lowpass_Filters(F,R3);
imwrite(Gaussian_Lowpass_Filters3,'
R=160的高斯低通滤波.bmp'
%------------------------高斯高通滤波--------------------------------------
Gaussian_Highpass_Filters1=fun_Gaussian_Highpass_Filters(F,R1);
imwrite(Gaussian_Highpass_Filters1,'
R=30的高斯高通滤波.bmp'
Gaussian_Highpass_Filters2=fun_Gaussian_Highpass_Filters(F,R2);
imwrite(Gaussian_Highpass_Filters2,'
R=90的高斯高通滤波.bmp'
Gaussian_Highpass_Filters3=fun_Gaussian_Highpass_Filters(F,R3);
imwrite(Gaussian_Highpass_Filters3,'
R=160的高斯高通滤波.bmp'
%------------------------布特沃斯低通滤波-----------------------------------
Butterworth_Lowpass_Filters1=fun_Butterworth_Lowpass_Filters(F,R1);
imwrite(Butterworth_Lowpass_Filters1,'
R=30的布特沃斯低通滤波.bmp'
Butterworth_Lowpass_Filters2=fun_Butterworth_Lowpass_Filters(F,R2);
R=90的布特沃斯低通滤波.bmp'
Butterworth_Lowpass_Filters3=fun_Butterworth_Lowpass_Filters(F,R3);
R=160的布特沃斯低通滤波.bmp'
%------------------------布特沃斯高通滤波-----------------------------------
Butterworth_Highpass_Filters1=fun_Butterworth_Highpass_Filters(F,R1);
imwrite(Butterworth_Highpass_Filters1,'
R=30的布特沃斯高通滤波.bmp'
Butterworth_Highpass_Filters2=fun_Butterworth_Highpass_Filters(F,R2);
imwrite(Butterworth_Highpass_Filters2,'
R=90的布特沃斯高通滤波.bmp'
Butterworth_Highpass_Filters3=fun_Butterworth_Highpass_Filters(F,R3);
imwrite(Butterworth_Highpass_Filters3,'
R=160的布特沃斯高通滤波.bmp'
利用的自概念函数
理想低通/高通
function[output]=fun_Highpass_Filters(H_Image,R)
%------------------------变量------------------------------
%Image读取的图像
%R理想低通滤波的半径
Low=H_Image;
r=R;
[M,N]=size(Low);
h=zeros(M,N);
m=round(M/2);
n=round(N/2);
fori=1:
M
forj=1:
N
S=sqrt((i-m)^2+(j-n)^2);
ifS<
=r
h(i,j)=1;
else
h(i,j)=0;
end
end
Lowpass_Filters=h.*Low;
%理想低通滤波
Lowpass_Filters=uint8(real(ifft2(ifftshift(Lowpass_Filters))));
figure('
Name'
'
理想低通滤波'
imshow(Lowpass_Filters);
output=Lowpass_Filters;
%R理想高通滤波的半径
High=H_Image;
[M,N]=size(High);
Highpass_Filters=h.*High;
Highpass_Filters=uint8(real(ifft2(ifftshift(Highpass_Filters))));
理想高通滤波'
imshow(Highpass_Filters);
output=Highpass_Filters;
高斯低通/高通
function[output]=fun_Gaussian_Lowpass_Filters(G_Image,R)
%------------------------------变量------------------------------
%H_Image通过傅里叶变换处置的图像
%R高斯低通滤波的半径
Gaussian_Lowpass=G_Image;
[M,N]=size(Gaussian_Lowpass);
m1=fix(M/2);
n1=fix(N/2);
N
d=sqrt((i-m1)^2+(j-n1)^2);
G_H(i,j)=exp(-d^2/2/r^2);
end
end
Gaussian_Lowpass_Filters=Gaussian_Lowpass.*G_H;
Gaussian_Lowpass_Filters=ifftshift(Gaussian_Lowpass_Filters);
Gaussian_Lowpass_Filters=ifft2(Gaussian_Lowpass_Filters);
Gaussian_Lowpass_Filters=mat2gray(real(Gaussian_Lowpass_Filters));
高斯低通滤波'
imshow(Gaussian_Lowpass_Filters);
output=Gaussian_Lowpass_Filters;
function[output]=fun_Gaussian_Highpass_Filters(G_Image,R)
%R高斯高通滤波的半径
Gaussian_Highpass=G_Image;
[M,N]=size(Gaussian_Highpass);
G_Hh(i,j)=1-exp(-d^2/2/r^2);
Gaussian_Highpass_Filters=Gaussian_Highpass.*G_Hh;
Gaussian_Highpass_Filters=ifftshift(Gaussian_Highpass_Filters);
Gaussian_Highpass_Filters=ifft2(Gaussian_Highpass_Filters);
Gaussian_Highpass_Filters=mat2gray(real(Gaussian_Highpass_Filters));
高斯高通滤波'
imshow(Gaussian_Highpass_Filters);
output=Gaussian_Highpass_Filters;
布特沃斯低通/高通
function[output]=fun_Butterworth_Lowpass_Filters(B_Image,R)
%B_Image通过傅里叶变换处置的图像
%R布特沃斯低通滤波的半径
Butterworth_Lowpass=B_Image;
[M,N]=size(Butterworth_Lowpass);
m2=fix(M/2);
n2=fix(N/2);
M
d=sqrt((i-m2)^2+(j-n2)^2);
B_Hl=1/(1+(d/r)^(2*2));
resultBl(i,j)=B_Hl*Butterworth_Lowpass(i,j);
Butterworth_Lowpass_Filters=ifftshift(resultBl);
Butterworth_Lowpass_Filters=ifft2(Butterworth_Lowpass_Filters);
Butterworth_Lowpass_Filters=uint8(real(Butterworth_Lowpass_Filters));
布特沃斯低通滤波'
imshow(Butterworth_Lowpass_Filters);
output=Butterworth_Lowpass_Filters;
function[output]=fun_Butterworth_Highpass_Filters(B_Image,R)
%R布特沃斯高通滤波的半径
Butterworth_Highpass=B_Image;
[M,N]=size(Butterworth_Highpass);
B_HH=1/(1+(r/d)^(2*2));
resultBH(i,j)=B_HH*Butterworth_Highpass(i,j);
Butterworth_Highpass_Filters=ifftshift(resultBH);
Butterworth_Highpass_Filters=ifft2(Butterworth_Highpass_Filters);
Butterworth_Highpass_Filters=uint8(real(Butterworth_Highpass_Filters));
布特沃斯高通滤波'
imshow(Butterworth_Highpass_Filters);
output=Butterworth_Highpass_Filters;
结果图:
理想低通滤波
半径R
30
90
160
图片
理想高通滤波
布特沃斯低通滤波
布特沃斯高通滤波
高斯低通滤波
高斯高通滤波
空域高斯滤波(R=90)
比较能够得出,相关于频率域高斯滤波,空域高斯滤波取得的图像灰度值较高一些。
实验主程序
由于版本不同及兼容问题汉字部份会变成乱码,源程序可看。
%===========·
Æ
Ä
ù
¶
û
Ñ
Ü
É
ä
Ó
ë
·
ò
À
Å
º
Ì
========
%
%========================================
clearall;
clc;
%¶
Á
È
¡
Ã
æ
µ
Í
¼
Ï
ñ
þ
Î
¬
¸
ß
Ë
¹
â
Ê
ø
Õ
Ö
²
.jpg'
f=double(f)./255;
imshow(f);
title('
Ô
Ú