二维 高斯低通滤波器matlab程序设计
matlab滤波器设计(源代码)

某合成信号,表达式如下:f=10cos(2pi*30t)+cos(2pi*150t)+5cos(2pi*600t),请设计三个滤波器,分别提取出信号中各频率分量,并分别绘制出通过这三个滤波器后信号的时域波形和频谱这个信号的频率分量分别为30、150和600Hz,因此可分别设计一个低通、带通和高通的滤波器来提取。
以FIR滤波器为例,程序如下:clear;fs=2000;t=(1:1000)/fs;x=10*cos(2*pi*30*t)+cos(2*pi*150*t)+5*cos(2*pi*600*t);L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);figure(1);subplot(2,1,1);plot(t,x);grid on;title('滤波前信号x');xlabel('时间/s');% 原始信号subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw));% 查看信号频谱grid on;title('滤波前信号频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');%% x_1=10*cos(2*pi*30*t)Ap=1;As=60;% 定义通带及阻带衰减dev=[(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量mags=[1,0];% 低通fcuts=[60,100];% 边界频率[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数hh1=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计x_1=filter(hh1,1,x);% 滤波x_1(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分L=length(x_1);N=2^(nextpow2(L));Hw_1=fft(x_1,N);figure(2);subplot(2,1,1);plot(t(1:L),x_1);grid on;title('x_1=10*cos(2*pi*30*t)');xlabel('时间/s');subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_1));% 查看信号频谱grid on;title('滤波后信号x_1频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');%% x_2=cos(2*pi*150*t)Ap=1;As=60;% 定义通带及阻带衰减dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1),10^(-As/20)];% 计算偏移量mags=[0,1,0];% 带通fcuts=[80,120,180,220];% 边界频率[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计x_2=filter(hh2,1,x);% 滤波x_2(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分L=length(x_2);N=2^(nextpow2(L));Hw_2=fft(x_2,N);figure(3);subplot(2,1,1);plot(t(1:L),x_2);grid on;title('x_2=cos(2*pi*150*t)');xlabel('时间/s');subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_2));% 查看信号频谱grid on;title('滤波后信号x_2频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');%% x_3=5*cos(2*pi*600*t)Ap=1;As=60;% 定义通带及阻带衰减dev=[10^(-As/20),(10^(Ap/20)-1)/(10^(Ap/20)+1)];% 计算偏移量mags=[0,1];% 高通fcuts=[500,550];% 边界频率[N,Wn,beta,ftype]=kaiserord(fcuts,mags,dev,fs);% 估算FIR滤波器阶数hh2=fir1(N,Wn,ftype,kaiser(N+1,beta));% FIR滤波器设计x_3=filter(hh2,1,x);% 滤波x_3(1:ceil(N/2))=[];% 群延时N/2,删除无用信号部分L=length(x_3);N=2^(nextpow2(L));Hw_3=fft(x_3,N);figure(4);subplot(2,1,1);plot(t(1:L),x_3);grid on;title('x_3=5*cos(2*pi*600*t)');xlabel('时间/s');subplot(2,1,2);plot((0:N-1)*fs/L,abs(Hw_3));% 查看信号频谱grid on;title('滤波后信号x_3频谱图');xlabel('频率/Hz');ylabel('振幅|H(e^jw)|');。
基于Matlab的数字图像二维滤波软件设计

第17卷 第2期厦门理工学院学报Vol .17 No .2 2009年6月Journal of Xia men University of Technol ogy Jun .2009 [收稿日期]2009-04-07 [修回日期]2009-05-26[基金项目]厦门市科技计划指导性项目(3502Z20077007);厦门理工学院教改项目(JG200807)[作者简介]陈金西(1963-),男,副教授,福建安溪人,从事电子信息技术教学与科研.基于Matlab 的数字图像二维滤波软件设计陈金西(厦门理工学院电子与电气工程系,福建厦门361024)[摘 要]本设计采用M atlab 程序,设计数字图像二维滤波平台,用户可任意给定滤波参数及图像,即可观察滤波器特征图像、图像的滤波效果,并可根据需要存储结果.这种可视化处理过程,形象直观,便于理解和学习图像处理过程、二维滤波器系统特征.本设计开发目的是给数字图像滤波处理的学习与分析研究提供一个软件平台.[关键词]二维滤波器;数字图像;Mat L ab;仿真;多媒体教学[中图分类号]T N91116;TP31 [文献标志码]A [文章编号]1008-3804(2009)02-0040-060 引言数字图像滤波器是二维滤波器,数学模型复杂,不易理解,本设计采用Matlab 语言,设计数字图像二维滤波器平台,用户可任意给定滤波参数,即可观察二维滤波器的系统特征图像、图像的滤波效果,并可根据需要存储结果.这种可视化处理过程,形象直观便于理解图像处理过程和二维滤波器系统特征,方便图像滤波处理的研究和学习.1 系统设计与仿真111 理想低通滤波设计理想低通滤波器是指小于D 0的频率可以完全不受影响地通过滤波器,而大于D 0的频率则完全通不过.理想低通滤波函数:H (u,v )=1当D (u,v )≤D 00当D (u,v )>D 0,其中D 0为截断频率,D (u,v )=u 2+v 2是从点(u,v )到频率平面原点的距离.程序算法:输入图像及滤波器设计指标即X 、D 0;[M ,N ]=size (x );if D0>M /2|D0>N /2,err ordlg (’输入边缘频率太大,请重新输入!’);end;filt =zer os (M ,N );for i =1:M ,f or j =1:N ,r =sqrt ((i -M /2)^2+(j -N /2)^2);if (r <=D0),filt (i,j )=1;end;end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w _freq =ifftshift (filt_i m );ne w _i m =ifft2(ne w _freq,M ,N );y1=abs (filt_i m );axes (handles .axes1);i m show (x );axes (handles .axes2);i m show (abs (y ));axes (handles .axes3);i m s 2how (abs (filt ),[]);axes (handles .axes4);i m show (abs (ne w_i m ),[]);axes (handles .axes5);i m show (y1/(M 3N ));程序运行仿真结果如图1所示.程序仿真结果分析:改变滤波半径,仿真结果与图像处理理论相符合.当滤波半径D 0越小,理想低通滤波器的平滑作用越明显.但由于频谱中有一个陡峭的波形,它的反变换h (x,y )有强烈的振 第2期陈金西:基于Matlab的数字图像二维滤波软件设计铃特性,使滤波后图像产生模糊效果,因此这种理想低通滤波在实际应用中不能采用.低通滤波的能量和D 0的关系:以理想低通滤波作用于N ×N 的数字图像,图像总能量为E =∑N -1u =0∑N -1v =0F (u,v ),当理想低通滤波的D 0变化时,通过的能量与图像总能量之比是D 0的函数.实验表明,图像能量大部分集中在低频区,能量关系如表1所示.表1 滤波半径D 0与包含能量关系Ta b.1 The re l a ti o n be t w ee n filte r sem i d i am e te r a nd pow e r 滤波半径D 0占总频带的百分比/%包含总能量/%滤波半径D 0占总频带的百分比/%包含总能量/%590.03699.01196.05399.52298.09899.9112 理想高通滤波设计理想高通滤波器是指大于D 0的频率可以完全不受影响地通过滤波器,而小于D 0的频率则完全通不过.理想高通滤波函数:H (u,v )=1当D (u,v )≤D 00当D (u,v )>D 0,其中D 0为截断频率,D (u,v )=u 2+v 2是从点(u,v )到频率平面原点的距离.程序算法:输入图像及滤波器设计指标即X 、D 0;[M ,N ]=size (x );if D0>M /2|D0>N /2,err ordlg (’输入边缘频率太大,请重新输入!’);end;filt =zer os (M ,N );for i =1:M ,f or j =1:N ,if ((sqrt (((i -M /2)^2)+((j -N /2)^2)))>D0),filt (i,j )=1;end;end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w _freq =ifftshift (filt_i m );ne w _i m =ifft2(ne w _freq,M ,N );y1=abs (filt_・14・厦门理工学院学报2009年i m );图像输出程序与理想低通滤波程序相同.程序运行仿真结果如图2所示.程序仿真结果分析:改变滤波器边缘频率,仿真结果与图像处理理论相符合.当滤波半径D 0越大,理想高通滤波器的锐化作用越明显,但由于频谱有一个陡峭的波形,它的反变换h (x,y )有强烈的振铃特性,使滤波后图像产生模糊效果.113 理想带通滤波设计理想带通滤波器是指大于D 0且小于D 1的频率可以完全不受影响地通过滤波器,而小于D 0或大于D 1的频率则完全通不过.理想带通滤波函数为H (u,v )=0当D (u,v )<D 0或D (u,v )>D 11当D (u,v )≥D 0和D (u,v )≤D 1,其中D 0、D 1为截断频率,D (u,v )=u 2+v 2是从点(u,v )到频率平面原点的距离.程序算法:输入图像及滤波器设计指标即X 、D 0、D 1;[M ,N ]=size (x );if D0>D1,err ordlg (’输入边缘频率错误,请重新输入!’);end;filt =zer os (M ,N );f or i =1:M for j =1:N r =sqrt ((i -M /2)^2+(j-N /2)^2);if r >=D0&r <=D1,filt (i,j )=1;end;end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w_freq =ifftshift (filt_i m );ne w_i m =ifft2(ne w_freq,M ,N );y1=abs (filt_i m );图像输出程序与理想低通滤波程序相同.程序运行仿真结果如图3所示.程序仿真结果分析:改变滤波器边缘频率,仿真结果与图像处理理论相符合.当滤波半径D 0=0,理想带阻滤波器转化为理想低通滤波器;当滤波半径D 1=∞,理想带阻滤波器转化为理想高通滤波器.但由于频谱中存在一个陡峭的波形,它的反变换h (x,y )有强烈的振铃特性,使滤波后图像产生模糊效果.114 理想带阻滤波设计理想带阻滤波器是指小于D 0或大于D 1的频率可以完全不受影响地通过滤波器,而大于D 0且小于D 1的频率则完全通不过.理想带阻滤波函数为H (u,v )=0当D (u,v )>D 0和D (u,v )<D 11当D (u,v )≤D 0或D (u,v )≥D 1,・24・ 第2期陈金西:基于Matlab 的数字图像二维滤波软件设计其中D 0、D 1为截断频率.程序算法:输入图像及滤波器设计指标即X 、D 0、D 1;[M ,N ]=size (x );if D0>M /2|D0>N /2|D0>D1,err ordlg (’输入边缘频率错误,请重新输入!’);end;filt =zer os (M ,N );f or i =1:M f or j =1:N r =sqrt ((i -M /2)^2+(j -N /2)^2);if r <=D0&r >=D1,filt (i,j )=1;end;end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w_freq =ifftshift (filt _i m );ne w_i m =ifft2(ne w_freq,M ,N );y1=abs (filt_i m );图像输出程序与理想低通滤波程序相同.程序运行界面类似图3(图中带通改为带阻).程序仿真结果分析:改变滤波边缘频率D 0、D 1,仿真结果与图像处理理论相符合.当滤波半径D 0=0,理想带阻滤波器转化为理想高通滤波器;当滤波半径D 1=∞,理想带阻滤波器转化为理想低通滤波器.但由于频谱中存在一个陡峭的波形,它的反变换h (x,y )有强烈的振铃特性,使滤波后图像产生模糊效果.115 巴特沃斯低通滤波设计巴特沃斯低通滤波函数为H (u,v )=11+(D (u,v )/D 0)2n ,其中D 0为截断频率,D (u,v )=u 2+v 2是从点(u,v )到频率平面原点的距离.程序算法:输入图像及滤波器设计指标即X 、D 0、n;[M ,N ]=size (x );if D0>M /2|D0>N /2,err ordlg (’输入边缘频率太大,请重新输入!’);end;filt =zer os (M ,N );for i =1:M ,f or j =1:N ,r =sqrt ((i -M /2)^2+(j -N /2)^2);filt (i,j )=1/(1+(r/D0).^(23n ));end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w_freq =ifftshift (filt_i m );ne w_i m =ifft2(ne w_freq,M ,N );y1=abs (filt_i m );图像输出程序与理想低通滤波程序相同.程序运行仿真结果如图4所示.・34・厦门理工学院学报2009年程序仿真结果分析:改变滤波半径及阶数,仿真结果与图像处理理论相符合.当滤波半径D 0越小,低通滤波器的平滑作用越明显,当阶数n 越大,则图像越模糊,这是由于阶数越大越接近理想滤波器,频谱存在一个越陡峭的波形,它的反变换h (x,y )有越强烈的振铃特性,使滤波后图像产生越模糊效果.116 指数函数低通滤波设计指数低通滤波函数为H (u,v )=e -(D (u,v )/D 0)n ,其中D 0为截断频率,D (u,v )=u 2+v 2是从点(u,v )到频率平面原点的距离.程序算法:输入图像及滤波器设计指标即X 、D 0、n;[M ,N ]=size (x );filt =zer os (M ,N );f or i =1:M ,f or j =1:N ,r =sqrt ((i -M /2)^2+(j -N /2)^2);filt (i,j )=exp (-(r/D0).^n );end;end;freq_i m =fft2(x );freq_i m =fftshift (freq_i m );y =(1/(M 3N ))3freq_i m ;filt_i m =freq_i m .3filt;ne w_freq =ifftshift (filt _i m );ne w_i m =ifft2(ne w_freq,M ,N );y1=abs (filt_i m );图像输出程序与理想低通滤波程序相同.程序运行界面与图4相似.程序仿真结果分析:改变滤波半径及阶数,仿真结果与图像处理理论相符合.当n =2时,指数低通滤波器就是高斯低通滤波器.指数低通滤波器从通过频率到截止频率之间没有明显的不连续性,而是存在一个平滑的过渡带,所以无明显的振铃现象.相比巴特沃斯低通滤波器,指数低通滤波器随频率增加在开始阶段衰减得比较快,对高频分量的滤除能力较强,对图像造成的模糊较大,产生的振铃现象比巴特沃斯滤波器小,但平滑效果不如巴特沃斯滤波器,实用效果比巴特沃斯低通滤波器稍差.2 软、硬件运行环境及调试运行硬件要求:P Ⅱ以上CP U;512M 以上内存;20G 以上硬盘空间.・44・ 第2期陈金西:基于Matlab 的数字图像二维滤波软件设计软件要求:W indows2000及以上版本操作系统;采用可视化面向对象程序设计的Matlab2006为系统开发平台.本系统经过调试修改及实践验证,已能全面满足设计需要,提高了对数字图像处理学习研究的工作效率,显示较高的实用价值,可在“数字信号处理”、“数字图像处理”、“通信原理”和“医学图像处理”等课程教学辅助中推广使用.3 结论本系统具有如下技术特点:①把原始图像,原始图像二维频谱图,理想滤波器二维频谱图,滤波处理后图像,滤波处理后图像二维频谱图绘在同一界面上,方便用户观察比较,其图像处理运算过程清晰,运算结果形象直观,对图像处理过程的抽象数学理解能起到启发作用.各滤波器设计的仿真结果满足设计指标要求,频谱特性符合滤波器理论.②界面友好,使用方便,操作简单,运行效率高.③可方便改变滤波器参数,方便选择原始图像,快速绘出处理后的图像及滤波器的二维频域特性,方便观察与研究.④采用菜单形式,模块之间的联系清晰,调用方便.各系统采用独立模块,方便不同系统间比较观察研究.⑤对滤波器设计方法进行分类归纳,并进行简单明确的说明,方便“数字图像处理”、“数字信号处理”、“通信原理”、“医学图像处理”的教学辅助,也方便利用本软件进行滤波器设计的自学与研究.⑥滤波器频谱特性用二维图像表示,形象直观,对学习研究滤波器各特征之间相互关系很有帮助.⑦作者利用此平台作为多媒体教学辅助,把抽象的图像处理过程及滤波器数学模型用形象的图形来表征,较大提高教学效率,获得学生好评.[参考文献][1]章毓晋.图像处理[M ].北京:清华大学出版社,2006.[2]刘卫国.M atlab 程序设计[M ].北京:高等教育出版社,2006.[3]陈金西.F I R 数字滤波器设计可视化平台开发[J ].厦门理工学院学报,2008,16(4):37242.[4]李俊山,李旭辉.数字图像处理[M ].北京:清华大学出版社,2007.[5]何凯,等.基于高斯曲面拟合的影像渐晕复原方法[J ].电子学报,2009,37(1):67271.The D esi gn of the 22d i m en si on F ilter for D i g ita l I mage Ba sed on M a tl abCHE N J in 2xi(Depart m ent of Electr onic and Electrical Engineering,Xia men University of Technol ogy,Xia men 361024,China )Abstract:This design uses Matlab language t o build an e m luating p latf or m of filter f or digital i m age .It may modify one or more para meters t o study the character and effects of 22di m ensi on filter syste m.It acts as a t ool for analysis and study of filter syste m design and as a good p latf or m for multi m edia teaching f or digital i m 2age p r ocessing .Key words:22di m ensi on filter;digital i m age;matlab;si m ulati on;multi m edia teaching ・54・。
基于matlab的数字图像的频域滤波器设计

实验一:数字图像的频域滤波器设计一、实验目的掌握matlab 程序设计语言,掌握matlab 基本数据类型、核心函数及辅助函数的使用。
掌握理想和高斯低通滤波器的设计方法。
二、实验内容利用理想和高斯低通滤波器实现图像的频域滤波;利用理想和高斯高通滤波器实现图像的频域滤波;三、实验原理二维理想低通滤波器的传递函数为:001.(,)(,)0.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是指定非负数值,D (u ,v )是(u ,v )点距频率中心的距离。
如果要研究的图像尺寸为M X N ,则它的变换也有相同的尺寸。
在半径为D0的圆内,所有频率无衰减地通过滤波器,而在此半径之外的所有频率完全被衰减掉。
高斯高通滤波器传递函数为:220(,)/2(,)D u v D H u v e -=D (u ,v )是距傅立叶变换中心原点的距离。
D0是截止频率。
高斯低通滤波器的傅立叶变换也是高斯的。
二维理想高通滤波器的传递函数为:000.(,)(,) 1.(,)D u v D H u v D u v D ≤⎧=⎨>⎩D0是从频率矩形中点测得的截止频率长度,它将以D0为半径的圆周内的所有频率置零,而毫不衰减地通过圆周外的任何频率。
但其物理上是不可实现的。
高斯高通滤波器传递函数为:220(,)/2(,)1D u v D H u v e -=-高通滤波器能够用高斯型低通滤波器的差构成。
这些不同的滤波器有更多的参数,因此能够对滤波器的形状进行更多的控制。
四.实验设备和仪器1.计算机2. matlab开发平台五.关键代码及注释1.理想低通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整%ILPF滤波(程序中以d0=15为例)d0=50; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离if d<=d0 %点(i,j)在通带内的情况h(i,j)=1; %通带变换函数else %点(i,j)在阻带内的情况h(i,j)=0; %阻带变换函数ends(i,j)=h(i,j)*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s); title('ILPF滤波(d0=50)'); %显示ILPF滤波后的图像2.高斯低通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中%GLPF滤波d0=50; %初始化d0n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离h(i,j)=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h(i,j)*s(i,j); %GLPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)'); %显示GLPF滤波处理后的图像3.理想高通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整%IHPF滤波d0=15; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离if d<=d0 %点(i,j)在通带内的情况h(i,j)=0; %通带变换函数else %点(i,j)在阻带内的情况h(i,j)=1; %阻带变换函数ends(i,j)=h(i,j)*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s); title('IHPF滤波(d0=15)'); %显示IHPF滤波后的图像4.高斯高通滤波器RGB = imread('saturn.png');I0 = rgb2gray(RGB);subplot(2,3,1),imshow(I0);title('原图');I1 = imnoise(I0,'gaussian'); %对原图像加噪声subplot(2,3,2),imshow(I1);title('加入噪声后')%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心s=fftshift(fft2(I1));subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift');[M,N]=size(s); %分别返回s的行数到M中,列数到N中%GHPF滤波d0=15; %初始化d0n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h(i,j)=1-1*exp(-1/2*(d^2/d0^2)); %GHPF滤波函数s(i,j)=h(i,j)*s(i,j); %GHPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数subplot(2,3,5),imshow(s);title('GHPF滤波(d0=15)'); %显示GHPF滤波处理后的图像六.实验结果图一理想低通滤波器图二高斯低通滤波器图三理想高通滤波器图四高斯高通滤波器。
MATLABIIR数字低通滤波器的设计方法

MATLAB IIR 数字低通滤波器的设计方法1、IIR 数字低通滤波器滤波器分两大类:经典滤波器和现代滤波器。
经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念。
根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。
换句话说,就是工程信号是不同频率的正弦波线性叠加而成的,组成信号的不同频率的正弦波叫做信号的频率成分或叫做谐波成分。
现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。
经典滤波器分为低通、高通、带通、带阻滤波器。
每一种又有模拟滤波器(AF )和数字滤波器(DF )。
对数字滤波器,又有IIR 滤波器和FIR 滤波器。
我们要实现的是IIR 数字滤波器。
IIR 数字滤波器采用递归型结构,即结构上带有反馈环路。
IIR 滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。
单位响应:IIR 滤波器的单位脉冲响应为无限长,网络中有反馈回路。
幅频特性:IIR 数字滤波器幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上IIR DF 的转移函数是:∑∑=-=-+==N k kk Mr rr z a zb z X z Y z H 101)()()(IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。
2、滤波器的技术要求低通滤波器:p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减 s α:阻带允许的最小衰减 (p α,s α的单位dB )p Ω:通带上限角频率 s Ω:阻带下限角频率(s p pT ω=Ω,s s s T ω=Ω)即 Cpp F ωπ2=Ω CssF ωπ2=Ω3、IIR 数字滤波器的设计方法IIR 数字滤波器的设计方法有两类:间接设计法和直接设计法。
计算机视觉(二)-matlab之理想低通滤波器,布特沃斯低通、高斯低通,理想高通、布特沃斯。。。

计算机视觉(⼆)-matlab之理想低通滤波器,布特沃斯低通、⾼斯低通,理想⾼通、布特沃斯。
未整理完!在滤波器之前,先讲解傅⾥叶变换理想低通滤波器f = imread('Fig0441.tif');f = im2double(f);% 计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱');% 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 30; % 截⽌频率[10 30 60 160 460]H = mat2gray( D <= D0 );% 理想低通滤波器figure;imshow(H);title('理想低通滤波器');% 频域滤波G = F.*H;figure;imshow(mat2gray(log(1+abs(G))));title('频域滤波'); 1-sum(sum(abs(G).^2))/sum(sum(abs(F).^2))g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);figure;imshow(g);title('滤波后的图像');figure;subplot(121);imshow(f);title('原图');subplot(122);imshow(g);title('滤波后的图像');结果:原图:布特沃斯低通滤波器f = imread('Fig0441.tif');f = im2double(f);% 计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱'); % 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 30; % 截⽌频率[10 30 60 160 460]H = mat2gray(1./(1+((D./D0).^4)));figure;imshow(H);title('布特沃斯低通滤波器(n=2)');% 频域滤波G = F.*H;figure;imshow(mat2gray(log(1+abs(G))));title('频域滤波'); 1-sum(sum(abs(G).^2))/sum(sum(abs(F).^2))g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);figure;imshow(g);title('滤波后的图像');figure;subplot(121);imshow(f);title('原图');subplot(122);imshow(g);title('滤波后的图像'); matlab结果:⾼斯低通滤波器⾼斯低通滤波器代码:H = exp((-D.^2)/(2*(D0).^2));figure;imshow(H);title('滤波器(D0=100)');结果:理想⾼通滤波器理想⾼通滤波器代码:H = mat2gray( D >= D0 );%理想⾼通滤波器figure;imshow(H);title('滤波器()');结果:布特沃斯⾼通滤波器布特沃斯⾼通滤波器代码:H = 1./(1+((D0./D).^4));%布特沃斯⾼通滤波器figure;imshow(H);title('滤波器(n=2)');结果:⾼斯⾼通滤波器⾼斯⾼通滤波器代码:H = 1-exp((-D.^2)/(2*(D0).^2));%⾼斯⾼通滤波器figure;imshow(H);title('滤波器');matlab结果:混合⾼频强调滤波[file,path] = uigetfile({'*.png';'*.jpg';},'选择图⽚');f = imread([path,file]);f = im2double(f);%计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱'); % 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 40; %截⾄频率[10 30 60 160 460]H = 1-exp((-D.^2)/(2*(D0).^2));%¸⾼斯⾼通滤波G = (F.^(-1)).*((0.5+0.75.*H).*F);%figure;imshow(H);title('滤波器');figure;imshow(mat2gray(log(1+abs(G))));title('频率滤波'); % 傅⾥叶逆变换g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);i=histeq(g);figure;imshow(g);title('滤波后的图像');figure;imshow(i);title('直⽅图均衡');结果:原图:reference:李卫军,肖宛昂,董肖莉,覃鸿⽼师《视觉信息处理及FPGA 实现》课程等越是憧憬,越要风⾬兼程。
基于MATLAB的低通IIR滤波器设计

吉首大学信息科学与工程学院课程设计报告书课程通信系统设计与仿真课题:基于MATLAB的低通IIR滤波器设计姓名:曾杰、刘潇雄、刘送杰学号: 20124055079、 2012405507620124055077 专业:通信工程年级: 2012级指导教师:雷可君基地指导教师:雷可君2015年11 月一、项目介绍与设计目的Matlab 信号工具箱提供了几个直接设计IIR 数字滤波器的函数,直接调用这些函数就可以很方便地对滤波器进行设计。
用切比雪夫Ⅱ设计数字滤波器的函数如下: ChebysheveⅡ型滤波器:[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs)[b,a]=cheby2(N,Rs,Wn)[b,a]=cheby2(N,Rs,Wn,′ftype′)[h,f]=freqz(b,a,n,Fs)IIR数字滤波器具有无限宽的冲击响应, 与模拟滤波器相匹配。
所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。
例如利用脉冲响应不变法设计IIR数字滤波器, 其基本设计思路是直接设计一个数字滤波器并让它的时间特性逼近一个模拟滤波器。
为了达到时间特性的最佳逼近, 把模拟滤波器的冲击响应均匀取值, 作为数字滤波器的单位脉冲响应, 即:h(n) =h(t) |t-nT然后将h(n)通过z变换即求得H(z)。
因此, 脉冲响应不变法实际是时域取样法, 整个过程是先根据给定的指标设计一个模拟滤波器, 进而按下列变换的顺序, 最后求得数字滤波器的系统函数H(z), 即:H(s) → h(t) → h(n) →H(z)在对滤波器进行实际设计时, 整个过程运算量是很大的。
设计完成后要对已设计的滤波器的频率响应进行校核, 得到幅频相频响应特性, 运算量也是很大的。
通常, 待设计的数字滤波器, 阶数和类型并不一定是完全给定的, 很多时候都是要根据设计要求和滤波效果不断进行调整, 以达到设计的最优化。
在这种情况下, 滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。
课程设计_低通滤波器设计(含matlab程序)

2010/2011学年第 2 学期学院:信息与通信工程学院专业:电子信息科学与技术学生姓名:学号:课程设计题目:低通滤波器设计起迄日期: 6 月 13 日~6月 24日课程设计地点:指导教师:系主任:下达任务书日期: 2011 年 6 月12 日课程设计任务书课程设计任务书目录1 设计目的及要 (5)1.1设计目的 (5)1.2设计内容和要求 (5)2设计原理 (5)2.1 FIR滤波器 (5)2.2窗函数 (6)2.3矩形窗 (7)3设计过程 (8)3.1设计流程图 (8)3.2 产生原始信号并分析频谱 (8)3.3 使用矩形窗设计不同特性的数字滤波器 (10)3.4 信号滤波处理 (11)4 实验结果及分析 (12)5 课程设计心得体会 (12)6 参考文献 (13)附录: (14)低通滤波器的设计1 设计目的及要求1.1设计目的设计一种低通滤波器并对信号进行滤波。
低通滤波器的作用是滤去信号中的中频和高频成分,增强低频成分。
要求做到:1.了解MATLAB的信号处理技术;2.使用MATLAB设计低通滤波器,掌握其滤波处理技术;3.对滤波前和滤波后的波形进行时域和频域比较。
1.2设计内容和要求1.熟悉有关采样,频谱分析的理论知识,对信号作频谱分析;2.熟悉有关滤波器设计理论知识,选择合适的滤波器技术指标,设计低通滤波器对信号进行滤波,对比分析滤波前后信号的频谱;3.实现信号频谱分析和滤波等有关MATLAB函数;2设计原理本次课程设计,我们主要是基于矩形窗的FIR滤波器来设计一个低通滤波器。
2.1 FIR滤波器FIR滤波器即有限抽样响应因果系统,其单位抽样响应h<n>是有限长的;极点皆位于z=0处;结构上不存在输出到输入的反馈,是非递归型的。
其系统函数表示为:普通的FIR滤波器系统的差分方程为:式中:N为FIR滤波器的抽头数;x<n>为第n时刻的输入样本;h<i>为FIR滤波器第i级抽头系数。
matlabiir低通滤波器设计

MATLAB IIR低通滤波器设计IIR滤波器是一种数字滤波器,其中包含反馈环,它可以提供更窄的过渡带和更低的滤波器阶数。
MATLAB是一种广泛使用的工程软件,能够帮助工程师和科学家设计和分析IIR低通滤波器。
本文将介绍如何使用MATLAB来设计IIR低通滤波器。
1. 理论基础在设计IIR低通滤波器之前,首先需要理解滤波器的基本原理。
IIR滤波器是一种递归滤波器,其输出取决于当前输入和过去的输出。
在设计IIR低通滤波器时,需要确定滤波器的截止频率和通带波纹等参数。
通常情况下,设计人员会根据特定的要求来确定这些参数,然后使用MATLAB来实现这些要求。
2. 设计步骤设计IIR低通滤波器通常需要以下几个步骤:(1)确定要求的滤波器规格,包括截止频率、通带波纹和阻带衰减等参数。
(2)选择合适的滤波器结构,如Butterworth、Chebyshev或Elliptic等。
(3)使用MATLAB中的滤波器设计工具箱来实现滤波器设计。
(4)对设计的滤波器进行验证和性能评估,确保其符合要求。
3. MATLAB工具箱MATLAB提供了丰富的滤波器设计工具箱,其中包括了各种滤波器设计方法和函数。
下面是一些常用的MATLAB滤波器设计函数:(1)butter:用于Butterworth滤波器设计。
(2)cheby1和cheby2:分别用于Chebyshev Type I和Type II滤波器设计。
(3)ellip:用于Elliptic滤波器设计。
(4)fir1和fir2:分别用于线性相位和最小相位FIR滤波器设计。
4. 实例演示接下来以一个实例来演示如何使用MATLAB设计IIR低通滤波器。
假设我们需要设计一个15阶Butterworth低通滤波器,截止频率为500Hz,通带最大衰减为3dB,阻带最小衰减为40dB。
我们可以按照以下步骤使用MATLAB来实现这一设计:```matlab定义滤波器参数order = 15; 滤波器阶数fc = 500; 截止频率A_p = 3; 通带最大衰减A_s = 40; 阻带最小衰减设计Butterworth低通滤波器[b, a] = butter(order, fc/(Fs/2));绘制滤波器幅频响应freqz(b, a, 1024, Fs);```通过上述代码,我们可以使用MATLAB设计出满足要求的IIR低通滤波器,并绘制出其幅频响应图。
matlab实现一阶低通滤波器,用matlab设计的IIR滤波器源程序-IIR一阶低通高通

matlab实现⼀阶低通滤波器,⽤matlab设计的IIR滤波器源程序-IIR⼀阶低通⾼通⽤matlab设计的IIR滤波器源程序(1)IIR⼀阶低通滤波器 P576clear;fi=1;fs=10;Gc2=0.9;wc=2*pi*fi/fs;omegac=tan(wc/2);alpha=(sqrt(Gc2)/sqrt(1-Gc2))*omegac;a=(1-alpha)/(1+alpha);b=(1-a)/2;w=0:pi/300:pi;Hw2=alpha^2./(alpha^2+(tan(w/2)).^2);plot(w/pi,Hw2);grid;hold on;(2)⼀阶⾼通滤波器 P581clear;fi=1;fs=10;Gc2=0.5;wc=2*pi*fi/fs;omegac=tan(wc/2);alpha=(sqrt(1-Gc2)/(sqrt(Gc2)))*omegac;a=(1-alpha)/(1+alpha);b=(1+a)/2;w=0:pi/300:pi;Hw2=(tan(w/2).^2)./(alpha^2+(tan(w/2)).^2);plot(w/pi,Hw2);grid;hold on;(3)Notch 嵌波滤波器clear;deltaw=0.1*pi;b=1/(1+tan(deltaw/2)*(sqrt(1-Gb2)/sqrt(Gb2))); B=[1 -2*cos(w0) 1].*b;A=[1 -2*b*cos(w0) (2*b-1)];w=0:pi/500:pi;H=freqz(B,A,w);plot(w/pi,abs(H));grid;(4)Peak 滤波器clear;Ac=3;Gb2=10^(-Ac/10);w0=0.35*pi;deltaw=0.1*pi;b=1/(1+tan(deltaw/2)*(sqrt(Gb2)/sqrt(1-Gb2))); B=[1 0 -1].*(1-b);A=[1 -2*b*cos(w0) (2*b-1)];w=0:pi/500:pi;H=freqz(B,A,w);plot(w/pi,abs(H));grid;(5)IIR低通滤波(Butterworth)% IIR Lowpass Use Butterworth% copyright by Etualclear;fs=20;fpass=4;fstop=5;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=tan(wp/2);omegas=tan(ws/2);ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap));for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif KG0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=0:pi/300:pi;Hw2=1./(1+(tan(w/2)/omega0).^(2*N));plot(w/pi,Hw2);grid;(6)IIR⾼通滤波(Butterworth)% IIR Hightpass Use Butterworth% copyright by Etualclear;fs=20;fpass=5;fstop=4;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=cot(wp/2);omegas=cot(ws/2);ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap));omega0=omegap/ep^(1/N);K=floor(N/2);endfor i=1:Ka1(i)=-2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif KG0=omega0/(omega0+1);a0=-(omega0-1)/(omega0+1);endw=(0+eps):pi/300:pi;Hw2=1./(1+(cot(w/2)/omega0).^(2*N));plot(w/pi,Hw2);grid;(7)IIR带通滤波(Butterworth)% IIR Bandpass Use Butterworth% copyright by Etualclear;fs=20;fpa=2;fpb=4;fsa=1.5;fsb=4.5;Ap=0.0877;As=16.9897;wpa=2*pi*fpa/fs;wpb=2*pi*fpb/fs;wsa=2*pi*fsa/fs;wsb=2*pi*fsb/fs;c=sin(wpa+wpb)/(sin(wpa)+sin(wpb));omegap=abs((c-cos(wpb))/sin(wpb));omegasa=(c-cos(wsa))/sin(wsa);omegasb=(c-cos(wsb))/sin(wsb);omegas=min(abs(omegasa),abs(omegasb));ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap));omega0=omegap/ep^(1/N);K=floor(N/2);endfor i=1:Ka1(i)=4*c*(omega0*cos(theta(i))-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=2*(2*c^2+1-omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka3(i)=-(4*c*(omega0*cos(theta(i))+1))/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka4(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif KG0=omega0/(1+omega0);a0(1)=-2*c/(1+omega0);a0(2)=(1-omega0)/(1+omega0); endw=(0+eps):pi/300:pi;Hw2=1./(1+((c-cos(w))./(omega0*sin(w))).^(2*N));plot(w/pi,Hw2);grid;(8)IIR带阻滤波(Butterworth)% IIR Bandstop Use Butterworth% copyright by Etualclear;fs=20;fpa=1.5;fpb=4.5;fsa=2;fsb=4;Ap=0.5;As=10;wpa=2*pi*fpa/fs;wpb=2*pi*fpb/fs;wsa=2*pi*fsa/fs;wsb=2*pi*fsb/fs;c=sin(wpa+wpb)/(sin(wpa)+sin(wpb));omegap=abs(sin(wpb)/(c-cos(wpb)));ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);N=ceil(log(es/ep)/log(omegas/omegap));omega0=omegap/ep^(1/N);K=floor(N/2);theta=zeros(1,K);for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endG=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);for i=1:KG(i)=omega0^2/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka1(i)=2*(omega0^2-1)/(1-2*omega0*cos(theta(i))+omega0^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2)/(1-2*omega0*cos(theta(i))+omega0^2); endif KG0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);endw=(0+eps):pi/300:pi;Hw2=1./(1+(sin(w)./(omega0*(c-cos(w)))).^(2*N));plot(w/pi,Hw2);grid;(9)IIR低通滤波(chebyshev 1)% IIR Lowpass Use Chebyshev Type 1% copyright by Etualclear;fs=20;fpass=4;fstop=5;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;es=sqrt(10^(As/10)-1);e=es/ep;w=omegas/omegap;N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));a=log(1/ep+sqrt(1/ep^2+1))/N;omega0=omegap*sinh(a);K=floor(N/2);theta=zeros(1,K);omega=zeros(1,K);for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:Komega(i)=omegap*sin(theta(i));endG=zeros(1,K);a1=zeros(1,K);a2=zeros(1,K);for i=1:KG(i)=(omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);endfor i=1:Ka1(i)=2*(omega0^2+omega(i)^2-1)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2);endfor i=1:Ka2(i)=(1+2*omega0*cos(theta(i))+omega0^2+omega(i)^2)/(1-2*omega0*cos(theta(i))+omega0^2+omega(i)^2); endif KG0=omega0/(omega0+1);a0=(omega0-1)/(omega0+1);elseH0=sqrt(1/(1+ep^2));endf=0:1/300:10;Hf2=1./(1+ep^2*(cheby(N,tan(pi*f/fs)/omegap)).^2);plot(f,abs(Hf2));grid;% copyright by Etualclear;fs=20;fpass=4;fstop=5;Ap=0.5;As=10;wp=2*pi*fpass/fs;ws=2*pi*fstop/fs;omegap=tan(wp/2);omegas=tan(ws/2);ep=sqrt(10^(Ap/10)-1);es=sqrt(10^(As/10)-1);e=es/ep;w=omegas/omegap;N=ceil(log(e+sqrt(e^2-1))/log(w+sqrt(w^2-1)));a=log(es+sqrt(es^2+1))/N;omega0=omegas/sinh(a);K=floor(N/2);for i=1:Ktheta(i)=pi*(N-1+2*i)/(2*N);endfor i=1:Komega(i)=omegas/sin(theta(i));endfor i=1:KG(i)=(1+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);endfor i=1:Ka1(i)=2*(1-omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2);endfor i=1:Ka2(i)=(1+2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2)/(1-2*omega0^-1*cos(theta(i))+omega0^-2+omega(i)^-2); endfor i=1:Kb1(i)=2*(1-omega(i))/(1+omega(i));endif KH0=sqrt(1/(1+ep^2));endf=(0+eps):1/100:10;Hf2=(cheby(N,omegas./tan(pi*f/fs))).^2./((cheby(N,omegas./tan(pi*f/fs))).^2+es^2); plot(f,abs(Hf2));grid;(10)chebyshev 中⽤到的函数 cheby.mfunction CN=cheby(N,x)if x<=1CN=cos(N*acos(x));elseCN=cosh(N*log(x+sqrt(x.^2-1)));end。
matlab低通滤波器

Matlab低通滤波器简介低通滤波器是一种用于信号处理和图像处理的常见滤波器类型之一。
它通过去除高频成分,将输入信号中高频部分的能量降低,从而实现对信号的平滑处理。
Matlab作为一个功能强大的数值计算和数据分析工具,提供了丰富的函数和工具箱,可以方便地实现低通滤波器的设计和应用。
原理低通滤波器通过消除高频成分,将输入信号中高频部分的能量降低,以获得平滑的输出信号。
其基本原理是将输入信号与低通滤波器的频率响应进行卷积运算,从而得到滤波后的输出信号。
在频域中,低通滤波器具有截止频率,通常用截止频率处的功率谱密度衰减到其最大值的一半的点来描述。
截止频率之上的高频成分将被滤除,截止频率之下的信号成分则保留。
在时域中,低通滤波器可以使用差分方程表示。
常见的差分方程形式为:y[n] = b0*x[n] + b1*x[n-1] + b2*x[n-2] - a1*y[n-1] - a2*y[n-2]其中,y[n]为输出信号,x[n]为输入信号,a1、a2为滤波器的反馈系数,b0、b1、b2为滤波器的前馈系数。
Matlab实现Matlab提供了多种实现低通滤波器的方法,包括基于IIR和FIR两种结构。
下面将介绍这两种结构的实现方法。
IIR结构IIR(Infinite Impulse Response)滤波器是一种递归滤波器,其输出由当前和过去的输入和输出值决定。
在Matlab中,可以使用designfilt函数和filter函数来设计和应用IIR低通滤波器。
设计滤波器designfilt函数可以用于设计IIR低通滤波器。
首先,需要指定滤波器的类型、截止频率、衰减和滤波器阶数。
例如,要设计截止频率为100Hz、阶数为4的Butterworth低通滤波器,可以使用以下代码:fs = 1000; % 采样率fc = 100; % 截止频率order = 4; % 滤波器阶数[b, a] = butter(order, fc/(fs/2), 'low');应用滤波器设计好滤波器后,可以使用filter函数将其应用到信号上。
matlab做低通滤波器设计思路

设计低通滤波器是数字信号处理领域中的一项关键任务,而Matlab 作为一款强大的数学建模与仿真软件,为我们提供了丰富的工具和函数来完成这一任务。
在本篇文章中,我们将介绍在Matlab中设计低通滤波器的思路和具体步骤。
设计低通滤波器主要涉及以下几个方面:1. 确定滤波器的规格要求在设计任何一种滤波器之前,我们首先需要明确滤波器的规格要求,包括截止频率、通带最大衰减、阻带最小衰减等。
这些规格要求将直接影响到滤波器的设计参数和性能。
在Matlab中,可以利用Signal Processing Toolbox提供的函数来帮助我们确定滤波器的规格要求。
2. 选择滤波器的类型根据实际的应用需求,我们需要选择合适的滤波器类型。
常见的低通滤波器包括巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器等。
每种类型的滤波器都有其适用的场景和特点。
在Matlab中,我们可以利用Filter Design and Analysis工具箱中的函数来选择合适的滤波器类型。
3. 根据规格要求设计滤波器一旦确定了滤波器的类型,我们就可以根据规格要求来设计滤波器。
在Matlab中,可以利用Filter Design and Analysis工具箱中的函数来实现滤波器设计,包括巴特沃斯滤波器设计函数butter()、切比雪夫滤波器设计函数cheby1()和cheby2()、椭圆滤波器设计函数ellip()等。
4. 分析和优化滤波器性能设计完成滤波器后,我们需要对滤波器的性能进行分析和优化。
在Matlab中,可以利用Filter Design and Analysis工具箱中的函数来对滤波器的频率响应、相位响应、裙延迟等进行分析,并根据实际需求对滤波器进行优化。
5. 验证滤波器的性能我们需要对设计完成的滤波器进行性能验证。
在Matlab中,可以利用Signal Processing Toolbox提供的函数来对设计的滤波器进行信号处理和性能评估,以确保滤波器能够满足实际需求。
MATLAB实现数字巴特沃斯高通IIR滤波器

MATLAB实现数字巴特沃斯高通IIR滤波器武汉理工大学《MATLAB课程设计》报告《MATLAB课程设计》报告题目: 数字巴特沃斯高通IIR滤波器专业班级: 信息sy0901 学生姓名: 崔斌指导教师: 魏洪涛武汉理工大学《MATLAB课程设计》报告MATLAB课程设计任务书学生姓名: 崔斌专业班级: 信息sy0901指导教师: 魏洪涛工作单位: 信息工程学院 1. 题目: 设计一个数字巴特沃斯高通IIR滤波器设计内容和要求课题要求设计一个IIR数字滤波器,高通,采用双线性变换法,用巴特沃斯实现,用matlab软件对其进行仿真与调试。
本设计将先说明用双线性法设计IIR数字滤波器的原理,然后写出基于matlab的软件设计流程。
在对设计进行调试,分析实验数据。
初始条件1)MATLAB软件2)数字信号处理基础知识指导教师签名: 2010年 1月13 日武汉理工大学《MATLAB课程设计》报告目录摘要 ..................................................................... (1)Abstract ............................................................... ..... 2 1 设计项目要求与说明 ........................................................ 3 2 系统设计 (3)2.1 设计思路 (3)2.2 设计方法对比 ........................................................ 4 2.3典型模拟滤波器比较 (5)2.4 设计步骤 ............................................................ 5 3 仿真程序的设计与调试 ......................................................63.1 数字域指标变换成模拟域指标 (6)3.2 数字域频率进行预畸变 (7)3.3 模拟滤波器的设计 (7)3.4 模拟滤波器变成数字滤波器 (9)3.5 理论计算数字滤波器的仿真 ........................................... 12 4.程序调试中出现的问题 ..................................................... 13 5. 总结与体会 .............................................................. 13 参考文献 ................................................................... 15 附录一总程序如下 ......................................................... 16 附录二设计数字滤波器函数总结 (18)武汉理工大学《数字信号处理》报告摘要此报告重点介绍了用双线性不变法设计IIR数字滤波器的基本流程,比较了各种设计方法的优缺点,总结了模拟滤波器的性能特征。
matlab滤波器设计命令

matlab滤波器设计命令Matlab滤波器设计命令滤波器是数字信号处理中常用的工具,用于去除信号中的噪声、频率干扰或其他不需要的成分。
Matlab提供了一系列有用的滤波器设计命令,使用户能够轻松设计并应用各种类型的滤波器。
在本文中,我们将详细介绍Matlab中常用的滤波器设计命令,包括滤波器设计函数、滤波器类型和设计过程。
I. Matlab中常用的滤波器设计函数在Matlab中,有几种函数可用于设计滤波器,其中最常用的函数是`designfilt`函数和`fir1`函数。
1. designfilt函数`designfilt`函数是Matlab中最灵活和功能强大的滤波器设计函数之一,可用于设计各种类型的IIR和FIR滤波器。
它的基本语法如下:`filt = designfilt(FilterType, 'PropertyName', PropertyValue, ...)`其中,`FilterType`代表滤波器类型,包括低通滤波器(Lowpass)、高通滤波器(Highpass)、带通滤波器(Bandpass)、带阻滤波器(Bandstop)等。
`PropertyName`和`PropertyValue`是可选的参数,用于设置滤波器的各种属性,如阶数(Order)、截止频率(CutoffFrequency)、通带和阻带的最大衰减(MaximumAttenuation)等。
下面是一个使用`designfilt`函数设计低通滤波器的例子:Fs = 1000; 采样频率Fpass = 20; 通带截止频率Fstop = 30; 阻带截止频率designfilt('lowpassiir', 'FilterOrder', 4, 'PassbandFrequency', Fpass, 'StopbandFrequency', Fstop, 'SampleRate', Fs)该命令将设计一个4阶的低通IIR滤波器,其通带截止频率为20Hz,阻带截止频率为30Hz,采样频率为1000Hz。
matlab中的高斯滤波

matlab中的高斯滤波
高斯滤波(Gaussian filtering)是一种常用的图像处理方法,用于平滑图像并降低噪声。
在Matlab中,可以使用内置函数`imgaussfilt`来实现高斯滤波。
该函数的语法如下:
filtered_image = imgaussfilt(image, sigma)
其中,`image`是要进行滤波的原始图像,`sigma`是高斯核的标准差。
标准差越大,滤波效果越弱,图像保留的细节也越多。
以下是一个示例代码,演示如何在Matlab中使用高斯滤波:
matlab
% 读取原始图像
original_image = imread('image.jpg');
% 进行高斯滤波
sigma = 1.5;
filtered_image = imgaussfilt(original_image, sigma);
% 显示原始图像和滤波后的图像
figure;
subplot(1,2,1);
imshow(original_image);
title('原始图像');
subplot(1,2,2);
imshow(filtered_image);
title('滤波后的图像');
需要注意的是,`imgaussfilt`函数默认使用5×5大小的高斯核,如果需要指定自定义大小的核,可以使用`fspecial`函数生成自定义的高斯核,并使用`imfilter`函数对图像进行滤波。
二维-高斯低通滤波器matlab程序设计

二维高斯滤波器图像滤波MTATLAB程序设计用MATLAB设计一个3×3模板标准差为0.5,1.5,2.5的二维高斯低通滤波器(Gaussion low pass filter分别对灰度图像,真彩色图像,伪彩色图像进行滤波处理%二维高斯低通滤波器%文件为glpf.mfunction glpf(J)%处理索引图像if isind(J)[I,map]=imread(J);I=imnoise(I,'gaussian',0.005);subplot(2,2,1)imshow(I,map);title('a.原始图像');K1=filter2(fspecial('gaussian',3*3,0.5),I);K2=filter2(fspecial('gaussian',3*3,1.5),I);K3=filter2(fspecial('gaussian',3*3,2.5),I);subplot(2,2,2)imshow(K1,map);title('b.滤波器3*3,sigma=0.5')subplot(2,2,3)imshow(K2,map);title('c.滤波器3*3,sigma=1.5')subplot(2,2,4)imshow(K3,map);title('d.滤波器3*3,sigma=2.5')end%处理灰度,真彩色图像if ~isind(J)J=imread(J);%读入图像I=imnoise(J,'gaussian');%加入高斯噪声%输出原始图像subplot(2,2,1)imshow(I);title('a.原始图像')h1 = fspecial('gaussian',[3,3], 0.5);%用预定义的gaussian函数[m n p]=size(I);%[m n p] m,n代表像素点的位置,p代表空间分量%p=1,代表亮度分量,即灰度图像%p=3,代表亮度分量(Y),色差分量(Cr,Cb)if p==1%处理灰度图像I=double(I);I=conv2(I,h1,'same');%I与h的二维离散卷积endif p==3%处理真彩色I=double(I);I(:,:,1)=conv2(I(:,:,1),h1,'same');I(:,:,2)=conv2(I(:,:,2),h1,'same');I(:,:,3)=conv2(I(:,:,3),h1,'same');endI=uint8(I);%8位无符号整型%经过3*3,sigma=0.5二维高斯低通滤波器滤波后的图像subplot(2,2,2)imshow(I);title('b.滤波器3*3,sigma=0.5')h2 = fspecial('gaussian',[3,3],1.5);[m n p]=size(I);if p==1I=double(I);I=conv2(I,h2,'same');%二维离散卷积endif p==3I=double(I);I(:,:,1)=conv2(I(:,:,1),h2,'same');I(:,:,2)=conv2(I(:,:,2),h2,'same');I(:,:,3)=conv2(I(:,:,3),h2,'same');endI=uint8(I);%经过3*3,sigma=1.5二维高斯低通滤波器滤波后的图像subplot(2,2,3)imshow(I);title('c.滤波器3*3,sigma=1.5')h3 = fspecial('gaussian',[3,3], 2.5);[m n p]=size(I);if p==1I=double(I);I=conv2(I,h3,'same');endif p==3I=double(I);I(:,:,1)=conv2(I(:,:,1),h3,'same');I(:,:,2)=conv2(I(:,:,2),h3,'same');I(:,:,3)=conv2(I(:,:,3),h3,'same');endI=uint8(I);%经过3*3,sigma=2.5二维高斯低通滤波器滤波后的图像subplot(2,2,4)imshow(I);title('d.滤波器3*3,sigma=2.5')end程序调用%glpfUse.m%调用function glpf()处理灰度,真彩色,索引(伪彩色)图像并绘图glpf('填写你需要处理图像的路径')%灰度图像glpf('填写你需要处理图像的路径')%真彩色图像glpf('填写你需要处理图像的路径')%索引(伪彩色)图像本程序适用于数字图像处理多媒体课程设计。
基于Matlab的IIR Butterworth低通数字滤波器设计

问题:信号滤波是一个非常重要的信号处理手段,大量的信号处理系统中,信号滤波的质量将直接影响到系统整体性能。
现在有家医院向你提出一个问题,她们的心电图信号记录仪器由于受到了比较严重的电源干扰(50Hz附近),记录到的心电图ECG波形有较大的畸变,请问如何设计一个干扰滤除系统,让记录下的ECG数据继续可以进行疾病诊断。
(ECG的波形信息非常重要,设计滤波器需要注意这一点)基于Matlab的IIR Butterworth低通数字滤波器设计0 引言心电信号是心脏电活动在人体体表的表现,它一般比较微弱,其频率为0.05Hz~ 100Hz(能量集中在0. 05Hz~ 44Hz),幅度为几百微伏至几毫伏。
因此,在心电信号的采集过程中,极易受到内、外界环境的干扰,其中50Hz的工频干扰尤为突出。
心电图信号的干扰对心电图数据分析和压缩有一定影响。
如何消除50Hz工频干扰,成为处理心电信号的首要任务。
为了消除ECG数据中的主要干扰,保留有用信号或者从干扰中“抽取”有用信号,人们提出了许多方法,诸如,平滑滤波,中心频率固定的带阻滤波器,自适应滤波,低通数字滤波等等。
这些信号处理方法各有优缺点,平滑滤波算法简单,处理速度快,滤波效果较好,但存在一定的削峰作用;中心频率固定的带阻滤波器原理简单,能较大程度地抑制50Hz工频干扰,但存在“群延时”现象;自适应滤波器的中心频率能够跟随工频信号的频率幅度变化而自动调节并抵消工频干扰,但需要附加参考信号通道,算法相对复杂,难以用于实时处理。
考虑到工频干扰是50Hz的低频信号,假设要处理的ECG信号为0.05HZ~44HZ段信号,且Matlab软件中有一个数字滤波器软件包,可以直接进行调用处理信号,所以本文设计IIR巴特沃斯(Butterworth)低通数字滤波器来实现人体ECG信号的滤波。
1 数字滤波器介绍数字滤波器是一种用来过滤时间离散信号的数字系统,它可以用软件(计算机程序)或用硬件来实现,而且在两种情况下都可以用来过滤实时信号或非实时信号(记录信号)。
matlab 高斯数字滤波程序

高斯数字滤波是图像处理中常用的一种滤波方法,可以有效地去除图像中的噪声,平滑图像,并提取图像中的一些重要特征。
在matlab中,我们可以使用内置函数来实现高斯数字滤波,下面我将介绍如何在matlab中编写一个高斯数字滤波程序。
1. 我们需要了解高斯数字滤波的原理。
高斯数字滤波是利用高斯函数对图像进行滤波处理,通过给予离中心像素越远的像素点较小的权值,离中心像素越近的像素点较大的权值,从而实现对图像的平滑处理。
高斯函数的公式为:其中σ为标准差,μ为均值,x为自变量。
高斯函数滤波就是用这个函数对图像进行卷积操作,以达到平滑处理的效果。
2. 接下来,我们需要编写matlab代码来实现高斯数字滤波。
我们需要定义高斯函数的数学表达式,并将其转化为matlab中的函数表达式。
代码如下:```matlabfunction h = fspecial_gauss(sigma)size = 2*ceil(3*sigma)+1;h = fspecial('gaussian',size,sigma);end3. 在代码中,我们使用了`fspecial`函数来生成高斯矩阵,这个函数可以生成各种滤波模板,包括高斯滤波器。
接下来,我们可以利用这个函数生成高斯滤波矩阵。
4. 我们需要加载一张图像,然后将图像转化为灰度图像。
我们选择一张图像作为输入,并使用`imread`函数读取图像,然后使用`rgb2gray`函数将彩色图像转化为灰度图像。
代码如下:```matlabI = imread('input.png');I = rgb2gray(I);```5. 我们使用`imfilter`函数对灰度图像进行高斯滤波处理,这个函数可以对图像进行各种滤波操作,包括高斯滤波。
我们将高斯滤波器矩阵和灰度图像作为输入参数传入`imfilter`函数中,从而得到滤波后的图像。
代码如下:```matlabsigma = 1.5;h = fspecial_gauss(sigma);I_filtered = imfilter(I, h);```6. 我们可以将滤波后的图像保存下来,并显示在屏幕上。
各类滤波器的MATLAB程序清单(优选.)

各类滤波器的MATLAB程序一、理想低通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');Hd=ones(size(IA));r=sqrt(f1.^2+f2.^2);Hd(r>0.2)=0;Y=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=ifft2(Ya);figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');二、理想高通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');Hd=ones(size(IA));r=sqrt(f1.^2+f2.^2);Hd(r<0.2)=0;Y=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');三、B utterworth低通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=1/(t^n+1);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');四、B utterworth高通滤波器IA=imread('lena.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(IA,1)for j=1:size(IA,2)t=(D*D)/r(i,j);Hd(i,j)=1/(t^n+1);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');五、高斯低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');D=100/size(IA,1);r=f1.^2+f2.^2;Hd=ones(size(IA));for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');六、高斯高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D=0.3;r=f1.^2+f2.^2;for i=1:size(IA,1)for j=1:size(IA,2)t=r(i,j)/(D*D);Hd(i,j)=1-exp(-t);endendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');七、梯形低通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.^2+f2.^2);Hd=zeros(size(IA));Hd(r<D0)=1;for i=1:size(IA,1)for j=1:size(IA,2)if r(i,j)>=D0 & r(i,j)<=D1Hd(i,j)=(D1-r(i,j))/(D1-D0);endendendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');八、梯形高通滤波器IA=imread('lena.bmp');IB=imread('babarra.bmp');[f1,f2]=freqspace(size(IA),'meshgrid');%D=100/size(IA,1);D0=0.1;D1=0.4;r=sqrt(f1.^2+f2.^2);Hd=ones(size(IA));Hd(r<D1)=0;for i=1:size(IA,1)for j=1:size(IA,2)if r(i,j)>=D0 & r(i,j)<=D1Hd(i,j)=(D0-r(i,j))/(D0-D1);endendendY=fft2(double(IA));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia=real(ifft2(Ya));figuresubplot(2,2,1),imshow(uint8(IA));subplot(2,2,2),imshow(uint8(Ia));figuresurf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');九、用其他方法编写的理想低通、理想高通、Butterworth低通、同态滤波程序1、理想低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1);f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);if d<=d0h=1;elseh=0;endy(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1));subplot(2,2,2),imshow(uint8(i2));subplot(2,2,3),imshow(uint8(E2));2、理想高通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1); f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);n=2;d0=10;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);if d<=d0h=0;else h=1;endy(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1)); subplot(2,2,2),imshow(uint8(i2)); subplot(2,2,3),imshow(uint8(E2));3、Butterworth低通i1=imread('lena.bmp');i2=imnoise(i1,'salt & pepper',0.1); f=double(i2);k=fft2(f);g=fftshift(k);[N1,N2]=size(g);n=2;d0=50;u0=floor(N1/2)+1;v0=floor(N2/2)+1;for i=1:N1for j=1:N2d=sqrt((i-u0)^2+(j-v0)^2);h=1/(1+(d/d0)^(2*n));y(i,j)=g(i,j)*h;endendy=ifftshift(y);E1=ifft2(y);E2=real(E1);figuresubplot(2,2,1),imshow(uint8(i1)); subplot(2,2,2),imshow(uint8(i2)); subplot(2,2,3),imshow(uint8(E2));4、同态滤波I=rgb2gray(imread('fabric00.bmp')); [M,N]=size(I);T=double(I);L=log(T);F=fft2(L);A=2;B=0.3;for i=1:Mfor j=1:ND(i,j)=((i-M/2)^2+(j-N/2)^2);endendc=1.1;%锐化参数D0=max(M,N);H=(A-B)*(1-exp(c*(-D/(D0^2))))+B;F=F.*H;F=ifft2(F);Y=exp(F);figuresubplot(1,2,1),imshow(I);subplot(1,2,2),imshow(uint8(real(Y)));十、G abor滤波器最新文件---------------- 仅供参考--------------------已改成word文本 --------------------- 方便更改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二维高斯滤波器图像滤波MTATLAB程序设计
用MATLAB设计一个3×3模板标准差为0.5,1.5,2.5的二维高斯低通滤波器(Gaussion low pass filter分别对灰度图像,真彩色图像,伪彩色图像进行滤波处理
%二维高斯低通滤波器
%文件为glpf.m
function glpf(J)
%处理索引图像
if isind(J)
[I,map]=imread(J);
I=imnoise(I,'gaussian',0.005);
subplot(2,2,1)
imshow(I,map);
title('a.原始图像');
K1=filter2(fspecial('gaussian',3*3,0.5),I);
K2=filter2(fspecial('gaussian',3*3,1.5),I);
K3=filter2(fspecial('gaussian',3*3,2.5),I);
subplot(2,2,2)
imshow(K1,map);
title('b.滤波器3*3,sigma=0.5')
subplot(2,2,3)
imshow(K2,map);
title('c.滤波器3*3,sigma=1.5')
subplot(2,2,4)
imshow(K3,map);
title('d.滤波器3*3,sigma=2.5')
end
%处理灰度,真彩色图像
if ~isind(J)
J=imread(J);%读入图像
I=imnoise(J,'gaussian');%加入高斯噪声
%输出原始图像
subplot(2,2,1)
imshow(I);
title('a.原始图像')
h1 = fspecial('gaussian',[3,3], 0.5);%用预定义的gaussian函数
[m n p]=size(I);
%[m n p] m,n代表像素点的位置,p代表空间分量
%p=1,代表亮度分量,即灰度图像
%p=3,代表亮度分量(Y),色差分量(Cr,Cb)
if p==1%处理灰度图像
I=double(I);
I=conv2(I,h1,'same');%I与h的二维离散卷积
end
if p==3%处理真彩色
I=double(I);
I(:,:,1)=conv2(I(:,:,1),h1,'same');
I(:,:,2)=conv2(I(:,:,2),h1,'same');
I(:,:,3)=conv2(I(:,:,3),h1,'same');
end
I=uint8(I);%8位无符号整型
%经过3*3,sigma=0.5二维高斯低通滤波器滤波后的图像subplot(2,2,2)
imshow(I);
title('b.滤波器3*3,sigma=0.5')
h2 = fspecial('gaussian',[3,3],1.5);
[m n p]=size(I);
if p==1
I=double(I);
I=conv2(I,h2,'same');%二维离散卷积
end
if p==3
I=double(I);
I(:,:,1)=conv2(I(:,:,1),h2,'same');
I(:,:,2)=conv2(I(:,:,2),h2,'same');
I(:,:,3)=conv2(I(:,:,3),h2,'same');
end
I=uint8(I);
%经过3*3,sigma=1.5二维高斯低通滤波器滤波后的图像subplot(2,2,3)
imshow(I);
title('c.滤波器3*3,sigma=1.5')
h3 = fspecial('gaussian',[3,3], 2.5);
[m n p]=size(I);
if p==1
I=double(I);
I=conv2(I,h3,'same');
end
if p==3
I=double(I);
I(:,:,1)=conv2(I(:,:,1),h3,'same');
I(:,:,2)=conv2(I(:,:,2),h3,'same');
I(:,:,3)=conv2(I(:,:,3),h3,'same');
end
I=uint8(I);
%经过3*3,sigma=2.5二维高斯低通滤波器滤波后的图像subplot(2,2,4)
imshow(I);
title('d.滤波器3*3,sigma=2.5')
end
程序调用
%glpfUse.m
%调用function glpf()处理灰度,真彩色,索引(伪彩色)图像并绘图glpf('填写你需要处理图像的路径')%灰度图像
glpf('填写你需要处理图像的路径')%真彩色图像
glpf('填写你需要处理图像的路径')%索引(伪彩色)图像本程序适用于数字图像处理多媒体课程设计。