我是靠谱客的博主 忧伤石头,最近开发中收集的这篇文章主要介绍Matlab低通滤波器的使用--频域图像增强实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//添加噪声
C=imread('');
image=double(C);//转换成double
[h,w]=size(image);
image2=uint8(zeros(h,w));
for i=1:h
    for j=1:w
        image2(i,j)=image(i,j);
        if rand(1,1)>=0.99 //大于该值产生焦点
            if rand(1,1)>=0.5 //大于0.5产生白点
            image2(i,j)=(255);
            else
            image2(i,j)=(0);//否则产生黑点
            end
        end
    end
end
//高斯低通滤波器
f1=im2double(image2);
D0=40;
g1=fft2(f1);//傅立叶变换
g1=fftshift(g1);//转换数据矩阵
[M1,N1]=size(g1);//如果图像f(x,y)的尺寸为M×N,则对(-1)(x+y)f(x,y)进行傅立叶变换后的频率平面的原点在(M/2,N/2)
m1=fix(M1/2);
n1=fix(N1/2);
s1=zeros(M1,N1);
for i=1:M1
   for j=1:N1
        d=sqrt((i-m1)^2+(j-n1)^2);//D(u,v)为频率平面从原点到点(u,v)的距离
        h1=exp((-d^2)/(2*(D0^2)));//计算高斯低通滤波器传递函数
        s1(i,j)=h1*g1(i,j);
   end
end
y1=ifft2(ifftshift(s1));
y1=log(1+abs(y1));
//巴特沃斯低通滤波器
f2=im2double(image2);
g2=fft2(f2);
g2=fftshift(g2);
n0=2;
[M2,N2]=size(g2);
m2=fix(M2/2);
n2=fix(N2/2);
s2=zeros(M2,N2);
for i=1:M2
   for j=1:N2
        d=sqrt((i-m2)^2+(j-n2)^2);
        h2=1/(1+(d/D0)^(2*n0));//计算巴特沃斯低通滤波器传递函数
        s2(i,j)=h2*g2(i,j);
 
   end
end
//绘画
figure;
subplot(2,2,1);imshow(C);
title('原图');
subplot(2,2,2);imshow(imamge2);
title('椒盐噪声后');
y2=ifft2(ifftshift(s2));
y2=log(1+abs(y2));
//如果图像进行傅里叶转换后立即用imshow函数显示,则在命令行可能会显示:Warning: Displaying real part of complex input(警告: 显示复数输入项的实部)。这是因为经过傅里叶变换后的图像矩阵大多是复数矩阵,包含实部和虚部。
//此时如要显示图像则需要先用abs取复数矩阵的模,再进行显示
subplot(2,2,3);imshow(y1,[]);
//当图像是double类型时要使用imshow(I,[])来根据数据矩阵的数值范围自动设置灰度图像显示范围
title('高斯低通滤波器处理后');
subplot(2,2,4);imshow(y2,[]);
title('巴特沃斯低通滤波器处理后');

最后

以上就是忧伤石头为你收集整理的Matlab低通滤波器的使用--频域图像增强实验的全部内容,希望文章能够帮你解决Matlab低通滤波器的使用--频域图像增强实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(100)

评论列表共有 0 条评论

立即
投稿
返回
顶部