宋正偉,陳 鯨,楊學志,吳克偉,方 帥
1(合肥工業大學 計算機與信息學院,合肥 230009)
2(工業安全與應急技術安徽省重點實驗室,合肥 230009)
3(合肥工業大學 科研院,合肥 230009)
心率可以反映人體的心血管健康狀態,是當代醫療領域中一項重要的生理參數,對人體的健康檢測具有重大意義.隨著心臟的間歇性收縮和舒張,血液壓力、血流速度和血流量的脈動在血管系統中的傳播引起了血管壁的變形和振動,進而形成了搏動的特征[1].脈搏波反映了這些波形的變化特征,從這些變化特征中我們可以觀測出人體的心血管健康狀況.
當人體血液流經皮膚表面的心血管時,會引起皮膚表面的兩種變化:一種是顏色變化[2],一種是振動變化.皮膚顏色變化是由于人體血液中包含的血紅蛋白對不同光的折射率不同,所以通過皮膚表面的光強變化,就可以檢測血管中血液容積的變化,進而檢測血管壁的波動情況.而振動變化是因為血液流經動脈對血管壁產生振動[3],進而傳播到皮膚表面產生了微小運動.通過基于視頻的非接觸式脈搏波檢測方法可以有效遠距離從人體的面部、頸部、腕部提取出脈搏波.
基于視頻的非接觸式心率檢測的原理是借助外界的光源照射人體,通過遠程測量光信號的變化,間接檢測人體心率.視頻法解決了傳統接觸式心率檢測需要傳感器與受試者肢體接觸,應用場所有限,難以方便、快捷地進行心率檢測的問題.然而視頻法檢測心率易受光照干擾以及人體晃動的干擾,這是視頻法檢測心率不能忽視的問題.
Poh等人[4]提出了一種通過分析視頻中人臉變化從而估計心率的方法.該方法將人臉區域圖像分離為RGB三通道,分別計算區域內灰度均值.經過一段時間后可得到隨時間變化的3個觀測信號R,G,B.使用獨立成分分析(Idependent Component Analysis,ICA)[5]對R,G,B三個信號進行ICA分析,得到3個相互獨立的源信號,再進行功率譜估計,取其中第1個基向量為脈搏波.但是有時血液容積脈搏波(Blood Volume Pulse,BVP)信號可能是其他基向量,結果誤差較大.Wu等人[6]提出了歐拉視頻放大算法(Eulerian Video Magnification,EVM),該算法可以將人眼所觀測不到的微小振動進行放大處理,實現肉眼可視化,這種算法給我們非接觸式的脈搏波檢測提供了新的思路.Miljkovic等人[7]使用EVM來提取人臉視頻中的心率,將人臉上血液流經皮膚時所產生的顏色變化進行放大,但是該算法需要受測者配合實驗,不能有輕微移動,準確性才能保證.戚剛等人[8]提出了一種基于EVM的抗運動干擾脈搏波提取算法,該算法首先檢測出人臉區域,使用Kanade-Lucas-Tomasi(KLT)技術對視頻序列中的人臉進行跟蹤和傾斜校正,減少人體運動的干擾,之后進行顏色放大,提取心率.在非合作的復雜場景下可以準確檢測,但是濾波器使用了理想濾波器,沒有較好的保留脈搏波的細節.在算法上由于使用了KLT,運算量較大,速度相比其他算法要慢,且受光照干擾也比較大,實際應用還有許多困難.李曉媛等人[9]同樣使用KLT算法跟蹤識別人臉圖像,并轉化到YCbCr顏色空間進行皮膚檢測并同時轉換到Cg顏色通道來提取脈搏波,用Morlet復小波作為母波繪制能量譜圖.蘇培權等人[10]提出使用EVM運動放大來放大人體腕部橈動脈的振動幅度,通過對放大后腕部橈動脈的振動定位,最后使用亮度加權求和來提取脈搏波.雖然在一定程度上避免了光照干擾,但是需要受測對象配合實驗且腕部位移幅度較大時誤差較大,對運動干擾缺少魯棒性.李江山等人[11]對蘇培權等人[10]的方法進行了改進,在對腕部表皮進行放大處理以后,選取感興趣區域(Region Of Interest,ROI)為待處理區域,利用獨立成分分析算法來分離腕部區域中的脈搏波信號和環境噪聲,再通過功率譜估計對脈搏波信號進行分析.但是上述方法都是基于亮度來對信號進行處理的,抗光照變化能力差,受目標微運動的干擾較大.
針對上述文獻提出的算法中存在抗光照干擾能力弱,抗運動干擾能力弱的問題,本文提出了一種基于相位[12,13]變化的視頻心率檢測算法,通過提取腕部表皮振動信息的方法來選取脈搏波,可以有效避免光照干擾; 通過復可控金字塔的方向分解,濾除了其他方向的運動噪聲,只保留了腕部表皮的振動信息; 對視頻采用顯著區域選擇和魯棒主成分分析進行噪聲抑制.因此,本文的貢獻如下:
(1)針對拍攝視頻時人體輕微晃動產生的運動干擾問題,本文設計了具有方向選擇的復可控金字塔的濾波器,用于篩選出脈搏振動信號.
(2)針對傳統脈搏振動信號受到噪聲干擾問題,本文估計局部的脈搏信號信噪比,實現脈搏信號的感興趣區域篩選.
(3)本文進一步使用魯棒主成分分析,對脈搏振動信號進行信號分離,提取出可靠的脈搏信號,用于實現準確的心率檢測.
本文提出了一種基于相位變化的腕部橈動脈視頻脈搏波提取方法.首先,采集腕部橈動脈的視頻,選取垂直于手臂輪廓的方向作為復可控金字塔的方向,之后進行分解得到每一個像素點的相位,選取每個像素第一幀相位為標準,與后續每一幀對應像素的相位相減得到相位差信號,選取ROI信噪比最高的區域為待處理區域,通過時域帶通濾波提取感興趣頻段內的相位差信號; 最后使用魯棒主成分分析算法提取脈搏波信號,使用功率譜估計法計算心率值.算法流程圖如圖1所示.

圖1 基于振動相位信號分解的心率檢測算法流程圖
由于人體橈動脈的脈搏振動強度比較微弱,易受人體其他振動噪聲干擾,為了能夠準確提取到脈搏波信號,我們采用復可控金字塔在指定方向上進行方向分解提取相位信號,這樣在減少其他方向運動干擾的同時也減少了計算量.復可控金字塔示意圖如圖2所示.

圖2 復可控金字塔示意圖
復可控金字塔的本質就是一個尺度-方向帶通濾波器組[13].各層帶通濾波器(頻域)均是通過低通濾波器與高通濾波器相乘的方式實現,高通濾波器的實現公式為:


圖3 帶通濾波器(頻域)
方向濾波器的模板如式(2)所示.


在本文中,k值取為8,方向b取值為2,這樣可以更好的減少其他方向運動噪聲干擾.將視頻的第一幀經過復可控金字塔處理提取出腕部輪廓,在輪廓上選取標定點A和B,濾波器方向取垂直于點所在直線的方向.這里,復可控金字塔的方向選擇如圖4所示.

圖4 復可控金字塔方向選擇


在使用復可控金字塔對腕部橈動脈相位差信號進行提取后,若對視頻整體進行處理,不僅會引入噪聲干擾還會大大增加后續的運算量,所以要將視頻區域分成大小一致的若干子塊,選取一個子塊作為ROI區域來進行后續處理.由于橈動脈振動信號的強度要遠大于環境噪聲,所以含有橈動脈振動的區域會具有更高的信噪比,選取腕部信噪比最高的區域有利于脈搏波的提取.最終輸入相位差矩陣表示為G(x,y,t),選取步驟如下:
(1)區域分塊

(2)信噪比計算與ROI區域選擇
求其每個子區域的信噪比,并且得出信噪比最大的子區域的坐標.信噪比計算公式如式(5)所示.求取ROI區域坐標如式(6)所示.


在提取到相位差信號之后,進行時域帶通濾波處理,頻帶范圍為0.8-2 Hz,濾波器采用無限脈沖響應(Infinite Impulse Response,IIR)濾波器.最后將選取(u,v)子區域的相位差信號作為最后的樣本輸入矩陣I.

主成分分析算法(PCA)可以有效的去除數據中的噪聲和冗余的干擾,將原有的復雜數據降維.找到一組新的基底能表示原有的數據的線性關系.但是主成分分析只能解決被高斯分布噪聲污染的信號分離問題,無法處理高幅度尖銳噪聲.而腕部的橈動脈的運動信息最易受到人體非自主性的運動尖銳噪聲的影響.魯棒主成分分析(robust PCA)[14]解決了這一缺陷.將輸入相位差矩陣I寫成式(8)的形式,A是低秩的脈搏波信息矩陣[15],E是稀疏的運動噪聲[16].


這里使用增廣拉格朗日乘子法[15]來求解上述問題.構造增廣拉格朗日函數如下:




最后更新參數μ:

其中,ρ>1為常數,ε為大于0但趨近于0的數.
經過上述過程我們得到了低秩的脈搏波矩陣A,這里我們對每一行的脈搏波向量求和取平均值處理,最后的結果即為脈搏波.脈搏波提取結果如圖5所示.在提取脈搏波之后,使用快速傅里葉變換(Fast Fourier Transform,FFT)提取出脈搏波的功率譜,將功率譜[17]最大值對應的頻率fHR作為人體的心率.心率的準確性可以很好評估脈搏波提取的準確性.

圖5 脈搏波提取結果圖

HR就是我們最后的心率檢測結果.
本節將設計4組對比實驗來驗證本文提取脈搏波算法的準確性和魯棒性.首先以傳統接觸式力康Prince-100F型脈搏檢測儀作為真值,同時與文獻[9-11]三種非接觸式脈搏波檢測方法在無干擾場景下與本文算法進行對比,驗證本文方法提取脈搏波結果的準確性.然后進行了各步驟實驗來證明復可控金字塔、ROI區域選擇和魯棒主成分分析3個子步驟對本文心率提取方法的貢獻度.之后再與3種心率檢測方法在光照干擾與運動干擾的條件下進行對比,驗證本方法在干擾場景下心率檢測的準確性和魯棒性.最后對受測者進行6 min的心率檢測.
實驗過程如圖6所示,使用惠普筆記本電腦連接攝像頭進行視頻采集,其中攝像頭距離人體腕部0.4 m左右,需要受測者配合將手臂平放朝上,盡可能減少自身上半身與手臂的晃動.在采集視頻的同時,我們也使用接觸式力康Prince-100F型脈搏檢測儀同步采集來自指尖的脈搏波.該設備基于PPG原理,利用血管中血紅蛋白對不同波長的光譜的吸收能力[18]不同,以及心臟搏動時候血流量的不同獲取搏動信號,將該檢測設備得到的結果作為人體心率的真值.

圖6 心率檢測實驗過程示意圖
實驗裝置為惠普筆記本電腦,CPU為英特爾i7,內存8 GB,操作系統Windows 10; 攝像頭型號為羅技HD 1080p.采用軟件Matlab 2019b進行裝置控制,實驗采集視頻為RGB彩色空間,分辨率為640×480,視頻幀率30幀/s,每位受測者拍攝時長為10 s,總計300幀圖像.受測者共計15人,包括12名男性3名女性.年齡從21到45歲不等.
為了驗證本文方法的準確性與魯棒性.本文復現了文獻[9-11]三種非接觸式心率提取算法作為對比分析.采用平均誤差Me、標準差SDe、均方誤差RMSE、準確率HRac和皮爾森相關系數r作為算法的評價指標.
2.2.1 各步驟實驗結果
為了研究每個步驟對整體方法準確率的提升度.進行各步驟心率檢測實驗,證明復可控金字塔的特征提取與ROI區域選取和rPCA去噪是本文方法不可或缺的.本次實驗中,光照環境為自然光,志愿者保持靜止狀態坐在攝像機前,對15位志愿者進行非接觸式心率檢測,實驗步驟按照表所示分別進行,每種實驗步驟進行一次,采集3組視頻,同時使用脈搏波檢測儀同步檢測心率信息.
通過表1可以看出,復可控金字塔這一步起到了顯著作用,單獨使用的準確率都達到了85%以上,而ROI區域選取和rPCA分別將方法準確率提升了7%和3%.這是因為復可控金字塔在主要方向上提取的相位差信號有效避免了運動噪聲.ROI區域選取避免了采集視頻內的無關噪聲,最后使用rPCA有效濾除了已選區域內運動的尖銳噪聲干擾.本次實驗驗證了復可控金字塔在特征提取方面的有效性,驗證了顯著區域選擇、魯棒主成分分析在噪聲抑制上的有效性.

表1 算法各步驟心率檢測結果
2.2.2 無干擾場景下的心率檢測
在本次實驗中,首先在無干擾場景下進行心率檢測,無干擾場景要求受測者在自然光下配合實驗人員保持腕部靜止進行視頻測量[19]采集.首先驗證本文算法提取脈搏波的準確性,通過本文方法提取的脈搏波所計算的心率結果與接觸式力康Prince-100F型脈搏檢測儀同步采集的來自指尖的心率進行對比.15名受測者每人分別進行3組實驗,每組包括接觸式與非接觸式檢測各一次.共計45組數據.實驗結果如表2所示.

表2 無干擾場景下心率檢測結果
在圖7(a)散點圖中,橫坐標x軸表示的是心率檢測值,由本文脈搏波提取方法得出.心率測檢測值由縱坐標y軸表示的是心率參考值,由接觸式力康Prince-100F型脈搏檢測儀提取結果得出,每組輸入數據對應的是散點圖中的一個紅色點(測量值,真實值),而參考值應該是圖中橫貫整個坐標軸斜率為1的藍色實線.在圖7(b)的Bland-Altman圖中:橫坐標代表由人臉視頻測得的心率值,縱坐標代表心率檢測值和參考值之間的誤差,黑點是由測量值和誤差組成的坐標點,藍線是通過這些坐標點計算出的誤差均值,兩條紅線代表95%置信范圍,藍線越接近于0且兩條紅線之間的距離越小,說明心率的測量值和參考值之間的誤差越小.從圖7中可以看出,本文紅色點的分布較其他兩種方法相比更接近于藍色實線,證明了本文方法更接近于心率的真實值.

圖7 無干擾場景下心率檢測結果
從表2可以看出,4種方法的 M e均低于2 bpm,SDe 和 R MSE 均低于2.5 bpm,HRac高于96%,r接近1.以上這些數據表明,在無干擾場景下,3種方法都可以有效準確的檢測心率.本文方法略好于其他方法.其可能原因是:在實驗過程中受測者的腕部不可能保持絕對靜止狀態,存在著干擾,而本文提出的方法具有良好的魯棒性,所以在實驗時表現出了更好的性能.
2.2.3 干擾場景下的心率檢測
為了證明本文方法具有良好的抗光照干擾與抗運動干擾能力,實驗將在光照干擾和運動干擾兩種不同實驗條件下與文獻[9-11]進行對比試驗.光照干擾場景下采用自然光與日光燈混合拍攝,以日光燈的光照強度變化模擬光照干擾的實驗條件,光照強度在100-600 lx內連續不斷的變化.運動干擾場景下以腕部區域豎直向上為基準,受測者腕部左右輕微晃動模擬運動干擾場景,腕部左右擺動角度為5°.
文獻[9]采用的是YCbCr顏色空間進行皮膚檢測并同時轉換到Cg顏色通道來提取脈搏波,用Morlet復小波作為母波繪制能量譜圖.文獻[10],文獻[11]采用的是歐拉運動放大,將血液流經腕部橈動脈時所引起的振動變化進行放大進而提取脈搏波.本次實驗視頻分辨率640×480,幀率30幀/s,拍攝時長為10 s,總計300幀圖像.
干擾場景下的心率檢測結果見表3,在干擾場景下其他兩種方法的檢測性能明顯下降,3種心率檢測方法在兩種干擾場景下準確率均低于90%,而本文方法在光照干擾下準確率HRac達到了91.16%,運動干擾條件下則為88.48%,平均誤差Me、標準差SDe、均方誤差RMSE等指標也遠小于3種主流方法.實驗結果表明,在光照和運動兩種干擾場景實驗條件下,本文方法均體現了良好的魯棒性.其中,心率檢測的準確率隨著光照強度的增加而降低,隨著腕部左右擺動幅度增加而降低.這是因為拍攝視頻提取相位信息的過程中也會受到光照強度的影響,光照干擾影響著提取相位信息的準確性; 而腕部擺動角度越大,復可控金字塔提取豎直方向的脈搏波信息就越少,相位信息里蘊含的噪聲就越多.本文與文獻[9]提取脈搏波的結果見圖8,文獻[10],文獻[11]脈搏波提取結果與文獻[9]的類似.本文提取的脈搏波很好地保留了脈搏波的細節而文獻[9]等的脈搏波部分已經明顯失真.

圖8 脈搏波提取結果對比圖

表3 干擾場景下心率檢測結果
本文方法在各項心率檢測指標上都優于3種主流方法,其主要原因如下:
(1)文獻[9]主要通過采集人體面部視頻提取脈搏波,將RGB通道轉化為YCbCr通道,其中,亮度信息對光照變化最為敏感[20],在光照干擾的條件下提取脈搏波噪聲加大,誤差較大.并且沒有選定最優ROI區域,人臉微表情或是溫度的不同也會產生干擾,而本文方法是通過提取振動信息來選取脈搏波,可以有效避免光照干擾.而且自動選定了處理區域,通過復可控金字塔的方向分解在相位域上處理降低運動干擾.
(2)文獻[10],文獻[11]和本文都采取了對腕部進行處理提取脈搏波的方式,但是上述兩種方法僅僅采用了運動放大之后利用亮度提取脈搏波信號的方式,不僅僅受到其他運動噪聲的干擾,最后提取脈搏波也會受到光照影響,而本文采用方向分解的方式濾除了其他方向的噪聲只保留了橈動脈的振動信息,最后的相位差提取的方式也避免了光照的影響.
(3)本文方法的算法復雜度與文獻[10],文獻[11]相同,均為 O(n2),但是后面兩種方法采用的歐拉視頻放大,經過金字塔分解后進行多尺度重構,而本文方法采用金字塔的一層進行操作,雖然算法復雜度相同,但是本文方法的運算量相比少得多; 文獻[9]由于使用了KLT進行穩像處理,算法復雜度達到了 O(n3),且穩像算法運算量更為龐大,難以實際應用.
2.2.4 長時間的心率檢測
為了驗證本節所提出的方法所具有的穩定性,本次設計了一組長時間心率檢測的實驗來進行測試.實驗設定視頻時長為6 min,攝像頭對準受測者的腕部,同時使用脈搏波檢測儀來檢測心率,并保存數據.實驗中以10 s為間隔計算一次心率值,同時取10 s內脈搏波檢測儀心率的平均值.如圖9所示.圖中藍色虛線代表脈搏波檢測的平均值,紅色實線代表本文算法測量值.從圖9可以看出,本文所提出的方法與接觸式設備測量結果基本保持一致.

圖9 長時間心率檢測結果
本文提出了一種基于相位變化的腕部橈動脈視頻脈搏波提取方法.首先,通過對腕部橈動脈視頻進行復可控金字塔分解獲取每個像素點的相位值.然后,根據相位隨時間的變化規律構建相位信號,并通過顯著區域定位和帶通濾波對其進行預處理.在此基礎上,通過魯棒主成分分析算法從相位信號中提取脈搏波,并結合功率譜估計方法計算心率值.本文以接觸式檢測設備提取的脈搏波為真值,與3種主流的心率檢測方法進行對比.實驗結果證明本文方法具有較高的抗光照和運動干擾能力,提高了心率檢測的精度.