滤波方法
滤波,故名思意滤除波动(噪声),保持数据稳定平滑。常见的应用场景主要在含信号处理,图像处理方面。
1. 软件滤波(数字滤波)
@startmindmap
+_ 软件滤波(数字滤波)
++_ FIR滤波器(非递归)
+++_ 移动平均滤波
+++_ 加权平均滤波
+++_ 更复杂的窗函数法(如汉宁窗)
++_ IIR滤波器(递归)
+++_ 一阶低通滤波(指数加权平均)
+++_ 双线性变换法(来自模拟原型)
++_ 非线性滤波器
+++_ 中值滤波
+++_ 卡尔曼滤波
++_ 自适应滤波器
@endmindmap
软件滤波处理的是数字信号,即由ADC等各类硬件采样得到的处理器可处理的数字信号、算是一种数据处理方式。通过软件代码或数字硬件执行数学运算来消除噪声。
优点:
- 灵活,稳定;
- 能实现复杂算法;
缺点:
- 处理速度受处理器限制;
- 会引入一定延迟,实时性没有硬件滤波好。
1.1. 加权平均滤波(一阶低通滤波)
在了解加权平均滤波时,可以先了解下一阶低通滤波,一阶低通滤波这个概念最初、最直观的起源正是来自硬件,来自最基础的模拟电子电路。而在数字领域,我们用算法来实现它,而这个算法的一种形式就是递归型的加权平均。
加权平均公式:
\[y[n] = \alpha \cdot x[n] + (1 - \alpha) \cdot y[n-1]\]其中
- $ y[n] $:是当前输出值
- $ y[n-1] $:上次输出值
- $ x[n] $:是当前采样值
- $ \alpha $:是赋予当前采样值 $ x[n] $ 的权重。
- $ (1 - \alpha) $:是赋予上一次滤波输出 $ y[n-1] $ 的权重。
公式比较简单,它体现出的是一种递归的、指数加权平均的思想。
从公式中可以看到 $ y[n-1] $ 本身又包含了 $ x[n-1],x[n-2],… $ 的历史信息。如果不断递归展开,会发现这个公式相当于对所有历史数据进行了一个加权平均,并且权重随着时间回溯呈指数衰减。越新的数据权重越高,越老的数据权重越低。
2. 硬件滤波(模拟滤波)
@startmindmap
+_ 硬件滤波(模拟滤波)
++_ 无源滤波器
+++_ 低通滤波(如RC电路)
+++_ 高通滤波(如RLC谐振电路)
+++_ 带通滤波
+++_ 带阻
++_ 有源滤波器
@endmindmap
硬件滤波处理的是连续变化的模拟信号(电压、电流),使用电阻、电容、电感、运算放大器等物理元件搭建的电路(RC、RL),在物理意义上使特定信号通过。
优点:
- 处理速度极快,实时性高。
缺点
- 受元器件精度、老化、温度漂移影响大;
- 设计修改复杂,需要更换元器件;
- 一种电路通常只能实现一种滤波功能;
2.1. 一阶低通滤波
// todo 对于硬件半桶水的我来说稍稍有些困难