【作 者】严瑞阳,丁小曼,邓新桃,王爱国,杨翠微,
1 复旦大学 信息科学与工程学院 生物医学工程中心,上海市,200433
2 兴化市人民医院 心内科,兴化市,225700
3 上海市医学图像处理与计算机辅助手术重点实验室,上海市,200093
4 上海心脏电生理工程技术研究中心,上海市,201318
近年来心血管疾病已经成为所有疾病之首,患病率与致死率在逐年提高,严重威胁人们的身体健康[1]。心电图(electrocardiogram,ECG)是心脏的电活动在体表标准导联上的投影,临床医生主要根据心电图来分析诊断患者病情。随着医疗技术的发展,利用人工智能(artificial intelligence,AI)技术对心电图进行辅助分析可以极大地提高临床诊断的准确率与效率,减少主观误判[2]。同时,结合可穿戴设备可对心血管疾病进行早发现和早治疗。
人工智能最早提出于20世纪50年代,旨在模拟人的思维和行为来使计算机应用于更高的层次。目前基于机器学习算法的人工智能技术已经应用到了医学的各个领域,特别是心电诊断领域。计算机通过对大量心电样本数据进行学习,从中提取特征并构建模型,再利用模型对新的数据进行预测分类,从而实现自动检测。随着动态监护技术和临床科研的深入,如何对海量的心电数据信息进行有效的管理和分析成为一个难题。AI-ECG科研人员在准备原始训练测试数据时需要手动对心拍片段或心电信号片段进行分割,提取特征,耗费了大量的时间和精力。目前市面上的心电监测软件平台大多注重于心电信号的采集、显示与存储,极少有服务于AI-ECG科研人员前期科研数据准备工作的功能[3]。
为此笔者设计了一款面向AI-ECG算法研究的软件平台。平台不仅可以实现对受试者数据信息的查询和导出,还可以直接完成多种格式心电数据的读入,P波、QRS波群、T波的检测,对特征标记点的手动修改,心拍片段、心电信号片段的分割,以及RR特征的自动提取,解决了受试者数据信息过多查询困难以及AI-ECG科研人员需要手动分割信号提取特征的问题。平台可为后续进行机器学习分类算法的研究提供便利,极大地减轻科研人员的负担。整个软件平台集数据信息管理、显示以及处理分析于一体,界面清晰,操作简单,具有很好的实际应用价值。
整个软件平台从稳定性和科研便利性考虑,选择Matlab R2019b作为开发工具,MySQL作为后台数据库管理平台,设计了数据管理,数据读入和数据处理分析三个模块,其结构框架,如图1所示。
图1 系统总体结构框架Fig.1 System overall structure block diagram
数据管理模块可以直接查询、设置和导出受试者的数据信息。数据读入模块主要是选择读取心电信号的格式,设置相关参数,再将心电波形显示在主界面中。数据处理分析模块是对读取的心电数据进行预处理、心拍分割、心电信号片段分割和特征提取,并对预处理结果(标注结果)进行存储。
由于在日常的科研工作中会产生大量的数据,为了更好地管理心电数据以及受试者的信息,系统设计了数据管理模块,可以实现对受试者信息的查询、添加、修改及导出等功能。整个数据管理模块的结构,如图2所示。
图2 数据管理模块结构Fig.2 Data management module block
由于所有的受试者信息与文件路径都存储在MySQL数据库中,为了能够实现对受试者数据信息的访问,首先需要将Matlab与MySQL数据库相连接。打开Matlab中Database Explorer工具箱,选择Configure for JDBC data source,再输入数据库名称以及jar包,点击Test进行测试,当测试成功时,Matlab就与MySQL完成连接。
数据管理界面一共有三个可编辑文本框,分别对应“搜索类型”“搜索内容”和“显示目录”,通过在前两栏中输入筛选条件,如性别、年龄、身高和诊断结果等,点击“搜索”,系统就会执行“SELECT * FROM WHERE”语句进行查询,将所有符合条件的受试者信息返回至Matlab并在界面中显示。用户也可以根据需要在第三栏中输入想要显示的目录,则最终搜索的结果只包含这些目录下的信息。
除了对受试者信息进行查询之外,本系统还可以对这些数据信息进行增添、修改、删除和还原等操作,如在新增受试者信息时,界面会弹出inputdlg输入框,填写完成后点击“确定”,系统就会自动执行INSERT INTO语句将信息保存至数据库。根据需要,界面还设计了导出功能,用户在点击“导出”时,系统会使用copyfile函数将受试者的数据导出至指定文件夹。数据信息管理界面,如图3所示。
图3 数据信息管理界面Fig.3 Data management interface
整个数据管理界面操作简单,功能布局清晰,方便用户对海量受试者数据信息的查询导出和进一步分析。
数据读入模块用于读取多种不同格式的心电数据,保证信号能在主界面上正常显示。数据读入模块包含ECG参数设置和心电波形显示两个部分,其具体流程,如图4所示。
图4 数据读入模块流程Fig.4 Data receiving module block
(1)ECG参数设置
当用户对选中的受试者点击查看时,系统会根据文件路径,找到该受试者的心电数据文件,但在读取心电数据之前首先需要对ECG的一些必要参数进行设置。整个ECG设置包括了数据格式设置,导联设置和基本参数设置。相比于其他软件平台只能读取单一数据格式的信号,本软件平台可以读取文本格式(.txt)、Matlab数据文件格式(.mat)、MIT-BIH数据库数据格式以及来自其他设备(如Neuroscan多道电生理记录仪的采集数据格式)等多种不同格式的心电信号[4]。因此在格式设置中用户需要根据读入的心电信号设置对应的格式。同时本系统还可以读取单导联、2导联、12导联甚至128导联的心电信号,这就同样要求用户在导联设置中设置对应的导联数。基本参数设置中主要完成采样率和最大幅值等参数的设置。
(2)心电波形显示
当完成ECG设置之后,系统会根据格式来选择对应的方法读取心电数据,生成一个数据矩阵。由于本系统采用按行读入的方式,因此使用Matlab的mapminmax函数对每一行数据进行归一化处理,最后使用plot函数将心电波形在主界面上绘制出来。用户在主界面中可以设置显示的时间窗长,默认窗长为30 s,通过移动滑动条可观察不同时间段的波形。当数据量过大,尤其是绘制长程心电波形时,为避免显示出现延迟和卡顿,在生成数据矩阵之后系统会根据时间窗来截取对应时间的心电数据进行绘制显示,之后每次移动滑动条系统都会自动清屏,并重复之前的步骤,从而保证整个界面显示流畅。
整个系统主界面,如图5所示,界面直观,波形清晰,用户可以自由查看各路心电信号。
图5 软件系统主界面Fig.5 Main interface of software system
为了更好地服务于AI-ECG算法的研究,减少科研人员前期数据预处理以及获取原始训练测试数据的工作量,本软件平台设计了数据处理分析模块。作为本平台设计的核心,数据处理分析模块将实现对心电信号的预处理和数据分析,如QRS波群检测和RR特征自动提取等,最后将处理结果(标注结果)存储在受试者对应的文件夹中。整个数据处理分析模块主要包含数据预处理、数据分析和数据存储三个部分。
2.3.1 数据预处理
由于心电信号是一种微弱信号,在采集的过程中极易受环境的影响而产生噪声,如基线漂移、肌电干扰和工频干扰等,因此在数据分析之前首先要进行预处理[5]。对于基线漂移,本系统采用中值滤波器进行滤除,而对肌电干扰和工频干扰则采用小波变换的方法滤除[6]。经过预处理之后的波形已较为光滑,可进行后续的检测分析。
2.3.2 数据分析
数据分析功能主要是完成P波、QRS群波、T波的检测,心拍、心电信号片段分割以及特征信息的提取。本模块的另一个特点是增加了手动标注的功能,即在算法检测或者注释文件标注出现错误时,用户可以手动新增、修改和删除标记点,操作便捷,提高了临床诊断以及AI-ECG算法研究的准确率。
(1)特征点检测
在完成预处理,心电信号相对光滑之后,用户点击任一通道就进入了信号分析界面。心电信号基本上包含了P波、QRS波群、T波以及一个小U波,而对R波的检测是提取心电信号特征,并进行人工智能分类算法研究的基础。由于Pan-Tompkins QRS检测算法在AI-ECG研究中有着广泛的应用,因此本系统内置了该检测算法,可以很快很准确地检测到R波的位置,同时在信号分析界面上显示心率并绘制庞加莱散点图和直方图,用户可以直观地查看受试者的健康状况[7-8]。
除此之外,P波与T波的检测在临床诊断和机器学习算法研究中也有着重要的作用,所以本系统还设计了P波、T波检测算法,主要采用将QRS波群置零的方法,即在检测到R波之后,先将QRS波群全部置零,再在相邻的两个置零区域之间检测峰值,通过设置阈值对检测到的峰值进行筛选,找出P波和T波进行记录并在界面上标注[9]。当完成标注之后,用户在查看时可根据实际情况对标注点进行手动校正。数据处理分析界面,如图6所示。
图6 数据分析界面Fig.6 Data analysis interface
(2)心拍分割
心拍分割功能用于对心电数据中各种类型的心拍片段进行自动分割并一一归类,主要服务于心拍分类算法的研究,解决了AI-ECG科研人员手动分割归类心拍片段的问题。
系统在读取心拍注释文件时会将所有类型的心拍与对应采样点存放在元胞之中,并在界面中标注。用户也可以通过“人工标注”面板对心拍进行手动标注、修改和删除等操作。在进行心拍分割的时候,用户可以自定义选择R波前后的时间进行分割,由于一个完整的心动周期大概在0.6~0.8 s之间,因此系统默认对R波前面0.35 s,后面0.4 s,共0.75 s的心拍长度进行分割[10]。最后对分割完成的所有心拍进行筛选,将同一类型的心拍片段存放在一起以便进行后续的存储。
(3)信号片段分割与特征提取
该功能用于对各种心律类型的信号片段进行分割,并自动提取RR特征,主要服务于房颤自动检测算法研究及心率变异性分析[11-12]。
系统将读取的心律信息标注在界面中,然后根据心律类型对心电信号片段进行归类,相同心律类型的信号片段会存放在同一个元胞之中。为了研究的需要,系统会对各类型的心律片段进行细化分割,默认分割长度为5 min,用户也可以自定义输入分割长度。在分割的过程中如果片段长度小于设置分割长度,则该段信号会被自动舍弃从而确保最终分割完的心电片段长度一致。
在完成心电信号分割之后,系统就开始自动提取一些RR特征,其中主要包括了时域特征、频域特征和非线性特征,如表1所示[13]。
2.3.3 数据存储
当数据处理完毕之后,需要对其进行整理保存。因此本模块设计了数据存储功能,实现对心电数据及表1中特征信息的自动保存。系统在存储时会使用xlswrite函数将心拍心律片段等数据保存成Excel表格形式,并进行自动命名,如:王华窦率-RR特征.xlsx,所有的数据都会默认存储到受试者的文件夹下,用户也可以手动选择存储至其他文件夹中。
表1 特征参数Tab.1 Characteristic parameters
整个存储功能操作简单,命名清晰,便于用户查看。不仅如此,所存储的数据文件可直接用于AI-ECG分类算法研究,如各类心拍片段可用于训练与测试心拍分类算法,各类心律片段及RR特征可用于房颤自动检测算法研究及心率变异性分析,为受试者诊断提供了便利。
本软件平台包含了心电数据管理、显示、处理、分析和存储等功能,在完成对软件平台的开发之后,为了验证其性能,需要对主要功能模块进行测试。软件平台的测试主要包括数据管理和数据处理分析两个部分。
在数据管理测试中,当软件成功连接MySQL数据库,打开数据管理界面,按照不同顺序对待测样本数据进行查询、增添、删除、修改、还原和导出等操作,反复进行50轮。最终系统成功进行49次,报错一次,整体运行准确率较高。
在数据处理分析测试中,为了验证R波检测的准确率,本系统分别对5段时长1 h的心电信号进行R波检测,并与实际R波位置进行比较,最后得到的检测准确率较高,如表2所示。
表2 R波检测准确率Tab.2 R wave detection accuracy
在心拍分割方面,为了验证不同类型心拍片段分割归类的准确率,本系统分别对5段时长1 h并包含多种心拍类型的心电信号进行分割归类。最终系统实现对5段信号共24 635个心拍的100%完全准确分割归类,每段信号的分割时长为(0.6±0.2)s。
在特征提取方面,系统分别对5例健康受试者和5例心律失常患者的RR特征进行计算分析,结果如表3所示。心律失常患者的HRV指数相比健康人偏低。最终提取的结果可供医护人员与AI-ECG科研人员参考并直接调用研究。
表3 两组受试者心电图部分特征提取结果Tab.3 Partial feature extraction results of two groups of subjects
本研究主要以Matlab作为开发工具,设计了一款面向AI-ECG算法研究的软件平台。软件平台能够对大量受试者信息进行查询与设置,并对心电数据进行导出,做到了有效的管理。同时软件平台提取的QRS波群、各种心拍片段、心电信号片段和RR特征信息可直接用于多种算法研究的数据训练和测试,如心拍分类算法、房颤自动检测算法和心率变异性的研究,减少了AI-ECG科研人员前期准备训练测试数据集的工作量,为AI-ECG分类算法的研究提供了便利。不仅如此,多种格式心电数据读取以及人工修改标注功能的实现增加了软件的临床应用价值。经验证测试,本系统能够进行数据管理,心电信号显示、处理、分析和存储等操作,实现了预期的功能。
整个软件平台集数据管理、显示和处理分析于一体,层次分明,并且软件平台界面直观,操作简单,具有很好的稳定性和实用性。在下一步工作中会根据需要加入人工智能检测算法,进一步完善软件平台功能,更好地服务于AI算法研究和临床应用研究。