滤波算法学习笔记

news2024/7/8 2:36:55

目录

引言

一、定义

二、分类

三、常见滤波算法

四、应用与优势

五、发展趋势

例程

1. 均值滤波(Moving Average Filter)

2. 中值滤波(Median Filter)

3. 高斯滤波(Gaussian Filter)

4.指数移动平均滤波(Exponential Moving Average Filter)


引言

滤波算法是一种数学技术,广泛应用于信号处理和图像处理领域,旨在通过特定的算法对信号的频谱特性进行处理,以达到去噪、平滑、增强或分析信号的目的。以下是对滤波算法的详细概述:

一、定义

滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。滤波算法的目的是从原始有干扰的测量数据中提取出有用信号,或者对信号进行某种特定的处理以改善其质量。

二、分类

滤波算法可以根据不同的标准进行分类,常见的分类方式包括:

  1. 按动力学系统的线性或非线性特征分类
    • 线性滤波:如最小二乘估计法、维纳滤波法、卡尔曼滤波法等,这类算法基于线性系统理论,适用于线性系统或可近似为线性系统的场景。
    • 非线性滤波:如扩展卡尔曼滤波算法、无迹卡尔曼滤波算法、粒子滤波算法等,这类算法能够处理非线性系统,具有更高的灵活性和适应性。
  2. 按系统的不同噪声特性分类
    • 高斯白噪声滤波:针对噪声符合高斯分布且功率谱密度在整个频域内均匀分布的情况设计的滤波算法。
    • 非高斯白噪声滤波:针对噪声不符合高斯分布或功率谱密度不均匀的情况设计的滤波算法。

三、常见滤波算法

  1. 维纳滤波:一种基于最小均方误差准则的线性滤波算法,适用于平稳随机过程的滤波和预测问题。维纳滤波公式是通过平稳过程的谱分解导出的,但在实际应用中受到一定限制。

  2. 卡尔曼滤波:一种高效的递推滤波算法,适用于线性动态系统的状态估计。卡尔曼滤波通过预测和更新两个步骤不断迭代,以实现对系统状态的实时估计。

  3. 中值滤波:一种常用的非线性滤波算法,在图像处理中尤为常见。中值滤波通过选择待处理像素邻域内各像素值的中值来代替待处理像素值,从而消除噪声并保护图像边缘信息。

  4. 高斯滤波:一种线性平滑滤波算法,适用于消除高斯噪声。高斯滤波通过对整幅图像进行加权平均处理,使图像中的每个像素值都由其邻域内的像素值加权平均后得到。

  5. 其他滤波算法:还包括限幅滤波、算术平均滤波、滑动窗口滤波、防脉冲干扰平均滤波、一阶滞后滤波、加权递推平均滤波、消抖滤波等多种算法,它们各自具有不同的特点和适用范围。

四、应用与优势

滤波算法在信号处理和图像处理领域具有广泛的应用,如通信、雷达、声纳、自动控制、图像处理、生物医学工程等领域。滤波算法的优势在于能够有效地抑制噪声、提高信号质量、提取有用信息等,从而改善系统的性能和可靠性。

五、发展趋势

随着计算机技术的不断发展和算法的不断优化,滤波算法也在不断演进。未来的滤波算法将更加智能化、自适应化,能够更好地应对复杂多变的信号处理需求。同时,随着大数据和人工智能技术的兴起,滤波算法也将与这些先进技术相结合,为信号处理领域带来更多的创新和发展机遇。

例程

1. 均值滤波(Moving Average Filter)

均值滤波是一种简单的线性滤波,通过计算数据点周围一定范围内的平均值来平滑数据。

工作原理

  • 选择一个窗口大小(滤波器长度)。
  • 将窗口沿着数据序列滑动。
  • 在每个位置上,计算窗口内所有数据点的平均值。
  • 将计算出的平均值作为该位置滤波后的结果。

优点

  • 实现简单。
  • 对随机噪声有很好的抑制效果。

缺点

  • 可能导致信号边缘模糊。
  • 不适用于非平稳信号。

import numpy as np

def moving_average(x, window_size):
    ret = np.cumsum(x, dtype=float)
    ret[window_size:] = ret[window_size:] - ret[:-window_size]
    return ret[window_size - 1:] / window_size

# 示例数据
data = np.random.randn(100)
window_size = 10
filtered_data = moving_average(data, window_size)

# 可视化
import matplotlib.pyplot as plt

plt.plot(data, label='Original Data')
plt.plot(np.arange(window_size - 1, len(data)), filtered_data, label='Filtered Data', color='r')
plt.legend()
plt.show()

2. 中值滤波(Median Filter)

中值滤波是一种非线性滤波技术,它将每个数据点替换为其邻域内的中位数,对于去除椒盐噪声特别有效。

工作原理

  • 选择一个窗口大小。
  • 将窗口沿着数据序列滑动。
  • 在每个位置上,对窗口内的数据点进行排序。
  • 选取排序后的中位数作为该位置滤波后的结果。

优点

  • 对椒盐噪声有很好的抑制效果。
  • 能够较好地保持信号的边缘信息。

缺点

  • 对高斯噪声的抑制效果不如均值滤波和高斯滤波。

from scipy.signal import medfilt
import numpy as np
import matplotlib.pyplot as plt

# 示例数据
data = np.random.randn(100)
# 添加一些噪声
data[np.random.choice(np.arange(len(data)), 10, replace=False)] = np.random.uniform(low=-5, high=5, size=10)

# 应用中值滤波
filtered_data = medfilt(data, kernel_size=3)

# 可视化
plt.plot(data, label='Original Data')
plt.plot(filtered_data, label='Filtered Data', color='r')
plt.legend()
plt.show()

3. 高斯滤波(Gaussian Filter)

高斯滤波是一种线性平滑滤波,其权重由高斯函数给出。这种方法适用于去除高斯噪声,同时能够在一定程度上保持信号的细节信息。

工作原理

  • 选择一个高斯核(即高斯函数的离散形式),该核的大小和标准差决定了滤波的平滑程度。
  • 将高斯核沿着数据序列(或图像)滑动。
  • 在每个位置上,计算高斯核与对应数据点(或像素)的加权和。
  • 将加权和作为该位置滤波后的结果。

优点

  • 对高斯噪声有很好的抑制效果。
  • 能够在一定程度上保持信号的细节信息。

缺点

  • 相对于均值滤波,计算量较大。
  • 如果标准差选择不当,可能导致信号过平滑或细节丢失。

import numpy as np
import matplotlib.pyplot as plt

from scipy.ndimage import gaussian_filter

# 示例数据
data = np.random.randn(100)

# 应用高斯滤波
sigma = 2  # 标准差
filtered_data = gaussian_filter(data, sigma=sigma)

# 可视化
plt.plot(data, label='Original Data')
plt.plot(filtered_data, label='Filtered Data', color='r')
plt.legend()
plt.show()

4.指数移动平均滤波(Exponential Moving Average Filter)

指数移动平均滤波(是一种在信号处理中广泛应用的加权移动平均滤波技术。它通过对历史数据进行加权平均,并赋予较新数据点更高的权重,从而实现对时间序列数据的平滑处理。

工作原

  • 加权机制:与简单的移动平均滤波(等权重平均)不同,EWMA采用指数衰减的方式对历史数据进行加权平均。即较新的数据点具有更高的权重,而较旧的数据点权重逐渐降低。
  • 迭代计算:每次新的数据点到来时,都会根据当前的平滑系数(α)和前一时刻的输出值(Y_{n-1})以及当前输入值(X_n)来计算新的输出值(Y_n)。这种迭代计算方式使得EWMA能够动态地适应数据的变化。

优点

  1. 快速响应:由于较新数据点具有更高的权重,EWMA能够更快地捕捉到数据的变化趋势,对于实时性要求较高的应用场景尤为适用。
  2. 灵活性:通过调整平滑系数(α),可以灵活地控制滤波器的响应速度和平滑程度。较大的α值会使滤波器更快地响应数据变化,而较小的α值则会使滤波器更加平滑。
  3. 稳定性:虽然EWMA对数据的快速变化敏感,但其加权机制也确保了滤波器在数据相对稳定时能够保持较好的平滑效果,减少噪声对数据的影响。

缺点

  1. 滞后性:尽管EWMA比简单移动平均滤波具有更快的响应速度,但在极端情况下(如数据发生突变时),它仍然可能存在一定的滞后性。这是因为平滑系数的选择需要在响应速度和平滑程度之间做出权衡。
  2. 参数敏感性:平滑系数(α)的选择对滤波器的性能具有重要影响。如果α选择不当,可能会导致滤波器过度平滑或响应不足。因此,在实际应用中需要根据具体情况仔细调整该参数。
  3. 计算复杂度:虽然EWMA的计算过程相对简单,但在处理大规模数据时,其迭代计算方式可能会增加计算复杂度。特别是在实时系统中,需要确保计算速度能够满足应用需求。

import numpy as np
def exponential_moving_average(data, alpha):
    """
    计算指数移动平均滤波。
    参数:
    data -- 输入数据,numpy数组。
    alpha -- 平滑系数,介于0和1之间。
    返回:
    filtered_data -- 滤波后的数据,numpy数组。
    """
    result = np.zeros_like(data)
    result[0] = data[0]
    for n in range(1, len(data)):
        result[n] = alpha * data[n] + (1 - alpha) * result[n - 1]
    return result

# 示例数据
data = np.random.randn(100)
alpha = 0.1
filtered_data = exponential_moving_average(data, alpha)

# 可视化
import matplotlib.pyplot as plt

plt.plot(data, label='Original Data')
plt.plot(filtered_data, label='Filtered Data', color='r')
plt.legend()
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1895739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新技术 高效的碳捕捉技术设计

网盘 https://pan.baidu.com/s/1mUlEhbQ6LBHYdmfg-du9bw?pwdc7gk 一种用于高效捕集CO_Sub_2__Sub_的生物炭颗粒吸附剂及其制备方法和应用.pdf 基于双相离子溶液的高效碳捕集及节能再生装置.pdf 基于水合物法低温液化的高效碳捕集系统及其操作方法.pdf 碳捕集系统及方法.pdf 高…

Feign远程调用,请求头丢失情况

现象 解决方案 import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolde…

一篇文章说清楚Filter(过滤器)、Interceptor(拦截器)和AOP(切面儿)

文章目录 前言一、Filter(过滤器)1.说明2.实现filterChain.doFilter() 3.order优先级4.解决跨域5.拦截返回错误信息JSON 二、Interceptor(拦截器)1.说明2.实现preHandlepostHandleafterCompletion 3.执行顺序图4.排除特定路径拦截…

C#/.NET/.NET Core编程技巧练习集

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core各种编程常用语法、算法、技巧、中间件、类库等等。 GitHub开源地址:https://…

MedCLIP:CLIP + 医学语义匹配策略,解决模型误将不同患者同病症视为不相关

MedCLIP:CLIP 医学语义匹配策略,解决模型误将不同患者同病症视为不相关 提出背景流程图解法拆解子解法1:知识提取子解法2:视觉和文本编码器子解法3:语义匹配损失 提出背景 论文:https://arxiv.org/pdf/22…

【SkiaSharp绘图15】SKPath属性详解:边界、填充、凹凸、类型判断、坐标、路径类型

文章目录 SKPath 构造函数SKPath 属性Bounds 边界(宽边界)TightBounds紧边界FillType填充方式IsConcave 是否凹/ IsConvex 是否凸IsEmpty是否为空IsLine是否为线段IsRect是否为矩形IsOval是否为椭圆或圆IsRoundRect是否为圆角矩形Item[] 获取路径的坐标LastPoint最后点的坐标Po…

JavaScript——while类型

目录 任务描述 相关知识 while类型 编程要求 任务描述 质数的定义如下:大于1的自然数,且除了1和本身外没有别的因数。如2、3、5、7。 本关任务:利用循环结构求质数的和。 相关知识 在选择结构中,条件会被测试一次&#xff…

第一百四十三节 Java数据类型教程 - Java Boolean包装类

Java数据类型教程 - Java Boolean包装类 布尔类的对象包装一个布尔值。 Boolean.TRUE和Boolean.FALSE是布尔类型的两个常量,用于表示布尔值true和false值。 我们可以使用构造函数或valueOf()工厂方法创建一个布尔对象。 当解析字符串时,此类将处理“t…

复现centernet时,报错RuntimeError: CUDA error: out of memory

运行 python test.py ctdet --dataset coco --exp_id coco_dla --load_model /root/CenterNet/exp/ctdet/coco_dla/model_last.pth --gpus 0 --test_scales 1 报错下面: RuntimeError: CUDA error: out of memory明明显存是够用的 解决办法: 找到自己…

RK3568平台(opencv篇)ubuntu18.04上安装opencv环境

一.什么是 OpenCV-Python OpenCV-Python 是一个 Python 绑定库,旨在解决计算机视觉问题。   Python 是一种由 Guido van Rossum 开发的通用编程语言,它很快就变得非常流行,主要是 因为它的简单性和代码可读性。它使程序员能够用更少的代码行…

LVS-DR负载均衡

LVS-DR负载均衡 LVS—DR工作模式 原理 客户端访问调度器的VIP地址,在路由器上应该设置VIP跟调度器的一对一的映射关系,调度器根据调度算法将该请求“调度“到后端真实服务器,真实服务器处理完毕后直接将处理后的应答报文发送给路由器&#xf…

[Redis]哨兵机制

哨兵机制概念 在传统主从复制机制中,会存在一些问题: 1. 主节点发生故障时,进行主备切换的过程是复杂的,需要人工参与,导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去,但写压力/存储压力是无法…

二、基础—常用数据结构:列表、元祖、集合、字典、函数等(爬虫及数据可视化)

二、基础—常用数据结构:列表、元祖、集合、字典、函数等(爬虫及数据可视化) 1,字符串2,最常用的是列表(重点掌握)3,元组4,字典(重要)5&#xff0…

卫星IoT产品发展前景

卫星IoT产品发展前景 一、概述 卫星IoT产品是指利用卫星通信技术实现物联网设备互联互通的解决方案。随着卫星互联网技术的快速发展,卫星IoT产品正逐渐成为解决偏远地区、海洋、航空等场景下物联网连接问题的重要手段。 二、性能特点 广泛覆盖: 卫星…

搜维尔科技:如何使用 SenseGlove Nova 加速手部运动功能的恢复

District XR 的VR 培训 5 年多来,District XR 一直在为最大的工业公司创建 VR 和 AR 项目。 客户:District XR 客户代表:尼古拉沃尔科夫 他的角色:District XR 首席执行官 面临解决的挑战 该公司正在寻找一种方法来加速身体伤…

k8s离线安装安装skywalking9.4

目录 概述资源下载Skywalking功能介绍成果速览实践rbacoapoap-svcuiui-svc 结束 概述 k8s 离线安装安装 skywalking9.4 版本,环境:k8s版本为:1.27.x 、spring boot 2.7.x spring cloud :2021.0.5 、spring.cloud.alibab&#xff1…

搜维尔科技:【研究】Scalefit人体工程学测量系统为预防肌肉骨骼疾病提供生物力学分析

与工作相关的肌肉骨骼疾病(MSE)是工作生活中的一个持续的伴侣。总部位于科隆的Scaleit公司生产的移动生物力学测量系统Industrial Athlete有助于在工作场所立即发现疾病,伤害和损伤的原因。 Scalefit是一个跨学科网络的一部分,在德国科隆体育大学和职业…

Linux手动安装JDK1.8

1、下载要安装的jdk安装包文件 官网下载地址:https://www.oracle.com/cn/java/technologies/downloads/ 2、上传jdk安装包至要安装服务器 3、在要安装jdk位置使用命令解压安装包 安装路径: /usr/local/java 解压安装包,解压命令 tar -zxvf /install…

2024攻防演练:亚信安全新一代WAF,关键时刻守护先锋

实网攻防 网络安全如同一面坚固的盾牌,保护着我们的信息资产免受无孔不入的威胁。而其中,WAF就像网络安全的守门员,关键时刻挺身而出,为您的企业筑起一道坚实的防线。 攻防不对等 防守方实时应答压力山大 在攻防对抗中&#xf…