算法篇---滤波算法

发布于:2025-07-26 ⋅ 阅读:(17) ⋅ 点赞:(0)

在信号处理、传感器数据处理等领域,除了卡尔曼滤波,还有很多常用的滤波算法,它们各有特点,适用于不同场景。下面用通俗易懂的方式介绍几种最常用的,并对比它们的区别和应用:

一、移动平均滤波(Moving Average Filter)

通俗理解:“取最近 N 个数据的平均值”,比如连续测 5 次温度,每次都用最近 3 次的平均作为结果,平滑波动。

核心原理:
  • 假设噪声是 “随机波动”(忽高忽低),通过平均抵消部分噪声(正噪声和负噪声互相抵消)。
  • 公式:当前滤波值 = (第 1 次 + 第 2 次 + ... + 第 N 次)÷ N(N 是窗口大小,比如 3、5、10)。
特点:
  • 优点:简单到能在单片机里用几行代码实现,计算量极小。
  • 缺点:窗口越大,滞后越明显(比如温度突然升高,平均后反应变慢);无法处理 “持续偏移” 的噪声(如传感器缓慢漂移)。
应用场景:
  • 对实时性要求高、噪声是随机小波动的场景:
    • 温湿度传感器数据平滑(如房间温度缓慢变化,偶尔跳变 1℃);
    • 心率监测(脉搏信号有小波动,取 5 次平均更稳定)。

二、指数移动平均滤波(Exponential Moving Average, EMA)

通俗理解:“给新数据更高的权重,老数据权重逐渐降低”,比如最近 1 次数据占 60%,上 1 次占 30%,再上 1 次占 10%,既平滑又减少滞后。

核心原理:
  • 相比移动平均,不丢弃老数据,但老数据的影响随时间 “指数级衰减”。
  • 公式:当前滤波值 = 新数据 × 权重 + 上一次滤波值 ×(1 - 权重)(权重通常取 0.1-0.5)。
特点:
  • 优点:比移动平均响应更快(滞后小),计算量同样很小(只需保存上一次结果)。
  • 缺点:权重需要手动调(调不好会过滤不彻底或响应太慢);仍无法处理大的突变噪声。
应用场景:
  • 需要平衡 “平滑性” 和 “响应速度” 的场景:
    • 股票价格曲线平滑(既过滤短期波动,又能及时反映趋势变化);
    • 无人机高度数据处理(气压计数据有小波动,需快速响应高度变化)。

三、中值滤波(Median Filter)

通俗理解:“取最近 N 个数据中的中间值”,比如测 5 次数据为 [2, 100, 3, 5, 4],中间值是 4,直接排除掉 100 这种 “跳变噪声”。

核心原理:
  • 专门对付 “脉冲噪声”(偶尔出现的极大 / 极小值,比如传感器突然被干扰),中间值能有效剔除异常值。
特点:
  • 优点:对 “突发大噪声”(如电压波动导致的传感器跳变)效果极好,计算简单。
  • 缺点:对连续波动的噪声(如温度一直忽高忽低)效果不如平均滤波;窗口越大,滞后越明显。
应用场景:
  • 传感器易受突发干扰的场景:
    • 图像去噪(老照片中的 “斑点”,取周围像素的中值可消除);
    • 工业传感器数据(如振动传感器偶尔因机械冲击出现异常值)。

四、巴特沃斯滤波(Butterworth Filter)

通俗理解:“只保留特定频率的信号,过滤其他频率的噪声”,比如声音信号中,只保留人说话的频率(300-3400Hz),过滤高频的电流杂音。

核心原理:
  • 像一个 “频率筛子”:设定一个 “截止频率”,低于该频率的信号能通过(保留),高于的被过滤(比如截止频率 10Hz,快速变化的噪声被滤掉)。
  • 分为 “低通”(保留低频,滤高频)、“高通”(保留高频,滤低频)、“带通”(保留中间频率)等。
特点:
  • 优点:能针对性过滤特定频率的噪声(比平均滤波更 “智能”)。
  • 缺点:需要知道噪声的频率(否则不好设截止频率);计算量比前几种大,需要存储历史数据。
应用场景:
  • 已知噪声频率特性的场景:
    • 音频处理(过滤电流产生的高频 “滋滋声”);
    • 地震波信号分析(过滤地表振动的低频噪声,保留地震波的高频信号);
    • 加速度计数据处理(过滤因振动产生的高频噪声,保留运动的低频信号)。

五、粒子滤波(Particle Filter)

通俗理解:“用一群‘粒子’模拟可能的状态,根据观测数据淘汰不合理的粒子,最后剩下的粒子平均就是结果”,比如追踪一只在房间里移动的猫,用很多粒子猜猫的位置,根据摄像头观测(“猫在沙发附近”)去掉远离沙发的粒子,剩下的粒子中心就是猫的位置。

核心原理:
  • 不依赖 “线性”“高斯噪声” 假设(卡尔曼滤波的短板),适合非线性、非高斯噪声的复杂场景。
  • 步骤:生成粒子→根据观测淘汰粒子→重采样保留合理粒子→循环迭代。
特点:
  • 优点:能处理强非线性、复杂噪声(比如目标做曲线运动、噪声忽大忽小)。
  • 缺点:计算量大(粒子越多越准,但越费资源);在嵌入式设备上难实现。
应用场景:
  • 非线性、复杂动态系统的状态估计:
    • 机器人 SLAM(同步定位与地图构建,环境是非线性的);
    • 目标跟踪(如无人机追踪快速转弯的汽车,运动是非线性的);
    • 导航(在 GPS 信号丢失时,用粒子滤波结合其他传感器推测位置)。

六、各滤波算法的核心区别与应用场景对比

滤波算法 核心优势 主要缺点 典型应用场景
移动平均滤波 简单、计算量极小 滞后明显,对突发噪声效果差 温湿度传感器、心率监测
指数移动平均滤波 响应快、滞后小,计算简单 权重难调,无法处理大噪声 股票曲线、无人机高度
中值滤波 专治突发大噪声(脉冲噪声) 对连续噪声效果差,有滞后 图像去斑点、工业传感器抗干扰
巴特沃斯滤波 针对性过滤特定频率噪声 需要知道噪声频率,计算量较大 音频去噪、地震波分析、加速度计处理
卡尔曼滤波 动态跟踪状态,最小均方误差最优 依赖线性和高斯噪声假设 导航(GPS + 惯性融合)、机器人控制
粒子滤波 适合非线性、非高斯复杂场景 计算量大,资源消耗高 机器人 SLAM、非线性目标跟踪

总结:如何选择滤波算法?

  • 若数据是 “小范围随机波动”,且要极致简单→选移动平均 / 指数移动平均
  • 若数据有 “突然跳变的大噪声”→选中值滤波
  • 若噪声有 “固定频率”(如高频杂音)→选巴特沃斯滤波
  • 若系统是 “动态变化的线性系统”(如匀速运动的小车),且噪声是高斯的→选卡尔曼滤波
  • 若系统是 “非线性、复杂动态”(如转弯的汽车、机器人避障)→选粒子滤波(不在乎计算量时)。

实际应用中,有时会组合使用(比如先用中值滤波去掉突发噪声,再用移动平均做平滑)。


网站公告

今日签到

点亮在社区的每一天
去签到