了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器的应用

2023-05-16

--neozng1@hnu.edu.cn

应用举例

  • 降噪

    网络上能找到非常多自适应滤波器用于降噪的例子,尤其是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的时候,有三个前提条件必须得到满足:

  1. E [ s ( n ) y ′ ( n ) ] = 0 E[s(n)y'(n)]=0 E[s(n)y(n)]=0,这要求原信号和噪声信号不相关
  2. E [ y ( n ) y ′ ( n ) ] ≠ 0 E[y(n)y'(n)]\neq0 E[y(n)y(n)]=0,即要求用于参考的信号和噪声信号相关,并且相关程度越大越好
  3. 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)应该是麦克风采集到的去除回声之后我们说话的声音

在这里插入图片描述

AEC的应用场景示意图,图源本节末的链接

我们会发现,这里其实增加了一个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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器的应用 的相关文章

  • 【RoboMaster】我是这样搞定第一次单目相机测距的

    之前在做一个单目测距的小项目 xff0c 大概需要就是用单目相机 xff0c 对一个特定的目标进行识别并测算相机与该目标的距离 所以便去网上找了一堆教程 xff0c 这里给大家总结一下 xff0c 希望给小白们一个参考 首先是基本需求了 x
  • robomaster视觉规则细谈

    目录 攻击与检测 弹丸参数 增益点增益 升级效果 击打检测 涂装要求 裁判系统 机器人端各模块 赛事引擎各部分 客户端 服务器 能量机关 小能量机关 大能量机关 算法归纳 攻击与检测 弹丸参数 如图所示 xff0c 赛场中我们使用的弹丸有两
  • RoboMaster视觉教程(0)绪论

    背景 大四毕业了 xff0c 想着大学四年也需要总结一下 就从RoboMaster这个比赛写起吧 我是大二参加的比赛 xff0c 做视觉识别部分 当时的想法很简单 xff0c 因为很喜欢Linux不想焊板子调电控就参加了视觉部分 xff08
  • RoboMaster视觉教程(1)摄像头

    观文有感 之 RoboMaster视觉教程 xff08 1 xff09 摄像头 闲来垂钓碧溪上 今天钓到一篇RM视觉摄像头的好文 xff0c 记录一下笔记 xff1a 文章目录 观文有感 之 RoboMaster视觉教程 xff08 1 x
  • 了解CV和RoboMaster视觉组(一)摘要

    NeoZng neozng1 64 hnu edu cn 1 摘要 在阅读本文之前 xff0c 你需要有计算机科学的基本知识并至少掌握一门编程语言 xff0c 同时对robomaster比赛规则和过程有大致的了解 若只是希望知道视觉组的基本
  • 了解CV和RoboMaster视觉组(二)视觉在各兵种中的作用

    NeoZng neozng1 64 hnu edu cn 2 视觉在各兵种中的作用 2 1 装甲板识别 xff08 步兵 英雄 无人机 xff09 由于机器人上安装的图传模块到操作手看到的第一视角的延迟加上操作手反应速度的延迟 xff0c
  • 了解CV和RoboMaster视觉组(三)视觉组使用的软件

    NeoZng neozng1 64 hnu edu cn 3 视觉组接触的软件 进行视觉开发会用到各种各样的软件 开发环境 辅助工具等 xff0c 所以很有必要了解一些相关的快捷键 命令 使用技巧 选择一款适合自己的IDE能够提高开发效率
  • 了解CV和RoboMaster视觉组(四)视觉组使用的硬件

    NeoZng neozng1 64 hnu edu cn 4 视觉组接触的硬件 虽然别人总觉得视觉组就是整天对着屏幕臭敲代码的程序员 xff0c 实际上我们也会接触很多的底层硬件与传感器 xff0c 在使用硬件的同时很可能还需要综合运用其他
  • 了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法

    neozng1 64 hnu edu cn 5 3 滤波器 观测器 估计器和预测方法 这些装置之间的区别在于面对不同场景时候的不同解释 xff08 是否考虑信号的统计学特性 随机特点 参数是否变化等 xff09 滤波器在信号与系统中的定义为
  • 了解CV和RoboMaster视觉组(五)滤波器、观测器和预测方法:自适应滤波器

    neozng1 64 hnu edu cn 自适应滤波 自适应滤波以前述的wiener filter为基础 xff0c 这里我们也从统计与优化和控制理论两个角度来介绍它 xff0c 顺着上一篇介绍维纳滤波器的文章的思路继续进行推导 统计与优
  • 了解CV和RoboMaster视觉组(五)运动建模与预测

    neozng1 64 hnu edu cn 5 3 2 预测方法 运动预测是自瞄击打装甲板的关键一步 xff0c 如果没能预测目标的移动 xff0c 那么我们的解算输出用于只会跟在目标的屁股后面 xff0c 使得打出的弹丸始终落后于目标 x
  • ROBOMASTER机甲大师赛视觉组学习方案

    ROBOMASTER机甲大师赛视觉学习方案 视觉技能学习踩坑硬件平台环境配置个人修为坑 机甲大师 xff08 RoboMaster xff09 是由大疆创新 xff08 DJI xff09 的创始人汪滔发起并承办 由共青团中央 全国学联 深
  • 【Robomaster-ICRA-AI挑战赛跳坑篇】(二、TX2刷机)

    TX2刷机与程序下载 TX2安装在步兵车上作为机载计算机使用 xff0c 跑上层代码 xff0c RoboRTS代码托管在github上 xff1a https github com RoboMaster RoboRTS xff0c 目前一
  • robomaster麦轮运动解算

    1 资源与代码 1 1 参考文章 本文主要参考的三篇文章如下 xff1a 麦轮运动特性分析 xff1a https mp weixin qq com s biz 61 MzI3MTIyMjQwNQ 61 61 amp mid 61 2247
  • Robomaster上位机视觉摘要——比赛规则篇

    本文是笔者多日来总结的2023赛季中针对上位机组的比赛规则摘要 xff0c 力求一文让你看懂上位机在赛场中的飒爽身影 目录 电力元件 电池 遥控器 激光 涂装 机器人 飞镖 雷达 空中机器人 工程机器人 哨兵机器人 英雄与步兵机器人 视觉应
  • Robomaster云台,底盘,陀螺仪校准

    文章目录 前言一 云台校准二 底盘校准三 陀螺仪校准 前言 本文主要介绍了Robomaster云台 xff0c 底盘 xff0c 陀螺仪怎么校准 一 云台校准 1 将开关 S2 和开关 S1 都拨到最下面 2 将两侧拨杆打成内八字 xff0
  • RoboMaster视觉 深度相机(1):Ubuntu20.04上安装Intel D435深度相机SDK与ROS

    RoboMaster视觉 深度相机 xff08 1 xff09 xff1a Ubuntu20 04上安装Intel D435深度相机SDK与ROS 1 安装RealSense SDK 先去下载 librealsense 可以在GitHub下
  • 了解CV和RoboMaster视觉组(四)视觉组使用的硬件

    NeoZng neozng1 64 hnu edu cn 4 视觉组接触的硬件 虽然别人总觉得视觉组就是整天对着屏幕臭敲代码的程序员 xff0c 实际上我们也会接触很多的底层硬件与传感器 xff0c 在使用硬件的同时很可能还需要综合运用其他
  • RoboMaster机器人运行教程(一)

    1 环境配置 系统 xff1a ubuntu16 04 xff0c 安装ROS 2 基础学习 需要C 43 43 和python基础 xff0c 和ROS的基础知识 xff0c 网上有很多教程 xff0c 推荐知乎大佬教程 xff1a 我的
  • RoboMaster机甲大师:裁判系统服务器搭建助手(RMServer Aid)

    RoboMaster机甲大师 裁判系统服务器搭建助手 RMServer Aid 更新 2022 03 28 写在前面 使用教程 软件简介 软件下载 软件安装 软件使用 打开软件 首次使用 1 组建局域网 2 配置RM环境 3 启动RM服务

随机推荐