数字图像处理——高斯低通滤波器(GLPF)实验报告

一、程序代码及注释

1、myGLPF函数

%pho参数为输入图像的路径

%D0参数为截止频率

function im2 = myGLPF(pho,D0)

ima = imread(pho); %读取输入图像

%得到高斯低通滤波器

[r,c] = size(ima); %获取输入图像的行和列

D = zeros(r,c); %D(u,v)是距频率矩形中心的距离

for i=1:r

   for j=1:c

       D(i,j)=sqrt((i-r/2)^2+(j-c/2)^2);

   end

end

H=exp(-(D.^2)/(2*D0*D0)); %计算滤波器,得到高斯低通滤波器

F=fft2(ima,size(H,1),size(H,2)); %对原图像进行傅里叶变换

F=fftshift(F); %对傅里叶变换后的F进行中心移位

F1=ifft2(ifftshift(H.*F)); %对中心移位后的F使用高斯低通滤波器后进行反FFT移动(记得一定要进行一次反FFT移动,否则输入结果图片背景会变暗),并进行反变换

im2=real(F1); %从结果中获取幅度(或称频率谱)

im2=uint8(im2);

2、useMyGLPF函数

function [] = useMyGLPF(pho) 

ima=imread(pho); %输入图像 

subplot(231); %显示输入图像 

imshow(ima); 

title('输入图像'); 

  

D0=[60 80 100 120 140]; %设置多个截止频率进行对比 

for i=1:size(D0,2) 

   g=myGLPF(pho,D0(i)); %得到使用不同截止频率的高斯低通滤波器后的结果 

   subplot(2,3,i+1); %显示结果 

   imshow(g); 

   title(['D0 = ',num2str(D0(i))]); 

end 

3、使用useMyGLPF()

pho1=imread('p4.jpg');

pho2=rgb2gray(pho1);

imwrite(pho2,'p4_gray.jpg')

useMyGLPF('p4_gray.jpg')

二、实验结果

实验选取了两幅人像图作为输入。

实验1:

(a)原图像(400×411像素);(b) (c)分别是使用D0=80和D0=100的的GLPF对图像滤波后的结果。注意图(b)和图(c)中放大部分的皮肤皱纹已减少了

实验2:

输入:

原图

输出:

放大后:

  不同D0的GLPF对图像滤波后的结果


三、参考原文:https://blog.csdn.net/qq_15096707/article/details/50061145 


猜你喜欢

转载自blog.csdn.net/huangyixian2/article/details/79840938