数字图像处理滤波器.docx
- 文档编号:3263108
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:14
- 大小:732.59KB
数字图像处理滤波器.docx
《数字图像处理滤波器.docx》由会员分享,可在线阅读,更多相关《数字图像处理滤波器.docx(14页珍藏版)》请在冰豆网上搜索。
数字图像处理滤波器
--------------------数字滤波器--------------------
数字滤波器和模拟滤波器对应。
在数字信号处理当中,如果一个离散时间系统是用来对输入信号作滤波处理的,那么该系统可以称之为数字滤波器。
因此数字滤波器实际上就是离散时间系统。
按照离散时间系统的单位抽样响应h(n)的长度,数字滤波器又可以分为无限冲激响应IIR数字滤波器,和有限冲激响应滤波器FIR。
IIR滤波器的单位抽样响应h(n)为无限长,而FIR滤波器单位抽样响应h(n)有限长。
-----------------------------------------------------------
%滤波器分析
%1.频率间隔
%1)[f1,f2]=freqspace(n):
返回假设的单位圆上均匀间隔点数n的频率向量f,f为[0:
2/n:
1];
%2)[f1,f2]=freqspace([mn]):
返回二维频率向量f1,f2,f1和f2的矩阵大小为m*n;
%3)f=freqspace(N,'whole'):
返回整个单位圆上平均间隔的点。
%例:
创建一个圆形的低通滤波器,其频率是0.5Hz.
clearall;
clc;
[f1,f2]=freqspace(25,'meshgrid');
Hd=zeros(25,25);
d=sqrt(f1.^2+f2.^2)<0.5;%低通滤波器频率小于0.5
Hd(d)=1;
mesh(f1,f2,Hd);
set(gcf,'Color','W');
-----------------------------------------------------------
%2.模拟滤波器的频率响应
%freqs()函数
%1)H=freqs(B,A,W):
计算由向量W(rad/s)指定的频率点上模拟滤波器系统函数的频率响应。
%2)[H,w]=freqs(B,A,M):
计算出M个频率点上的频率响应存放在向量H中,M个频率存放在向量w中。
%3)freqs:
自动绘制频率响应的幅度和相频特性曲线。
%notice:
B是分子系数,A是分母系数。
%例:
给定模拟滤波器的转换函数为H(s)=(0.2*s^2+0.3*s+1)/(s^2+0.4*s+1),
% 试着绘制其频率响应。
clearall;
clc;
a=[10.41];
b=[0.20.31];
w=linspace(-1,1);
%直接画出
figure
(1)
freqs(b,a,w);
%间接画出
figure
(2)
h=freqs(b,a,w);
mag=abs(h);
phase=angle(h);
subplot(2,1,1),loglog(w,mag),gridon;
subplot(2,1,2),semilogx(w,phase),gridon;
-----------------------------------------------------------
%3.数字滤波器的频率响应
%freqz()函数
%1)H= freqz(B,A,w):
计算由向量w(rad)指定的数字频率点上的数字滤波器H(z)的频率响应。
%2)[H,w]=freqz(B,A,N):
计算N频率点上的响应存放在向量H中。
‘
%3)[H,w]=freqz(B,A,N,'whole'):
计算出N个频率点上的频率响应存在向量H中。
%4)[H,f]=freqz(B,A,N,fs)或者是[H,f]=freqz(B,A,N,'whole',fs)返回频率向量
%5)H=freqz(B,A,f,fs):
计算指定频率向量f和抽样频率fs的频率响应
%6)[H,w,s]=freqz(...):
返回相关的信息。
%7)freqz(...);自动画出幅频响应和相频响应
%例:
已知某滤波器的系统函数是H(z)=1-z^(-9),求概率勃起的频率响应
clearall;
clc;
A=1;
B=[10000000-1];
w=linspace(-1,1);
figure
(1)
freqz(B,A,w);
figure
(2)
h=freqz(B,A,w);
mag=abs(h);
phase=angle(h);
subplot(2,1,1),plot(w,mag),gridon;
subplot(2,1,2),plot(w,phase),gridon;
-----------------------------------------------------------
%4.单位冲激响应
%impz(b,a)
%1)[h,t]=impz(b,a):
b是分子系数,a是分母系数
%2)[h,t]=impz(b,a,n):
指定长度n的冲激响应的长度
%3)[h,t]=impz(b,a,m,fs):
参数fs为抽象频率
%4)impz(b,a):
绘制单位冲激响应的波形
%例:
对于转移函数H(z)=(1-3*z^(-1)+4*z^(-2))/(5-z^(-1)-2*z^(-2)),
% 绘制其单位冲激响应的波形。
clearall;
clc;
b=[1-34];
a=[5-1-2];
N=30;%区域内有25个点
figure
(1)
impz(b,a,N);
gridon;
figure
(2)
h=impz(b,a,N);
stem(h,'.'),gridon;
-----------------------------------------------------------
%5.零点极点
%zplane()函数
%1)zplane(b,a);
%例:
绘制转移函数H(z)=(1-3*z^(-1)+4*z^(-2))/(5-z^(-1)-2*z^(-2))的
% 零极点图。
clearall;
clc;
b=[1-34];
a=[5-1-2];
zplane(b,a);
gridon;
-----------------------------------------------------------
%6.filter函数
%MATLAB提供了filter函数用于实现直接II型滤波器
%y=filter(B,A,x)
%参数说明:
%B,A分别是分子,分母系数,x是待滤波处理的序列
%例:
绘制H(z^(-1))=(b(z^(-1)))/(a(z^(-1)))=(2+3*z^(-1))/(1+0.2*z^(-1))
% 函数的直接II型滤波器。
clearall;
clc;
loadcount.dat
count1=timeseries(count(:
1),[1:
24]);
a=[10.2];
b=[23];
filter_count=filter(count1,b,a);
plot(count1,'-.');
gridon,holdon;
plot(filter_count,'-');
legend('原始数据','II型滤波数据',2);
-----------------------------------------------------------
%7.filtic函数,filtfilt函数
%1.filtic函数用于求直接II型滤波器的初始条件,调用格式如下:
z=filtic(b,a,y,x);
%参数说明:
b,a分子分母系数,y,x滤波器的输入,输出信号。
求对应的滤波器的初始条件z。
%2.filtfilt函数用来对给定的信号进行零相位滤波,调用格式如下:
y=filtfilt(b,a,x);
%参数说明:
b,a分子分母系数,x是输入信号。
对其进行零相位滤波得到y。
%例:
对给定的信号进行零相位滤波
clearall;
clc;
rngdefault;
x=ecg(500)'+0.25*randn(500,1);%产生噪声信号。
ecg有点儿像心脏的波形
h=fdesign.lowpass('Fp,Fst,Ap,Ast',0.15,0.2,1,60);
d=design(h,'equiripple');%低通滤波
y=filtfilt(d.Numerator,1,x);%零相位滤波
y1=filter(d.Numerator,1,x);%传统的滤波
subplot(2,1,1),plot([yy1]),title('滤波器后的波形'),legend('零相位滤波','传统滤波');
subplot(2,1,2),plot(x),title('原始波形');
零相位滤波就是在原始波形上进行滤波,没有相移。
传统滤波存在相移。
绿色为传统滤波,蓝色为零相位滤波。
-----------------------------------------------------------
%9.fftfilt函数
%fftfilt函数用于进行基于FFT的FIR滤波
%1)调用格式:
y=fftfilt(b,x);通过叠加的方法对信号x进行基于FFT的FIR滤波。
%参数说明:
b是FIR滤波器的分子多项是系数,x为准备滤波的信号。
%notice:
此方法经常用于求长序列的卷积。
%2)y=fftfilt(b,x,n):
通过参数n指定作FFT时数据的长度。
%例:
信号x(n)为余弦信号加上均值为0,功率为0.15的白噪声,其长度为1000点,领用fftfilt滤波。
clearall;
clc;
p=0.15;
N=1000;
n=0:
N-1;
x1=rand(1,N);
x1=(x1-mean(x1))*sqrt(p/var(x1));%得到均值为0,功率为0.15的白噪声。
x2=cos(2*pi*n/65);
x=x1+x2;
b=fir1(12,0.3);%设置12阶FIR滤波器
y=fftfilt(b,x)
subplot(2,1,1),plot(x),ylabel('x(n)'),xlabel('n'),title('滤波前的信号波形'),gridon;
subplot(2,1,2),plot(y),ylabel('y(n)'),xlabel('n'),title('滤波后的信号波形'),gridon;
MATLAB:
fir1 function
B=fir1(N,Wn)designsanN'thorderlowpassFIRdigitalfilter andreturnsthefiltercoefficientsinlengthN+1vectorB. Thecut-offfrequencyWnmustbebetween0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 滤波器