当前位置:网站首页>了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器的应用
了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器的应用
2022-08-09 03:34:00 【HNU跃鹿战队】
应用举例
降噪
网络上能找到非常多自适应滤波器用于降噪的例子,尤其是AEC(自适应回声消除)常常被作为样例,但是却存在大量的缺解、讹误和疏漏,甚至在根本没有弄清楚原理的情况下就大肆复制粘贴添油加醋。笔者在初看也一头雾水疑惑也越发头大,经过长达三天的查证和学习,在此归纳总结。
如下图所示, x ( n ) = y ′ ( n ) + s ( n ) x(n)=y'(n)+s(n) x(n)=y′(n)+s(n)为带有噪声的输入, y ( n ) y(n) y(n)为和噪声相关的参考信号,那么我们的目的是将 y ( n ) y(n) y(n)作为自适应滤波器的输入,其输出能尽量逼近 y ′ ( n ) y'(n) y′(n)。那么经过一段时间的迭代后, e ( n ) e(n) e(n)就会逼近我们想要的原信号 s ( n ) s(n) s(n).
注意不要把这里的 x ( n ) , y ( n ) x(n),y(n) x(n),y(n)和前文的符号记法混淆。

然而我们发现,如果 e ( n ) e(n) e(n)不为零,那自适应滤波器在进行迭代的时候始终会得到非零的差值,这样不就相当于输出会逐渐逼近 x ( n ) x(n) x(n)了吗?这也是非常匪夷所思的事情,怎么可能用一个滤波器从噪声信号中还原出原信号呢?
其实,在利用adaptive filter进行noise canceling的时候,有三个前提条件必须得到满足:
- E [ s ( n ) y ′ ( n ) ] = 0 E[s(n)y'(n)]=0 E[s(n)y′(n)]=0,这要求原信号和噪声信号不相关
- E [ y ( n ) y ′ ( n ) ] ≠ 0 E[y(n)y'(n)]\neq0 E[y(n)y′(n)]=0,即要求用于参考的信号和噪声信号相关,并且相关程度越大越好
- E [ s ( n ) ] = 0 E[s(n)]=0 E[s(n)]=0,希望原信号是一个均值为零的信号
有了这三个条件,我们再来看前述的内容就好理解了。$ s(n) 的 期 望 为 零 而 又 不 恒 等 于 零 , 则 在 渐 进 收 敛 的 过 程 中 , 的期望为零而又不恒等于零,则在渐进收敛的过程中, 的期望为零而又不恒等于零,则在渐进收敛的过程中,e(n) 在 一 段 时 间 内 为 正 一 段 时 间 为 负 , 这 样 对 于 滤 波 器 的 参 数 在一段时间内为正一段时间为负,这样对于滤波器的参数 在一段时间内为正一段时间为负,这样对于滤波器的参数\omega$来说,其实是保持动态静止或者说于最优值附近轻微波动的(当几乎收敛的时候,根据参数的更新公式,当误差为正则向正方向更新一步,误差为负则向反方向更新一步,总的结果是保持不变的,但在还未收敛的时候,总有一个方向上更新的距离会超过另一个方向,这个更新步长较大的方向就是趋向解的方向)。
因此,我们避免了" ω \omega ω不断更新使得 y ( n ) y(n) y(n)经过滤波器后的输出逼近 x ( n ) x(n) x(n)”这种给谬论。比如语音信号、心电信号、还有其他许多电信号都有这样的性质,把直流值当成零参考点,其震荡信号的均值为零,这就很好地符合了第三条要求。
笔者也有看到将自适应滤波视为去相关操作的解释:若输入和参考信号有关,就能够利用相关性动态计算参数 ω \omega ω使得输出不断逼近参考信号,而对于无关信号(在这里就是 s ( n ) s(n) s(n),没有被噪声污染的原信号)则不去理会。在此例中参考输入 y ( n ) y(n) y(n)是一个和噪声 y ′ ( n ) y'(n) y′(n)高度相关的信号,而原信号即需要被还原出来的信号 s ( n ) s(n) s(n)则于参考输入无关。
我们也拿典型的AEC应用进行说明,在此场景下,我们希望消除麦克风采集到扬声器中的声音所产生的回声(你应该也有这样的经历,在线上会议或免提通话时,我们的声音在对方的扬声器中播放时又被对方的麦克风采集到,随后这段信号再次由信道传播回我们的扬声器中播放出来,形成回声),那么期望的 e ( n ) e(n) e(n)应该是麦克风采集到的去除回声之后我们说话的声音:

我们会发现,这里其实增加了一个DTD(double talk detection)模块,他用于检测当前双方是否在说话。这又有什么用呢?前述进行noise canceling的时候必须满足三个条件,在实际情况中第二条是比较容易实现的,但是1、3满足起来就比较困难了,因此利用DTD,回声消除的模式如下:
- 远端语音存在,近端语音不存在:滤波、自适应滤波器系数更新(对方说话我们不说话)
- 远端语音存在,近端语音存在:滤波(两方都说话)
- 远端语音不存在:什么都不用做(没信号过来,没必要做任何动作)
很容易就能发现,我们只有在原信号 s ( n ) s(n) s(n)(我们说话的声音)为零的时候即第一种情况,才会对滤波器的参数进行更新,这就避免了原信号和希望消除的噪声信号之间的耦合导致参数更新不准确的问题。在这种情况下,自适应滤波器的作用原理反倒和接下来要介绍的系统辨识有些相像了:其实我们在利用自适应滤波器去模拟回声路径,让输入经过自适应滤波器后的输出和输入通过环境反射交杂后产生的输出尽量接近。
关于AEC更详细的综述,可以参考这篇文章:声学回声消除原理与实现
系统辨识(应用于控制等)
对于系统辨识的应用,我们希望自适应滤波器可以模拟出待估系统的行为。这里, y ( n ) = x ( n ) y(n)=x(n) y(n)=x(n),滤波器的输出和原系统的输出作差得到误差信号,将此误差输入自适应算法,经过数次迭代 x ( n ) x(n) x(n)将会逐渐逼近参考信号 y ( n ) y(n) y(n)。也就是说,虽然系统内部结构不同,但是自适应滤波器复刻了 G ( s ) G(s) G(s)的传递函数。

在模型十分复杂的情况下,我们就可以使用adaptive filter去逼近模型的黑箱。用一个直观的低维实例来说,就是在用一条直线去逼近一个复杂的曲线。当然,你可以用更高阶数的自适应滤波器从而达到更好的效果,或是在此之后增加其他的非线性拟合部分。
估计(预测)
很多读者初看这个应用,会觉得有些无厘头,为什么能够利用过去的值得到当前值呢?请记住,自适应滤波器虽然使用限制相对维纳滤波器放宽了许多,但是仍然要求信号在短时间内能够保持一致的统计特性或不至于变化太多,如果是一个剧烈时变的信号显然我们无法通过历史数据序列来预测将来时刻的值的。
对于已经学习过R

循环神经网络的同学来说,我们可以将自适应滤波器看成是单层RNN,滑窗范围就是参与计算的历史序列长度 n n n。不过两者稍有区别,自适应滤波器的参数会一直保持更新,而RNN需要先训练再使用,或者我们将前者看作是一种一直处于学习状态的RNN。
边栏推荐
- static成员及代码块
- 2022-08-08 The fifth group Gu Xiangquan study notes day31-collection-junit unit test
- How to resolve the conflict between LAN segment and WAN segment when Honor router (WS831) is used as wireless relay
- 对线面试官实现去重和幂等
- wift3.0 set the navigation bar, title, font, item color and font size
- 甲乙丙丁加工零件,加工的总数是370, 如果甲加工的零件数多10,如果乙加工的零件数少20,如果丙加工的 零件数乘以2,如果丁加工的零件数除以2,四个人的加工数量相等,求甲乙丙丁各自加工多少个零件?
- el-popover 内嵌 el-table 后位置错位 乱飘 解决方案
- Second data CEO CAI data warming invited to jointly organize the acceleration data elements online salon
- rk3399 PCIe rc设备枚举之设备资源识别分析
- 5. Index optimization practice
猜你喜欢

Hcip MPLS experiment

Image.new() 及 img.paste() 的用法记录

对线面试官实现去重和幂等

Introduction to the JSP

365天挑战LeetCode1000题——Day 051 特殊的二进制序列 分治

126. 单词接龙 II

The condition variable condition_variable implements thread synchronization

深度学习——以天气识别为例,探讨如何保存神经网络模型

Second data CEO CAI data warming invited to jointly organize the acceleration data elements online salon

win10怎么安装.net framework 3.5?
随机推荐
手把手教你实现buffer(三)——接口及自动扩容
如何应对网络攻击?
Leetcode刷题——148. 排序链表
Promoting practice with competitions-Like the 84th biweekly game reflection and the 305th weekly game supplementary questions
01| 数据类型
以赛促练-力扣第84场双周赛反思以及第305场周赛补题
wift3.0设置导航栏,标题,字体,item颜色和字体大小
06 Dynamic memory
Kaggle(六)特征衍生技术 特征聚合
5823. 字符串转化后的各位数字之和
wift3.0 set the navigation bar, title, font, item color and font size
06 动态内存
【图形学】19 光照模型(四、Blinn-Phong光照模型)
PhotoShop软件笔记
嵌入式系统驱动高级【3】——平台总线式驱动开发下__ID匹配和设备树匹配
【21 基础纹理(二、凹凸映射的理论)】
powershell 执行策略
30 norm
DSPE-PEG-OH,DSPE-PEG-Hydroxyl,磷脂-聚乙二醇-羟基仅供科研实验使用
Second data CEO CAI data warming invited to jointly organize the acceleration data elements online salon