计算机科学与应用  >> Vol. 10 No. 9 (September 2020)

心电信号在线检测和分析系统的设计与实现
The Design and Implementation of a Real-Time Detection and Analysis System for ECG Signal

DOI: 10.12677/CSA.2020.109172, PDF, HTML, XML, 下载: 254  浏览: 552  科研立项经费支持

作者: 吴可翰, 吴沁然, 韦 欢, 王 蓓:华东理工大学信息科学与工程学院自动化系,上海;管娇艳:华东理工大学信息科学与工程学院计算机系,上海

关键词: 心电信号心率变化在线检测和评估可视化界面ECG Heart Rate Variance Real-Time Detection and Analysis Visualization Interface

摘要: 生物电信号诸如心电信号与人体健康状况息息相关。本课题以心电信号为研究对象,设计并实现了心电信号在线检测和分析系统。首先,采用了AD8232模块,实现心电信号的实时检测、滤波和放大;其次,分别采用差分阈值法和K-means算法对心电信号进行分析,计算得到心率变化;最后,设计了面向用户的人机交互界面,将检测到的信号和分析计算结果,实时反馈给使用者。
Abstract: The neurophysiological signals such as ECG (Electrocardiogram) are closely related to human health. In this study, a real-time detection and analysis system for ECG is designed and implemented, with ECG as research object. Firstly, the AD8232 module is adopted to realize the real-time detection, filtering and amplification of ECG signals. Secondly, the difference threshold method and the K-means algorithm are used to analyze the ECG signals, and the heart rate variance is calculated. Finally, a user-oriented interface is designed to illustrate the detected signals and the analysis and calculation results for users.

文章引用: 吴可翰, 吴沁然, 管娇艳, 韦欢, 王蓓. 心电信号在线检测和分析系统的设计与实现[J]. 计算机科学与应用, 2020, 10(9): 1631-1638. https://doi.org/10.12677/CSA.2020.109172

1. 引言

近年来,随着生活水平的逐步提高,青少年的身体素质却呈现下降趋势,大学生群体的心血管疾病发病率也在逐年上升,给个人及社会造成了沉重的医疗负担 [1]。短时间内的剧烈运动往往会使得心脏承受巨大的压力,进而在体锻活动或体能测试中,对身体造成较严重的损伤。对青少年、青年的特殊群体,若能给予正确的健康指导和干预,帮助学生形成理想心血管健康行为,对心血管疾病的早期预防具有重大意义 [2]。

医院的高精度心电信号采集设备,价格昂贵、使用复杂且体积庞大,不适合个人使用。市面上已有的电子类产品具有便携性的特点,也具备了一定的心率辅助记录功能,但其附加功能也较多。与目前已有的产品不同,本文旨在有针对性地设计心电信号在线检测和分析系统,其主要功能包括了心电信号的实时获取,心率的在线分析与评估,并开发了人机交互界面,便于受试者知晓心率状况,也支持受试者保存波形,以便日后进行更深入的分析,全面了解自身的健康状况。

2. 系统的设计框架

本文所设计的系统主要由心电信号的在线检测、心电信号的在线分析、以及面向用户的人机交互三部分所构成。系统的整体设计框架如图1所示,从AD8232模块获取心电信号,在MEGA328p芯片进行预处理,并在LCD1602中初步显示出心率。随后芯片将心电信号通过串口传输给上位机程序,上位机程序对心电信号进行波形预处理、波形绘制、特征提取等操作,将得到的心率分析结果显示在屏幕上反馈给受试者。

2.1. 心电信号的在线检测

心电信号的在线检测部分通过AD8232模块来完成。AD8232心电检测模块是由亚德诺公司生产的一种常见的生物电信号调理模块,通过左臂、右臂、右腿三处的电极输入信号,获取被测者的心电信息。AD8232集一级放大、带通滤波、二级放大、电压抬升于一体,具有良好的小信号放大能力,其中专用的仪表放大器具有共模抑制功能,并能获得100倍以上的差模信号增益,较为适合生物电信号之类的小信号检测 [3] [4]。

在本课题中,我们选用了AD8232模块,将其作为主要的信号检测方式,用于心电信号的检测、滤波和放大。AD8232模块的电路设计如图2所示,在实验中将图中的LA、RA和RL引脚分别使用电极片连接在左臂、右臂和右腿处来获取心电信号,将图中的SIGNAL OUTPUT连接MEGA328p以输出心电信号。通常来说,心电信号的频谱集中于0.5~100 Hz。因此,利用一个下边带为0.5 Hz,上边带为40 Hz的带通滤波器可以初步实现频率筛选。其具体实际应用为:当LO+引脚和LO−引脚同时输出为低电平时读入信号。

Figure 1. A real-time detection and analysis system for EKG

图1. 心电信号在线检测和分析系统

Figure 2. Circuit design of AD8232

图2. AD8232 电路设计

2.2. 心电信号的在线分析

2.2.1. 心电特征

图3给出了典型的心电信号波形,从中可以观察到QRS波段。其中,R点是心电图振幅最大的一点。识别R点并观察一个R-R间期(一般是0.6~1.2 s) [5],也就能够得到QRS波在心电信号中出现的次数,即心跳次数。心率的常见单位是bpm,即一分钟心脏跳动的次数。

Figure 3. Typical waveform of ECG

图3. 心电信号典型波形

一般认为心率在60~100 bpm区间内属于正常范畴 [6],但考虑到系统分析误差和不同人的身体素质差异,我们将最低心率的阈值稍稍降低一点,以保证测试结果的合理性。本课题中,我们将心率最低值设置为50。而运动时心率升高是一个显著特征,但是过高的心率会给我们的身体带来过多的负荷,不同人群运动时最高报警心率的差异非常大,这无法用简单地放宽阈值来保证合理性,因此我们会在进行实验分析前对受试者做分类,并对不同人群设置不同的最高值,其最大值选取标准参照表1,以此作为心率分析和评价的依据。

Table 1. Equations for calculating the maximum heart rate in different subjects [7]

表1. 不同受试人群的最大心率计算公式 [7]

2.2.2. 心率分析

本文用两种方法对心率进行计算,差分阈值法和K-means算法。其中,差分阈值法主要用于在线分析环节;K-means算法主要用于后期的整体分析环节。

在上位机中,心率的计算采取了差分阈值法。其具体处理方式为:将当前串口获取的数据与前一个获取的数据求差,当差分的结果大于某一预设数值且当前串口的数据也大于某一设定的阈值,则当前数据有可能是所要检测的R波波峰。为防止R波在上升过程中就已经超出设定阈值而导致系统误判,在找到可能是R波波峰的点后再进行一次判断,如果串口数值开始下降,则该点确实为R波波峰所在处。最后,计算得到R波波峰间的时间间隔,将其作为一次心跳的时间,即可推算出当前的瞬时心率。

将实验过程中的心电信号保存后,可利用历史数据进行心率变化情况的整体分析。这里采用了K-means算法。K-means算法是一种较典型的逐点修改迭代的动态聚类算法,采用距离作为相似性的评价指标,对是否为R波波峰进行聚类检测。该算法的原理是:随机选择K个对象,每个对象代表一个聚类的质心;对于其余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似的聚类中;计算每个聚类的新质心。重复上述过程,直到准则函数会聚。根据聚类后的波形,找到相邻两个0和1交替的位置,这个区间内存在一个电位最大值,这就是这一时段内心电图中R波波峰的位置,找到R波波峰位置后即可根据R波波峰间的间隔时间推算出瞬时心率。

2.3. 面向用户的人机交互

面向用户的人机交互功能主要是通过编写上位机程序,呈现在线检测和分析结果。上位机程序采用Processing进行设计,其主要功能是接收下位机传送的数字信号,并对接收到的信号进行实时显示、计算心率、并对数据进行保存。上位机从串口读入心电信号的数据,并将数据点绘制在主界面上直到主界面上绘满波形,上位机从头开始绘制波形并将之前的波形覆盖;波形每完整覆盖一次显示一次新的心率变化。上位机的人机交互界面如图4所示。

Figure 4. Human-machine interface

图4. 人机交互界面

使用差分阈值法找到R波波峰之后,接下来是进行心率的计算。为了获取更准确的心率值,我们计算了当前波形第一个波峰到下一波形的第一个波峰间的时间,并对R波波峰进行计数,得出当前心率。在这里,受试者可选择不同的受试人群的评价标准,如图4所示“运动者状态选择菜单”,当在检测和分析后得到的心率超出或低于预设值时,将会在上位机上进行提示,如图4所示“心率显示与状态分析”。此外,上位机提供数据保存功能,如图4所示“开始与停止存档按钮”,可将数据保存为两个文件,以供进一步分析心电信号,一个文件保存串口传入的原始心电信号,另一个文件保存每次的心率变化。

3. 实验结果与分析

对心电信号进行心率分析主要包含有在线和离线两种方式。在线处理中采用差分阈值法对实时检测到的心电信号计算心率,结果显示在图4中的上位机界面上。同时,在确保实时心率计算的功能以外,对保存的心电信号历史数据进行了更细致的离线处理和分析。以下主要给出心电信号的离线分析结果。

3.1. 去噪预处理

原始获取的心电图往往会有许多噪声,这样的噪声干扰可能来自被测者本身的心脏内部,也有可能是由于运动时伴随着的肌肉收缩,或者是来自人体电容造成的工频干扰等原因。因此,对于心电信号而言,去噪等预处理是必要的,应该在保留波形最大值、最小值及宽度的条件下降低波形的复杂程度,减轻非稳定噪声的干扰。

本课题的心电频率选用200 Hz,仍属于低频范围,所以采用最为常见的小波变换法,可以把信号在低频进行多层分解,从而去除基线漂移这类的低频干扰 [8],本文采用了Daubechies 8小波 [9]。阈值和阈值函数的选择也会直接影响去噪效果 [10],本文选用了max阈值和硬阈值函数,避免峰值减小,对后续寻找R波波峰产生影响。图5图6分别对应了处理前后的心电信号。从中可以看出,处理后的波形更光滑,便于后续的心率分析与计算。

Figure 5. Raw ECG signal

图5. 原始心电信号

Figure 6. ECG signal after noise removal

图6. 去噪后的心电信号

3.2. 心率计算

对经过去噪预处理后的心电信号,进行心率的分析和计算。首先对心电信号计算二阶导数,作为特征值;其次利用K-means算法 [11] [12] 聚成两类,最后得到两个簇,分别是0和1。根据聚类后的波形,找到相邻两个0和1交替的位置,这个区间内存在一个电位最大值,这就是这一时段内心电图中R波波峰的位置。实验结果如图7所示,从中可以观察到,由0到1的跃变分布还是比较均匀的。

Figure 7. Clustering results after second order difference of ECG signal

图7. 心电信号二阶差分后的聚类结果

根据图7得到的聚类后的结果,判断出两相邻R波波峰的位置,坐标位置相减能够得出一个区间的长度,此时的瞬时心率可以用60和这一区间值的比值来表示。要注意根据数据采样频率来调整窗口大小,因为RR区间理论上不可能小于0.2 s,如若是5 ms,也就是200 Hz的采样频率,则一个窗口最多包括49个数据,如若窗口太小会造成不必要的R波波峰误读。

所有的瞬时心率计算完之后保存到文本文件中,随后可以计算出这一时段内的平均心率,这比起瞬时心率更有参考价值,同样也保存到历史数据中。

4. 讨论与总结

本课题设计并实现了心电信号的在线检测和在线分析的一系列步骤。采用了单片机实现心电信号的采集,所采集的数据准确且发送正常;对获取的心电信号,基于差分阈值法进行了在线分析和处理,并在上位机上编写程序,实现了在线结果的实时呈现;基于K-means算法,对历史数据进行了更细致的处理和分析,并将心率计算结果进行保存,可用于后续整体的心率健康状况的分析和评估。心电信号在线检测和分析系统的意义在于提供了一种更加便捷且有针对性的心电检测和评估方案,有助于更快捷直观地获知自身的心率变化情况,继而进一步对了解和维护身体健康状况起到辅助作用。

基金项目

华东理工大学大学生创新创业训练资助项目(X19157)。

参考文献

[1] 陈伟伟, 高润霖, 刘力, 等. 《中国心血管病报告2016》概要[J]. 中国循环杂志, 2017, 32(6): 521-530.
[2] 周艺, 付聪, 高伟娜, 等. 在校大学生心血管疾病预防知、信、行研究进展[J]. 医学研究与教育, 2017, 34(6): 67-72.
[3] 朱检兵. 基于STM32便携式心电监护系统的设计[D]: [硕士学位论文]. 南昌: 南昌大学, 2019.
[4] 张权. 基于AD8232的穿戴式心电监测系统设计与实现[J]. 信息通信, 2019(7): 52-54.
[5] 石屹. 基于形态学的心电信号特征提取与分类方法的研究[D]: [硕士学位论文]. 上海: 华东理工大学, 2013.
[6] 谢振武, 曹闺京, 李莒香, 等. 不同年龄健康人群心率分析[J]. 中国现代医学杂志, 1997, 7(7): 1-3.
[7] 曾斌. 运动心率检测系统的研究与实现[D]: [硕士学位论文]. 南昌: 江西师范大学, 2016.
[8] 王琦. 心电图去基线漂移的数字滤波算法比较[J]. 科学技术与工程, 2008, 8(8): 2183-2186.
[9] 高清维, 李海鹰, 庄镇泉, 等. 基于平稳小波变换的心电信号噪声消除方法[J]. 电子学报, 2003, 31(2): 238-240.
[10] 陈晓曦, 王延吉, 刘恋. 小波阈值去噪法的深入研究[J]. 激光与红外, 2012, 42(1): 105-110.
[11] 杨俊闯, 赵超. K-Means聚类算法研究综述[J]. 计算机工程与应用, 2019, 55(23): 7-14, 63.
[12] 黄韬, 刘胜辉, 谭艳娜. 基于K-Means聚类算法的研究[J]. 计算机技术与发展, 2011, 21(7): 54-57, 62.