心电(ECG)信号处理流程与算法详解(一)

心电(ECG)信号处理流程与算法详解(一)

目录

1 信号获取

2 预处理

2.1 噪声去除

2.2 基线校正

3 QRS波群检测

3.1 QRS检测器

3.2 常用算法


原文链接:https://mp.weixin.qq.com/s/-RRJEmKkBPOQNMFI66dDVw

心电信号处理通常遵循一个标准化的流程,旨在从原始信号中提取关键信息(如QRS波),同时去除噪声和伪影。其核心步骤可以概括为:信号获取、预处理、QRS波群检测、特征提取和后续的分析与应用。

1 信号获取

心电信号获取是通过放置在体表的标准电极,捕捉心脏在一段时间内产生的电活动经人体传导后形成的电位变化,利用多导联系统(3/5/6/12导联系统)从不同空间角度(身体部位)记录这些变化,再转化为可分析的心电图波形。

心电图中的信息以波形以及波形之间的时间间隔的形式呈现出来。在正常的心电图记录中,波形被依次命名为P波、Q波、R波、S波和T波,其命名顺序遵循字母顺序。通常情况下波形会以周期性的方式重复出现。而任何波形形状的异常变化或波形之间时间间隔的异常变化,都被视为心律失常。

从另一个角度来看,心电图实际上只是一组数字,每个数字都代表着相应的振幅值,因此可以通过分析算法来处理这些心电图数据。

分析这些心电数据的前提是要能获取到原始ECG数据,通过上述电极采集后的数据接下来就要进入预处理阶段。

2 预处理

预处理的目标是提高信号质量,是后续的分析结果可靠的基础。例如要提高心血管疾病诊断准确性,首先就是要确保心电图数据的可靠性。而基线漂移、电源线干扰以及肌肉活动带来的干扰等因素,会严重破坏心电图数据的完整性。

2.1 噪声去除

临床分析的质量往往会受到多种干扰因素的影响,尤其是基线漂移、电源线干扰以及肌肉活动带来的信号失真等因素,都会对心电图数据的准确性产生严重影响。

  • 基线漂移(Baseline Wander)是由患者呼吸或运动引起的低频(通常<1 Hz)干扰
  • 电源线干扰(Powerline Interference)是交流电源中50/60 Hz及其谐波的工频干扰
  • 肌电噪声(Electromyographic Noise)是肌肉活动产生的高频噪声,频谱与ECG有重叠

滤波技术

传统的滤波技术在处理心电图信号中的噪声时仍然具有重要意义,现在依然经常使用具有低通、高通和带通功能的滤波器来去除那些不需要的频率成分。

  • 高通滤波(High-pass Filtering):用于去除基线漂移,需注意选择截止频率(通常略低于1 Hz)和相位响应(常使用具有线性相位的FIR滤波器或前向-后向IIR滤波以实现零相位失真)
  • 带阻滤波(Band-stop/Notch Filtering):用于去除电源线干扰,可采用线性或非线性结构滤波器以减少QRS波瞬态响应的影响
  • 低通滤波(Low-pass Filtering):用于平滑信号,去除高频噪声

小波去噪技术

通过运用小波变换,可以利用多分辨率分析技术识别并消除存在于不同尺度上的噪声成分。但在区分生理变化与异常信号成分时,其区分能力可能会受到限制。

自适应滤波

通过不断根据信号的特性调整滤波参数,自适应滤波技术为噪声抑制提供了一种动态的处理方法,适用于处理非平稳噪声。实践证明,自适应滤波在有效减少肌肉活动引起的干扰信号以及基线漂移方面具有显著效果。自适应滤波虽然具有动态调整的能力,但其效果在很大程度上取决于参数调整的精确程度,如果参数设置不准确,就可能会留下残余噪声,甚至导致重要的信号信息被丢失。

2.2 基线校正

为了尽量减少那些并非由心脏活动引起的ECG波形变化,就必须消除基线漂移现象(ST段发生的细微变化以诊断心肌缺血时很有用),基线漂移的频率通常处于0.5赫兹以下,如果患者身体的活动幅度增大,基线漂移的频率也会进一步升高。

上图 (a)中 由于身体突然移动,导致心电图基线发生偏移,基线偏移的幅度明显大于QRS波群的幅度;(b)中所示心电图信号的放大图(放大倍数为10倍);通过将三次样条函数拟合到这些数据点上,得出了估计出的基线值;经过校正后的心电图信号也被标示出来。

高通滤波

通过高通滤波技术,与心脏活动相关的较高频率成分能够被有效剔除。

线性、时不变的高通滤波器的设计需要考虑多个因素,其中最为关键的是滤波器的截止频率选择及其相位响应特性:

  • 截止频率的选取必须尽量保留心电图信号中的信息,同时尽可能地消除基线漂移,因此需要确定心电图信号频谱中最低频率成分;一般来说,通常以最慢的心率来作为确定最低频率成分的依据。PQRST波形主要由较高频率的成分构成。在心动过缓的情况下,心率可能会降至大约40次/分钟,则心电图中所含的最低频率约为0.67Hz;心率并不完全规律,总是在每次心跳之间出现波动,选择略低的截止频率,如0.5Hz。
  • 相位响应的特性涉及到滤波器结构的选择,为了防止相位失真改变心脏周期中的各种波形特征,线性相位滤波是一种非常理想的选择。正反向IIR滤波是一种具有线性相位特性的有效滤波技术,与FIR滤波器相比,IIR滤波器在较低的滤波阶数下就能更容易地满足幅度要求,但其相位响应是非线性的;采用正反向滤波技术可以弥补这一缺陷,因为这样处理后得到的滤波结果具有零相位传递函数。

多项式拟合

在心电图数据中,多项式拟合是一种常用的基线校正方法。通过运用数学模型(包括多项式函数),能够有效地捕捉并分离出基线成分。但是多项式拟合在存在数据不规则性的情况下,很容易过度简化复杂的基线变化,从而导致校正结果不准确。

3 QRS波群检测

QRS波群检测是ECG整个信号处理流程的核心。因为QRS波形特征比较明显,首先就应找到其位置,再根据 QRS 波的位置进一步识别其他信息,例如两个R波之间的时长即是心跳之间间隔时长,进一步可以用来计算心率。因此,可以说心跳的检测就等同于QRS 波群的检测。还有,通过分析这些R波峰的排列顺序,可以实现对心脏周期的分段处理,进而测量其各个组成部分的振幅与持续时间。

3.1 QRS检测器

常用的检测器的整体结构可以通过下图来表示

在这种检测器结构中,预处理环节的作用在于增强QRS波群信号的同时抑制噪声与干扰信号;预处理器通常被设计为线性滤波器,其后会接非线性变换模块。预处理后的信号会被送入决策模块进行检测。

线性滤波器的设计目的在于使其具备带通特性,从而能够保留QRS波群所包含的主要频谱成分,用于增强QRS波(其能量主要集中于此频段),同时抑制P波和T波等不必要的ECG成分。滤波器的中心频率范围为 10~25Hz,带宽范围为 5~10Hz。

非线性变换进一步增强了QRS波群与噪声之间的对比度,同时将每个QRS波群转化为一个单一的正峰值,从而更有利于进行阈值检测。这种变换可以是一种无记忆操作的过程,例如对经过带通滤波后的信号进行整流或平方处理;也可以是一种包含记忆功能的更复杂的变换过程。并非所有的预处理器都会采用非线性变换技术,有些预处理器会直接将经过滤波处理的信号输入到决策规则中进行分析。

决策规则会利用预处理后的输出结果来判断是否存在QRS波群。决策规则可采用简单的幅度阈值法实现,但通常需附加其他测试(例如波形持续时间合理性检验),以增强对各类噪声的抗干扰能力。阈值通常根据最近的波形幅度进行自适应调整,从而能够追踪幅度的渐变变化。

3.2 常用算法

  • Pan-Tompkins算法:一种经典的实时QRS检测算法,结合了带通滤波、微分、平方、移动窗口积分等步骤
  • 基于小波变换(Wavelet Transform)的方法:利用小波分析检测信号在特定尺度上的突变点,对应QRS波
  • 基于神经网络(Neural Networks)的方法:通过训练学习QRS波的特征,具有较高的抗噪性
  • 模板匹配(Template Matching):将信号段与预定义的QRS波模板进行匹配
  • 基于导数的方法:利用QRS波上升沿和下降沿斜率大的特点进行检测

【往期回顾】

心电QRS波形识别之Pan-Tompkins算法介绍

一文介绍监护产品中的心律失常

一文详解ECG心电波形之QT间期分析

一文详解ECG心电波形之ST片段分析

Read more

Python之cv2:cv2(OpenCV,opencv-python)库pip下载超时、下载失败、无法下载的解决方案大全

Python之cv2:cv2(OpenCV,opencv-python)库pip下载超时、下载失败、无法下载的解决方案大全

Python之cv2:cv2(OpenCV,opencv-python)库pip下载超时、下载失败、无法下载的解决方案大全 在学习和使用 OpenCV(Python 包名:opencv-python 或简称 cv2)的过程中,很多初学者常常会遇到通过 pip install opencv-python 下载超时、下载失败或无法下载的问题。本文将从环境检查、网络配置、国内镜像源、手动下载与离线安装、以及替代方案等多个角度,为你提供一份超详细的解决方案大全,帮助你快速、稳妥地安装好 cv2 库。 作者✍️ 猫头虎微信号:Libin9iOak 公众号:猫头虎技术团队 万粉变现经纪人:ZEEKLOGWF 目录 1. 问题现象与原因分析 2. 基础排查:检查 Python 与 pip 版本 3. 使用国内镜像源加速下载

By Ne0inhk
Python NumPy入门指南:数据处理科学计算的瑞士军刀

Python NumPy入门指南:数据处理科学计算的瑞士军刀

作者:唐叔在学习 专栏:唐叔学python 标签:Python NumPy、数据分析、科学计算、机器学习基础、数组操作、Python数据处理、人工智能基础、Python编程 摘要 NumPy是Python科学计算的基础库,提供了高性能的多维数组对象和工具。本文唐叔将带你从零开始了解NumPy的核心概念、常用操作和实际应用场景,助你在数据分析、机器学习等领域快速上手。无论你是Python初学者还是想提升数据处理能力,这篇文章都将成为你的实用指南。 文章目录 * 摘要 * 一、NumPy是什么?为什么它如此重要? * 二、NumPy安装与基础使用 * 2.1 安装NumPy * 2.2 导入NumPy * 2.3 创建第一个NumPy数组 * 三、NumPy核心功能详解 * 3.1 数组属性 * 3.2 创建特殊数组 * 3.3 数组索引与切片

By Ne0inhk
当Python遇见高德:基于PyQt与JS API构建桌面三维地形图应用实战

当Python遇见高德:基于PyQt与JS API构建桌面三维地形图应用实战

摘要: 地图技术作为数字化世界的基石,其应用早已超越了传统的导航和位置服务。对于开发者而言,如何将强大的地图能力集成到不同形态的应用中,是一个充满挑战与机遇的课题。本文将详细阐述一个独特的实践案例:如何利用Python的PyQt5框架,结合高德开放平台强大的JavaScript API 2.1Beta,从零开始构建一个功能丰富的桌面端地图浏览器。项目不仅实现了二维、三维、卫星、地形等多种地图样式的动态切换,还集成了地点搜索(POI)、实时标记等核心功能。本文将深入探讨技术选型、架构设计、核心功能实现、Python与JavaScript双向通信机制,并在此基础上拓展实现“点击获取坐标与地址(逆地理编码)”及“路线规划”等高级功能,旨在为开发者提供一个将Web地图技术无缝融入桌面应用的完整解决方案,展现高德开放平台在跨技术栈融合应用中的卓越潜力。 一、 引言:为何选择在桌面端构建地图应用? 在移动互联网和Web应用大行其道的今天,探讨桌面地图应用的开发似乎有些“复古”。然而,在特定业务场景下,桌面应用依然拥有不可替代的优势。例如,在专业地理信息系统(GIS)、行业数据监控中心、复杂的

By Ne0inhk
Python基于深度学习的商品推荐系统(附源码,文档说明)

Python基于深度学习的商品推荐系统(附源码,文档说明)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W+、ZEEKLOG博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2025年微信小程序毕业设计选题推荐 Java项目精品实战案例《100套》 毕业设计怎样选题?500道Python毕业设计题目推荐 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及文档编写等相关问题都可以给我留言咨询,希望帮助更多的人 文章目录 * 第一章 项目简介 * 第二章 技术栈 * 第三章 系统总体设计 * 第四章 系统功能实现 * 4.1 用户注册登录 * 4.2 系统首页 * 4.3 商品详情 * 4.4 商品个性化推荐 * 4.5 购物车 * 4.6 在线支付 * 4.7

By Ne0inhk