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