基于Qt设计心电信号管理系统

2016-09-02 09:37李琳琳山东协和学院机电工程学院
数码世界 2016年7期
关键词:心电监护电信号心电

李琳琳山东协和学院机电工程学院



基于Qt设计心电信号管理系统

李琳琳
山东协和学院机电工程学院

针对目前心电信号研究缺少临床试验数据的情况,本文提出了使用国际公认的可作为标准的心电数据库作为心电算法的输入,并为心电监护类系统和便携式心电监护仪等提供测试信号源。本文采用跨平台的C++应用程序开发框架Qt来实现系统,本系统不仅应用于PC机,还可应用于便携式心电监护仪,识读的心电信号经过D/A转换,模拟实际临床采集到的信号,提供给心电监护系统进行仿真实验。

Qt双缓冲技术 D/A转换 MIT-BIH 多线程 跨平台

近年来心脏疾病已成为威胁人类生命安全的头号疾病。由于其无先兆、发展迅速、危险性高,对患者的危害极大,因此心脏病的预防和诊断已成为目前国内外医学界的重要课题。近年来随着室速/室颤的识别、LOWNS分类、HRV、QT、QTd、TWA等 理论检测算法的完善,为心电监护系统的研制打下了基础。由于研制心电检测仪需要心电样本信号,而临床的实验数据很难采集,所以在理论研究阶段, 一般采用国际公认的标准心电数据库作为样本信号。目前标准的心电数据库主要有美国麻省理工学院提供的MIT-BIH数据库,美国心脏学会的AHA数据库以及欧洲心电数据库。本文采用Qt设计语言,实现心电信号管理系统,读取MIT-BIH数据库中的心电信号,经过D/A转换,可直接输出到心电监护设备中,用于心电检测算法的验证。同时可在上PC机实现心电信号的实时回放、波形检索浏览以及截取保 存重要数据片段。

1 心电数据格式

目前MIT-BIH数据库数据可免费获得,应用最为广泛。该数据库的数据是临床中采集的模拟信号转换后的数字信号。临床信号选取的样本很丰富, 基本涵盖了各种心脏病人的信息。以MIT-BIH Ar rhythmia Database为例介绍数据格式。由48个记录组成,每个记录时间是30 分钟,每个记录由三个文件组成:头文件(扩展名 为.hea),数据文件(扩展名为.dat),注释文件(扩展 名为.atr),头文件标示出与它相关联的数据文件的名字及其属性,以ASCII码方式存储;数据文件以二进制格式存储心电信号原始数据;注释文件记录了心电诊断专家对信号分析的结果。其中包括心跳节律、信号质量等,格式一般有MIT和AHA两种。

2 基于Qt的关键技术实现

本文以C++为软件编程语言,采用Qt为基础类库,实现软件的设计。Qt是一种跨平台C++图形用 户界面程序开发框架,也可用于开发非GUI程序, 比如控制台工具和服务器。Qt具有良好的跨平台特性,支持所有的UNIX系统,和windows平台,在嵌入式移动设备中应用也比较广泛。Qt是一种面向对象的语言,具有良好的封装机制,具有丰富的 API,如Qt提供的图形视图框架、模型视图框架、动画框架等。本文设计的心电管理系统具有很好的扩展性,不仅可以应用与PC机中用于心电算法仿真的信号管理、查询和输入等,还可以移植到l inux系 统应用与便携式心电监护仪,为心电监护设备提供信号源。

2.1Qt的MVC框架

MVC全称是Model View Cont rol ler,是模型 (model)-视图(view)-控制器(controler)的简称,是一种将业务逻辑和数据显示分离的方法。针对Qt 有类似MVC模型的modelview架构,其中model是 MVC中的model,view是MVC中的view,而MVC中的 controler在Qt中抽象出delegate来代替,delegate被用 来提供对item渲染和编辑的控制。

在本文中绘制心电波形需要使用QGraphicsView、QGraphicsScene和QGraphics Item等类来实现,提供一种类似于Qt model-view的编程。多个views可以监视同一个Scene,而场景包含多个具有多种几何外形的i tems。QGraphicsScene表示QGraphicsView中的场景,为管理大量的2D图形item提供了一个管理界面,作为items的容器,它配合使用QGraphicsView 使用来观察i tems。具有如下的功能:为管理大量的 items提供一个快速的接口;传播事件到每个item;管理i tem的状态。通过调用add Item函数来将 Items加入到场景中。可以使用众多的查找函数来获取特定的items。所有的item查找函数都以出栈序列返回。QGraphicsView提供了视图部件,它可视化场景中的内容。可以连接多个视图到同一个场景,对这个相同的场景数据提供几个视口。视口部件是一个滚动区域,它提供了滚动条以对大场景进行浏览。如果使用OpenGL,可以调用QGraphics View::setViewpor t()来把一个QGLWidget设为视口。 视图从键盘,鼠标接收输入事件,在发送这些事件到场景之前,会对这些事件进行适当的翻译(把事件坐标转换成对应的场景坐标)。QGraphics Item 是场景中图形items的基类。QGraphicsView提供了一些标准的、用于典型形状的i tems。像矩形(QGraphics Rect Item),椭圆(QGraphicsEl lipseItem),文本 (QGraphicsText Item)等,本文绘制的心电波形图主 要是自定义的曲线。

2.2双缓冲技术绘制心电波形

双缓冲技术是GUI编程中常用的技术。所谓的双缓冲就是把需要绘制的控件保存到一个图像中, 然后在把图像拷贝到需要绘制的控件上。从Qt4版本开始,所有的窗口部件默认都使用双缓冲进行绘图。使用双缓冲,QWidget能够自动处理闪烁[6,7]。首先要想把闪烁减弱,需要setBackgroundMode(NoBackground);设置widget的背景模式为NoBackground. 其次重载widget的paint Event()函数,如下:void MyWidget::paintEvent(QPaintEvent *e) {QPainter painter(&pixmap);

QPainter painterWidget(this);

//......//Drawing

painterWidget.drawPixmap(QPoint(0,0), pixmap);}

本系统在心电波形实时回放模块中应用了Qt的双缓冲技术,实现了无闪烁的波形回放,可以实时查看波形的动画情况。

2.3多线程技术

作为基于C++的跨平台GUI系统,Qt提供了丰富的多线程编程支持。主要从三个方面对多线程编程提供支持:

一、构造了一些基本的与平台无关的线程类;

二、提交用户自定义事件的Thread-safe方式;

三、多种线程间同步机制,如信号量,互斥锁。Qt中最重要的线程类是QThread,要开始一个新的线程,需要重新实现QThread::run(),如果两个线程同时希望访问同一个数据时,对数据进行保护是很必要的。QMutex类提供了一个互斥锁,一个线程锁定互斥量,并且在它锁定之后,其它线程就不能访问锁定的数据,必须等到解锁后再访问。 本系统在作为信号源将心电波形输出到心电监护设备,或者输出到心电算法仿真系统中时,需要实时监测心电波形,由此需要两个线程分别来实现波形输出和波形监测功能,并通过线程间通信实现输出的波形和监测显示的波形同步。

3 心电管理系统的实现

心电数据管理系统主要为心电监护设备提供信号输入,将心电信号输出到心电监护设备中用于算法仿真实验,并同时对心电信号进行动画回放显示,系统可以截取保存一段数据用于针对性研究,可以对数据进行检索查看。系统主要包括软件平台设计和PC机与硬件的连接输出。根据各模块问相互独立、视图数据相互分离的设计思想,将软件划分为以下几个部分:数据服务层、连接传输层和人机交互层。

数据服务层为整个系统提供了数据操作的基础支持,从心电数据文件中识读心电数据,并调整格式,为其他模块提供基础数据,包括心电数据与硬件IO及人机视图之间的交互等;连接传输层为外接的心电监护设备提供信号源输出,通过D/A转换将心电数据库中的数字信号转为临床应用的模拟信号,应用与心电算法的仿真研究;人机交互层实现静态的心电波形检索,对波形进行整体浏览,实现特殊波形的截取和保存,同时实现动态波形的回放,实时监测输出到心电监护设备中的波形状态。系统人机界面包括文件、实时回放、波形检索、 I/O输出、帮助等菜单。

文件菜单用于管理心电数据,具有打开、关闭、另存为、打印等子菜单,通过文件菜单可以选择心电数据文件,解析心电数据时遵循hea文件、dat文件、at r文件的顺序,因此对打开的文件做扩展名的筛选,选择对话框中只显示hea文件,避免只选择了dat或者atr文件造成数据解析错误。实时回放菜单具有:D/A回放、重新回放和回放暂停等子菜单。在心电信号输出到心电监护设备时,可以通过实时回放来监测信号,与心电监护设备中的算法仿真结果进行比对校核。波形检索菜单实现波形屏幕检索、数据保存和幅度改变。当打开一个心电信号后,即可通过检索菜单通过调用心电数据在屏幕中静态绘制心电波形,可通过滑动条拖动显示不同时间的数据。鼠标左键可取得数据的起点,右键取得数据的结束点,通过起始和结束时间点截取心电数据中的片段数据用于重点研究。I/O输出菜单实现向D/A转换板卡输出心电数据,经过转换后再输出到心电监护设备中,下设开始传送、暂停传送和终止传送等子菜单。

4 结论

本文基于Qt类库,实现跨平台的MIT-BIH心电数 据管理系统,实现了标准数据库文件的读取、检索、数据断面的截取保存。同时经过D/A转换后,心电数据作为信号源输出到心电监护设备,用于计算机仿真和心电算法的验证,弥补了临床实验数据不足的缺陷,在医学研究中将有广阔的应用前景。

[1]TheMIT-BIHAr rhythmiaDatabase.PhysioNet[Online]. Available:http://www.physi onet.or g/Physiobank/ database/mi tdb/

[2]TheMIT-BIHST ChangeDat abase.PhysioNet[Online]. Available:http://www.physi onet.or g/Physiobank/ database/stdb/

[3]TheMIT-BIHMa lignant Ventricu lar Arrhy thmiaDataba se.PhysioNet[Onl ine].Avai lable:http://phys ione tcps. unizares/physiobank/database/vfdb/

[4]宋喜国,邓亲恺.MIT-BIH心率失常数据库的识读及应用[J].中国医学物理学杂志,2004,21(4): 230-232.

[5]阴玺.心电远程监护系统的数据库系统设计与数据压缩算法研究[D].重庆大学,2007,5-6.

[6]蔡志明,李立夏.精通Qt4编程[M].北京:电子工业出版社,2008.

[7]贾仕俊,秦开宇,陈华伟,李志强.基于QT的数据图形化设计与分析[J].软件导刊2011(7).

[8]万长胜.用Qt进行面向对象软件的设计与开发[J].核电子学与探测技术,2004(3):311-313.

猜你喜欢
心电监护电信号心电
多参数心电监护仪日常故障分析与维护
基于联合聚类分析的单通道腹部心电信号的胎心率提取
心电向量图诊断高血压病左心室异常的临床应用
基于非接触式电极的心电监测系统
穿戴式心电:发展历程、核心技术与未来挑战
基于Code Composer Studio3.3完成对心电信号的去噪
更正启事
心电监护仪电压测量不确定度的评估
基于随机森林的航天器电信号多分类识别方法
基于Andriod平台的心电监护系统设计