可穿戴設備采集的心電信號(ECG)常因人體活動而混入不同程度的運動干擾。由于干擾信號的頻率與 ECG 信號的頻率相互重疊,使得 ECG 信號失真變形,從而影響心率檢測的準確率。本文針對現有心率檢測算法抗干擾能力的不足,提出了一種基于 ECG 信號粗粒化處理的心率檢測算法。首先對 ECG 信號預處理以濾除基線漂移和高頻干擾,然后運用信號壓縮方法對超過設定閾值的高幅度干擾進行抑制,隨后通過自適應峰值膨脹和波形重構技術對信號進行粗粒化處理,最后利用快速傅里葉變換對信號的頻譜進行分析并計算心率值。為了評估算法的性能,我們采集了 30 名受試者在靜息和不同運動狀態下的 ECG 信號,并將心率檢測結果與文獻報道的基于改進小波變換的 QRS 特征提取算法的檢測結果進行了對比。結果表明,本算法計算的心率值與真實值之間的相關系數為 0.999,高于小波變換法的結果(r = 0.971)。無論是在靜息(99.95% vs. 99.14%,P < 0.01)、步行(100% vs. 97.26%,P < 0.01)還是跑步(100% vs. 90.89%,P < 0.01)時,本算法的準確率均顯著高于小波變換法。此外,在跑步時,本算法的絕對誤差[0(0,1)vs. 1(0,1),P < 0.05]和相對誤差[0(0,0.59)vs. 0.52(0,0.72),P < 0.05]均顯著低于小波變換法。因此,本文提出的算法具有較高的準確率和較強的抗干擾能力,可移植到可穿戴設備中,實現日常活動以及運動狀態下的實時連續心率監測。
引用本文: 謝佳玲, 龔渝順, 魏良, 王娟, 李偉明, 李永勤. 一種針對可穿戴設備的抗運動干擾心率檢測算法. 生物醫學工程學雜志, 2021, 38(4): 764-773. doi: 10.7507/1001-5515.202011011 復制
引言
心血管疾病是全球范圍造成死亡的最主要原因。據世界衛生組織的報道,2016 年全球死于心血管疾病的人數多達 1 790 萬人,占慢性病總死亡人數的 43.67%[1]。研究表明,90% 以上的心血管疾病都是可以預防的[2]。心電信號(electrocardiogram,ECG)反映了心臟的電活動,其時序和形態特征包含豐富的生理和病理學信息[3]。在心血管疾病的檢測手段中,監測 ECG 信號是一種重要的方法[4]。QRS 波作為 ECG 信號中最明顯的波形,是確定和分析其他特征的基礎[5]。由于心血管疾病的發生具有無預兆和時間不確定性,因此有必要對高危人群進行長期監測,以捕獲短暫的、非持續性的異常心電[6]。傳統的心電監測設備在進行數據采集時會影響人體的自由活動,而且所使用的凝膠電極會隨著佩戴時間的增加而脫水,從而導致檢測到的 ECG 信號質量下降[7]。此外,這類電極會對人體皮膚產生刺激,嚴重降低使用的舒適性,因此不適用于長期佩戴[8]。近年來,隨著傳感器技術、微電子技術、新型材料研制技術和無線傳輸等技術的發展,實時、長期、便攜和舒適的人體心電監護已成為可能[9-10]。
心率是健康評估和疾病診斷的重要指標,可以通過穿戴式生理傳感技術對其進行連續動態的監測[11]。連續動態的心率監測可以實現對心血管疾病的早期預警和意外的風險評估[12-14];同時,心率可以作為人體運動生理負荷的客觀評價指標,在防止過高強度體育訓練傷害和幫助制定個性化健身計劃等方面都具有重要意義[15]。因此,基于 ECG 信號的心率檢測方法一直是可穿戴醫療健康領域的研究熱點[16]。由于大多數算法是通過提取相鄰 R 波峰之間的時間間隔來計算心率的,因此準確的心率檢測依賴于對 QRS 波的準確定位[17]。早期,Thakor 等[18]提出了一種中心頻率為 17 Hz、Q 值為 5 的帶通濾波器來增強 QRS 波。但這種硬件濾波存在成本、速度等方面的不足,并且在抑制噪聲的同時還會抑制 ECG 信號。隨著濾波技術的發展,出現了許多算法,如正交濾波算法、移動窗口積分算法、二階導數算法、FIR 濾波算法和基于小波的自適應算法等[19]。接著,Pan 等[20]提出了一種利用雙閾值檢測 ECG 中 QRS 波的算法。針對個體差異和干擾導致的檢測準確率低的問題,該算法采用了自適應閾值調整、“不應期”和“回溯”機制。該算法保留了閾值檢測算法易于實現和實時檢測的優點,但干擾嚴重時的檢測準確率還不夠高。之后,王文等[21]使用兩種不同性質的小波作為母小波對含有噪聲干擾的 ECG 信號進行多尺度的小波分解。為了更準確地檢測 QRS 波位置,他們在三個連續的尺度上進行了分析。這種方法計算量偏大,僅適用于非實時的分析。近年來,基于先前采樣點預測當前采樣點的神經網絡法為 QRS 波的檢測開辟了新思路,但這類算法需要進行大量的學習和訓練,而且所選擇的樣本需要具有代表性,這阻礙了該類方法的實際應用[22]。為了進一步提高心率檢測的準確率,研究人員采用了在單導聯信號上使用多種算法檢測 QRS 波、結合信號質量評估算法以及在多導聯信號上檢測 QRS 波等方法[23-24]。這些方法在一定程度上增加了計算量和信號采集的復雜度。
雖然現有的方法能夠準確地檢測出人體在靜息和一些低強度活動時的心率,但是在人體運動時,尤其是在高強度運動時,心率檢測的準確率還不夠高。運動狀態下影響心率檢測的主要原因有兩種:一是使用可穿戴心電采集設備記錄的動態 ECG 通常更容易受到肌電噪聲的影響。幅度過大的肌電噪聲會淹沒 R 波并影響 R 波檢測,從而導致心率計算誤差增大。二是干電極(織物電極)具有更大的接觸阻抗,對人體運動更加敏感[25]。這種電極與皮膚的相對位移變化很容易引起高幅度干擾,嚴重影響現有算法的檢測準確率。因此,為了實現運動狀態下心率的連續動態監測,急需提出一種具有更強抗干擾能力的檢測算法。
針對上述問題,本文提出了一種針對可穿戴心電設備的抗運動干擾的心率檢測算法。該算法不需要準確定位所有的 R 波,可用于存在高幅度干擾的信號,并且可以在運動狀態下進行準確的心率檢測。該算法為日常活動和運動環境下的可穿戴設備的實時、連續心率監測提供技術支持。
1 方法
1.1 數據來源
本研究利用課題組研制的可穿戴生理信號采集系統進行 ECG 信號的采集。心電采集模塊中高通濾波器和低通濾波器的截止頻率分別設置為 0.05 Hz 和 150 Hz。該系統采用柔性織物電極記錄單導聯 ECG 信號,采樣頻率為 250 Hz。采集的 ECG 信號保存在存儲卡中,便于滯后分析。本研究隨機選取年齡在 20~50 歲之間的經常參加體育鍛煉的 30 名男性受試者作為數據采集對象。所有受試者身體健康,無明顯心臟相關疾病史。實驗方案經中國人民解放軍陸軍軍醫大學醫學倫理委員會批準同意(批件號:AF/SC-08/1.0)和受試者的知情同意。
在受試者佩戴心電采集設備后,實驗員對設備進行檢查以確保系統正常工作。每位受試者分別完成靜息和運動狀態下的數據采集。運動包括步行(慢走和快走)和跑步(慢跑和快跑)兩種方式。具體數據采集流程如下:首先保持靜止 2 min,然后以 4 km/h 的參考速度慢走 400 m,接著以 6 km/h 的參考速度快走 400 m,之后以 8 km/h 的參考速度慢跑 400 m,最后以 12 km/h 的參考速度快跑 400 m。原則上步行結束后的休息時間為 1 min,跑步結束后休息時間可根據受試者的需求增加到 2~3 min。數據采集在陸軍軍醫大學體育場完成,采集過程中不限制受試者的其他活動(例如交談和擺動手臂等)。
1.2 信號分段與 R 峰標注
本研究通過板載的通用串行總線接口讀取存儲卡中的數據文件,并使用數據分析軟件 MATLAB 2018a(MathWorks Inc.,美國)將 ECG 信號截取為無重疊的 4 s 段。專業的醫生通過圖形界面(graphical user interface,GUI)導入數據并顯示 ECG 信號,單擊 R 峰出現位置以標注 R 峰,統計 RR 間期以計算標準心率。
GUI 程序會將點擊位置附近一定范圍內的數據最大值點作為 R 峰并給出標記。當基于最大值標注 R 峰的方法出現錯誤時,醫生可通過 GUI 自帶的數據游標工具進行手動校正。R 波判斷的標準為:R 波是 ECG 信號中幅度最大的子波,波形最陡峭,幅值上限在 2.50~3.00 mV 之間,相鄰 RR 間期差異較小,不應期閾值應大于 200 ms[26]。如果 4 s 的 ECG 信號中連續可見的 R 波個數小于 3,則認為無法給出該 ECG 數據段的標準心率,該段數據不納入后續實驗數據集。
標注后,符合標準的 ECG 數據段為 7 119 個,其中靜息、步行和跑步時的 ECG 數據段分別為 1 865、3 937 和 1 317 段。圖 1 顯示了靜息、步行和跑步時 ECG 信號的 R 峰標注樣例、平均 RR 間期(,單位 ms)和標準心率(
,單位 beat/min)。
如式(1)所示:

![]() |
1.3 心率檢測算法
本文提出的心率檢測算法包括四個步驟,分別為:信號預處理、高幅度干擾抑制、粗粒化處理和心率估算。算法流程如圖 2 所示,詳細流程如下。

步驟 1:信號預處理。首先,為了濾除 ECG 信號中的基線漂移和高頻干擾,選擇通帶范圍為 0.50~75 Hz 的帶通濾波器進行濾波;然后采用移動加權平均濾波器濾除信號中 5.50 Hz 以下的信號分量,得到經過預處理后的信號()。移動加權平均濾波器的窗寬長度如式(2)所示:
![]() |
其中,L 為窗寬長度, 為采樣頻率。本算法根據正常 QRS 波持續時間范圍為 0.06~0.10 s,將窗寬長度選擇為 0.08 s 內的采樣點個數。經上述信號預處理后,ECG 信號在濾除基線漂移和高頻干擾的同時突出了 R 波尖峰特征。
步驟 2:高幅度干擾抑制。當信號存在高幅度干擾時,信號的幅度會遠大于正常信號的幅度。這種干擾在時域上會導致 R 波定位不準確,在頻域上將改變能量占比,從而影響心率檢測。針對這類干擾,首先判斷信號 中是否存在高幅度干擾。判斷方法是:當信號的峰峰值(最大值與最小值之差,
)大于閾值(
)時,該段信號存在高幅度干擾。參考正常 ECG 信號的幅值范圍,我們將
設置為 4 mV。然后通過信號壓縮方法對高幅度干擾進行抑制。具體步驟如下:先對
進行滑動加窗處理,窗寬長度選擇為 L,移動步長為 1 個采樣點。在每個滑動窗內計算
,得到連續的
信號,以定位高幅度干擾的起止位置;然后以起止位置的中點為中心,左右拓寬窗口至起止距離的三倍,以獲取當前需要進行高幅度干擾抑制的起止位置和起止距離(
);隨后根據當前起止位置及其對應的
的值生成加權函數。加權函數如式(3)所示:
![]() |
其中, 為加權函數,
為當前需要抑制的高幅度干擾起止位置的距離,
為當前需抑制的高幅度干擾的峰峰值。最后將
與
相乘得到濾除干擾后的信號(
),如式(4)所示:
![]() |
如果高幅度干擾的總持續時間超過分析時間的一半,則認為該段信號受干擾影響嚴重,直接使用前 4 s 的心率替代當前的心率。
步驟 3:粗粒化處理。粗粒化處理是為了將尖峰位置信息放大,并將其轉換為更利于提取頻率的類正弦信號,具體分為兩個步驟。首先是峰值膨脹。對經過步驟 2 處理后的信號使用固定步長的滑動窗口,在每個滑動窗內計算 ,得到連續的
信號(
)。其中,窗寬長度為 L,步長為 1 個采樣點。接著利用信號
對 L 進行調整,使用調整后的窗寬(
)對信號
重復上述計算
的操作,得到占空比約為 50% 的類似周期矩形脈沖函數信號(
)。通過式(5)~(6)調整
:
![]() |
![]() |
其次是波形重構。采用窗寬長度分別為 和
的移動加權平均濾波器將信號
轉變成類正弦信號。
步驟 4:心率估算。對類正弦信號進行快速傅里葉變換(fast Fourier transform,FFT),以獲得幅度譜;提取譜峰對應的頻率 ;然后通過式(7)得到估算心率(
,單位 beat/min)。
![]() |
1.4 小波變換法
小波變換法的原理是根據小波系數中的模極值對之間的過零點與信號中的奇異點相對應的關系來確定 R 波的位置[27]。為提高 R 波的檢測準確率,研究人員選用不同的函數作為小波基函數,并附加誤檢和漏檢等抗干擾策略。
本文選擇了張清麗等[28]提出的一種改進小波的 QRS 特征提取算法與本文提出的算法進行比較。他們通過大量的實驗對比選擇與 ECG 波形最為相似的高斯平滑函數的二階導數(Mexican-hat 小波)作為基小波,采用連續小波變換對 ECG 進行 8 尺度的分解,選擇合適尺度進行模極值對的提取,并自適應地調整 R 波閾值,最后通過平均 RR 間期進行誤檢和漏檢的排除。
1.5 性能評價
本研究采用一致性檢查、線性相關系數、準確率、絕對誤差和相對誤差對算法的整體性能進行評估。
采用 Bland-Altman 分析圖評價估算值和真實值的一致性。采用皮爾遜相關系數評估估算值和真實值之間的線性相關度。
根據文獻[29]定義的標準,當估算心率值與標準心率值的差異小于 5 beat/min 時,該次心率檢測準確;當估算心率值與標準心率值的差異大于 5 beat/min 時,該次心率檢測不準確。
絕對誤差(AE)和相對誤差(RE)分別按式(8)和式(9)計算:
![]() |
![]() |
其中,、
分別為標準心率和估算心率。絕對誤差單位為 beat/min。
采用 SPSS 25.0 軟件進行統計學分析,首先采用 K-S 檢驗對計算結果進行正態分布檢驗。對于服從正態分布的數據,用均值 ± 標準差來表示,采用 t 檢驗進行均值的比較。對于非正態分布的數據,用中位數(M)、四分位數間距(IQR)來表示,采用 Wilcoxon 秩和檢驗進行組間比較。對于率的比較,數據依照計數資料的形式記錄,即例數/百分比[n(%)],采用卡方檢驗進行組間比較。檢驗水準為 0.05。
2 實驗結果
圖 3 顯示了使用本算法對含有高幅度干擾的 ECG 信號進行心率檢測的實例。從圖中可以看出,在原始 ECG 信號的 3~4 s 范圍內出現了高幅度干擾;預處理后的信號,干擾的幅度有所降低,但仍明顯高于其他峰值;高幅度干擾抑制后的信號保留了 R 峰信息,并且干擾得到了有效抑制;粗粒化處理后的信號平滑,主峰明顯,有利于頻率的提取。

圖 4 是本文算法的 Bland-Altman 分析結果圖,其一致性范圍為[? 1.34,2.06](標準差為 0.87 beat/min)。大部分的數據都在一致性界限內,證明了本文算法的估算心率與標準心率之間具有一致性。圖 5 是本文算法的估算值和真實值之間的皮爾遜相關分析結果,擬合直線為 (
),其中,Y 表示估算心率值,X 表示標準心率值,皮爾遜相關系數 r 為 0.999。結果表明,估算心率和標準心率之間高度相關。而小波變換法的 r 為 0.971,低于本算法的結果。從圖 4 的數據分布可以看出,靜息時的部分心率值高于 100 beat/min。這是因為這些心率是通過高強度運動結束后采集的 ECG 計算得出的。受試者步行時的心率與其步行速度、身體素質以及步行前是否進行高強度的體育活動有關。因此,在相同狀態下,圖中的心率分布范圍廣的現象并不是由算法計算錯誤引起的。


從圖 4 可以看到,在靜息狀態下,心率在 100 beat/min 附近出現了“離群值”。“離群值”的原始 ECG 信號如圖 6 所示,前 2 s 的標準心率為 119 beat/min,后 2 s 的標準心率為 82 beat/min,前 2 s 的心率明顯較快。我們對標準心率的定義是 4 s ECG 的平均心率,即 103 beat/min。本文提出的算法是計算能量占比最大的心率,即估算后 2 s 的心率,估算的心率為 82 beat/min。因此,圖中的“離群值”是由標準心率的定義與本文算法的計算特點之間的差異引起的。

表 1 列出了本文算法和小波變換法在靜息和運動狀態下準確率的比較結果。在靜息、步行和跑步時,本文算法的檢測準確率顯著高于小波變換法。本算法和小波變換法的準確率在靜息時分別為 99.95% 和 99.14%(χ2 = 13.30,P < 0.01),步行時分別為 100% 和 97.26%(χ2 = 109.50,P < 0.01),跑步時分別為 100% 和 90.89%(χ2 = 125.73,P < 0.01)。

在靜息和不同運動狀態下,兩種算法的絕對誤差和相對誤差均不服從正態分布。表 2 列出了本文算法和小波變換法分別在靜息、步行和跑步時的 AE 和 RE 的結果。由表 2 可知,當在靜息和步行時,兩種算法AE 和 RE 的差異沒有統計學意義(P > 0.05)。此時,ECG 受到的干擾較小,小波變換法可以準確地檢測出 R 波位置,本文提出的算法也可以準確地獲得信號頻率。隨著運動量的增加,兩種算法 AE 和 RE 的差異均有統計學意義(P < 0.01)。

在本實驗中,兩種算法估算的心率在無明顯干擾的情況下基本一致。如圖 7a 所示,在無明顯干擾的情況下,該段信號的標準心率為 76 beat/min。使用小波變換法時,可以正確定位 R 波(定位的 R 波在圖 7 中用紅色豎線標記),估算的心率為 76 beat/min。本文算法估算的心率為 73 beat/min,絕對誤差為 3 beat/min,估算的心率能夠反映受試者的真實心率。

a. 無明顯干擾;b. 明顯干擾
Figure7. Heart rate calculated from uncorrupted and corrupted ECGs using two different methodsa. without obvious interference; b. with obvious interference
在含有運動干擾的情況下,R 波可能被淹沒,從而導致 R 波定位錯誤。如圖 7b 所示,在明顯干擾的情況下,小波變換法對 R 波定位錯誤導致絕對誤差增大,而本文提出的算法可以在少量 R 波被淹沒的情況下估算心率。該段 ECG 信號中有 10 個 R 波,標準心率為 148 beat/min。小波變換法在 2~4 s 時間段內漏檢了 R 波,估算的心率為 115 beat/min,絕對誤差為 33 beat/min,此時估算的心率不準確。而本文算法估算的心率為 149 beat/min,絕對誤差為 1 beat/min,此時估算的心率準確。結果表明,使用本文提出的算法估算心率的結果優于小波變換法。
與傳統的氯化銀電極相比,織物電極更容易與皮膚發生相對移動,從而引入不必要的干擾。因此,在運動狀態下使用織物電極記錄的 ECG 信號來檢測心率通常更具有挑戰性。本研究提出的高幅度干擾抑制模塊有效地減少了由此干擾引起的心率估算錯誤。如圖 8 所示,原始 ECG 信號的標準心率為 122 beat/min。由于存在高幅度干擾,小波變換法對 R 波定位發生了明顯錯誤。此時,估算的心率為 82 beat/min,絕對誤差為 40 beat/min。本文提出的算法在未加入高幅度干擾抑制的情況下,估算的心率為 66 beat/min,絕對誤差也非常大。加入高幅度干擾抑制后,估算的心率為 122 beat/min,與標準心率一致,從而驗證了高幅度干擾抑制模塊的有效性。

a. 未加入高幅度干擾抑制模塊;b. 加入了高幅度干擾抑制模塊
Figure8. Illustration of heart rate detection without and with the use of high amplitude interference suppressiona. without high amplitude interference suppression; b. with high amplitude interference suppression
在計算效率方面,小波變換法和本文提出的算法在計算 4 s ECG 信號的心率時具有相似的時間復雜度[(7.83 ± 3.57)ms vs.(10.26 ± 2.66)ms],均能實現實時的心率監測。
連續的心率監測有助于記錄和分析心率的變化趨勢,常用于心臟監護和疾病的預警[30]。圖 9 給出了一名受試者在體育場自由活動時的心率變化曲線。圖中估算心率值和標準心率值基本吻合,證明本文提出的算法能夠在日常活動中準確地檢測心率。

3 討論與結論
本研究針對運動狀態下利用可穿戴設備記錄的 ECG 信號心率檢測準確率還不夠高的問題,提出了一種基于粗粒化處理的心率檢測算法。該算法首先通過濾除其他波的成分來突出 R 波信息,然后加入高幅度干擾抑制模塊對 ECG 信號中的高幅度干擾進行抑制,接著通過自適應峰值膨脹和波形重構將處理后的信號轉變為利于提取頻率的類正弦信號,最后利用 FFT 對信號的頻譜進行分析并計算心率值。采用 30 名受試者在不同狀態下采集的 ECG 信號來驗證算法性能。實驗結果表明,本算法估算的心率與標準心率之間有很好的一致性。同時,在跑步等其他高強度運動情況下,該算法也能保證較低的誤差水平和較高的準確率。
傳統的通過 ECG 信號檢測心率的方法主要是基于 QRS 波檢測的[18-23]。這些方法的局限在于少量 QRS 波的漏檢或者誤檢都將導致心率估算錯誤。與傳統的心率檢測方法相比,本文提出的算法主要有以下創新:一是該算法通過濾波、膨脹、重構等方法將信號轉變成反映峰值位置的周期信號,從頻譜上檢測心率。它解決了由于 ECG 信號中不同波和干擾的頻率成分混雜,難以直接從頻譜中提取心率對應頻率的問題。二是該算法不要求準確定位每個 R 波位置。即使在其他方法定位 R 波出錯的情況下,這種算法將能量占比最大的心率作為心率估算值,仍能給出相對準確的心率參考。該算法能用于少量 R 波被干擾淹沒的信號段,提高了信號的利用率。三是算法加入的高幅度干擾抑制模塊能有效利用存在少量高幅度干擾的信號,具有更強的抗干擾能力。
同時,與神經網絡法相比,該算法的計算效率更高,能實現心率的實時計算。與閾值檢測法和小波變換法相比,該算法抗干擾效果明顯。Terbizan 等[31]比較了 7 種商用心率監測設備的檢測準確率,發現當測試速度達到 9.60 km/h 時,所有的心率監測設備均無效,而本文提出的算法可在參考速度為 12 km/h 時進行心率監測。該算法為提高商用心率監測設備的監測準確率提供了一種新方法。實驗結果還表明,在處理心律不齊的 ECG 信號時,該算法的估算結果與其他算法有較大的差異,有望通過這種心率的“突變”來捕捉心律不齊的發生。
本文所用數據的標準心率都是可以手動計算的,但在實際的處理中,存在因 ECG 信號受干擾過大而無法計算標準心率的情況。在這種情況下,心率變化曲線中的“離群值”可能是由心律不齊或者心率估算錯誤引起的。雖然本文提出的算法比定位 R 波的算法具有更強的抗干擾能力,但在心率對應的譜峰低于干擾成分對應的譜峰或被干擾淹沒的情況下,本算法就難以準確地檢測心率。由于正常心率的變化在一定范圍內,因此我們可以根據連續心率的時序特征增加更多的抗干擾策略,以進一步提高算法的抗干擾能力,這也是我們未來的研究重點。
利益沖突聲明:本文全體作者均聲明不存在利益沖突。
引言
心血管疾病是全球范圍造成死亡的最主要原因。據世界衛生組織的報道,2016 年全球死于心血管疾病的人數多達 1 790 萬人,占慢性病總死亡人數的 43.67%[1]。研究表明,90% 以上的心血管疾病都是可以預防的[2]。心電信號(electrocardiogram,ECG)反映了心臟的電活動,其時序和形態特征包含豐富的生理和病理學信息[3]。在心血管疾病的檢測手段中,監測 ECG 信號是一種重要的方法[4]。QRS 波作為 ECG 信號中最明顯的波形,是確定和分析其他特征的基礎[5]。由于心血管疾病的發生具有無預兆和時間不確定性,因此有必要對高危人群進行長期監測,以捕獲短暫的、非持續性的異常心電[6]。傳統的心電監測設備在進行數據采集時會影響人體的自由活動,而且所使用的凝膠電極會隨著佩戴時間的增加而脫水,從而導致檢測到的 ECG 信號質量下降[7]。此外,這類電極會對人體皮膚產生刺激,嚴重降低使用的舒適性,因此不適用于長期佩戴[8]。近年來,隨著傳感器技術、微電子技術、新型材料研制技術和無線傳輸等技術的發展,實時、長期、便攜和舒適的人體心電監護已成為可能[9-10]。
心率是健康評估和疾病診斷的重要指標,可以通過穿戴式生理傳感技術對其進行連續動態的監測[11]。連續動態的心率監測可以實現對心血管疾病的早期預警和意外的風險評估[12-14];同時,心率可以作為人體運動生理負荷的客觀評價指標,在防止過高強度體育訓練傷害和幫助制定個性化健身計劃等方面都具有重要意義[15]。因此,基于 ECG 信號的心率檢測方法一直是可穿戴醫療健康領域的研究熱點[16]。由于大多數算法是通過提取相鄰 R 波峰之間的時間間隔來計算心率的,因此準確的心率檢測依賴于對 QRS 波的準確定位[17]。早期,Thakor 等[18]提出了一種中心頻率為 17 Hz、Q 值為 5 的帶通濾波器來增強 QRS 波。但這種硬件濾波存在成本、速度等方面的不足,并且在抑制噪聲的同時還會抑制 ECG 信號。隨著濾波技術的發展,出現了許多算法,如正交濾波算法、移動窗口積分算法、二階導數算法、FIR 濾波算法和基于小波的自適應算法等[19]。接著,Pan 等[20]提出了一種利用雙閾值檢測 ECG 中 QRS 波的算法。針對個體差異和干擾導致的檢測準確率低的問題,該算法采用了自適應閾值調整、“不應期”和“回溯”機制。該算法保留了閾值檢測算法易于實現和實時檢測的優點,但干擾嚴重時的檢測準確率還不夠高。之后,王文等[21]使用兩種不同性質的小波作為母小波對含有噪聲干擾的 ECG 信號進行多尺度的小波分解。為了更準確地檢測 QRS 波位置,他們在三個連續的尺度上進行了分析。這種方法計算量偏大,僅適用于非實時的分析。近年來,基于先前采樣點預測當前采樣點的神經網絡法為 QRS 波的檢測開辟了新思路,但這類算法需要進行大量的學習和訓練,而且所選擇的樣本需要具有代表性,這阻礙了該類方法的實際應用[22]。為了進一步提高心率檢測的準確率,研究人員采用了在單導聯信號上使用多種算法檢測 QRS 波、結合信號質量評估算法以及在多導聯信號上檢測 QRS 波等方法[23-24]。這些方法在一定程度上增加了計算量和信號采集的復雜度。
雖然現有的方法能夠準確地檢測出人體在靜息和一些低強度活動時的心率,但是在人體運動時,尤其是在高強度運動時,心率檢測的準確率還不夠高。運動狀態下影響心率檢測的主要原因有兩種:一是使用可穿戴心電采集設備記錄的動態 ECG 通常更容易受到肌電噪聲的影響。幅度過大的肌電噪聲會淹沒 R 波并影響 R 波檢測,從而導致心率計算誤差增大。二是干電極(織物電極)具有更大的接觸阻抗,對人體運動更加敏感[25]。這種電極與皮膚的相對位移變化很容易引起高幅度干擾,嚴重影響現有算法的檢測準確率。因此,為了實現運動狀態下心率的連續動態監測,急需提出一種具有更強抗干擾能力的檢測算法。
針對上述問題,本文提出了一種針對可穿戴心電設備的抗運動干擾的心率檢測算法。該算法不需要準確定位所有的 R 波,可用于存在高幅度干擾的信號,并且可以在運動狀態下進行準確的心率檢測。該算法為日常活動和運動環境下的可穿戴設備的實時、連續心率監測提供技術支持。
1 方法
1.1 數據來源
本研究利用課題組研制的可穿戴生理信號采集系統進行 ECG 信號的采集。心電采集模塊中高通濾波器和低通濾波器的截止頻率分別設置為 0.05 Hz 和 150 Hz。該系統采用柔性織物電極記錄單導聯 ECG 信號,采樣頻率為 250 Hz。采集的 ECG 信號保存在存儲卡中,便于滯后分析。本研究隨機選取年齡在 20~50 歲之間的經常參加體育鍛煉的 30 名男性受試者作為數據采集對象。所有受試者身體健康,無明顯心臟相關疾病史。實驗方案經中國人民解放軍陸軍軍醫大學醫學倫理委員會批準同意(批件號:AF/SC-08/1.0)和受試者的知情同意。
在受試者佩戴心電采集設備后,實驗員對設備進行檢查以確保系統正常工作。每位受試者分別完成靜息和運動狀態下的數據采集。運動包括步行(慢走和快走)和跑步(慢跑和快跑)兩種方式。具體數據采集流程如下:首先保持靜止 2 min,然后以 4 km/h 的參考速度慢走 400 m,接著以 6 km/h 的參考速度快走 400 m,之后以 8 km/h 的參考速度慢跑 400 m,最后以 12 km/h 的參考速度快跑 400 m。原則上步行結束后的休息時間為 1 min,跑步結束后休息時間可根據受試者的需求增加到 2~3 min。數據采集在陸軍軍醫大學體育場完成,采集過程中不限制受試者的其他活動(例如交談和擺動手臂等)。
1.2 信號分段與 R 峰標注
本研究通過板載的通用串行總線接口讀取存儲卡中的數據文件,并使用數據分析軟件 MATLAB 2018a(MathWorks Inc.,美國)將 ECG 信號截取為無重疊的 4 s 段。專業的醫生通過圖形界面(graphical user interface,GUI)導入數據并顯示 ECG 信號,單擊 R 峰出現位置以標注 R 峰,統計 RR 間期以計算標準心率。
GUI 程序會將點擊位置附近一定范圍內的數據最大值點作為 R 峰并給出標記。當基于最大值標注 R 峰的方法出現錯誤時,醫生可通過 GUI 自帶的數據游標工具進行手動校正。R 波判斷的標準為:R 波是 ECG 信號中幅度最大的子波,波形最陡峭,幅值上限在 2.50~3.00 mV 之間,相鄰 RR 間期差異較小,不應期閾值應大于 200 ms[26]。如果 4 s 的 ECG 信號中連續可見的 R 波個數小于 3,則認為無法給出該 ECG 數據段的標準心率,該段數據不納入后續實驗數據集。
標注后,符合標準的 ECG 數據段為 7 119 個,其中靜息、步行和跑步時的 ECG 數據段分別為 1 865、3 937 和 1 317 段。圖 1 顯示了靜息、步行和跑步時 ECG 信號的 R 峰標注樣例、平均 RR 間期(,單位 ms)和標準心率(
,單位 beat/min)。
如式(1)所示:

![]() |
1.3 心率檢測算法
本文提出的心率檢測算法包括四個步驟,分別為:信號預處理、高幅度干擾抑制、粗粒化處理和心率估算。算法流程如圖 2 所示,詳細流程如下。

步驟 1:信號預處理。首先,為了濾除 ECG 信號中的基線漂移和高頻干擾,選擇通帶范圍為 0.50~75 Hz 的帶通濾波器進行濾波;然后采用移動加權平均濾波器濾除信號中 5.50 Hz 以下的信號分量,得到經過預處理后的信號()。移動加權平均濾波器的窗寬長度如式(2)所示:
![]() |
其中,L 為窗寬長度, 為采樣頻率。本算法根據正常 QRS 波持續時間范圍為 0.06~0.10 s,將窗寬長度選擇為 0.08 s 內的采樣點個數。經上述信號預處理后,ECG 信號在濾除基線漂移和高頻干擾的同時突出了 R 波尖峰特征。
步驟 2:高幅度干擾抑制。當信號存在高幅度干擾時,信號的幅度會遠大于正常信號的幅度。這種干擾在時域上會導致 R 波定位不準確,在頻域上將改變能量占比,從而影響心率檢測。針對這類干擾,首先判斷信號 中是否存在高幅度干擾。判斷方法是:當信號的峰峰值(最大值與最小值之差,
)大于閾值(
)時,該段信號存在高幅度干擾。參考正常 ECG 信號的幅值范圍,我們將
設置為 4 mV。然后通過信號壓縮方法對高幅度干擾進行抑制。具體步驟如下:先對
進行滑動加窗處理,窗寬長度選擇為 L,移動步長為 1 個采樣點。在每個滑動窗內計算
,得到連續的
信號,以定位高幅度干擾的起止位置;然后以起止位置的中點為中心,左右拓寬窗口至起止距離的三倍,以獲取當前需要進行高幅度干擾抑制的起止位置和起止距離(
);隨后根據當前起止位置及其對應的
的值生成加權函數。加權函數如式(3)所示:
![]() |
其中, 為加權函數,
為當前需要抑制的高幅度干擾起止位置的距離,
為當前需抑制的高幅度干擾的峰峰值。最后將
與
相乘得到濾除干擾后的信號(
),如式(4)所示:
![]() |
如果高幅度干擾的總持續時間超過分析時間的一半,則認為該段信號受干擾影響嚴重,直接使用前 4 s 的心率替代當前的心率。
步驟 3:粗粒化處理。粗粒化處理是為了將尖峰位置信息放大,并將其轉換為更利于提取頻率的類正弦信號,具體分為兩個步驟。首先是峰值膨脹。對經過步驟 2 處理后的信號使用固定步長的滑動窗口,在每個滑動窗內計算 ,得到連續的
信號(
)。其中,窗寬長度為 L,步長為 1 個采樣點。接著利用信號
對 L 進行調整,使用調整后的窗寬(
)對信號
重復上述計算
的操作,得到占空比約為 50% 的類似周期矩形脈沖函數信號(
)。通過式(5)~(6)調整
:
![]() |
![]() |
其次是波形重構。采用窗寬長度分別為 和
的移動加權平均濾波器將信號
轉變成類正弦信號。
步驟 4:心率估算。對類正弦信號進行快速傅里葉變換(fast Fourier transform,FFT),以獲得幅度譜;提取譜峰對應的頻率 ;然后通過式(7)得到估算心率(
,單位 beat/min)。
![]() |
1.4 小波變換法
小波變換法的原理是根據小波系數中的模極值對之間的過零點與信號中的奇異點相對應的關系來確定 R 波的位置[27]。為提高 R 波的檢測準確率,研究人員選用不同的函數作為小波基函數,并附加誤檢和漏檢等抗干擾策略。
本文選擇了張清麗等[28]提出的一種改進小波的 QRS 特征提取算法與本文提出的算法進行比較。他們通過大量的實驗對比選擇與 ECG 波形最為相似的高斯平滑函數的二階導數(Mexican-hat 小波)作為基小波,采用連續小波變換對 ECG 進行 8 尺度的分解,選擇合適尺度進行模極值對的提取,并自適應地調整 R 波閾值,最后通過平均 RR 間期進行誤檢和漏檢的排除。
1.5 性能評價
本研究采用一致性檢查、線性相關系數、準確率、絕對誤差和相對誤差對算法的整體性能進行評估。
采用 Bland-Altman 分析圖評價估算值和真實值的一致性。采用皮爾遜相關系數評估估算值和真實值之間的線性相關度。
根據文獻[29]定義的標準,當估算心率值與標準心率值的差異小于 5 beat/min 時,該次心率檢測準確;當估算心率值與標準心率值的差異大于 5 beat/min 時,該次心率檢測不準確。
絕對誤差(AE)和相對誤差(RE)分別按式(8)和式(9)計算:
![]() |
![]() |
其中,、
分別為標準心率和估算心率。絕對誤差單位為 beat/min。
采用 SPSS 25.0 軟件進行統計學分析,首先采用 K-S 檢驗對計算結果進行正態分布檢驗。對于服從正態分布的數據,用均值 ± 標準差來表示,采用 t 檢驗進行均值的比較。對于非正態分布的數據,用中位數(M)、四分位數間距(IQR)來表示,采用 Wilcoxon 秩和檢驗進行組間比較。對于率的比較,數據依照計數資料的形式記錄,即例數/百分比[n(%)],采用卡方檢驗進行組間比較。檢驗水準為 0.05。
2 實驗結果
圖 3 顯示了使用本算法對含有高幅度干擾的 ECG 信號進行心率檢測的實例。從圖中可以看出,在原始 ECG 信號的 3~4 s 范圍內出現了高幅度干擾;預處理后的信號,干擾的幅度有所降低,但仍明顯高于其他峰值;高幅度干擾抑制后的信號保留了 R 峰信息,并且干擾得到了有效抑制;粗粒化處理后的信號平滑,主峰明顯,有利于頻率的提取。

圖 4 是本文算法的 Bland-Altman 分析結果圖,其一致性范圍為[? 1.34,2.06](標準差為 0.87 beat/min)。大部分的數據都在一致性界限內,證明了本文算法的估算心率與標準心率之間具有一致性。圖 5 是本文算法的估算值和真實值之間的皮爾遜相關分析結果,擬合直線為 (
),其中,Y 表示估算心率值,X 表示標準心率值,皮爾遜相關系數 r 為 0.999。結果表明,估算心率和標準心率之間高度相關。而小波變換法的 r 為 0.971,低于本算法的結果。從圖 4 的數據分布可以看出,靜息時的部分心率值高于 100 beat/min。這是因為這些心率是通過高強度運動結束后采集的 ECG 計算得出的。受試者步行時的心率與其步行速度、身體素質以及步行前是否進行高強度的體育活動有關。因此,在相同狀態下,圖中的心率分布范圍廣的現象并不是由算法計算錯誤引起的。


從圖 4 可以看到,在靜息狀態下,心率在 100 beat/min 附近出現了“離群值”。“離群值”的原始 ECG 信號如圖 6 所示,前 2 s 的標準心率為 119 beat/min,后 2 s 的標準心率為 82 beat/min,前 2 s 的心率明顯較快。我們對標準心率的定義是 4 s ECG 的平均心率,即 103 beat/min。本文提出的算法是計算能量占比最大的心率,即估算后 2 s 的心率,估算的心率為 82 beat/min。因此,圖中的“離群值”是由標準心率的定義與本文算法的計算特點之間的差異引起的。

表 1 列出了本文算法和小波變換法在靜息和運動狀態下準確率的比較結果。在靜息、步行和跑步時,本文算法的檢測準確率顯著高于小波變換法。本算法和小波變換法的準確率在靜息時分別為 99.95% 和 99.14%(χ2 = 13.30,P < 0.01),步行時分別為 100% 和 97.26%(χ2 = 109.50,P < 0.01),跑步時分別為 100% 和 90.89%(χ2 = 125.73,P < 0.01)。

在靜息和不同運動狀態下,兩種算法的絕對誤差和相對誤差均不服從正態分布。表 2 列出了本文算法和小波變換法分別在靜息、步行和跑步時的 AE 和 RE 的結果。由表 2 可知,當在靜息和步行時,兩種算法AE 和 RE 的差異沒有統計學意義(P > 0.05)。此時,ECG 受到的干擾較小,小波變換法可以準確地檢測出 R 波位置,本文提出的算法也可以準確地獲得信號頻率。隨著運動量的增加,兩種算法 AE 和 RE 的差異均有統計學意義(P < 0.01)。

在本實驗中,兩種算法估算的心率在無明顯干擾的情況下基本一致。如圖 7a 所示,在無明顯干擾的情況下,該段信號的標準心率為 76 beat/min。使用小波變換法時,可以正確定位 R 波(定位的 R 波在圖 7 中用紅色豎線標記),估算的心率為 76 beat/min。本文算法估算的心率為 73 beat/min,絕對誤差為 3 beat/min,估算的心率能夠反映受試者的真實心率。

a. 無明顯干擾;b. 明顯干擾
Figure7. Heart rate calculated from uncorrupted and corrupted ECGs using two different methodsa. without obvious interference; b. with obvious interference
在含有運動干擾的情況下,R 波可能被淹沒,從而導致 R 波定位錯誤。如圖 7b 所示,在明顯干擾的情況下,小波變換法對 R 波定位錯誤導致絕對誤差增大,而本文提出的算法可以在少量 R 波被淹沒的情況下估算心率。該段 ECG 信號中有 10 個 R 波,標準心率為 148 beat/min。小波變換法在 2~4 s 時間段內漏檢了 R 波,估算的心率為 115 beat/min,絕對誤差為 33 beat/min,此時估算的心率不準確。而本文算法估算的心率為 149 beat/min,絕對誤差為 1 beat/min,此時估算的心率準確。結果表明,使用本文提出的算法估算心率的結果優于小波變換法。
與傳統的氯化銀電極相比,織物電極更容易與皮膚發生相對移動,從而引入不必要的干擾。因此,在運動狀態下使用織物電極記錄的 ECG 信號來檢測心率通常更具有挑戰性。本研究提出的高幅度干擾抑制模塊有效地減少了由此干擾引起的心率估算錯誤。如圖 8 所示,原始 ECG 信號的標準心率為 122 beat/min。由于存在高幅度干擾,小波變換法對 R 波定位發生了明顯錯誤。此時,估算的心率為 82 beat/min,絕對誤差為 40 beat/min。本文提出的算法在未加入高幅度干擾抑制的情況下,估算的心率為 66 beat/min,絕對誤差也非常大。加入高幅度干擾抑制后,估算的心率為 122 beat/min,與標準心率一致,從而驗證了高幅度干擾抑制模塊的有效性。

a. 未加入高幅度干擾抑制模塊;b. 加入了高幅度干擾抑制模塊
Figure8. Illustration of heart rate detection without and with the use of high amplitude interference suppressiona. without high amplitude interference suppression; b. with high amplitude interference suppression
在計算效率方面,小波變換法和本文提出的算法在計算 4 s ECG 信號的心率時具有相似的時間復雜度[(7.83 ± 3.57)ms vs.(10.26 ± 2.66)ms],均能實現實時的心率監測。
連續的心率監測有助于記錄和分析心率的變化趨勢,常用于心臟監護和疾病的預警[30]。圖 9 給出了一名受試者在體育場自由活動時的心率變化曲線。圖中估算心率值和標準心率值基本吻合,證明本文提出的算法能夠在日常活動中準確地檢測心率。

3 討論與結論
本研究針對運動狀態下利用可穿戴設備記錄的 ECG 信號心率檢測準確率還不夠高的問題,提出了一種基于粗粒化處理的心率檢測算法。該算法首先通過濾除其他波的成分來突出 R 波信息,然后加入高幅度干擾抑制模塊對 ECG 信號中的高幅度干擾進行抑制,接著通過自適應峰值膨脹和波形重構將處理后的信號轉變為利于提取頻率的類正弦信號,最后利用 FFT 對信號的頻譜進行分析并計算心率值。采用 30 名受試者在不同狀態下采集的 ECG 信號來驗證算法性能。實驗結果表明,本算法估算的心率與標準心率之間有很好的一致性。同時,在跑步等其他高強度運動情況下,該算法也能保證較低的誤差水平和較高的準確率。
傳統的通過 ECG 信號檢測心率的方法主要是基于 QRS 波檢測的[18-23]。這些方法的局限在于少量 QRS 波的漏檢或者誤檢都將導致心率估算錯誤。與傳統的心率檢測方法相比,本文提出的算法主要有以下創新:一是該算法通過濾波、膨脹、重構等方法將信號轉變成反映峰值位置的周期信號,從頻譜上檢測心率。它解決了由于 ECG 信號中不同波和干擾的頻率成分混雜,難以直接從頻譜中提取心率對應頻率的問題。二是該算法不要求準確定位每個 R 波位置。即使在其他方法定位 R 波出錯的情況下,這種算法將能量占比最大的心率作為心率估算值,仍能給出相對準確的心率參考。該算法能用于少量 R 波被干擾淹沒的信號段,提高了信號的利用率。三是算法加入的高幅度干擾抑制模塊能有效利用存在少量高幅度干擾的信號,具有更強的抗干擾能力。
同時,與神經網絡法相比,該算法的計算效率更高,能實現心率的實時計算。與閾值檢測法和小波變換法相比,該算法抗干擾效果明顯。Terbizan 等[31]比較了 7 種商用心率監測設備的檢測準確率,發現當測試速度達到 9.60 km/h 時,所有的心率監測設備均無效,而本文提出的算法可在參考速度為 12 km/h 時進行心率監測。該算法為提高商用心率監測設備的監測準確率提供了一種新方法。實驗結果還表明,在處理心律不齊的 ECG 信號時,該算法的估算結果與其他算法有較大的差異,有望通過這種心率的“突變”來捕捉心律不齊的發生。
本文所用數據的標準心率都是可以手動計算的,但在實際的處理中,存在因 ECG 信號受干擾過大而無法計算標準心率的情況。在這種情況下,心率變化曲線中的“離群值”可能是由心律不齊或者心率估算錯誤引起的。雖然本文提出的算法比定位 R 波的算法具有更強的抗干擾能力,但在心率對應的譜峰低于干擾成分對應的譜峰或被干擾淹沒的情況下,本算法就難以準確地檢測心率。由于正常心率的變化在一定范圍內,因此我們可以根據連續心率的時序特征增加更多的抗干擾策略,以進一步提高算法的抗干擾能力,這也是我們未來的研究重點。
利益沖突聲明:本文全體作者均聲明不存在利益沖突。