王 琪,徐 駿,鄭 烇
(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)
?
基于Android的麻醉深度檢測儀設(shè)計與實現(xiàn)
王 琪,徐 駿,鄭 烇
(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)
麻醉深度監(jiān)測在手術(shù)室和重癥監(jiān)護病房起著非常重要的作用。為了方便醫(yī)護人員在手術(shù)或重癥監(jiān)護過程中對患者的意識狀態(tài)進行準(zhǔn)確的評估,設(shè)計了一種簡易的基于Android的麻醉深度檢測系統(tǒng)。該系統(tǒng)主要包含三個部分:對前端采集的EEG信號進行放大濾波;對采集到的信號進行排列熵算法處理;Android人機接口界面的設(shè)計。在完成整體方案設(shè)計后,對整個系統(tǒng)進行了測試,并利用麻省理工學(xué)院的生理信號數(shù)據(jù)庫的多導(dǎo)睡眠EEG數(shù)據(jù)進行測試,實驗結(jié)果說明該系統(tǒng)能夠反映病人的腦電意識狀態(tài)。
腦電信號;麻醉深度;排列熵;Android
適當(dāng)?shù)穆樽砩疃仁潜WC患者生命安全、創(chuàng)造良好手術(shù)條件的關(guān)鍵因素之一[1]。如何有效、準(zhǔn)確地檢測病患的腦電意識狀態(tài),使患者可以在沒有痛苦的環(huá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è)備基本都是國外進口,價格昂貴且實行技術(shù)保密,國內(nèi)的產(chǎn)品在精度和可靠性上始終難以達到國外同類產(chǎn)品標(biāo)準(zhǔn)。
本文以熵為最終顯示指標(biāo),通過前端電路設(shè)計、算法處理、界面顯示三部分,設(shè)計了一整套軟硬件結(jié)合的麻醉深度檢測系統(tǒng)。
整個系統(tǒng)工作流程如下:3個前端電極分別貼在病人的前額中間、左邊和左側(cè)乳突部位,一路接地作參考電極,其他兩路做差分輸入。差分輸入信號經(jīng)過多級放大、濾波得到1~100 Hz波段可檢測的信號,再經(jīng)過STM32單片機的AD采集,把數(shù)據(jù)經(jīng)過串口或藍牙發(fā)送給上端Android接口,通過排列熵算法處理后,最終Android的APP實時顯示當(dāng)前EEG、熵趨勢、熵值的變換情況。其系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
整個系統(tǒng)的實現(xiàn)包含前端采集模塊設(shè)計和后端數(shù)據(jù)處理軟件設(shè)計。前端采用STM32單片機為采集核心,后端是由S5PV210為核心的Android系統(tǒng)。
2.1 硬件設(shè)計
2.1.1 前置放大器
由于人類的腦電信號非常微弱,在μV級別,而且此處所關(guān)心的頻段是1~100 Hz。要想得到理想的EEG信號,首先要克服大量噪聲干擾,所以要求該前置電路具有高輸入阻抗、高共模抑制比、噪聲干擾低等特點[4]。本文采用的儀表放大器結(jié)構(gòu)如圖2所示。
2.1.2 其他放大器
其他兩級放大器比較簡單,其中多了一個切換放大倍數(shù)的控制端,如圖3所示。
圖3 放大器
2.1.3 過壓報警電路
由于人體是良好的導(dǎo)體,會隨機產(chǎn)生比較高的電壓,對后面的采集數(shù)據(jù)產(chǎn)生干擾。因此不僅要防止過壓的情況,同時也要檢測出過壓的線路及時調(diào)整,電路如圖4所示。
圖4 過壓報警電路
2.1.4 AD采集電路
本文采用STM32為AD采集芯片,它擁有3個12位逐次逼近型的ADC,最大轉(zhuǎn)換速率為1 MHz,完全滿足采樣需求[5],部分電路如圖5所示。
圖5 AD采集電路
2.2 軟件設(shè)計
2.2.1 算法設(shè)計
Christoph Bandt等人提出了一種衡量一維時間序列復(fù)雜度的指數(shù)——排列熵(Permutation Entropy,PE)[6],它在反映一維時間序列復(fù)雜度的性能方面與LyaPulloy指數(shù)相似,并且與LyaPulloy指數(shù)、分形維數(shù)等復(fù)雜度參數(shù)相比具有計算簡單、抗噪聲干擾能力強等特點[7]。其基本過程如圖6所示。
圖6 排列熵算法流程
算法的基本原理如下:
如果對一個原始信號進行離散采集得到數(shù)據(jù)序列,將其分成長度相等的子信號段。把其中的任何一子信號段定義為{x(i),i= 1,2,3,…N},N為數(shù)據(jù)的長度。按照下面的方法計算這個子信號段的排列熵:
(1)把序列按照順序進行m維相空間重構(gòu),其中m為嵌入的維數(shù),L為遲滯時間:
Xi=[x(i),x(i+L),…,x(i+(m-1)L)],i= 1,2,…,N-m+1
(1)
(2)對重構(gòu)后序列(式(1))中的元素按照遞增順序進行排列:
Xi=[x(i+(j1-1)L)≤x(i+(j2-1)L)≤…≤x(i+(jm-1)L)]
(2)
其中,當(dāng)遇到兩個元素相等時,即當(dāng)x(i+(ji1-1)L)=x(i+(ji2-1)L)時,有:
Xi=[x(i),x(i+L),…,x(i+(m-1)L)],i=1,2,…,N-m+1
(3)
那么x就按照j的大小來排序,即當(dāng)ji1 故任意一個向量Xi重構(gòu)后得到一組符號序列: F(g)=[j1,j2,j3,…,jm], 1≤g≤N-m+1 (4) (3)對于m維相空間,總共有m!種不同的排列,也就是說有m! 種不同的符號,F(g)只是其中的一種排列。把所有排列順序相同的F(g)分到一組,在N-m+1 組序列中比較得出它的概率Pk, 每組序列的個數(shù)分別為NUM1, NUM2,NUM3,…, NUMk,其中,j≤m!。 (5) (4)按照Shannon熵的形式,計算排列熵: (6) Hp反映時間序列的隨機程度。Hp值越小,時間序列越規(guī)律,換句話說就是Hp越小麻醉程度越深。為了使算法具有統(tǒng)計學(xué)的意義,N的大小要合適,一般N取1 000~10 000;m取3~15。為了保證仿真盡可能地減小誤差,遲滯時間L一般取1或2。 2.2.2 算法JNI設(shè)計 由于本文算法要在Android平臺下實現(xiàn),而其APP開發(fā)是以Java為基礎(chǔ)。Java語言很容易被反匯編后拿到源代碼文件,為了保證核心參數(shù)不被竊取,可以在重要的交互功能使用C代碼代替[8],而且C比起Java來說效率要高出很多。 排列熵的算法實現(xiàn)是通過調(diào)用 JNI[9]函數(shù)來訪問底層C代碼。JNI 函數(shù)是通過接口指針來獲得。接口的指針指向JNI函數(shù)指針數(shù)組,而且指針數(shù)組中的每個元素又指向一個定義好的接口函數(shù)。圖7說明了接口指針的組織結(jié)構(gòu)。 圖7 JNI接口結(jié)構(gòu) 本文自定義的算法接口函數(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所示。 圖8 JNI實現(xiàn)流程 最后生成一個PermuationEntropyJni.so文件,在程序開始時用System.1oadLibrary()方法加載需要的動態(tài)鏈接庫。 2.2.3 顯示界面設(shè)計 為了有一個良好的人機接口,本文采用安卓圖表引擎AChartEngine進行設(shè)計。AChartEngine是專為Android系統(tǒng)設(shè)計的圖形庫,可以用于繪制多種圖表。 本文要設(shè)計兩個圖表和一個數(shù)值顯示窗口,圖表窗口采用AChartEngine 設(shè)計,數(shù)值采用TextView控件顯示。每個圖表都需要一個數(shù)據(jù)集(Dataset)和渲染器集合 (Renderer)。結(jié)構(gòu)如圖9所示。 圖9 AChartEngine設(shè)計類 其中AChartEngine 相關(guān)類說明如下 : 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(當(dāng)然要經(jīng)過一些處理,比如非法值檢測,保留固定位小數(shù)等)。 分別通過MATLAB仿真和實際數(shù)據(jù)測試與已有結(jié)果對比來驗證本文提出的麻醉深度設(shè)計的有效性。其中對正弦信號、隨機信號、睡眠EEG信號三種信號分別做了MATLAB測試。正弦信號是幅度為100 mV,頻率為100 Hz的信號;隨機信號的最大值也為100 mV;真實的睡眠EEG數(shù)據(jù)采用麻省理工學(xué)院的生理信號數(shù)據(jù)庫(MIT-BIH)中實驗對象一天腦電的數(shù)據(jù)。具體實驗結(jié)果如表1所示。 表1 不同信號對比 其中EEG信號如圖10~11所示。 圖10 EEG信號 圖11 EEG熵 由實驗結(jié)果可以看出,當(dāng)加載正弦信號時,熵值穩(wěn)定在1.37左右,表明當(dāng)腦電信號越有規(guī)律時,熵值越小。當(dāng)加載隨機信號時,熵值穩(wěn)定在4.75左右,表明當(dāng)腦電信號越?jīng)]有規(guī)律時,熵值越大。圖10是加載了一個人從12:00開始24 h內(nèi)的腦電信號,表明當(dāng)人在覺醒時熵值始終在4.6左右,當(dāng)人逐漸進入睡眠狀態(tài)時,熵值明顯低于4.6,如圖11所示。 為了在實際產(chǎn)品中明確、及時地反映患者的覺醒狀態(tài),需要設(shè)計一個良好的人機交互界面。其包括EEG顯示窗口、熵值變化趨勢顯示窗口、熵值顯示窗口。本文的人機交互界面如圖12所示。 圖12 人機交互界面 人在覺醒和睡眠或麻醉狀態(tài)下的腦電信號是有明顯區(qū)別的,當(dāng)人越清醒,腦電信號越活躍,而且顯得雜亂無章;當(dāng)人在睡眠或麻醉狀態(tài)下,其腦電信號越是顯得有序。本文正是基于這種基本區(qū)別,采用排列熵算法對腦電信號進行分析處理,并對其進行仿真實驗,驗證了腦電信號的特性,進一步說明采用排序熵算法對患者進行麻醉監(jiān)測是可行的。 為了更好地監(jiān)測患者的麻醉狀態(tài),本文還要作進一步的研究,比如算法參數(shù)的自適應(yīng)選擇問題,因為不同階段的EEG數(shù)據(jù),參數(shù)選擇對最終結(jié)果有一定的影響;其次由于信號中存在較大隨機性,且受噪聲干擾,直接采用排序熵可能會影響檢測效果。未來可以采用遺傳算法等優(yōu)化算法對參數(shù)進行自適應(yīng)確定,采用小波降噪、神經(jīng)網(wǎng)絡(luò)等排除異常信號的干擾。 [1] MYLES P S. Prevention of awareness during anaesthesia[J]. Best Practical & Research Clinical Anaesthesiology, 2007, 21(3): 345-355. [2] 沈民奮,沈鳳麟,許崇濤,等. 不同狀態(tài)下的腦電信號的雙譜分析[J].生物物理學(xué)報, 1998, 14(1): 51-56. [3] 梁振虎. EEG熵算法及麻醉狀態(tài)監(jiān)測應(yīng)用研究[D]. 秦皇島:燕山大學(xué), 2012. [4] 陳丹, 文宇橋, 譚希,等. 基于排序熵算法的麻醉深度檢測系統(tǒng)設(shè)計[J]. 電子器件, 2015(2):429-435. [5] 鐘文華. 基于ARM的腦電信號采集系統(tǒng)[J]. 電子設(shè)計工程, 2008(2):13-15. [6] 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. [8] 李寧.Android 深度探索(HAL與驅(qū)動開發(fā))[M].北京:人民郵電出版社, 2013. [9] 任俊偉,林東岱.JNI技術(shù)實現(xiàn)跨平臺開發(fā)的研究[J].計算機應(yīng)用研究,2005,22(7):180-184. Design and implementation of anesthesia depth monitor based on Android Wang Qi,Xu Jun,Zheng Quan (School of Information Science and Technology, University of Science and Technology of China, Hefei 230026, China) Anesthesia depth monitoring plays an important role in the operating room and intensive care unit. In order to facilitate the medical staff to assess the patient's state of consciousness accurately during surgery ,the paper designed a simple anesthesia depth detection system based on Android. It mainly includes three parts: the front circuit of the EEG signal amplification and filter, permutation entropy algorithm processing, Android Human Machine Interface design. After the completion of the whole system simulation test and actual test from MIT physiological signal database, the system can reflect the state of consciousness of the patient accurately . EEG; depth of anesthesia; permutation entropy; Android R318;TP399 A 10.19358/j.issn.1674- 7720.2016.23.022 王琪,徐駿,鄭烇. 基于Android的麻醉深度檢測儀設(shè)計與實現(xiàn)[J].微型機與應(yīng)用,2016,35(23):76-79,82. 2016-07-12) 王琪(1990-),男,碩士,主要研究方向:嵌入式系統(tǒng)。 徐駿(1977-),男,講師,主要研究方向:嵌入式系統(tǒng)。 鄭烇(1970-),男,博士,副教授,主要研究方向:視頻質(zhì)量檢測。3 實驗測試
4 結(jié)論