文/吳涵 陳龍 陳子為 吳正正
人體健康體征監(jiān)測是當(dāng)前智能硬件的研發(fā)趨勢之一。傳統(tǒng)的心率檢測需要直接與被測者皮膚進(jìn)行接觸,對被測者束縛性較大,長時(shí)間測試易引起被測者的不舒適感,在這種情況下,研究非接觸式的體征監(jiān)測方法極具吸引力。人的心臟每跳動一次,會有很多的血液經(jīng)過你的面部。由于心跳引起的血液體積的變化使得人體皮膚對反射光顏色發(fā)生變化,并且反射光顏色變化的幅度與光源的強(qiáng)度成正比。血液在量上的增加會導(dǎo)致有更多的光被吸收,因而面部反射的光線也隨之減少。通過攝像頭捕捉到這些變化,并進(jìn)行一定的處理后,就能夠計(jì)算出心率值。
本心率測量系統(tǒng)由心率測量硬件裝置與手機(jī)APP組成。其中心率測量硬件裝置由OV7725攝像頭模塊、EGO1-FPGA開發(fā)板、藍(lán)牙模塊、OLED顯示模塊共同組成。其系統(tǒng)構(gòu)成框圖如圖1所示。在攝像頭采集模式下,由攝像頭模塊進(jìn)行實(shí)時(shí)的圖像信息采集,并將信息傳輸?shù)紽PGA進(jìn)行數(shù)據(jù)處理,其后將采集到的圖像數(shù)據(jù)以一幀為單位存放在FPGA片內(nèi)存儲器中,同時(shí)在FPGA中處理數(shù)據(jù),經(jīng)過心率檢測算法處理后提取有效心率信息,并通過手機(jī)APP及OLED模塊顯示當(dāng)前心率值。VGA顯示模塊僅用于系統(tǒng)調(diào)試使用,調(diào)試時(shí)可以將攝像頭捕捉到的實(shí)時(shí)圖像通過VGA接口傳輸給顯示器。
在基于視頻的心率(HR)測量方法中,具有紅色(R)、綠色(G)和藍(lán)色(B)成分的RGB顏色模型都在實(shí)驗(yàn)中嘗試。結(jié)果表明,與R和B信號相比,G信號對HR測量最有效。
因此我們采用G通道數(shù)據(jù)作為心率計(jì)算的數(shù)據(jù)來源,攝像頭采集32秒的數(shù)據(jù),做FFT變換,找到有效頻譜內(nèi)的幅值最高頻點(diǎn),隨后通過一個(gè)5秒的時(shí)域?yàn)V波(取5秒內(nèi)的中值),輸出結(jié)果。其中心率計(jì)算模塊又分為以下幾個(gè)子模塊:G值數(shù)據(jù)緩存模塊、FFT計(jì)算模塊、Z值計(jì)算模塊、Z值時(shí)域?yàn)V波模塊。算法流程如圖2所示。
根據(jù)G通道信號計(jì)算平均值,并將其保存在最近數(shù)據(jù)量中。由于G值數(shù)據(jù)采樣頻率較低,只有4Hz,而FFT工作時(shí)鐘需要盡可能高,所以為了數(shù)據(jù)的跨時(shí)鐘域處理,采用數(shù)據(jù)緩存模塊,一秒更新一次緩存里的數(shù)據(jù),并采用FIFO的思想,實(shí)現(xiàn)了數(shù)據(jù)窗口的滾動。
在觀察時(shí)間中,我們對G信號數(shù)據(jù)應(yīng)用快速傅立葉變換(FFT)。FFT變換采用VIVADO自帶的IP核,計(jì)算點(diǎn)數(shù)為128點(diǎn),工作時(shí)鐘100MHz。
然后將FFT的結(jié)果按照(1)式計(jì)算Z值:
其中X為頻譜幅值,m為X均值,σ為X的標(biāo)準(zhǔn)方差。
考慮到人的心率一般在40-120 BPM范圍內(nèi),我們將(1)式中X的頻帶范圍作了窗口截取,使得截取的頻率范圍在0.67Hz和2.0Hz之間。只將該頻率區(qū)間內(nèi)的傅立葉譜用于Z值計(jì)算。
找出每次計(jì)算得到的Z值數(shù)組中Z最高值的兩個(gè)譜峰所對應(yīng)的頻點(diǎn),然后按照如下規(guī)則確定最終的心率值:
(1)具有最大z值的頻譜(最高峰)和具有第二大z值的頻譜(次高峰)如相鄰,則我們使用這兩個(gè)峰值對應(yīng)的心率的中間值來計(jì)算心率。例如最高峰對應(yīng)60BPM,次高峰對應(yīng)63BPM,則取其間的中間值61BPM、62BPM。
(2)從中間值中再選擇靠近z值較大(最高峰)的一個(gè),例如對于中間值61 BPM和62 BPM,如果61BPM對應(yīng)的Z值更靠近最高峰,我們選擇61 BPM作為最終結(jié)果。
圖1:系統(tǒng)構(gòu)成框圖
圖2:算法流程圖
圖3:APP界面設(shè)計(jì)
圖4:“搜索藍(lán)牙”模塊設(shè)計(jì)
圖5:“連接藍(lán)牙”模塊設(shè)計(jì)
(3)如果兩個(gè)最突出的頻譜(最高峰與次高峰)不是彼此相鄰的,我們只使用具有最大Z值(最高峰)的單譜對應(yīng)的心率。
圖6:“開始測量”模塊設(shè)計(jì)
圖7:系統(tǒng)測試圖
圖8:系統(tǒng)測試結(jié)果圖
采用AppInventor開發(fā)平臺設(shè)計(jì)手機(jī)APP。界面部分通過一定的素材進(jìn)行搭建。APP中設(shè)計(jì)藍(lán)牙搜索、連接、測量等按鍵,APP界面如圖3所示。AppInventor采用圖形化編程,拼接所需模塊,即可完成APP程序設(shè)計(jì)。
設(shè)計(jì)一列表框ListPicker1,用于記錄手機(jī)匹配過的藍(lán)牙設(shè)備,如圖4所示。本設(shè)計(jì)采用的藍(lán)牙模塊為HC-06。
點(diǎn)擊“連接藍(lán)牙”鍵后,手機(jī)將與列表選擇的設(shè)備連接,若設(shè)備未打開,則顯示告警信息。如果在之前手機(jī)已經(jīng)與設(shè)備連接,則點(diǎn)擊按鍵后斷開該連接。確定連接后,界面更新當(dāng)前時(shí)間信息,等待測量的開始。
點(diǎn)擊“開始測量”后,手機(jī)APP通過連接在FPGA上的藍(lán)牙模塊HC-06向FPGA發(fā)送啟動測量的指令,等待一個(gè)測量周期后,手機(jī)APP再接收FPGA返送回來的心率測量結(jié)果值,并顯示于手機(jī)屏幕上。
將心率測量硬件裝置安裝在原子鏡(單向透光鏡)的背后,并通過FPGA上的VGA接口與電腦顯示器相連。攝像頭透過鏡子采集信息,將圖像顯示在顯示器上。心率測量結(jié)果通過OLED模塊顯示在原子鏡上,并同步顯示在手機(jī)APP上。系統(tǒng)上電測試后結(jié)果如圖7所示。
我們找來10位志愿者(5男5女)參與到我們的測試中,將本設(shè)計(jì)測得的心率和小米手環(huán)測得的數(shù)據(jù)進(jìn)行對比。測試結(jié)果如圖8所示。
通過測試發(fā)現(xiàn)本系統(tǒng)能清晰的獲取圖像,成像穩(wěn)定,質(zhì)量高。在光線充足時(shí),測量誤差在±5%以內(nèi),準(zhǔn)確率可達(dá)90%以上;在弱光條件下準(zhǔn)確率也達(dá)75%以上。而且經(jīng)觀察對于皮膚較白的參與者測試的結(jié)果更加符合手環(huán)給出的真實(shí)值。
本系統(tǒng)以FPGA為平臺,采用OV7725攝像頭采集人臉圖像,采用HC-06藍(lán)牙模塊進(jìn)行無線收發(fā),采用OLED模塊及手機(jī)APP進(jìn)行控制與結(jié)果顯示,并創(chuàng)新性的首次將心率測量與原子鏡相結(jié)合,實(shí)現(xiàn)了人體心率的非接觸式實(shí)時(shí)連續(xù)監(jiān)測。該系統(tǒng)工作穩(wěn)定可靠,具備很強(qiáng)的實(shí)用性與工程應(yīng)用價(jià)值。
本設(shè)計(jì)在智能家居領(lǐng)域具有很強(qiáng)的應(yīng)用價(jià)值。用戶在照鏡子時(shí),系統(tǒng)同時(shí)開始測試工作,測試的結(jié)果能直接顯示在鏡子上,同時(shí)也能被配套的APP接收,用戶可在手機(jī)上看到自己的心率測試結(jié)果,并能查閱歷史數(shù)據(jù)。因此,本系統(tǒng)可搭載在更多的智能家居產(chǎn)品中。