陳 宇,楊學志,方 帥,李龍偉,王定良
1(合肥工業大學 計算機與信息學院,合肥 230009)
2(工業安全與應急技術安徽省重點實驗室,合肥 230009)
3(合肥工業大學 軟件學院,合肥 230009)
4(中國科學技術大學附屬第一醫院,合肥 230036)
心率作為人的基本生命體征,不僅可以反應人體的健康狀態,也是評估人體心腦血管疾病最重要和有效的參數之一.其在心腦血管疾病、高血壓、心理和精神疾病等領域都被證實是一種有效的診斷手段[1].
臨床上傳統的心率監測技術主要是利用心電圖機(electrocardiogram,ECG),其通過設備上的十二導聯綁定在體表不同的裸露部位獲取精確的心電數據進行分析處理[2].這種方式可以得到較為精準的心率,但是其存在成本高昂、操作繁雜、專業要求高,普通家庭無法獨立使用.除此以外,家用的脈搏血氧儀也被廣泛用來測量受試者心率,其是利用光電傳感器夾在受試者指尖、耳垂等體表末梢通過接收反射或透射的光信號進行心率測量.該方法需要測試部位和設備緊密貼合且不能夠有相對運動,使用不便,舒適度較差不利于長時間實時檢測.針對傳統方法的在實際應用中的局限性,研究一種使用方便的非接觸式的心率檢測技術就顯得十分重要.
基于視頻的光電容積描記術(video photoplethysmography,VPPG),是一種非接觸式心率檢測技術.其可以利用普通彩色相機采集面部或指尖等區域表皮視頻,通過檢測皮下毛細血管由于心臟周期泵血使得血液血紅蛋白濃度變化產生的微弱顏色變化,提取血液容積脈沖信號(blood volume pulse,BVP).通過分析該信號的頻率即可進行心率估計.Verkruysse 等人[3]最早使用普通彩色攝像頭,在可見光作為光源的條件下證明了使用VPPG 技術進行非接觸式心率檢測的可行性.隨后,Poh 等人[4]提出對視頻幀進行人臉感興趣區域檢測并計算RGB 三通道像素均值,然后使用獨立成分分析(ICA)進行BVP 信號提取和心率估計.盡管這些算法都可以比較好的進行心率估計,但需要測試者全程保持靜止或人臉和環境背景的穩定才能保證良好的實驗結果,這不僅會給測試者帶來不便,而且會限制算法的使用場景.由于人臉運動(如說話、表情變化)、頭部晃動和光照不均勻等干擾因素的存在,會影響VPPG技術BVP 信號的提取以及心率估計的準確性.因此,如何保證在真實的生活場景中提升心率檢測算法的穩定性和準確性,已經成為國內外學者研究的重點.
研究者們主要做出的改進,有如下幾個方面: 其一,是根據皮膚光照反射特點采用不同的顏色空間進行BVP 信號提取,通過不同顏色通道信號的差異性和互補性來增強原始BVP 信號.如de Haan 等人[5]利用不同顏色通道信號之間的互補性,提出了基于色度的顏色空間投影分解算法(chrominance-based rPPG,CHROM)以減輕頭部晃動產生的影響.其二,是根據BVP 信號特性以及先驗知識等進行噪聲濾除和信號增強等操作.如Wang 等人[6]通過分析BVP 信號頻域上心動信號和噪聲信號的區別,采取頻域修正的方式來去除非心率范圍內的干擾.Tasli 等人[7]通過估計頭部運動頻率并進行剔除,取得了更魯棒的心率估計.
除此以外,近年來研究表明通過同步分析多個不同的面部感興趣區域的信號可以用來提升原始BVP信號的提取效果.如Kumar 等人[8]使用信噪比來對不同的感興趣區域信號進行加權.Feng 等人[9]將ROI 區域分塊后設計并提取了兩種特征,最后使用K均值算法自適應選擇有效的感興趣區域.Li 等人[10]使用人臉特征點裁剪獲得固定的人臉皮膚區域.Favilla 等人[11]使用ICA 算法分析面部3 個區域的多通道信息進行心率檢測.周雙等人[12]采用矩陣低秩分解來對不同感興趣區域的信號進行降噪處理.然而,由于以上的多區域分析的劃分均是在人臉檢測框的基礎上進行簡單的矩形分割,此方式雖然操作簡單,但實際上并沒有考慮到分塊內人臉輪廓、陰影和皮膚紋理等信息,以及視頻幀之間分塊區域位于人臉位置的一致性,ROI 分塊劃分存在一定的不合理之處.
為了解決上述ROI 分塊劃分和挑選中存在的問題,本文受傳統的超像素分割算法的啟發,提出一種基于人臉視頻的自適應超像素分割和ROI 優選方法.使得分塊區域擁有相同或近似的特征集,一方面提升子塊劃分質量,從源頭提升了BVP 信號提取的質量,另一方面通過優選算法尋找面部信號最佳區域.增強了面部運動干擾以及環境光分布不均時算法的抗干擾能力.
本文心率檢測算法是以ROI 超像素分割和脈搏矩陣信號優選為基礎.通過裁切視頻幀內面部ROI,隨后根據輪廓、皮膚紋理和陰影等特征將面部ROI 通過超像素聚類分割成互不重疊的子塊,再對分塊結果進行色度BVP 矩陣提取,最后進行多指標綜合分析優選出最佳面部子區域進行信號處理與心率估計.
本方法的核心步驟包括以下幾個部分: 1)人臉與特征點檢測; 2)人臉自適應超像素分割; 3)色度BVP矩陣提取; 4)脈搏信號評估優選與心率估計.具體算法框圖如圖1 所示.

圖1 算法流程及示意圖
在真實生活場景中,由于檢測過程中頭部晃動以及表情變化等會影響攝像頭對面部顏色周期性變化的提取效果,進而導致BVP 信號提取質量的大幅降低.因此對原始視頻進行人臉與特征點檢測算法,來獲取穩定的人臉ROI 區域(圖像幀).首先根據視頻第1 幀圖像,使用Viola 等人[13]的人臉檢測器輸出視頻中人臉檢測矩形區域的頂點坐標; 然后采用魯棒判別響應圖擬合 (DRMF)[14]方法對人臉坐標區域內主要器官進行特征點定位,記錄人臉66 個特征點位置C1,包含眼睛、鼻子、眉毛、臉頰和嘴巴等區域.之后對后續的視頻幀進行KLT 跟蹤特征點的位置,獲取連續幀面部特征點矩陣C,記作:

其中,i為視頻幀數,m為特征點個數,范圍為1-66.
傳統的ROI 分割算法均是將人臉檢測框內區域簡單的分割成m行n列的矩形.如圖2 所示.這樣分割,首先并沒有考慮到頭部運動導致分塊對應人臉位置的變化,其次也沒有考慮到分塊內像素間的特征聯系,ROI 分割存在不合理之處.例如: 平面內頭部偏轉會造成檢測框改變,分塊對應面部位置變化,導致連續幀之間分塊不連續; 光照分布不均時陰影區域和正常亮度區域若被隨機劃分為一個子塊,會導致子塊內像素均值增大,顏色變化幅度減小進一步降低BVP 信號提取質量.

圖2 傳統ROI 分割效果演示
超像素分割算法是通過像素間共享特征(如亮度、紋理、陰影、輪廓等)將圖像分割為包含特定圖像結構的子區域[15].該算法可用于對面部區域進行分割,但是傳統的超像素分割僅對圖像進行處理,未考慮連續幀之間的分塊個數及位置的連續性.故針對心率檢測場景對傳統方法進行改進提出人臉自適應超像素分割算法.
方法首先針對視頻圖像中人臉位置運動做出位置自適應處理,再結合簡單的線性迭代聚類(simple linear iterative clustering,SLIC)[16]實現連續幀間人臉區域分塊的一致性.能夠很好地應對視頻中人臉位置移動、遠近距離變化和平面內旋轉等情況下人臉分塊的穩定性,保證子塊BVP 信號提取區域對應人臉位置的穩定性和連續性.具體步驟為:
(1)視頻人臉獲取.根據第1.1 節獲取的視頻人臉位置對原始圖形進行裁切獲取原始人臉區域圖像幀序列F.
(2)自適應處理.傾斜校正: 如圖3 所示根據獲取的圖像幀序列F以及第1.1 節獲取的人臉特征點位置C使用戚剛[17]的傾斜校正方法校正視頻中旋轉的人臉獲得校正人臉序列F1.

圖3 人臉傾斜校正
人臉尺寸一致處理: 由于頭部運動會影響圖像中面部像素區域大小[18],若采用固定的分割個數可能會使得分割子塊像素區域過小,導致BVP 信號提取質量的急速下降[19].因此通過設置初始化超像素分塊尺寸,根據視頻初始幀人臉像素尺寸自適應決定分塊個數.由于人臉五官位置在不同尺寸圖片中比例保持相對穩定,因此根據面部特征點C對傾斜校正序列F1進行對比縮放,獲得尺寸一致的人臉圖像序列F2,以確保分塊個數一致.
(3)初始化種子點.設序列F2中圖像像素個數為K,為了確保分塊BVP 提取質量,設置初始超像素大小為S=50×50的矩形區域,則超像素個數M=K/S,超像素種子點間的距離L=sqrt(K/S).
(4)相似度衡量.針對序列F2圖像幀中的每個像素,分別計算與距離最近的種子點間的相似程度,為該像素點賦予最相似種子點標簽.相似度衡量公式如下所示:

其中,dlab為像素點之間的顏色差異,dxy是像素點間的空間距離.Di用來衡量兩像素間的相似程度;L為種子點的間距,e為平衡參數,用來反應顏色差異與空間距離在相似度衡量中的比重.Di越大,表明兩像素之間相似度越高.
自適應超像素分割迭代過程如圖4,通過不斷迭代上述過程直至達到收斂,分塊之間充分考慮到面部像素之間距離和顏色特征等聯系,并且經過了面部傾斜校正和一致性處理,可以確保連續幀之間分塊位置的一致性,獲得最終自適應分割結果標簽Label,范圍1-M.

圖4 自適應超像素分割迭代過程
對獲取的連續幀人臉自適應分塊結果,根據Label標記區域進行BVP 信號提取.研究表明[20],HSV 顏色空間H通道色度特征對面部運動具有良好的魯棒性,可以抵抗面部運動光線反射角度變化造成的皮膚亮度和顏色變化.因此采用H通道進行色度脈搏提取.首先根據分塊Label 結果,分別計算M個ROI 分割子區域像素均值,記為bm(N)其中m表示第m個分塊區域,N表示的視頻總幀數.隨后將計算得到的M個區域的像素均值矩陣B通過顏色空間轉換到H通道獲得H通道色度BVP 信號矩陣,記為:

其中,hm(N)表示第m個分塊區域色度脈搏提取信號.
H通道顏色轉換方法在以下公式中進行描述.使用以下公式對RGB 值進行標準化與顏色空間轉換:


其中,R′,G′,B′為RGB三通道的歸一化值,范圍0-1;Cmax和Cmin分別為歸一化RGB通道的最大值和最小值,以及歸一化RGB通道的差值Δ;H即為HSV 顏色空間的色度分量.
獲取到面部M個子塊色度BVP 信號后,對各子塊的原始脈搏信號質量進行評估與優選.在進行脈搏波質量評估的特征選取時,必須要符合以下準則.首先,因為真實場景下無心率參考真值,質量評估指標不依賴真值對比; 其次,特征數值大小需體現信號質量優劣; 最后,特征值應方便從簡短的波形獲得,確保特征及時更新實現ROI 優選的時效性.考慮到上述條件,因此選取幅度、頻域和非線性3 個方面指標綜合評判脈搏波質量.
(1)幅度特征: 分塊區域亮度變化標準差(light std),表示分塊內像素亮度與均值之間的偏離程度,可以體現分塊內亮度變化程度.公式如式(8):

其中,light(m)表示的是第m個分塊的亮度變化程度指標,lvaluemi代表第m分塊中第i幀的亮度值,μ代表分塊中所有幀的亮度均值,N為視頻幀總數.
(2)頻域特征: 分塊脈搏波信噪比(signal noise ratio,SNR),表示脈搏信號平均功率與噪聲平均功率的比值.可以反應心率信號能量占正常心率區間內的總能量大小,公式如式(9):

其中,SNR(m)表示的是第m個分塊的信噪比指標,fHR表示信號頻譜峰值頻率,fs表示信號采樣率,函數S表示頻譜密度函數.
(3)非線性特征: 分塊內樣本熵.熵值作為一種非線性特征,可以體現隨機變量不確定性的程度,反應信號的規則與不規則性.近來已經被越來越多人應用于對生理信號分析上[21],樣本熵(sample entropy,SampEn)對心率信號的高斯噪聲尤其敏感,故選取作為波形質量評估特征.
以上3 種指標由于評價尺度不一無法直接對比數值大小使用,現分別對指標進行有效性歸一化處理,公式如下:

其中,min 和max 分別為各分塊區域中對應指標的最小值和最大值.Lightnorm(m)、SNRnorm(m)、SampEnnorm(m)分別為第m塊有效性歸一化后的指標,數值越大表明分塊內BVP 信號質量越好.
綜合有效性歸一化后的指標,得到分數Score值,公式如下:

其中,Score(m)為第m塊分區BVP 質量最終分數,分數越高說明綜合質量越好.
如圖5 所示,對Score(m)數值排序后選取最佳分塊區域對應BVP 信號,對BVP 信號進行帶通濾波,選取在0.8-3.5 Hz區間最大功率對應的信號頻率fHR得到受試者心率.其中對應關系如下:

圖5 優選BVP 信號及功率譜密度

本文實驗和數據采集是在白色LED 照明環境中進行.使用普通彩色攝像頭(羅技C920)連接微軟Surface 筆記本(Windows 10 ,16 GB 內存,512 GB 硬盤)進行面部視頻采集,同步使用指夾式脈搏傳感器(紫金電子 PWS-20D )采集左手食指指尖ppg 信號.攝像頭設置采集分辨率為1080 P、幀率30 fps,每次采集受試者30 s 的人臉視頻,并以RGB 顏色空間保存成mp4 格式.脈搏傳感器設置采樣率為200 Hz,采樣精度為10 位作為脈搏真值保存.共有20 名受試者參與本次實驗,其中男性12 名、女性8 名,年齡分別為20-43 歲、19-35 歲.數據采集方式和采集界面如圖6 所示,受試者需正對攝像頭并且保持距離40-60 cm 左右而坐,同時采集面部視頻與指尖ppg 信號.

圖6 采集場景演示
本文針對算法的效果復現了文獻[10-12] 中的3 種心率檢測算法作為對比,主要從實際場景下對算法進行評估.其中采用了5 種誤差指標對準確性進行比較.第1 個指標為平均絕對誤差,代表心率檢測值與真實值之間誤差的絕對平均值,記為Me; 第2 個指標為誤差標準差SDe,用來反映誤差之間相互離散的程度;第3 個指標為誤差均方根記作RMSE,用來評估面部測量值和指尖ppg 參考值之間的偏離程度; 第4 個指標為心率平均準確率HRac,主要是反映心率檢測結果的平均準確性,具體公式如式(15):

其中,T為實驗樣本總數,為第t組面部心率檢測的心率測量值,為第t組脈搏傳感器心率測量的參考值; 第5 個參數是皮爾森相關系數記作r,是用來反應心率測量值和真實值之間線性相關性的統計量.r值通常范圍在-1 至1 之間,且絕對值越大說明兩變量之間的相關程度越高.
為了全面驗證本文方法在實際場景下的性能,設計了3 個典型場景驗證算法的準確性.首先分析受試者保持面部靜止場景,其次是受試者在鏡頭內存在頭部運動和表情變化等動態干擾場景.隨后使用不同光照場景下視頻驗證算法的穩定性,最后對受試者進行10 min 的連續心率檢測.
2.2.1 靜止狀態下心率檢測
在本次實驗中,為檢驗靜止狀態下本文算法心率檢測的準確性,受試者需端坐在采集攝像頭前50 cm左右位置,保持環境光照穩定及受試者頭部靜止采集2 組人臉視頻.每組視頻時長為30 s,實驗樣本總數為40 組.實驗結果如表1 所示,其中單位為bpm (beat per minute)即心臟每分鐘跳動次數.

表1 靜態場景下算法準確性分析
如表1 所示,展示了4 種方法在受試者保持靜止時的準確性情況.可以發現4 種方法都可以很好的應對靜態場景下的心率檢測,其中,Me均低于1.6 bpm,SDe和RMSE低于2 bpm,HRac可以達到98% ,r接近1.通過觀察可以發現,本文方法中的Me最低、r最高,分析原因可能是: 在視頻采集中,受試者雖然身體保持靜止但是由于呼吸動作的存在會引入輕微的起伏干擾,其次眨眼等動作的存在也會導致面部某些區域存在輕微的干擾.而本文采用的人臉自適應超像素分割和綜合指標ROI 優選方法可以從面部區域中自動尋找最佳區域進行心率檢測,表現出來更好的準確性.
2.2.2 動態干擾場景下心率檢測
由于檢測過程中,頭部的晃動和表情變化等,會使得鏡頭內人臉位置和背景發生變化造成皮膚與光源反射角度的變化,最終導致BVP 信號的失真進一步影響心率檢測的準確性.因此本文特地設計一組頭部移動和表情變化干擾場景.在這次的實驗中,運動干擾包括在鏡頭內以一定的速率水平或豎直移動頭部以及進行平面內旋轉等操作; 表情變化為視頻采集時受試者隨機朗讀1-9 號數字.在本組實驗中,每名受試者采集3 組數據,樣本總數為60 組.具體的實驗結果如表2 所示.為了直觀展示實驗結果,實驗數據通過散點圖和Bland-Altman 圖進行展示,如圖7 所示.

圖7 運動結果散點和Bland-Altman
由表2 結果可以得知,由于運動干擾和表情變化的引入導致4 種方法的準確性均表現出不同程度的降低.經過對比發現,文獻[10-11]方法的性能明顯偏低,其中,Me、SDe、RMSE均大于 7 bpm,HRac下降至90% 以下,相比較靜止狀態下最差下降幅度高達11.2%,與心率的相關性明顯降低; 文獻[12]的效果雖然有稍許提升,但是Me依然大于5 bpm 超過實際場景下心率檢測的誤差上限.而本文的方法,在4 種方法中受到運動干擾和表情變化的干擾幅度最小,尤其是心率準確性指標HRac達到了95.34%相關系數r高達0.956.上述數據表明本文的人臉自適應超像素分割方法可以有效地從運動的人臉中提取信號最佳的區域進行心率估計,具有良好的性能表現.

表2 動態干擾場景下算法準確性分析
通過對比圖7 第1 行中4 種方法的散點圖可以看出文獻[10-12]的方法存在較多的數據誤差較大明顯偏離線性回歸線,而本文方法的數據集中在線性回歸線附近,且線性回歸線的斜率接近于1,表明本文方法的測量值與心率參考值的相關最強.
圖7 第2 行是運動結果的Bland-Altman 圖,其在醫學領域經常被用來分析新方法與標準方法測量結果的一致程度.虛線內的區域是95%置信區間,中心實線代表心率測量值與參考值之間的相對平均誤差.從圖中可知,本文方法的虛區域遠遠窄于其他3 種方法且中心實線最接近于0,表明本文方法較其他3 種方法的測量值與標準參考值有著更好的一致性.進一步分析原因可能如下:
1)文獻[10]采用的自適應濾波算法,能夠較好地處理高斯白噪聲干擾.但由于使用的是整張人臉作為ROI,而運動時人臉引起的尖銳干擾并不能被自適應濾波器很好地濾除.因此該方法無法提取到純凈的BVP 信號,進而無法在運動干擾條件下進行準確的心率估計.
2)文獻[11]采用的多區域分析方法,主要選取額頭和兩頰3 個獨立區域作為心率檢測的ROI.該方法從一定程度上可以從運動干擾中提取優質BVP 信號進行心率估計.但是由于選取的是固定區域,固定區域無法確保不受到偶然干擾影響,并且額頭部位在女性中容易受到劉海覆蓋干擾,影響實際應用場景下的表現.
3)文獻[12]也是通過將面部進行分割提取不同區塊的色度特征信號進行心率估計.但是,首先其對人臉區域僅進行簡單的矩形分割沒有考慮區域內像素間關系; 其次由于固定了分割矩形塊大小為20×20 的像素區域,并沒有對不同幀內人臉圖像尺寸進行一致性處理,無法確保運動中分塊個數的穩定; 最后由于沒有對人臉旋轉進行校正,難以保證傾斜狀態下分塊位置的連續性.
4)本文方法與文獻[12]采取的方法類似,都是通過將臉部區域分割成不同的子塊通過對子塊信號的分析進行心率估計.不同的是,本文在簡單矩形分割的基礎上引入了自適應超像素聚類算法,確保區域內像素間的特征相關性.同時本文算法針對人臉視頻分割后分塊位置的一致性和連續性進行了人臉校正操作.一方面提升原始BVP 信號的提取質量,另一方面通過綜合指標優選ROI 方法進一步提升了算法在實際場景中的抗干擾能力.
2.2.3 不同光照場景下心率檢測
考慮到真實場景中視頻采集環境的復雜性,位于不同光照條件下心率檢測的準確性會受到影響.因此本次實驗分別采集了受試者靜止狀態4 種光照場景下的視頻進行對比實驗,具體為面向光源(正)、側面對光源(側)、逆向光源(逆)、以及暗光條件(暗).在本次實驗中,每名受試者均在特定場景下采集2 組視頻,視頻時長30 s,樣本總數為160 組.實驗的結果如圖8 所示.

圖8 不同光照場景下的心率準確性變化
由圖8 可知,在正面向光源的場景中4 種方法的準確率均可以達到97%以上,表明在光照條件良好的狀態下4 種方法均可以準確地進行心率檢測.但是針對側光和逆光這類光照分布不均勻的場景,文獻[10-12]方法的準確性均有較大幅度的下降,其中文獻[10]更是分別下降了7.8%、12.4%.本文方法展示出較高的準確性優勢,其中側光準確率達到94.3%,逆光準確率達到92.1%,對比最差方法提升了5.2%與8.2%,但是針對暗光環境4 種方法均表現不佳.分析原因為側光、逆光時光照分布不均勻,本文方法可以根據光照分布的情況從面部選取像素特征相近區塊進行分析并挑選質量最佳子塊進行心率估計.面對暗光這樣的光照場景,由于射入皮膚的光照強度變低導致面部反射的光強變低,無法從ROI 挑選上對光照進行增強,故以上方法在暗光場景中均表現欠佳.
2.2.4 連續時間心率檢測
長時間連續的心率檢測,可以用來評估用戶的心率變化趨勢以及對一些心血管疾病的產生進行早期預警.為了最終評價本算法的準確性,設計一組連續10 min的心率檢測實驗.受試者正坐在攝像機前50 cm 的位置,保持10 min 內面部一直處于視頻采集畫面內,期間不限制受試者頭部移動和表情等變化.并同時使用脈搏血傳感器每10 s 記錄一次實時心率值做對比分析,實驗結果如圖9 所示.

圖9 心率變化折線圖
在圖9 中的紅線和藍線分別代表指尖PPG 傳感器采集的心率參考值和面部心率檢測的測量值.從整體上看,藍線的變化趨勢隨著紅線有著相似的起伏波動,說明測量值和參考值之間有著良好的一致性(r=0.9558).綜上所述,本文的算法可以有效地進行心率長期檢測,提升真實場景下算法的魯棒性.
近年來由于視頻圖像處理技術的快速發展,基于視頻的非接觸心率檢測技術發展迅速,但在實際場景應用仍有諸多挑戰.本文針對面部運動和光照變化干擾問題,提出一種人臉自適應分割和多區域多指標綜合評價算法,提升脈搏波質量,提高心率檢測可靠性,增強實際場景魯棒性.主要由以下幾部分組成: 面部區域自適應超像素分割為互不重疊的子塊; 提取色度特征構建脈搏信號矩陣; 根據綜合指標評估各分塊質量,最后對最優子塊進行心率估計.實驗結果表明,相比傳統ROI 分割方法,本文算法分割后脈搏矩陣信號質量有顯著提升.在面部運動和光照不均勻場景下心率檢測準確性和穩定性均有明顯提升.然而,在暗光和環境光照變化劇烈等場景下,本文心率檢測算法性能出現比較明顯的下降.在以后的工作中,將對環境光照變化造成的干擾問題進行研究,進一步提升復雜光照場景下的心率檢測魯棒性.