自适应滤波器设计及Matlab实现,附程序代码
- 格式:doc
- 大小:458.00 KB
- 文档页数:37
⾃适应滤波器算法综述以及代码实现作者:凌逆战⽂章地址:并不是每个⾃适应滤波器的的代码我都实现了,我需要⼀定的时间,⼀有时间我就会来更新代码,记得关注我,如果有问题记得反馈另外科研严谨,搞科研的建议多看论⽂,因为我是业余的,写这领域的博客主要是因为感兴趣爱好,博客也难免会有错误,所以不要以我为准,可以做个参考,如果能够帮到你,我会很欣慰。
⾃适应回声消除原理 声学回声是指扬声器播出的声⾳在接受者听到的同时,也通过多种路径被麦克风拾取到。
多路径反射的结果产⽣了不同延时的回声,包括直接回声和间接回声。
直接回声是指由扬声器播出的声⾳未经任何反射直接进⼊麦克风。
这种回声的延时最短,它同远端说话者的语⾳能量,扬声器与麦克风之间的距离、⾓度 ,扬声器的播放⾳量,麦克风的拾取灵敏度等因素直接相关;间接回声是指由扬声器播出的声⾳经过不同的路径 (如房屋或房屋内的任何物体 )的⼀次或多次反射后进⼊麦克风所产⽣的回声的集合。
房屋内的任何物体的任何变动都会改变回声的通道。
因此,这种回声的特点是多路径的、时变的。
⾃适应回声消除的基本思想是估计回⾳路径的特征参数,产⽣⼀个模拟的回⾳路径,得出模拟回⾳信号,从接收信号中减去该信号,实现回⾳抵消。
其关键就是得到回声路径的冲击响应$\hat{h}(n)$,由于回⾳路径通常是未知的和时变的,所以⼀般采⽤⾃适应滤波器来模拟回⾳路径。
⾃适应回⾳消除的显著特点是实时跟踪,实时性强。
回声消除原理框图 图中$ y(n)$代表来⾃远端的信号 , $r(n)$是经过回声通道⽽产⽣的回声,$x(n)$是近端的语⾳信号。
D端是近端麦克风,麦克风采集到的房间叠加的回声和近端说话⼈的语⾳。
对回声消除器来说,接收到的远端信号作为⼀个参考信号,回声消除器根据参考信号由⾃适应滤波器产⽣回声的估计值$\hat{r}(n)$,将$\hat{r}(n)$从近端带有回声的语⾳信号减去,就得到近端传送出去的信号。
在理想情况下,经过回声消除器处理后,残留的回声误差$e(n)=r(n)-\hat{r}(n)$将为0,从⽽实现回⾳消除。
自适应滤波器原理及matlab实现一、自适应滤波器概述自适应滤波器是一种特殊的滤波器,它能够根据信号的变化自动调整自身的特性,以更好地处理信号。
自适应滤波器在许多领域都有广泛的应用,例如通信、信号处理、语音识别等。
二、自适应滤波器原理自适应滤波器的原理基于最小均方误差(MMSE)准则。
它通过不断调整自身的系数,使得输出信号的误差最小,从而更好地匹配输入信号。
自适应滤波器的性能取决于其系数和输入信号的特点,因此需要根据不同的应用场景选择合适的滤波器。
三、MATLAB实现以下是一个简单的自适应滤波器的MATLAB实现示例:```matlab%定义系统参数n=100;%信号长度alpha=0.01;%学习率w=randn(1,n);%滤波器系数x=randn(n+1,1);%输入信号y=zeros(n+1,1);%输出信号e=zeros(n+1,1);%误差信号%自适应滤波器算法fori=1:ny(i)=w*x(i+1)+e(i);%输出信号e(i)=x(i+1)-y(i);%误差信号w=w+alpha*(x(i+1).^2-y(i).^2)*w-alpha*x(i+1)*e(i);%更新滤波器系数end%绘制滤波器系数随时间变化曲线plot(real(w),'b');holdon;plot([min(x),max(x)],[min(y)-3*std(y),max(y)+3*std(y)],'r');holdoff;xlabel('Time');ylabel( 'FilterCoefficient');legend('FilterCoefficient','SignalError' );gridon;```这段代码实现了一个简单的自适应滤波器,它根据输入信号不断调整自身的系数,以达到更好的匹配效果。
在代码中,我们使用了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)|');。
LMS算法MatLab实现LMS算法MatLab实现LMS⾃适应滤波器是使滤波器的输出信号与期望响应之间的误差的均⽅值为最⼩,因此称为最⼩均⽅(LMS)⾃适应滤波器。
其原理及推导见function [yn,W,en]=LMS(xn,dn,M,mu,itr)% LMS(Least Mean Squre)算法% 输⼊参数:% xn 输⼊的信号序列 (列向量)% dn 所期望的响应序列 (列向量)% M 滤波器的阶数 (标量)% mu 收敛因⼦(步长) (标量) 要求⼤于0,⼩于xn的相关矩阵最⼤特征值的倒数% itr 迭代次数 (标量) 默认为xn的长度,M<itr<length(xn)% 输出参数:% W 滤波器的权值矩阵 (矩阵)% ⼤⼩为M x itr,% en 误差序列(itr x 1) (列向量)% yn 实际输出序列 (列向量)% 参数个数必须为4个或5个if nargin == 4 % 4个时递归迭代的次数为xn的长度itr = length(xn);elseif nargin == 5 % 5个时满⾜M<itr<length(xn)if itr>length(xn) | itr<Merror('迭代次数过⼤或过⼩!');endelseerror('请检查输⼊参数的个数!');end% 初始化参数en = zeros(itr,1); % 误差序列,en(k)表⽰第k次迭代时预期输出与实际输⼊的误差W = zeros(M,itr); % 每⼀⾏代表⼀个加权参量,每⼀列代表-次迭代,初始为0% 迭代计算for k = M:itr % 第k次迭代x = xn(k:-1:k-M+1); % 滤波器M个抽头的输⼊y = W(:,k-1).' * x; % 滤波器的输出en(k) = dn(k) - y ; % 第k次迭代的误差% 滤波器权值计算的迭代式W(:,k) = W(:,k-1) + 2*mu*en(k)*x;end% 求最优时滤波器的输出序列yn = inf * ones(size(xn));for k = M:length(xn)x = xn(k:-1:k-M+1);yn(k) = W(:,end).'* x;endLMS函数的⼀个实例:%function main()close all% 周期信号的产⽣t=0:99;xs=10*sin(0.5*t);figure;subplot(2,1,1);plot(t,xs);grid;ylabel('幅值');title('it{输⼊周期性信号}');% 噪声信号的产⽣randn('state',sum(100*clock));xn=randn(1,100);subplot(2,1,2);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('it{随机噪声信号}');% 信号滤波xn = xs+xn;xn = xn.' ; % 输⼊信号序列dn = xs.' ; % 预期结果序列M = 20 ; % 滤波器的阶数rho_max = max(eig(xn*xn.')); % 输⼊信号相关矩阵的最⼤特征值mu = rand()*(1/rho_max) ; % 收敛因⼦ 0 < mu < 1/rho[yn,W,en] = LMS(xn,dn,M,mu);% 绘制滤波器输⼊信号figure;subplot(2,1,1);plot(t,xn);grid;ylabel('幅值');xlabel('时间');title('it{滤波器输⼊信号}');% 绘制⾃适应滤波器输出信号subplot(2,1,2);plot(t,yn);grid;ylabel('幅值');xlabel('时间');title('it{⾃适应滤波器输出信号}');% 绘制⾃适应滤波器输出信号,预期输出信号和两者的误差figureplot(t,yn,'b',t,dn,'g',t,dn-yn,'r');grid;legend('⾃适应滤波器输出','预期输出','误差');ylabel('幅值');xlabel('时间');title('it{⾃适应滤波器}');运⾏后的结果如下:。
自适应扩展卡尔曼滤波matlab自适应扩展卡尔曼滤波(Adaptive Extended Kalman Filter,AEKF)是一种用于非线性系统状态估计的滤波算法。
本文将介绍AEKF算法的原理、步骤和实现方法,并结合MATLAB 编写代码进行演示。
一、扩展卡尔曼滤波原理扩展卡尔曼滤波(Extended Kalman Filter,EKF)是一种用于非线性系统状态估计的滤波算法。
它通过使用线性化系统模型的方式将非线性系统转换为线性系统,在每个时间步骤中用线性卡尔曼滤波器进行状态估计。
然而,EKF仅限于具有凸多边形测量特性的问题,并且对线性化过程误差敏感。
为了解决这些问题,AEKF通过自适应更新协方差矩阵的方式提高了滤波器的性能。
AEKF通过测量残差的方差更新协方差矩阵,从而提高了滤波器对非线性系统的适应能力。
AEKF算法的步骤如下:1. 初始化状态向量和协方差矩阵。
2. 根据系统的非线性动力学方程和测量方程计算预测状态向量和协方差矩阵。
3. 计算测量残差,即测量值与预测值之间的差值。
4. 计算测量残差的方差。
5. 判断测量残差的方差是否超过预设阈值,如果超过,则更新协方差矩阵。
6. 利用更新后的协方差矩阵计算最优滤波增益。
7. 更新状态向量和协方差矩阵。
8. 返回第2步,进行下一次预测。
二、AEKF算法的MATLAB实现下面,我们将使用MATLAB编写AEKF算法的代码,并通过一个实例进行演示。
首先,定义非线性系统的动力学方程和测量方程。
在本例中,我们使用一个双摆系统作为非线性系统模型。
```matlabfunction x_next = nonlinear_dynamics(x_current, u)% Nonlinear system dynamicstheta1 = x_current(1);theta2 = x_current(2);d_theta1 = x_current(3);d_theta2 = x_current(4);g = 9.8; % Gravitational accelerationd_theta1_next = d_theta1 + dt * (-3*g*sin(theta1) - sin(theta1-theta2) ...+ 2*sin(theta1-theta2)*(d_theta2^2 + d_theta1^2*cos(theta1-theta2))) .../ (3 - cos(2*(theta1-theta2)));d_theta2_next = d_theta2 + dt * (2*sin(theta1-theta2)*(2*d_theta2^2 ...+ d_theta1^2*cos(theta1-theta2) + g*cos(theta1) +g*cos(theta1-theta2))) .../ (3 - cos(2*(theta1-theta2)));theta1_next = theta1 + dt * d_theta1_next;theta2_next = theta2 + dt * d_theta2_next;x_next = [theta1_next; theta2_next; d_theta1_next;d_theta2_next];endfunction y = measurement_model(x)% Measurement model, measure the angles of the double pendulumtheta1 = x(1);theta2 = x(2);y = [theta1; theta2];end```然后,定义AEKF算法的实现。
MATLAB的⾃适应滤波器设计基于MATLAB的⾃适应滤波器设计第⼀章绪论1.1 引⾔滤波器根据其逼近函数的形式不同, 可设计出多种滤波器. 常⽤的有巴特沃思滤波器、切⽐雪夫é 型滤波器、切⽐雪夫ê 型滤波器、椭圆滤波器、巴塞尔滤波器。
对于这些滤波器的设计, 都是先给定其副频特性的模平⽅?H ( j X) ? 2, 再求出系统函数H (s)。
设计滤波器时, 需由经典式求出滤波器的系统函数H (s) , 求出极点S k (k= 1, 2, ??2N ) , 给定N , X c,E, 即可求得2N 个极点分布。
然后利⽤归⼀化函数, 得出归⼀化的电路组件值, 即可得到满⾜要求的滤波器。
此种设计中, 需要进⾏烦琐、冗长的数字计算, 这对于电路设计者来说, 不仅费时费⼒, 准确性不易把握, ⽽且不符合当今⾼速发展的时代要求。
⾃适应滤波器是近30 年来发展起来的关于信号处理⽅法和技术的滤波器,其设计⽅法对滤波器的性能影响很⼤。
⾃适应滤波器能够得到⽐较好的滤波性能,当输⼊信号的统计特性未知,或者输⼊信号的统计特性变化时,⾃适应滤波器能够⾃动地迭代调节⾃⾝的滤波器参数,以满⾜某种准则的要求,从⽽实现最优滤波。
⾃适应滤波器⼀般包括滤波器结构和⾃适应算法两个部分,这两部分不同的变化与结合,可以导出许多种不同形式的⾃适应滤波器。
1.2 MATLAB简介Matlab是由美国MathWorks公司推出的软件产品。
它是⼀完整的并可扩展的计算机环境, 是⼀种进⾏科学和⼯程计算的交互式程序语⾔。
它的基本数据单元是不需要指定维数的矩阵, 它可直接⽤于表达数学的算式和技术概念, ⽽普通的⾼级语⾔只能对⼀个个具体的数据单元进⾏操作。
在Matlab内部还配备了涉及到⾃动控制、信号处理、计算机仿真等种类繁多的⼯具箱, 所以Matlab 的应⽤⾮常⼴泛, 它可涉⾜于数值分析、控制、信号分析、通信等多种领域。
1.3 ⾃适应滤波器的应⽤适应滤波器在信号检测、信号恢复、数字通信等许躲领域中被⼴泛应⽤,因⽽⼀直是学术界⼀个重要研究课题。
自适应滤波器原理及matlab仿真应用相关代码文章标题:深度解析自适应滤波器原理及matlab仿真应用1. 引言自适应滤波器是数字信号处理中的重要概念,它可以根据输入信号的特性动态地调整滤波器的参数,从而更好地适应信号的变化。
本文将深入探讨自适应滤波器的原理以及在matlab中的仿真应用,帮助读者深入理解这一重要的概念。
2. 自适应滤波器原理自适应滤波器的原理基于最小均方误差准则,它通过不断调整权值参数,使得滤波器输出与期望输出的误差达到最小。
这一原理可以应用在很多领域,如通信系统、雷达系统以及生物医学工程中。
自适应滤波器能够有效地抑制噪声,提高信号的质量。
3. Matlab仿真应用在matlab中,我们可以利用现成的自适应滤波器函数来进行仿真实验。
通过编写相应的matlab代码,我们可以模拟各种不同的信号输入,并观察自适应滤波器的输出效果。
这对于理论学习和工程应用都具有重要意义。
4. 深入理解自适应滤波器我们可以通过探讨自适应滤波器的各种类型、参数选择以及性能评价指标,来深入理解这一概念。
LMS算法、RLS算法以及SVD方法都是自适应滤波器中常见的算法,它们各自适用于不同的场景,并且有着各自的优缺点。
了解这些算法的原理及应用可以帮助我们更好地理解自适应滤波器的工作机制。
5. 个人观点和总结个人观点:自适应滤波器在现代信号处理中具有极其重要的应用价值,通过对其原理的深入理解和matlab中的仿真实验,我们可以更好地掌握这一概念。
在实际工程中,合理地选择自适应滤波器的类型和参数,并结合matlab仿真,可以提高工程设计的效率和准确性。
总结:通过本文对自适应滤波器原理的深入解析和matlab的仿真应用,希望读者能够更好地理解这一重要概念,并且能够在工程实践中灵活应用。
自适应滤波器是数字信号处理中不可或缺的工具,深入掌握其原理和应用对于提高工程设计的水平具有重要意义。
6. 结束语自适应滤波器原理及matlab仿真应用是一个复杂而又精彩的领域,相信通过不断地学习和实践,我们能够更好地理解和应用这一概念。
子带自适应滤波器matlab代码以下是一个简单的MATLAB代码示例,用于实现子带自适应滤波器。
```matlab% 定义参数N = 100; % 信号长度M = 10; % 子带数量alpha = 0.01; % LMS算法步长mu = 0.01; % 子带滤波器步长% 生成信号x = randn(N,1);y = filter([1 0.5],1,x);d = y + 0.1*randn(N,1); % 目标信号% 子带分割subbands = cell(M,1);for i=1:Msubbands{i} = x((i-1)*ceil(N/M)+1:i*ceil(N/M),:);end% 子带滤波器初始化subband_filters = cell(M,1);for i=1:Msubband_filters{i} = filter([1 0],1,subbands{i}); % LMS算法初始化end% 子带滤波器训练for t=1:Nx_t = x(t,:);d_t = d(t,:);for i=1:Mif t <= M*(ceil(N/M))subband_filters{i} =lms(subband_filters{i},x_t,d_t,alpha); % LMS算法训练子带滤波器endx_t = x_t -subband_filters{i}.b*subband_filters{i}.a'*x_t; % 子带滤波器处理ende = d_t - sum(x_t,2); % 误差计算end% LMS算法更新子带滤波器参数function f = lms(f,x,d,alpha)f.a = f.a + 2*alpha*(d - f.b*f.a'*x) * x;f.b = f.b + alpha * (d - f.b*f.a'*x);end```该代码使用LMS算法训练子带滤波器,并使用子带滤波器对信号进行处理。
维纳自适应滤波器设计及Matlab实现摘要本文从随机噪声的特性出发,分析了传统滤波和自适应滤波基本工作原理和性能,以及滤波技术的现状和发展前景。
然后系统阐述了基本维纳滤波原理和自适应滤波器的基本结构模型,接着在此基础上结合最陡下降法引出LMS算法。
在MSE准则下,设计了一个定长的自适应最小均方横向滤波器,并通过MATLAB 编程实现。
接着用图像复原来验证该滤波器的性能,结果表明图像的质量在MSE 准则下得到了明显的改善。
最后分析比较了自适应LMS滤波和频域维纳递归滤波之间的性能。
本文还对MATLAB里面的自适应维纳滤波函数wiener2进行了简单分析。
关键字:退化图像维纳滤波自适应滤波最陡下降法LMSAbstractThis paper analyses the basic work theory, performance of traditional filter and adaptive filter based on the property of random noise, and introduce the status quo and the foreground of filter technology. Then we explain basic theory of wiener filter and basic structure model of adaptive filter, and combine the method of steepest descent to deduce the LMS. Afterward according to the MSE rule, we design a limited length transversal filter, and implement by MATLAB. And then we validate performance of adaptive LMS filter by restoring images, Test result show that the quality of the degrade images were improved under the rule of MSE. Finally, we compare the performance of adaptive LMS filter and iterative wiener filter.We also simply analyses the wiener2 () which is a adaptive filter in MATLAB.Keywords: degrade image;wiener filter;adaptive filter;ADF;LMS algorithm目录1绪论 (1)1. 1 引言 (1)1. 2 研究目标及现状 (1)1. 2 .1 图像复原技术的目标 (1)1. 2 .2 图像复原技术的研究现状 (1)2理论基础 (3)2. 1 基本自适应滤波器的模块结构 (3)2. 2 基本维纳滤波原理 (4)3自适应滤波原理及算法 (6)3.1 横向滤波结构的最陡下降算法 (7)3.1.1 最陡下降算法的原理 (7)3.1.2 最陡下降算法稳定性 (10)3.2 LMS滤波原理及算法 (11)3.2.1 从最陡下降算法导出LMS算法 (11)3.2.2 基本LMS算法的实现步骤 (11)3.2.3 基本LMS算法的实现流程图 (12)3.2.4 LMS算法的Matlab实现 (12)3.2.5 wiener2()的原理 (12)3.2.6 LMS性能分析——自适应收敛性 (13)4Matlab 实验结果 (14)4.1.LMS滤波器的收敛性 (14)4.2.LMS滤波器和频域迭代维纳滤波器的性能比较 (16)5总结 (18)致谢 (19)参考文献 (20)附录 A (21)附录 B (22)附录 C (27)1 绪论1.1引言人类传递信息的主要媒介是语言和图像。
据统计,在人类接受的信息中,听觉信息占20%,视觉信息占60%,其它如味觉、触觉、嗅觉总的加起来不过占20%,所以图像信息是十分重要的信息[1]。
然而,在图像的获取和图像信号的传输过程中,图像信号中不可避免的混入各种各样的随机噪声,造成图像失真(图像退化)。
造成人类所获取的信息和实际是有偏差的,成为人类从外界获取准确信息的障碍。
因此,对图像信号中的随机噪声的抑制处理是图像处理中非常重要的一项工作。
在图像的获取和传输过程中所混入的噪声,主要来源于通信系统中的各种各样的噪声,根据通信原理及统计方面的知识,可以知道在通信系统中所遇到的信号和噪声,大多数均可视为平稳的随机过程[15]。
又有“高斯过程又称正态随机过程,它是一种普遍存在和重要的随机过程,在通信信道中的噪声,通常是一种高斯过程,故又称高斯噪声。
因此,在大多数的情况下,我们可以把造成图像失真的噪声可视为广义平稳高斯过程。
本文针对图像信号中混入的随机噪声,在怎样把现有的滤波算法应用到实际的图像复原中去的问题上提出了解决方法,并且应用Matlab 软件编程对图像进行处理。
1.2研究目标及现状1.2.1图像复原技术的目标为了从含有噪声的数据中提取我们所感兴趣的、接近规定质量的图像,我们需要设计一个系统满足:当信号与噪声同时输入时,在输出端能将信号尽可能精确地重现出来,而噪声却受到最大抑制,即最佳滤波器。
1.2.2图像复原技术的研究现状目前的图像复原技术,即去噪的滤波技术可以分为两大类:传统滤波和现代滤波。
传统滤波技术是建立在已知有用信号和干扰噪声的统计特性(自相关函数或功率谱)的基础上的噪声去除;现代滤波技术则是不需要知道图像的先验知识,只是根据观测数据,即可对噪声进行有效滤除。
早在20世纪40年代,就对平稳随机信号建立了维纳滤波理论。
根据有用信号和干扰噪声的统计特性(自相关函数或功率谱),以线性最小均方误差(MSE)估计准则所设计的最佳滤波器,称为维纳滤波器。
这种滤波器能最大程度的滤除干扰噪声,提取有用信号。
但是,当输入信号的统计特性偏离设计条件,则它就不再是最佳的了,这在实际应用中受到了限制。
到60年代初,由于空间技术的发展,出现了卡尔曼滤波理论,即利用状态变量模型对非平稳、多输入多输出随机序列作最优估计。
卡尔曼滤波器既可以对平稳的和平稳的随机信号作线性最佳滤波,也可以作为非线性滤波[2]。
然而只有在对信号和噪声的统计特性已知的情况下,这两种滤波器才能获得最优解。
在实际的应用中,往往无法得到这些统计特性的先验知识,或者统计特性是随时间变化的,因此,这两种滤波器就实现不了真正的最佳滤波。
Widrow B.和Hoff于1967年提出的自适应滤波理论,可使在设计自适应滤波器时不需要事先知道关于输入信号和噪声的统计特性的知识,它能够在自己的工作过程中逐渐估计出所需的统计特性,并以此为依据自动调整自己的参数,以达到最佳滤波效果。
一旦输入信号的统计特性发生变化,它又能够跟踪这种变化,自动调整参数,使滤波器性能重新达到最佳。
自适应滤波器自动调节参数可以通过各种不同的递推算法来实现,由于它采用的是逼近的算法,使得实际估计值和理论值之间必然存在差距,也就造成了自适应滤波问题没有唯一的解。
依照各种递推算法的特点,我们把它应用于不同的场合。
现在广为应用的自适应滤波方法主要是基于以下几种基本理论,再融合递推算法导出来的:(1)基于维纳滤波理论的方法维纳滤波是在最小均方误差准则下通过求解维纳—霍夫方程来解决线性最优滤波问题的。
基于维纳滤波原理,我们利用相关的瞬时值通过在工作过程中的逐步调整参数逼近信号的统计特性,实现最优滤波。
由此,我们得到一种最常用的算法——最小均方算法,简称LMS算法。
(2)基于卡尔曼滤波理论的方法卡尔曼滤波是线性无偏最小方差滤波递推滤波,它能使滤波器工作在平稳的或非平稳的环境,得到最优解。
利用卡尔曼滤波理论的递推求解法导出自适应滤波器更新权矢量得不同递推算法。
比LMS算法有极快的收敛速率,可是计算复杂度也增大了,它需要计算卡尔曼矩阵。
(3) 基于最小二乘准则的方法维纳滤波和卡尔曼滤波推导的算法是基于统计概念的,而最小二乘估计算法是以最小误差平方和为优化目标的。
根据滤波器的实现结构,有以下3种不同的最小二乘自适应滤波算法:自适应递归最小二乘法(RLS ),自适应最小二乘格型算法,QR 分解最小二乘算法。
(4) 基于神经网络理论的方法神经网络是有大量的神经元相互连接而成的网络系统,实质上它是一个高度非线性的动力学网络系统,这个系统具有很强的自适应、自学习、自组织能力,以及巨量并行性、容错性和坚韧性,因而,它可以做很多传统的信号和信息处理技术所不能做的事情。
因其超强的自动调节能力,使得它在自适应信号处理方面有着广阔的前景[2]。
在一系列的自适应算法中,虽然基于后面3种基本理论的方法在收敛速率和稳定、坚韧性方面有着更好的性能,但是, 基于维纳滤波理论的LMS 算法因其算法简单,而且能达到满意的性能,得到了青睐,成为了应用最广泛的自适应算法。
为此,本文主要研究LMS 自适应滤波器在图像去噪方面的应用。
2.理论基础2.1基本自适应滤波器的模块结构自适应滤波器通常由两部分构成,其一是滤波子系统,根据它所要处理的功能而往往有不同的结构形式。
另一是自适应算法部分,用来调整滤波子系统结构的参数,或滤波系数。
在自适应调整滤波系数的过程中,有不同的准则和算法。
算法是指调整自适应滤波系数的步骤,以达到在所描述的准则下的误差最小化。
自适应滤波器含有两个过程,即自适应过程和滤波过程。
前一过程的基本目标是调节滤波系数)(k w i ,使得有意义的目标函数或代价函数(.) 最小化,滤波器输出信号)(k y 逐步逼近所期望的参考信号)(k d ,由两者之间的误差信号)(k e 驱动某种算法对滤波系数进行调整,使得滤波器处于最佳工作状态以实现滤波过程。
所以自适应过程是一个闭合的反馈环,算法决定了这个闭合环路的自适应过程所需要的时间。
但是,由于目标函数(.)ε是输入信号)(k x ,参考信号)(k d 及输出信号)(k y 的函数,即 y(k)]d(k),[x(k),(.)εε=,因此目标函数必须具有以下两个性质: (1) 非负性y(k)d(k),x(k),, 0 y(k)]d(k),[x(k),(.)∀≥=εε( 2.1 )(2) 最佳性 d(k)y(k) , 0 y(k)]d(k),[x(k),(.)===when εε ( 2.2 )在自适应过程中,自适应算法逐步使目标函数(.)ε最小化,最终使)(k y 逼近于)(k d ,滤波参数或权系数)(k w i 收敛于opt w ,这里opt w 是自适应滤波系数的最优解即维纳解。