陳聰聰 劉昱竹 王海同 緱奕軒 郁翛然
收稿日期:2023-08-07
DOI:10.19850/j.cnki.2096-4706.2024.04.007
摘? 要:心率作為一項重要的生理特征信息,在醫(yī)療診斷方面有著不可替代的作用。非接觸式心率檢測無須與測試者直接接觸即可測量出心率,避免了傳統(tǒng)心率測量時測試者長時間接觸儀器造成的不適,且成本更低,便攜性更好。文章提出一種結合ICA和小波變換的算法,對攝像頭輸入的人臉視頻依次進行顏色空間轉(zhuǎn)換、降噪、時頻域變換等操作,并搭建了一個基于人臉視頻的心率測算系統(tǒng),針對不同指標設計了多個實驗。實驗結果表明,系統(tǒng)能夠快速實時檢測人體心率數(shù)據(jù),實現(xiàn)非接觸式心率檢測,滿足心率檢測需求。
關鍵詞:遠程光電容積描記法;心率測量;圖像處理;小波變換
中圖分類號:TP391.4;Q632? ? 文獻標識碼:A? 文章編號:2096-4706(2024)04-0030-06
Research on Non-Contact Heart Rate Measurement System Based on Facial Video
CHEN Congcong, LIU Yuzhu, WANG Haitong, GOU Yixuan, YU Xiaoran
(School of Electronic Engineering, Beijing University of Posts and Telecommunications, Beijing? 100876, China)
Abstract: As an important physiological characteristic information, the heart rate plays an irreplaceable role in medical diagnosis. Non-contact heart rate detection can measure heart rate without direct contact with the tester, avoiding discomfort of tester caused by prolonged contact with the instrument during traditional heart rate measurement, and has lower cost and better portability. This paper proposes an algorithm that combines ICA and wavelet transform to sequentially perform color space conversion, noise reduction, time-frequency domain transformation, and other operations on the facial video input from the camera. The heart rate measurement system based on facial video is built, and multiple experiments are designed for different indicators. The experimental results show that the system can quickly and real-time detect human heart rate data, achieve non-contact heart rate detection, and meet the needs of heart rate detection.
Keywords: remote photocapacitance plethysmography; heart rate measurement; image processing; wavelet transform
0? 引? 言
心率測量技術在醫(yī)學診斷,健康監(jiān)控和刑偵探測等多個領域上都有著廣泛的應用[1]。目前市面上的測量技術,主要包括心電圖(Electrocardiograph, ECG)技術、光電容積脈搏波描記法(Photoplethysmographic, PPG)以及遠程光電容積脈搏波描記法(Remote Photoplethysmography, RPPG)。其中ECG通過檢測人體不同部位電位差來計算心率[2],精確性高但需要專業(yè)設備,難以應用于日常生活。PPG通過檢測身體部位因心動周期而產(chǎn)生的對不同波長的光照吸收或反射量的周期性變化來計算心率[3],價格相對較低,在智能手環(huán)或其他允許相對高誤差的測量場景中被廣泛應用。RPPG指利用攝像頭等傳感器來捕捉由心動周期造成的皮膚反射光周期性變化的技術,最早在2010年由Ming-Zher Poh等人提出[4]。這種技術從皮膚RGB圖像中提取顏色變化,并使用基于獨立成分分析(Independent Component Analysis, ICA)的盲源分離(Blind Source Separation, BSS)方法估計血液容積描記信號。RPPG的優(yōu)點在于無須專業(yè)設備也無須與被檢測者接觸,便攜性好,應用前景廣泛。
本文提出了一種結合基于ICA的盲源分離算法以及小波變換的非接觸式心率測量系統(tǒng),從連續(xù)視頻中分離人臉心率數(shù)據(jù),獲取一定時間內(nèi)的實時心率曲線。通過不同場景下的實驗驗證,其結果表明本文所述方法能以非接觸方式準確獲取心率測量結果。
1? 信號處理方法與過程
人類皮膚可劃分為3層,表皮層,真皮層和皮下組織,其中真皮層和皮下組織中分布著豐富的毛細血管,毛細血管的血液容積隨著心動周期發(fā)生周期性,血紅蛋白對光信號的吸收也因此規(guī)律性變化[5],這種改變表現(xiàn)為能夠被攝像頭捕捉的微弱膚色變化,從而為通過視頻來提取心率信息提供了可能。
如圖1所示,本文心率檢測算法的主要流程為:1)識別人臉,并使用基于圖像特征點的跟蹤算法KLT(Kanade-Lucas-Tomasi)克服人臉微小運動;2)將人臉圖片由RGB顏色空間轉(zhuǎn)換為YIQ顏色空間,減小環(huán)境光的影響,并對獲取的數(shù)據(jù)進行基本的去趨勢化,標準化處理,以排除系統(tǒng)噪聲的影響;3)利用ICA盲源分離算法,提取心率特征信號;4)對提取出來的心率特征信號進行小波變換,濾除多余的低頻噪聲,并輸出最終結果。
圖1? 算法流程圖
1.1? 感興趣區(qū)域選取
通過檢測膚色變化獲取心率,首先要保證選取區(qū)域內(nèi)包含足夠的膚色區(qū)域,其次,本文的目標是實現(xiàn)實時心率分析,而人臉的運動會對運算結果產(chǎn)生影響,因此需要穩(wěn)定面部特征點在感興趣區(qū)域當中的相對位置。本文基于KLT稀疏光流追蹤算法,進行面部特征穩(wěn)定工作,以保證獲取連續(xù),穩(wěn)定,有效的原始信號流。
KLT算法的基本原理建立在以下三個假設基礎上:
1)亮度恒定。
2)極短時間內(nèi)物體伴隨的是微小運動。
3)相鄰的臨界點做的是相似運動。
在相鄰幾幀圖像間,圖像的亮度,人臉運動程度和人臉輪廓進行的相似運動都可以認為滿足以上假設,KLT特征跟蹤的主要步驟為:
1)使用Harris角點的特征檢測器[6]在初始幀,即攝像頭獲取的視頻流的第一幀中經(jīng)識別的人臉區(qū)域M (x, y)中選取質(zhì)量更高,更便于追蹤的點。
2)獲取角點后,用I (x, y, t)表示任一角點在第一幀的灰度值,到下一幀,假設它移動了(dx, dy)到下一個位置,用了dt時間,由于假設1),可以認為下一幀中的該像素的灰度值幾乎無變化,即:
(1)
對該方程進行泰勒展開并兩邊消元可以得到:
(2)
令:
,
Ix,Iy,Iz分別表示圖像中像素點的灰度對X,Y,Z的偏導數(shù)。由于條件3),假設在一個小方格里的所有像素位移相同,可以得到以下方程(3)的光流方程,求取的最小二乘解即求得像素間的位移矢量。
(3)
3)在獲取了所有特征點的位移矢量后,本文對所有的位移矢量進行了平均,作為整個人臉區(qū)域的位移矢量,同原本的人臉框截取坐標相加,完成人臉識別工作。
1.2? 顏色空間轉(zhuǎn)換
YIQ顏色空間中,Y指代圖像的亮度信息,即灰度值,I、Q代表色度信息。相較于RGB空間,YIQ空間可以直接對圖片的色度信息進行處理,在后續(xù)ICA盲源分離中可以更精準地提取出信號源[7]。同時,YIQ空間將Y通道分離出來,一定程度上也消除了光的亮度對信號的影響。
YIQ和RGB的轉(zhuǎn)換公式如下:
(4)
完成顏色空間轉(zhuǎn)換后,本文去除Y通道的亮度信息,對I、Q通道進行空間平均,得到一段時間內(nèi)的皮膚色度均值數(shù)據(jù),并對數(shù)據(jù)進行去趨勢化、標準化處理,以最大程度消除系統(tǒng)噪聲的影響,同時將信號大小標準化。
用x表示I,Q兩通道經(jīng)空間平均后得到的數(shù)據(jù)序列,u表示數(shù)據(jù)序列的數(shù)據(jù)均值,δ是數(shù)據(jù)序列的標準差,用X表示得到的初始信號,標準化公式如下:
(5)
經(jīng)過上述處理后,得到的初始信號(以Q_T為例)如圖2所示。
圖2? Q_T信號
本文在FPS固定的情況下,直接用幀數(shù)代替時間。圖2顯示初始的信號波形基線漂移大,高頻噪聲多,需要進一步的處理來提取出更精確的心率信號。
1.3? 獨立成分分析
1.3.1? ICA方法
拍攝過程中存在人臉自身的微小轉(zhuǎn)動以及相機振動等因素,這類非線性移動所產(chǎn)生的噪聲超過了KLT算法的捕捉能力。因此,為了進一步提純心率特征信號,需要對初始信號進行盲源分離[8],本文中采用ICA方法。
ICA是由法國學者Herault和Jutten提出的一種基于高階統(tǒng)計分析的數(shù)據(jù)分析方法[9],對于盲源分離有很好的效果。
設s (t)為信號源,接收到的信號x (t)為s (t)與混合矩陣A相乘后的結果,因此只需要找到A的逆矩陣B即可還原信號。在基于ICA信號源統(tǒng)計獨立的前提下,我們將前文中處理后的I、Q通道作為初始信號,假設I、Q通道除了接收到兩個固有的信號源信息外,還受到一個獨立的噪聲源干擾。即:
(6)
其中s1和s2為兩個獨立生理信號源,n為噪聲源。解混合矩陣A的第一步是對待觀測的數(shù)據(jù)進行中心化處理:
(7)
第二步是白化處理,即去相關性。求出中心化處理后信號的協(xié)方差矩陣Cx及Cx的特征值Λ和特征向量U,白化矩陣的公式如下:
(8)
信號X經(jīng)過白化矩陣處理后,得到白化信號Z:
(9)
第三步是迭代。初始化隨機的權重矩陣Wp并設定迭代次數(shù)和最大誤差,本文中分別設定為10 000和0.000 01。Wp計算公式:
(10)
其中g (x)為非線性函數(shù),本文中取:
(11)
迭代至Wp與上一次迭代的Wp之差小于最大誤差時,停止迭代。此時:
(12)
SZ即為分離后的信號矩陣,由三個信號,包括獨立信號源和噪聲源組成。
實際的測試中分離出個信號源如圖3所示。
s1~s3即為分離出的三個信號源,由于ICA方法得到的信號排序具有隨機性,因此還需要進一步處理,以選擇出其中最能代表心率特征的信號。
1.3.2? 利用皮爾遜相關系數(shù)選取信號源
血紅蛋白對波長在540~570 nm之間的黃綠光吸收更多,對于YIQ空間,黃綠色主要包含在Q通道中,所以將Q通道的信號作為心率參考信號對分離出的三個信號源進行篩選。
圖3? ICA分離出的信號
本文采用皮爾遜相關系數(shù),在三個信號源中選擇與Q通道信號相關程度最高的信號源作為心率信號。皮爾遜相關系數(shù)計算公式如下所示:
(3)
在上面的三個信號源中選取相關程度最大的,即為較為純凈的心率信號s0(t)。
1.4? 小波變換
由于外界光強變化以及攝像頭CCD敏感度、呼吸帶來的數(shù)據(jù)規(guī)律性變化等因素,1.3節(jié)中的心率信號s0(t)存在很明顯的基線漂移[10]。去除基線漂移的方法通常有FIR濾波、中值濾波、小波變換濾波等。為了消除基線漂移對最后峰值檢測的影響,此處采用精度較高的小波變換方法。
相對于傳統(tǒng)的帶通濾波器,小波變換具有多分辨率的特性,即在低頻區(qū)域?qū)r間的分辨率低而頻率分辨率高,高頻區(qū)域則與之相反。同時小波變換可以進行多層次分解,從而由粗到細地觀測。小波分解過程如圖4所示。
圖4? 小波分解流程
信號在每一層中都分解為近似部分A和細節(jié)部分D,近似部分即為低頻部分。本文中,采用db5小波作為變換的基波,將s0(t)信號進行五層分解,再將每層的近似信號小波重構。小波重構即小波分解的逆過程,從分解的底層向上重構出原始信號。由于重構的數(shù)據(jù)長度與原信號不一致,因此小波重構需要隔值插零來增加數(shù)據(jù)量。重構結果如圖5,x1~x5表示一到五層的近似信號。
圖5? 小波重構后的近似信號
圖中顯示第四層和第五層的近似信號與基線漂移的形態(tài)相似程度高,本文中選擇將第四層近似信號從s0(t)中除去,即可得到比較純凈的心率信號s(t),如圖6所示。
圖6? 去除基線漂移后的信號
至此,完成了信號的濾波、降噪處理工作。
1.5? FFT和峰值檢測
為了從上述完成除噪的信號中提取出心率信息,通常采用快速傅里葉變換方法(FFT),將時域信號s(t)轉(zhuǎn)為頻域信號X ( f ),X ( f )即為心率信號的頻譜。在純凈的心率信號中,心率信息所占的功率是最大的。因此將頻譜轉(zhuǎn)換為功率譜,功率譜中峰值對應的頻率就是心跳頻率。
2? 系統(tǒng)架構及算法實現(xiàn)
系統(tǒng)包括UI界面、核心算法、數(shù)據(jù)庫三個部分,如圖7所示。
UI界面包括開始界面、測試界面、數(shù)據(jù)庫界面。開始界面主要是對項目的介紹,用戶在測試界面打開相機并正對攝像頭,等待一段時間后,圖像右側即會顯示相應的心率和心率折線圖。數(shù)據(jù)庫界面則用于歷史數(shù)據(jù)。
核心算法部分由ROI選取、顏色空間轉(zhuǎn)換、ICA盲源分離、小波變換和峰值檢測五個模塊組成。相機采集到的圖像依序經(jīng)過上述模塊處理,并最終返回心率值顯示在測試界面。
數(shù)據(jù)庫部分,采用Python與MySQL數(shù)據(jù)庫進行對接,通過UI界面對信息的輸入,可以直接鏈接本地數(shù)據(jù)庫,對測試者的姓名、年齡、性別、心率實時的保存與查看。
圖7? 系統(tǒng)框架
3? 數(shù)據(jù)分析
3.1? 準確度測試
為了測量上述每個步驟對整體方法準確率的提升,向系統(tǒng)輸入7段時長為10 s的人臉視頻,并記錄下測試對象在同一時間段內(nèi),去除了不同模塊后心率算法的計算結果。本文采用標準差(SD)、均方根誤差(RMSE)和平均誤差率r三種指標來驗證。
通過表1可以看出,程序總體的準確率達到了93.7%以上,標準誤差為3.77次/分,滿足中華人民共和國醫(yī)藥行業(yè)規(guī)定的標準誤差小于或等于5次/分,足以勝任日常的簡單心率測量。此外,可以看出各部分的加入對算法的準確度都有所提升,顏色空間變換對于系統(tǒng)的穩(wěn)定性和準確性有著明顯作用。
表1? 三種指標結果
測試情況 SD /(次/分) RMSE /(次/分) r
測量值 11.43
計算值 12.91 3.77 6.3%
無KLT 33.96 6.24 9.5%
無ICA 14.65 4.05 7.9%
無顏色空間轉(zhuǎn)換 58.70 10.34 36.5%
將用準確值減去各計算值得出的各部分誤差如圖8所示,其中紅線之間為測量值的95%置信區(qū)間,各點為不同數(shù)值的誤差分布情況,有部分數(shù)據(jù)重疊,圖8(a)為算法的整體測量誤差,可以看出基本分布在置信區(qū)間內(nèi)且相對集中地分布在誤差為0的基準線兩側,有少數(shù)誤差較大的特殊點。圖8(b)為去除顏色空間轉(zhuǎn)換的測量誤差,明顯有向上偏移的傾向,原因在于去除顏色空間轉(zhuǎn)換后,本文將綠色通道作為ICA盲源分離中信號選擇的參考信號,但單獨的綠色通道信號作為參考混雜有較多的噪聲信號,而紅色通道和藍色通道中包含的心率信號過少,導致最終分離出的信號有較大的誤差。圖8(c)為去除ICA盲源分離算法的誤差情況,相較于整體值圖中區(qū)別不明顯,從表1中也可看出ICA盲源分離主要起到濾除輕微的非線性噪聲的作用。圖8(d)為去除了KLT算法的誤差分布情況,波形與準確值大致相當,但誤差較大的情況較LT起到了有效的提高穩(wěn)定性的作用。
(a)測量誤差
(b)無顏色空間轉(zhuǎn)換測量誤差
(c)無ICA測量誤差
(d)無KLT測量誤差
圖8? 靜止場景下誤差分布圖
3.2? 運動干擾實驗
本實驗對15名測試對象在運動前后的狀態(tài)分別進行測試,以檢驗算法在不同運動狀態(tài)下的效果,其中男生7名,女生8名,年齡在12到60周歲不等。地點選擇室內(nèi),時間是白天,光照為自然光。
實驗采用的設備為羅技C920E攝像頭和樂普動態(tài)心電記錄儀ER2,幀率為30,分辨率為1 280×720。每名受試者測試兩組數(shù)據(jù),分別是平靜狀態(tài)和跳繩五十次后的運動狀態(tài)。表中計算值和測量值取該時間段內(nèi)的平均值。實驗結果如表2所示。
表2? 不同測試者的結果對比
性別 平靜狀態(tài)/(次/分) 運動結束狀態(tài)/(次/分)
計算值 測量值 計算值 測量值
女 85.5 86 140.6 139
女 74.5 79 117.7 120
男 80.8 85 115.7 120
女 95.7 93 110.7 115
女 98.8 104 140.6 141
女 89.7 88 125.8 130
女 113.8 115 137.7 144
男 83.8 83 116.7 116
男 89.7 88 134.6 138
女 79.2 80 89.1 92
男 59.5 62 96.2 95
女 80.2 81 134.2 130
男 93.6 88 120.7 122
男 92.2 88 132.8 133
男 91.1 90 128.3 130
平均誤差 2.5 2.6
均方根誤差 3.03 3.12
從表中可知,平靜狀態(tài)下的平均誤差為2.5,均方根誤差為3.03,運動結束狀態(tài)下平均誤差為2.6,均方根誤差為3.12。運動前后的計算心率誤差大致相當且都處于較低水平,因此可以認為算法的結果能夠很好地反映人體的心率變化。
3.3? 長時間的心率檢測
為了驗證本文所提出的方法具有穩(wěn)定性,設計一組時長為5 min的心率測試實驗,共計算得172個心率數(shù)據(jù),其平均誤差(MD)、均方根誤差(RMSE)和平均誤差率r如表3所示。
表3? 指標結果
測試時狀態(tài) MD RMSE /(次/分) r
平靜 2.34 4.34 5.9%
將實際測量值和計算值繪入同一坐標系下,如圖9所示,可以看出本文算法的計算結果與接觸式設備測量結果基本保持一致。
圖9? 長時間測量心率結果
4? 結? 論
本文針對受運動和光照變化干擾的人臉視頻,提出了一種基于獨立成分分析和小波變換的非接觸式心率檢測方法。對于追蹤到的人臉,轉(zhuǎn)換顏色空間后,利用ICA和小波變換除噪,以獲得較為純凈的心率信號。并從各個模塊方面解釋了算法的編程實現(xiàn)。最后,從三個指標方面對算法的準確性進行了評估。
實驗結果表明,無論是處于平靜狀態(tài)還是剛剛結束運動的狀態(tài),本文算法都能得到相對平穩(wěn)且準確的結果,適用于日常情況下的心率檢測。但是受限于KLT算法只在處理比較小的位移時有較好的跟蹤效果,當目標對象進行較大幅度運動時,計算結果將不再準確。
目前非接觸式心率檢測仍然屬于發(fā)展階段,因此本文的算法依然有很大的提升空間。在未來的研究中,可以考慮結合深度學習,克服包括難以捕捉的面部微小運動以及大幅度運動下運動模糊、面部跟蹤等干擾,進一步優(yōu)化算法和提升準確度。
參考文獻:
[1] 曹文靜,張金萍,馬建新,等.心率變異性臨床應用的研究進展 [J].實用心電學雜志,2022,31(2):137-143.
[2] NOBLE D. The surprising heart:a review of recent progress in cardiac electrophysiology [J].The Journal of Physiology,1984,353:1-50.
[3] 張帆,王文廉,王玉.近場通信技術下的無源心率檢測方法 [J].中國測試,2021,47(12):14-22.
[4] POH M,MCDUFF D J,PICARD R W,et al. Non-contact,automated cardiac pulse measurements using video imaging and blind source separation [J].Optics Express,2010,18(10):10762-10774.
[5] KOUSHKI E,TAYEBEE R,ESMDAEILI M. Nonlinear optical and photoacoustic properties of aqueous crystalline hemoglobin. Towards facile detection of hemoglobin concentration in blood [J/OL].Journal of Molecular Liquids,2020,325(6):115169.(2021-05-01).https://doi.org/10.1016/j.molliq.2020.115169.
[6] 陳白帆,蔡自興.基于尺度空間理論的Harris角點檢測 [J].中南大學學報:自然科學版,2005(5):37-40.
[7] 張富強.非接觸式體征參數(shù)監(jiān)測系統(tǒng)研究 [D].西安:西安電子科技大學,2021.
[8] 戴陽,鄭婷婷,楊雪.基于視頻放大與盲源分離的非接觸式心率檢測 [J].計算機系統(tǒng)應用,2021,30(1):228-234.
[9] 曾松德,鐘清華.FastICA與小波包分解相結合的人臉視頻心率檢測 [J].激光雜志,2015,36(11):48-51.
[10] 楊竹青,李勇,胡德文.獨立成析方法綜述 [J].自動化學報,2002,28(5):762-772.
作者簡介:陳聰聰(2002—),男,漢族,安徽蕪湖人,本科,研究方向:圖像處理。