Matlab低通滤波器的使用–频域图像增强实验

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('巴特沃斯低通滤波器处理后'); 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224589.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午11:36
下一篇 2026年3月17日 上午11:36


相关推荐

  • c语言中u8,u16,u32和int区别[通俗易懂]

    c语言中u8,u16,u32和int区别[通俗易懂]c语言中u8,u16,u32和int区别为符号不同、数据范围不同、内存占用的空间不同。一、符号不同1、u8:u8表示无符1653号char字符类型。2、u16:u16表示无符号short短整数类型。3、u32:u32表示无符号int基本整数类型。4、int:int表示带符号int基本整数类型。二、数据范围不同1、u8:u8的数据范围为0~+127[0~2^8-1]。2、u16:u16的数据范围为0~+65535[0~2^16-1]。3、u32:u32的数据范围为0+2147483647[0

    2022年10月15日
    15
  • mysql字符串截取函数「建议收藏」

    mysql字符串截取函数「建议收藏」mysql字符串截取函数left(),right(),substring(),substring_index();还有mid(),substr()。其中,mid(),substr()等价于substring()函数,substring()的功能非常强大和灵活。1.字符串截取:left(str,length)mysql>selectleft(‘example….

    2022年10月2日
    6
  • 对象的扩展运算符

    对象的扩展运算符之前我写过一篇笔记就是说扩展运算符的 可是那个笔记说的并不全面 以前我一直片面的认为 扩展操作符只能作用于数组而不能作用于对象 而且只能在函数调用的时候使用 可实际上扩展操作符是可以作用于对象的 文章目录解构赋值扩展运算符解构赋值应该来说 扩展运算符用在解构赋值中更像是 rest 参数 同样是把目标对象还未读取的字段 分配到指定的对象 例如 let a b c a 12

    2026年3月17日
    2
  • heels(redflagdeals)

    Shewaschosenbeingonewiththe50beautiesinmagazine.There’salwaysasoundtrackandcameramaninsidemy…

    2022年4月16日
    59
  • JS数组删除指定下标元素「建议收藏」

    JS数组删除指定下标元素「建议收藏」splice方法——Array.splice(index,n)参数语义化理解:删除以下标index为起点的n个元素。(之后的元素会往前移动)

    2026年4月16日
    8
  • dlv golang调试

    dlv golang调试golangdlv 调试

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号