李琳琳山東協和學院機電工程學院
?
基于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機實現心電信號的實時回放、波形檢索瀏覽以及截取保 存重要數據片段。
目前MIT-BIH數據庫數據可免費獲得,應用最為廣泛。該數據庫的數據是臨床中采集的模擬信號轉換后的數字信號。臨床信號選取的樣本很豐富, 基本涵蓋了各種心臟病人的信息。以MIT-BIH Ar rhythmia Database為例介紹數據格式。由48個記錄組成,每個記錄時間是30 分鐘,每個記錄由三個文件組成:頭文件(擴展名 為.hea),數據文件(擴展名為.dat),注釋文件(擴展 名為.atr),頭文件標示出與它相關聯的數據文件的名字及其屬性,以ASCII碼方式存儲;數據文件以二進制格式存儲心電信號原始數據;注釋文件記錄了心電診斷專家對信號分析的結果。其中包括心跳節律、信號質量等,格式一般有MIT和AHA兩種。
本文以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類提供了一個互斥鎖,一個線程鎖定互斥量,并且在它鎖定之后,其它線程就不能訪問鎖定的數據,必須等到解鎖后再訪問。 本系統在作為信號源將心電波形輸出到心電監護設備,或者輸出到心電算法仿真系統中時,需要實時監測心電波形,由此需要兩個線程分別來實現波形輸出和波形監測功能,并通過線程間通信實現輸出的波形和監測顯示的波形同步。
心電數據管理系統主要為心電監護設備提供信號輸入,將心電信號輸出到心電監護設備中用于算法仿真實驗,并同時對心電信號進行動畫回放顯示,系統可以截取保存一段數據用于針對性研究,可以對數據進行檢索查看。系統主要包括軟件平臺設計和PC機與硬件的連接輸出。根據各模塊問相互獨立、視圖數據相互分離的設計思想,將軟件劃分為以下幾個部分:數據服務層、連接傳輸層和人機交互層。
數據服務層為整個系統提供了數據操作的基礎支持,從心電數據文件中識讀心電數據,并調整格式,為其他模塊提供基礎數據,包括心電數據與硬件IO及人機視圖之間的交互等;連接傳輸層為外接的心電監護設備提供信號源輸出,通過D/A轉換將心電數據庫中的數字信號轉為臨床應用的模擬信號,應用與心電算法的仿真研究;人機交互層實現靜態的心電波形檢索,對波形進行整體瀏覽,實現特殊波形的截取和保存,同時實現動態波形的回放,實時監測輸出到心電監護設備中的波形狀態。系統人機界面包括文件、實時回放、波形檢索、 I/O輸出、幫助等菜單。
文件菜單用于管理心電數據,具有打開、關閉、另存為、打印等子菜單,通過文件菜單可以選擇心電數據文件,解析心電數據時遵循hea文件、dat文件、at r文件的順序,因此對打開的文件做擴展名的篩選,選擇對話框中只顯示hea文件,避免只選擇了dat或者atr文件造成數據解析錯誤。實時回放菜單具有:D/A回放、重新回放和回放暫停等子菜單。在心電信號輸出到心電監護設備時,可以通過實時回放來監測信號,與心電監護設備中的算法仿真結果進行比對校核。波形檢索菜單實現波形屏幕檢索、數據保存和幅度改變。當打開一個心電信號后,即可通過檢索菜單通過調用心電數據在屏幕中靜態繪制心電波形,可通過滑動條拖動顯示不同時間的數據。鼠標左鍵可取得數據的起點,右鍵取得數據的結束點,通過起始和結束時間點截取心電數據中的片段數據用于重點研究。I/O輸出菜單實現向D/A轉換板卡輸出心電數據,經過轉換后再輸出到心電監護設備中,下設開始傳送、暫停傳送和終止傳送等子菜單。
本文基于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.