王琪,,徐駿,鄭烇
?。ㄖ袊茖W(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,,安徽 合肥 230026)
摘要:麻醉深度監(jiān)測在手術(shù)室和重癥監(jiān)護(hù)病房起著非常重要的作用。為了方便醫(yī)護(hù)人員在手術(shù)或重癥監(jiān)護(hù)過程中對患者的意識狀態(tài)進(jìn)行準(zhǔn)確的評估,,設(shè)計(jì)了一種簡易的基于Android的麻醉深度檢測系統(tǒng),。該系統(tǒng)主要包含三個(gè)部分:對前端采集的EEG信號進(jìn)行放大濾波;對采集到的信號進(jìn)行排列熵算法處理,;Android人機(jī)接口界面的設(shè)計(jì),。在完成整體方案設(shè)計(jì)后,,對整個(gè)系統(tǒng)進(jìn)行了測試,并利用麻省理工學(xué)院的生理信號數(shù)據(jù)庫的多導(dǎo)睡眠EEG數(shù)據(jù)進(jìn)行測試,,實(shí)驗(yàn)結(jié)果說明該系統(tǒng)能夠反映病人的腦電意識狀態(tài),。
關(guān)鍵詞:腦電信號;麻醉深度,;排列熵,;Android
中圖分類號:R318;TP399文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.16747720.2016.23.022
引用格式:王琪,,徐駿,,鄭烇. 基于Android的麻醉深度檢測儀設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(23):76-79,,82.
0引言
適當(dāng)?shù)穆樽砩疃仁潜WC患者生命安全,、創(chuàng)造良好手術(shù)條件的關(guān)鍵因素之一[1]。如何有效,、準(zhǔn)確地檢測病患的腦電意識狀態(tài),,使患者可以在沒有痛苦的環(huán)境下進(jìn)行手術(shù),已經(jīng)成為各種臨床手術(shù)的基礎(chǔ),。目前生產(chǎn)的麻醉深度監(jiān)測儀主要是通過監(jiān)測腦電雙頻譜指數(shù)(BIS)[2],、腦狀態(tài)指數(shù)(CSI)、聽覺誘發(fā)電位(AEP),、熵(Entropy)[3]等指標(biāo)來監(jiān)測病人的意識狀態(tài),。而目前醫(yī)院使用的設(shè)備基本都是國外進(jìn)口,價(jià)格昂貴且實(shí)行技術(shù)保密,,國內(nèi)的產(chǎn)品在精度和可靠性上始終難以達(dá)到國外同類產(chǎn)品標(biāo)準(zhǔn),。
本文以熵為最終顯示指標(biāo),通過前端電路設(shè)計(jì),、算法處理,、界面顯示三部分,設(shè)計(jì)了一整套軟硬件結(jié)合的麻醉深度檢測系統(tǒng),。
1系統(tǒng)結(jié)構(gòu)
整個(gè)系統(tǒng)工作流程如下:3個(gè)前端電極分別貼在病人的前額中間,、左邊和左側(cè)乳突部位,一路接地作參考電極,,其他兩路做差分輸入,。差分輸入信號經(jīng)過多級放大、濾波得到1~100 Hz波段可檢測的信號,,再經(jīng)過STM32單片機(jī)的AD采集,,把數(shù)據(jù)經(jīng)過串口或藍(lán)牙發(fā)送給上端Android接口,通過排列熵算法處理后,最終Android的APP實(shí)時(shí)顯示當(dāng)前EEG,、熵趨勢,、熵值的變換情況。其系統(tǒng)結(jié)構(gòu)如圖1所示,。
2設(shè)計(jì)與實(shí)現(xiàn)
整個(gè)系統(tǒng)的實(shí)現(xiàn)包含前端采集模塊設(shè)計(jì)和后端數(shù)據(jù)處理軟件設(shè)計(jì),。前端采用STM32單片機(jī)為采集核心,后端是由S5PV210為核心的Android系統(tǒng),。
2.1硬件設(shè)計(jì)
2.1.1前置放大器
由于人類的腦電信號非常微弱,,在μV級別,而且此處所關(guān)心的頻段是1~100 Hz,。要想得到理想的EEG信號,,首先要克服大量噪聲干擾,所以要求該前置電路具有高輸入阻抗,、高共模抑制比,、噪聲干擾低等特點(diǎn)[4]。本文采用的儀表放大器結(jié)構(gòu)如圖2所示,。
2.1.2其他放大器
其他兩級放大器比較簡單,,其中多了一個(gè)切換放大倍數(shù)的控制端,如圖3所示,。
2.1.3過壓報(bào)警電路
由于人體是良好的導(dǎo)體,,會隨機(jī)產(chǎn)生比較高的電壓,對后面的采集數(shù)據(jù)產(chǎn)生干擾,。因此不僅要防止過壓的情況,,同時(shí)也要檢測出過壓的線路及時(shí)調(diào)整,電路如圖4所示,。
2.1.4AD采集電路
本文采用STM32為AD采集芯片,,它擁有3個(gè)12位逐次逼近型的ADC,,最大轉(zhuǎn)換速率為1 MHz,,完全滿足采樣需求[5],部分電路如圖5所示,。
2.2軟件設(shè)計(jì)
2.2.1算法設(shè)計(jì)
Christoph Bandt等人提出了一種衡量一維時(shí)間序列復(fù)雜度的指數(shù)——排列熵(Permutation Entropy,PE)[6],,它在反映一維時(shí)間序列復(fù)雜度的性能方面與LyaPulloy指數(shù)相似,并且與LyaPulloy指數(shù)、分形維數(shù)等復(fù)雜度參數(shù)相比具有計(jì)算簡單,、抗噪聲干擾能力強(qiáng)等特點(diǎn)[7],。其基本過程如圖6所示。
算法的基本原理如下:
如果對一個(gè)原始信號進(jìn)行離散采集得到數(shù)據(jù)序列,將其分成長度相等的子信號段,。把其中的任何一子信號段定義為{x(i),i = 1,2,3,…N},N為數(shù)據(jù)的長度,。按照下面的方法計(jì)算這個(gè)子信號段的排列熵:
(1)把序列按照順序進(jìn)行m維相空間重構(gòu),其中m為嵌入的維數(shù),L為遲滯時(shí)間:
(2)對重構(gòu)后序列(式(1))中的元素按照遞增順序進(jìn)行排列:
其中,當(dāng)遇到兩個(gè)元素相等時(shí),即當(dāng)x(i+(ji1 -1)L)=x(i+(ji2 -1) L)時(shí),有:
那么x 就按照j的大小來排序,即當(dāng)ji1< ji2時(shí),則x(i+( ji1 -L))≤x(i+(ji2-L))。
故任意一個(gè)向量Xi重構(gòu)后得到一組符號序列:
(3)對于m維相空間,,總共有m!種不同的排列,也就是說有m! 種不同的符號, F(g)只是其中的一種排列,。把所有排列順序相同的F(g)分到一組,在N-m+1 組序列中比較得出它的概率Pk, 每組序列的個(gè)數(shù)分別為NUM1, NUM2,NUM3,…, NUMk,其中,j≤m!,。
(4)按照Shannon熵的形式,,計(jì)算排列熵:
Hp反映時(shí)間序列的隨機(jī)程度。Hp值越小,時(shí)間序列越規(guī)律,,換句話說就是Hp越小麻醉程度越深,。為了使算法具有統(tǒng)計(jì)學(xué)的意義,N的大小要合適,一般N取1 000~10 000;m取3~15,。為了保證仿真盡可能地減小誤差,遲滯時(shí)間L一般取1或2,。
2.2.2算法JNI設(shè)計(jì)
由于本文算法要在Android平臺下實(shí)現(xiàn),而其APP開發(fā)是以Java為基礎(chǔ),。Java語言很容易被反匯編后拿到源代碼文件,,為了保證核心參數(shù)不被竊取,可以在重要的交互功能使用C代碼代替[8],而且C比起Java來說效率要高出很多,。
排列熵的算法實(shí)現(xiàn)是通過調(diào)用 JNI[9]函數(shù)來訪問底層C代碼,。JNI 函數(shù)是通過接口指針來獲得。接口的指針指向JNI函數(shù)指針數(shù)組,,而且指針數(shù)組中的每個(gè)元素又指向一個(gè)定義好的接口函數(shù),。圖7說明了接口指針的組織結(jié)構(gòu)。
本文自定義的算法接口函數(shù)如下:
private native double permutationEntropyJNI(int data[],int lenth,int per_len);
它的實(shí)現(xiàn)為:
JNIEXPORT jdouble JNICALL Java_com_wqeeg_MainActivity_permutationEntropyJNI(JNIEnv *env, jobject obj, jintArray intArray, jint lenth , jint per_len){…},;
其具體實(shí)現(xiàn)流程如圖8所示,。
最后生成一個(gè)PermuationEntropyJni.so文件,在程序開始時(shí)用System.1oadLibrary()方法加載需要的動態(tài)鏈接庫,。
2.2.3顯示界面設(shè)計(jì)
為了有一個(gè)良好的人機(jī)接口,,本文采用安卓圖表引擎AChartEngine進(jìn)行設(shè)計(jì)。AChartEngine是專為Android系統(tǒng)設(shè)計(jì)的圖形庫,,可以用于繪制多種圖表,。
本文要設(shè)計(jì)兩個(gè)圖表和一個(gè)數(shù)值顯示窗口,圖表窗口采用AChartEngine 設(shè)計(jì),,數(shù)值采用TextView控件顯示,。每個(gè)圖表都需要一個(gè)數(shù)據(jù)集(Dataset)和渲染器集合 (Renderer)。結(jié)構(gòu)如圖9所示,。
其中AChartEngine 相關(guān)類說明如下 :
ChartFactory : 圖表生成工廠類,傳入數(shù)據(jù)集和渲染器,生成 GraphicalView 或者GraphicalActivity,;
XYMultipleSeriesDataset :封裝圖表所需的數(shù)據(jù);
XYSeries : 屬于圖表數(shù)據(jù)集的一部分,每個(gè)都代表了一個(gè)數(shù)據(jù)集合,;
XYMultipleSeriesRenderer :圖表中多個(gè)曲線的渲染器,;
XYSeriesRenderer :圖表中可能會有多條曲線或柱狀圖等,,所有渲染器放在一起就是渲染器集合。
Android中使用TextView控件比較簡單:首先在XML布局,初始化時(shí)采用text = (TextView)findView ById(R.id.income_data)獲得text對象;最后用text.set Text(""+f1)方法顯示所需要的熵值f1(當(dāng)然要經(jīng)過一些處理,,比如非法值檢測,,保留固定位小數(shù)等)。
3實(shí)驗(yàn)測試
分別通過MATLAB仿真和實(shí)際數(shù)據(jù)測試與已有結(jié)果對比來驗(yàn)證本文提出的麻醉深度設(shè)計(jì)的有效性,。其中對正弦信號,、隨機(jī)信號、睡眠EEG信號三種信號分別做了MATLAB測試,。正弦信號是幅度為100 mV,,頻率為100 Hz的信號;隨機(jī)信號的最大值也為100 mV,;真實(shí)的睡眠EEG數(shù)據(jù)采用麻省理工學(xué)院的生理信號數(shù)據(jù)庫(MITBIH)中實(shí)驗(yàn)對象一天腦電的數(shù)據(jù),。具體實(shí)驗(yàn)結(jié)果如表1所示。
其中EEG信號如圖10~11所示,。
由實(shí)驗(yàn)結(jié)果可以看出,,當(dāng)加載正弦信號時(shí),熵值穩(wěn)定在1.37左右,,表明當(dāng)腦電信號越有規(guī)律時(shí),,熵值越小。當(dāng)加載隨機(jī)信號時(shí),,熵值穩(wěn)定在4.75左右,,表明當(dāng)腦電信號越?jīng)]有規(guī)律時(shí),熵值越大,。圖10是加載了一個(gè)人從12:00開始24 h內(nèi)的腦電信號,,表明當(dāng)人在覺醒時(shí)熵值始終在4.6左右,當(dāng)人逐漸進(jìn)入睡眠狀態(tài)時(shí),,熵值明顯低于4.6,,如圖11所示。
為了在實(shí)際產(chǎn)品中明確,、及時(shí)地反映患者的覺醒狀態(tài),,需要設(shè)計(jì)一個(gè)良好的人機(jī)交互界面。其包括EEG顯示窗口,、熵值變化趨勢顯示窗口,、熵值顯示窗口,。本文的人機(jī)交互界面如圖12所示,。
4結(jié)論
人在覺醒和睡眠或麻醉狀態(tài)下的腦電信號是有明顯區(qū)別的,當(dāng)人越清醒,,腦電信號越活躍,,而且顯得雜亂無章;當(dāng)人在睡眠或麻醉狀態(tài)下,其腦電信號越是顯得有序,。本文正是基于這種基本區(qū)別,,采用排列熵算法對腦電信號進(jìn)行分析處理,并對其進(jìn)行仿真實(shí)驗(yàn),,驗(yàn)證了腦電信號的特性,,進(jìn)一步說明采用排序熵算法對患者進(jìn)行麻醉監(jiān)測是可行的。
為了更好地監(jiān)測患者的麻醉狀態(tài),,本文還要作進(jìn)一步的研究,,比如算法參數(shù)的自適應(yīng)選擇問題,因?yàn)椴煌A段的EEG數(shù)據(jù),,參數(shù)選擇對最終結(jié)果有一定的影響,;其次由于信號中存在較大隨機(jī)性,且受噪聲干擾,,直接采用排序熵可能會影響檢測效果,。未來可以采用遺傳算法等優(yōu)化算法對參數(shù)進(jìn)行自適應(yīng)確定,采用小波降噪,、神經(jīng)網(wǎng)絡(luò)等排除異常信號的干擾,。
參考文獻(xiàn)
[1] MYLES P S. Prevention of awareness during anaesthesia[J]. Best Practical & Research Clinical Anaesthesiology, 2007, 21(3): 345-355.
?。?] 沈民奮,,沈鳳麟,許崇濤,,等. 不同狀態(tài)下的腦電信號的雙譜分析[J].生物物理學(xué)報(bào), 1998, 14(1): 51-56.
?。?] 梁振虎. EEG熵算法及麻醉狀態(tài)監(jiān)測應(yīng)用研究[D]. 秦皇島:燕山大學(xué), 2012.
[4] 陳丹, 文宇橋, 譚希,等. 基于排序熵算法的麻醉深度檢測系統(tǒng)設(shè)計(jì)[J]. 電子器件, 2015(2):429-435.
?。?] 鐘文華. 基于ARM的腦電信號采集系統(tǒng)[J]. 電子設(shè)計(jì)工程, 2008(2):13-15.
?。?] BANDT C,POMPE B.Pemutation entropy:a natural complexity measure for time series[J]. Phys. Rev. Lett.,2002,17(88):21-24.
[7] PINCUS S M, SINGER B H. Randomness and degree of irregularity[J]. Proceedings of the National Academy of Sciences,1996,93(5):2083-2088.
?。?] 李寧.Android 深度探索(HAL與驅(qū)動開發(fā))[M].北京:人民郵電出版社, 2013.
[9] 任俊偉,,林東岱.JNI技術(shù)實(shí)現(xiàn)跨平臺開發(fā)的研究[J].計(jì)算機(jī)應(yīng)用研究,2005,,22(7):180-184.