閔孝忠, 朱林立
(江蘇理工學(xué)院 信息中心,江蘇 常州 213001)
傳統(tǒng)心臟聽(tīng)診技術(shù)以人耳聽(tīng)音來(lái)進(jìn)行,該方式受限于人耳聽(tīng)力的靈敏度及醫(yī)生的經(jīng)驗(yàn)和主觀判斷,作用有限[1].由于心音的隨時(shí)變化導(dǎo)致傳統(tǒng)聽(tīng)診方法很難完成準(zhǔn)確聽(tīng)診,因此專家學(xué)者對(duì)此進(jìn)行了研究.文獻(xiàn)[2]采用MATLAB模擬對(duì)心音進(jìn)行了小波去噪,但由于沒(méi)有形成采樣仿真系統(tǒng),只是停留在實(shí)驗(yàn)階段;文獻(xiàn)[3]設(shè)計(jì)了獨(dú)立的心音聽(tīng)診系統(tǒng),該系統(tǒng)僅繪制采樣波形,無(wú)法動(dòng)態(tài)繪制頻譜和進(jìn)行回放;文獻(xiàn)[4]從硬件角度設(shè)計(jì)了聽(tīng)診器,實(shí)現(xiàn)信號(hào)采集和顯示,但沒(méi)有實(shí)現(xiàn)后續(xù)信號(hào)轉(zhuǎn)儲(chǔ)及信號(hào)繪制.目前聽(tīng)診采樣仿真系統(tǒng)有了一些開(kāi)發(fā)實(shí)現(xiàn)案例,但是并沒(méi)有很好地解決信號(hào)回放、動(dòng)態(tài)頻譜繪制和跨平臺(tái)等問(wèn)題,尤其是動(dòng)態(tài)頻譜繪制,這對(duì)診斷某一時(shí)刻異常有很重要的參考價(jià)值.
本文利用JavaEE平臺(tái)對(duì)聽(tīng)診采樣仿真系統(tǒng)進(jìn)行重新設(shè)計(jì)和實(shí)現(xiàn),具體方法為通過(guò)音頻接口將聽(tīng)診器接入PC,仿真系統(tǒng)對(duì)信息源進(jìn)行采樣,對(duì)信號(hào)進(jìn)行小波去噪預(yù)處理,提取信號(hào)繪制波形圖,通過(guò)快速傅立葉變換繪制頻譜,保存音頻數(shù)據(jù),通過(guò)可視化操作可隨時(shí)回放某一幀心音信號(hào)和繪制頻譜,基于Java的實(shí)現(xiàn)同時(shí)解決了跨平臺(tái)部署問(wèn)題.
在心音信號(hào)采集過(guò)程中,原始信號(hào)中會(huì)摻雜一些噪聲,因此對(duì)原始信號(hào)進(jìn)行必要的預(yù)處理非常重要,由于心肺音信號(hào)的不平穩(wěn)性,頻率較低,信號(hào)頻譜和噪聲頻譜往往是摻雜在一起,基于傅立葉變換的濾波方法不能在有效地在濾除噪聲的同時(shí),又保持心音的特性不變,本文采用小波去噪的方法實(shí)現(xiàn)數(shù)據(jù)預(yù)處理,小波去噪算法由多分辨率分析、小波閾值操作和多層小波重構(gòu)組成.小波去噪主要有模極大值法、相關(guān)性法、閾值收縮法等幾種,本文采用改進(jìn)的閾值收縮方法對(duì)心音信號(hào)進(jìn)行去噪處理,通過(guò)在仿真系統(tǒng)中微調(diào)閥值改善采樣仿真效果.
假設(shè)函數(shù)ψ(t)∈L2(R)滿足容許條件
(1)
(2)
其中a為尺度,*表示復(fù)共軛,通過(guò)公式(2)建立函數(shù)φ(t)的二尺度方程
(3)
由尺度函數(shù)φ(t)可以得到小波函數(shù)ψ(t)
(4)
式(3)和(4)中的濾波器系數(shù)g(n)和h(n)是由尺度函數(shù)φ(t)和小波函數(shù)ψ(t)決定的,與具體尺度無(wú)關(guān).
對(duì)于式(2)所示觀測(cè)數(shù)據(jù),Donoho提出兩個(gè)濾波前提條件[5]:
(5)
其中C1為常量,在小波域中真實(shí)信號(hào)的小波系數(shù)及其估計(jì)值有
(6)
成立,其中j為尺度,k為位置.
對(duì)于條件(2),理解為對(duì)下式求最小值
(7)
(8)
其中σ代表信號(hào)幅值標(biāo)準(zhǔn)差,當(dāng)小波為正交小波時(shí),γ=1.由式(8)得出:
(9)
本文采用的算法主要由以下4步組成:
步驟1:計(jì)算信號(hào)(含噪)的正交小波變換;
步驟2:對(duì)小波系數(shù)進(jìn)行非線性閥值處理;
在真實(shí)項(xiàng)目中,需要對(duì)噪聲進(jìn)行評(píng)估,由于噪聲的方差一般是未知的,可以利用小波系數(shù){wJ-1,k,k=1,2,...,2J-1}的絕對(duì)偏差來(lái)估計(jì)噪聲標(biāo)準(zhǔn)差:
(10)
其中,mid操作表示取中值,橫向符號(hào)表示取均值.
圖1 改進(jìn)閾值運(yùn)算流程
步驟4:經(jīng)由上述步驟計(jì)算后的閾值對(duì)小波系數(shù)進(jìn)行逆小波變換并重構(gòu),獲得處理后的信號(hào).
聽(tīng)診采樣仿真系統(tǒng)由小波去噪模塊、快速傅立葉變換頻譜繪制模塊和音頻記錄回放模塊組成,前端連接傳感器信號(hào)采集器,系統(tǒng)結(jié)構(gòu)如圖2所示.
圖2 系統(tǒng)結(jié)構(gòu)圖
作為系統(tǒng)輸入單元,信號(hào)采集傳感器只需滿足提供音頻接口即可接入仿真系統(tǒng),這樣極大擴(kuò)展了仿真系統(tǒng)的實(shí)用性.仿真系統(tǒng)通過(guò)Java Sound組件獲取原始音頻數(shù)據(jù)后形成wave格式數(shù)據(jù),wave格式數(shù)據(jù)中包含了心音信號(hào)和噪聲信號(hào),由于形成的心音wav文件的量化精度含8位、16位兩種規(guī)格,考慮到浮點(diǎn)數(shù)精度較此量化精度高,信號(hào)采集單元設(shè)計(jì)以采用Java語(yǔ)言float類型數(shù)據(jù)類型來(lái)存儲(chǔ)每一個(gè)數(shù)據(jù)點(diǎn).
傳感器和采樣系統(tǒng)對(duì)接后工作流程為:傳感器采集到數(shù)據(jù)通過(guò)PC音頻接口傳入采樣仿真系統(tǒng),系統(tǒng)調(diào)用AudioInputStream類接受音頻信號(hào)流,判斷wave采樣點(diǎn)是8 Bit還是16 Bit,解析出從MSB還是LSB取出音頻字節(jié)數(shù)據(jù),計(jì)算每像素的幀數(shù)framesPerPixel,然后解析出聲道numChannels,最后根據(jù)framesPerPixel和numChannels循環(huán)計(jì)算出采樣點(diǎn)的(x,y)坐標(biāo),把所有計(jì)算出的坐標(biāo)放入float數(shù)組中緩存,準(zhǔn)備進(jìn)入下一步小波去噪處理.
3.2.1 小波去噪子模塊
設(shè)置高校國(guó)有資產(chǎn)管理獎(jiǎng)勵(lì)制度,獎(jiǎng)勵(lì)在資產(chǎn)管理實(shí)務(wù)中作出突出貢獻(xiàn)的工作者,獎(jiǎng)勵(lì)提出資產(chǎn)管理合理化建議的人員。將員工的獎(jiǎng)金與經(jīng)營(yíng)性資產(chǎn)取得的效益相掛鉤,最大程度地發(fā)揮經(jīng)營(yíng)者的積極主動(dòng)性,盡可能地實(shí)現(xiàn)國(guó)有資產(chǎn)的保值增值。同時(shí),對(duì)造成國(guó)有資產(chǎn)損失者,則應(yīng)該按照有關(guān)規(guī)定,并依據(jù)當(dāng)事人的責(zé)任大小追究其責(zé)任,并要求進(jìn)行一定的賠償。對(duì)管理意識(shí)薄弱的主管人員,造成國(guó)有資產(chǎn)損失、流失等后果的,則應(yīng)給予嚴(yán)懲。
小波去噪子模塊采用MATLAB編程實(shí)現(xiàn),模塊中包含了BivaShrin方法、TrivaShrink方法、BayesShrink方法和LAWMLShrink方法的DT_CWT代碼,實(shí)現(xiàn)WaveLab802平臺(tái)VisuShrink等一系列方法,將這些方法導(dǎo)出形成jar包并集成進(jìn)JavaEE實(shí)現(xiàn)的采樣仿真系統(tǒng),提供給仿真系統(tǒng)調(diào)用,完成對(duì)信號(hào)的小波去噪預(yù)處理.小波去噪的基本處理流程如圖3所示.
心音主要成分的頻譜主要分布在10~400 Hz,因此本文在數(shù)據(jù)預(yù)處理時(shí)先將信號(hào)下采樣到2 000或2 205 Hz[6].因正交多分辨率分析是將整個(gè)信號(hào)的頻帶不斷以二進(jìn)方式劃分,所以初步將小波分解尺度定為7對(duì)心音主要成分進(jìn)行處理,該參數(shù)是可以調(diào)整的.如3.1節(jié)的描述中,傳感器采集到緩存中的信息為含噪信號(hào),用調(diào)整后參數(shù)調(diào)用MATLAB實(shí)現(xiàn)的jar包中的函數(shù)進(jìn)行去噪處理,去噪輸出后的數(shù)據(jù)為去噪信號(hào)數(shù)據(jù).
圖3 小波去噪流程圖
3.2.2 頻譜繪制子模塊
經(jīng)過(guò)3.2.1的處理后,采樣信息已在緩存中,用Java實(shí)現(xiàn)FFT類,F(xiàn)FT類封裝了信號(hào)從時(shí)域變化到頻域的一種算法,輸出值分為虛部foutimg和實(shí)部fout,foutimg和fout的平方和代表一個(gè)頻率的功率,通過(guò)調(diào)用FFT類中calculate函數(shù)后得到變換后的float類型數(shù)組數(shù)據(jù),該數(shù)組里面存放的是頻譜信息,然后通過(guò)Graphics2D讀取float數(shù)組繪制“頻率-幅值”直方圖.
為了避免在快速采集進(jìn)行波形繪制和頻譜動(dòng)態(tài)播放過(guò)程中產(chǎn)生閃爍,同時(shí)保證顯示的流暢,仿真系統(tǒng)采用了雙緩沖技術(shù),所有的繪制在后臺(tái)BufferedImage類中進(jìn)行,BufferedImage作為圖片后臺(tái)緩沖區(qū).
3.2.3 信號(hào)回放子模塊
心音信號(hào)經(jīng)過(guò)去噪模塊初步濾掉信號(hào)中混雜的工頻和其他一些干擾噪音(比如呼吸、傳感器摩擦等產(chǎn)生的噪音等),接著把心音信號(hào)放大到合適的幅度,開(kāi)啟獨(dú)立線程操作TargetDataLine類捕獲心音信號(hào)形成音頻文件,將結(jié)果直接存入數(shù)據(jù)庫(kù),以便進(jìn)行查詢,回放處理.
整個(gè)系統(tǒng)底層通過(guò)Java Sound組件直接調(diào)用使用底層音頻函數(shù),這樣系統(tǒng)可以不必運(yùn)行在單一的平臺(tái)上,讓系統(tǒng)獲得更好的移植性.
采樣仿真系統(tǒng)整體運(yùn)行界面如圖4(a)所示,左邊為病人信息和聽(tīng)診歷史記錄信息,右邊為采樣仿真詳細(xì)信息,主要包括采樣繪制區(qū)域、頻譜繪制區(qū)域.采樣繪制區(qū)域主要用來(lái)實(shí)時(shí)播放和回放采樣波形,頻譜繪制區(qū)域用來(lái)動(dòng)態(tài)繪制某一幀的“頻率-幅值”直方圖.本系統(tǒng)在Window7上測(cè)試,在真實(shí)的干擾環(huán)境選取對(duì)某一病人肺部進(jìn)行聽(tīng)診.
圖4 運(yùn)行界面
數(shù)據(jù)采樣過(guò)程持續(xù)了10.48秒,采樣后波形圖如圖4(b)所示,含有干擾信號(hào),實(shí)驗(yàn)預(yù)先選取小波分解尺度參數(shù)為7,經(jīng)過(guò)小波去噪后波形繪制界面如圖4(c)所示,從圖中可以看出,含有干擾的虛假峰信號(hào)被去除,通過(guò)多次迭代調(diào)整閥值參數(shù)后,去噪效果出現(xiàn)細(xì)微變化,但去噪效果依然明顯,處理過(guò)程中程序運(yùn)行的較快,可見(jiàn)改進(jìn)小波閾值收縮方法耗時(shí)不多.
這里截取快速傅立葉變換前后的一段幀前18個(gè)字節(jié)的采樣數(shù)據(jù),數(shù)據(jù)如表1和表2所示:
表1 采樣數(shù)據(jù)
表2 傅立葉變換后采樣數(shù)據(jù)
從表1和表2中可以看出經(jīng)過(guò)快速傅立葉變換后的數(shù)據(jù)從時(shí)域轉(zhuǎn)化為頻域,轉(zhuǎn)換后便可以進(jìn)行直方圖繪制.
圖5 頻譜直方圖
圖5(a)為某一個(gè)時(shí)間回放波形圖,圖5(b)為對(duì)應(yīng)的頻譜直方圖.調(diào)用快速傅立葉變換后用Graphics2D進(jìn)行繪制,采用雙緩沖進(jìn)行繪制,形成頻譜播放動(dòng)畫,整個(gè)回放過(guò)程非常流暢.
本文討論了在JavaEE平臺(tái)下聽(tīng)診采樣仿真系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),聽(tīng)診采樣傳感器通過(guò)音頻輸入接口采集wave原始數(shù)據(jù)到仿真系統(tǒng),仿真系統(tǒng)對(duì)原始數(shù)據(jù)進(jìn)行去噪處理,在去噪前需選擇給定的閥值參數(shù),通過(guò)改進(jìn)的閥值選擇算法得到可信閥值,將去噪后的數(shù)據(jù)調(diào)用Java Graphics2D繪制波形,調(diào)用快速傅立葉變換函數(shù)繪制頻譜圖.本系統(tǒng)已經(jīng)在真實(shí)環(huán)境中測(cè)試,在Windows7中運(yùn)行良好,在Linux下測(cè)試具有更好的性能,完全能滿足聽(tīng)診采樣及仿真的需求.
[1] 李才光,裴正憲,蔣洪波.基于nRF24L01的無(wú)線心音遙測(cè)系統(tǒng)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2013,40(8):59-62.
[2] LI Cai-guang,PEI Zheng-xian,JIANG Hong-bo.Design of wireless PCG monitor system based on nRF24L01[J].Computer Science, 2013,40(8):59-62.
[3] 陳遠(yuǎn)貴,羅保欽,曾慶寧.基于一種新的小波閾值函數(shù)的心音信號(hào)去噪[J].計(jì)算機(jī)仿真,2010,27(11):319-323.
[4] CHEN Yuan-gui,LUO Bao-qin,ZENG Qin-ning.Heart sound signal de-noising based on a new wavelet threshold function[J].Computer Simulation,2010,27(11):319-323.
[5] 廖慶豐,郭興明,張箭,等.便攜式多功能心音聽(tīng)診系統(tǒng)的研制[J].醫(yī)療衛(wèi)生裝備,2008,29(9):22-24.
[6] LIAO Qing-feng,GUO Xing-ming,ZHANG Jian etc.Development of portable multi-function heart-sound auscultating system[J].Chinese Medical Equipment Journal,2008,29(9):22-24.
[7] 李靜,李琪,張修太,等.基于WinCE的便攜式心音監(jiān)護(hù)系統(tǒng)設(shè)計(jì)[J].電子器件,2013,36(1):120-123.
[8] LI Jing,LI Qi,ZHANG Xiu-tai etc.The Design of heart sounds monitoring system based on WinCE[J].Chinese Journal of Electron Devices.2013,36(1):120-123.
[9] DONOHO D L.De-noising by soft-thresholding[J].IEEE Trans.Inform.Theory,1995,41(3):613-627.
[10]陳潔,候海良,羅良才等.基于雙門限的第一、第二心音自動(dòng)識(shí)別方法[J].計(jì)算機(jī)工程,2012,38(16):174-177.
[11]CHEN Jie,HOU Hai-liang,LUO Liang-cai etc.Automatic identification method for the first and second heart sound based on double-threshold[J].Computer Engineering,2012,38(16):174-177.