认识嵌入式软件中几种滤波器

文摘   2024-12-10 23:12   广东  

 

关注+星号公众号,不容错过精彩  

作者:HywelStar

在嵌入式系统中,滤波算法广泛应用于信号处理领域,尤其是在传感器数据采集、噪声抑制、信号平滑等方面。由于MCU(微控制器单元)资源有限,选择合适的滤波算法非常重要。本文将介绍几种常见的滤波算法及其在嵌入式系统中的应用。

1. 数字低通滤波器(Low-pass Filter)

数字低通滤波器是最常见的滤波器之一,主要用于去除高频噪声,保留低频信号。低通滤波器允许频率低于某个阈值的信号通过,而衰减高于该频率的信号。在MCU中,低通滤波器通常以 移动平均法 或 IIR(无限冲击响应)滤波器 实现。

移动平均法

移动平均法是最简单的低通滤波方法,其基本思想是通过对采样信号进行一段时间的均值运算,来实现信号的平滑。其公式如下:

其中,y[n] 为滤波后的信号,x[n] 为原始输入信号,N 为滤波窗口的大小。

移动平均法非常适用于简单的噪声去除,计算量小,适合MCU资源有限的情况。但它的缺点是响应速度较慢,且无法精确去除所有噪声。

IIR低通滤波器

IIR滤波器使用反馈机制,能够在较少的计算资源下达到更高效的滤波效果。其传递函数形式为:

其中,a_0a_1b_1 等为滤波器的系数。IIR滤波器常用于需要较高滤波精度的场景,能够提供较好的滤波性能,并且只需较少的计算资源。

典型应用场景

  • 传感器数据平滑:在很多嵌入式应用中,传感器的输出数据通常包含噪声(如温度传感器、加速度计、陀螺仪等)。低通滤波器可以去除这些数据中的高频噪声,得到平滑的信号。
  • 电机控制中的信号滤波:在电机控制中,电流或电压的信号可能会受到开关噪声的影响。低通滤波器可以有效去除这些噪声,确保控制信号的平稳。
  • 音频信号处理:音频信号中常常需要去除高频的杂散噪声,如风噪声或电源噪声。低通滤波器能去除这些不需要的高频成分,保留有用的音频信号。

总结下来:适用于需要去除高频噪声、平滑信号的场合。

2. 高通滤波器(High-pass Filter)

与低通滤波器相反,高通滤波器主要用于去除低频信号,保留高频成分。高通滤波器常用于信号的边缘检测、变化监测等应用。

简单的差分高通滤波器

一种简单的高通滤波器是通过信号的差分来实现的,即将当前采样值与前一个采样值的差异作为输出。这种方法虽然简单,但可以有效去除低频趋势。

公式为:

y[n]=x[n]−x[n−1]y[n] = x[n] - x[n-1]y[n]=x[n]−x[n−1]

这种差分方式可以帮助去除慢变化的信号,保留快速变化的信号,适用于一些简单的高通滤波需求。

典型应用场景

去除低频漂移或偏移:某些信号会受到低频漂移的影响,尤其是在温度测量或电池电压监控中。高通滤波器能够去除这些慢变化的信号,使得只有较快变化的信号得以保留。

  • • 例如:加速度计在静止时可能会有偏移值,使用高通滤波器去除偏移,保留加速度的变化信息。

心电图(ECG)信号处理:在ECG信号处理中,通常需要去除低频的干扰,如基线漂移。高通滤波器可以帮助去除这些低频分量,保留心电图的有用信息。

边缘检测和变化监测:在某些嵌入式图像处理应用中,需要监测信号的快速变化。高通滤波器通过抑制静态信号和慢变化的部分,能够突出图像中的边缘或动态变化。

适用于需要去除低频漂移或监测信号快速变化的场合,如温度、加速度、心电图、图像处理等。

3. 卡尔曼滤波器(Kalman Filter)

卡尔曼滤波器是一种最优化的递归滤波算法,广泛用于需要结合多传感器信息或进行噪声估计的场合。卡尔曼滤波器能够通过数学模型估计系统状态,逐步调整权重,从而实现最佳的滤波效果。

卡尔曼滤波器不仅能去除信号中的噪声,还能根据系统的动态模型进行状态估计,是精度要求较高的系统中的理想选择,如导航、位置跟踪、传感器融合等。

卡尔曼滤波的核心是以下递推公式:


其中,A 为状态转移矩阵,B 为控制矩阵,u_k 为控制输入,y_k 为测量值,Q 和 R 为噪声协方差矩阵,K 为卡尔曼增益。

卡尔曼滤波器的优点是能够有效融合多个传感器的数据,实时估计系统状态,并且在噪声环境下提供较高的滤波精度。但由于其计算较复杂,因此对MCU资源的要求较高。

典型应用场景

导航与定位:卡尔曼滤波器广泛应用于GPS/IMU数据融合、无人机定位、自动驾驶等领域。它能够通过不断估算状态(如位置、速度、方向等),有效融合多个传感器的测量数据,去除噪声,提高定位精度。

  • • 例如:在无人机或机器人导航中,GPS定位数据与IMU(惯性测量单元)数据常常结合使用,卡尔曼滤波器可有效融合这两类数据,提供精确的位置信息。

传感器融合:在多传感器应用中,卡尔曼滤波器能够融合来自不同来源的数据,以实现更精确的状态估计。

  • • 例如:汽车的自动驾驶系统使用卡尔曼滤波器融合雷达、激光雷达(LIDAR)、摄像头和GPS等传感器的数据,以获得车辆的精确位置和速度。

动态系统建模与状态估计:卡尔曼滤波器能够对动态系统进行建模,通过递归计算不断更新状态。它在实时控制系统、航天、机器人等领域都有广泛应用。

4. 中值滤波器(Median Filter)

中值滤波器是一种非线性滤波器,通常用于去除突发性的尖峰噪声(如盐和胡椒噪声)。中值滤波器通过取一段数据的中间值来平滑信号。与平均值法相比,中值滤波器在去除极端值方面效果更好。

公式为:

其中,k 是滤波窗口的大小,y[n] 是滤波后的信号。

中值滤波器对于去除单一的尖峰噪声非常有效,尤其适合图像处理、传感器数据中突发异常值的去除。

典型应用场景

  • 图像处中值滤波器最常用于图像处理,特别是去除图像中的 "盐和胡椒" 噪声。这种噪声通常表现为随机分布的白点或黑点。中值滤波器能够有效去除这些尖峰噪声,同时保持图像边缘信息。
    • 例如在嵌入式图像处理系统中,使用中值滤波器去除相机图像中的噪声,得到更加清晰的图像。
  • 传感器数据去噪如果传感器数据中包含极端值(如电流传感器中由于接触不良造成的短暂异常值),中值滤波器能通过对邻近数据点求中位数来去除这些异常点
    • • 例如在环境监测中,使用中值滤波器去除由于传感器故障导致的瞬时错误数据,确保数据的可靠性。
  • 音频信号去噪对于音频信号中的突发噪声(例如电磁干扰引起的尖峰噪声),中值滤波器也能有效抑制。

5. FIR滤波器(Finite Impulse Response Filter)

FIR滤波器是一类常见的线性滤波器,它的特点是系统的冲击响应是有限的,即输入信号通过滤波器后只会受到有限的历史信号影响。FIR滤波器的主要优点是具有良好的稳定性,并且可以通过合理设计滤波器系数来达到不同的频率响应。

FIR滤波器的实现方法较为简单,但与IIR滤波器相比,它需要更多的计算量。

FIR滤波器的实现公式如下:

其中,b_0b_1, ..., b_N 是滤波器的系数,N 是滤波器的阶数。

典型应用场景

  • 精确频率选择性滤波:FIR滤波器具有固定的冲击响应,可以设计成非常精确的滤波器,去除特定频率的噪声。例如,在通信系统中,FIR滤波器常用于去除特定频率的干扰。
    • • 例如:无线通信中,FIR滤波器可以用来去除通信信号中的干扰频段,确保数据的可靠传输。
  • 音频处理:在音频应用中,FIR滤波器常用于实现均衡、回声消除、声音增强等功能。
  • 高精度滤波:FIR滤波器不具有反馈,且可以通过设计滤波器系数来控制其频率响应,适用于对频率响应有高精度要求的场景。

6. 总结

在MCU应用中,滤波算法的选择需要考虑多个因素,如计算资源、实时性要求、噪声类型等。对于资源有限的嵌入式系统,移动平均法差分法等简单算法能够满足基本的需求,而在需要更高精度的场景下,可以选择 IIR滤波器 或 卡尔曼滤波器。此外,中值滤波器 和 FIR滤波器 也常用于特定的应用,如去除突发噪声和精细滤波。

如果有任何错误请纠正。


往期推荐



开源许可证(License)选择与使用指南

聊聊嵌入式BSP开发

一篇文章带你了解视频基础知识

认识 Linux Video 子系统

面试技巧 - 1. 学用STAR法则

嵌入式系统常用授时方案对比

Type-C 接口耳机分析

掌握性能分析工具Perf(二)

掌握性能分析工具Perf(一)

公众号目录指引【2】

            
“阅读原文”一起来充电吧!

码思途远
一位码农的日常分享,专注嵌入式领域相关知识。
 最新文章