数字图像处理matlab代码 下载本文

内容发布更新时间 : 2024/6/26 21:55:19星期一 下面是文章的全部内容请认真阅读。

一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。

1、不同滤波器的频域降噪

1.1 理想低通滤波器(ILPF)

I1=imread('eight.tif'); %读取图像 I2=im2double(I1);

I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1);

imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2);

imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像');

s=fftshift(fft2(I4)); %将灰度图像的二维不连续Fourier 变换的零频率成分

移到频谱的中心

[M,N]=size(s); %分别返回s的行数到M中,列数到N中 n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 d0=40; %初始化d0 for i=1:M for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况 h=1; %通带变换函数

else %点(i,j)在阻带内的情况 h=0; %阻带变换函数 end

s(i,j)=h*s(i,j); %ILPF滤波后的频域表示

end end

s=ifftshift(s); %对s进行反FFT移动

s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复

数的实部转化为无符号8位整数

subplot(1,3,3); %创建图形图像对象 imshow(s); %显示ILPF滤波后的图像 title('ILPF滤波后的图像(d=40)'); 运行结果:

1.2 二阶巴特沃斯低通滤波器(BLPF)

I1=imread('eight.tif'); %读取图像 I2=im2double(I1);

I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1);

imshow(I2) %显示灰度图像 title('原始图像'); %为图像添加标题 subplot(1,3,2);

imshow(I4) %加入混合躁声后显示图像 title('加噪后的图像');

s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分

移到频谱的中心

[M,N]=size(s); %分别返回s的行数到M中,列数到N中 n=2; %对n赋初值

n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 d0=40; %初始化d0 for i=1:M for j=1:N

d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1/(1+(d/d0)^(2*n)); %BLPF滤波函数 s(i,j)=h*s(i,j); %ILPF滤波后的频域表示 end end

s=ifftshift(s); %对s进行反FFT移动

s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取

复数的实部转化为无符号8位整数

subplot(1,3,3); %创建图形图像对象 imshow(s); %显示ILPF滤波后的图像 title('BLPF滤波后的图像(d=40)'); 实验结果:

1.3 指数型低通滤波器(ELPF)

I1=imread('eight.tif'); %读取图像 I2=im2double(I1);

I3=imnoise(I2,'gaussian',0.01); I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1);