什麼是 rPPG?
PPG(Photoplethysmography,光體積變化描記法)是一種用光來偵測血液脈動的技術。你的智慧手錶背面那個綠色 LED 加上光感測器,就是一組 PPG 裝置——它必須緊貼皮膚才能量測。
rPPG(remote PPG)把這件事搬到了遠端:用一台普通的 RGB 攝影機,在不接觸皮膚的情況下,從臉部影像的微小色彩變化中提取心率訊號。聽起來不可思議,但背後有扎實的光學和訊號處理基礎。
光學原理:為什麼攝影機「看得到」心跳?
光打到皮膚後,會發生兩件事:
- 鏡面反射(Specular Reflection):光直接從皮膚表面彈回來,就像光打到鏡子一樣。這部分反射的光和血液無關,是我們不想要的雜訊。
- 漫射反射(Diffuse Reflection):光穿透皮膚表層,進入真皮層與微血管交互作用後再散射出來。這部分的光攜帶了血液的資訊。
關鍵在於血液中的 血紅素(Hemoglobin)。血紅素對不同波長的光有不同的吸收率,其中對綠光(約 540nm)的吸收特別強。每次心跳,心臟將血液打入微血管,局部血量增加,綠光被吸收得更多,反射回攝影機的綠光就微幅減少。這個週期性的亮度變化,就是 rPPG 訊號的來源。
變化幅度非常小,大約只佔整體亮度的 0.1%~2%,肉眼完全無法察覺,但攝影機的數位感光元件可以精確記錄。
訊號處理流程
從攝影機拍到的影片到最終算出心率,大致經過以下步驟:
1. 擷取影像與定位臉部
首先用人臉偵測演算法(例如 Haar Cascade 或深度學習模型)在每個畫面中找到臉的位置,並框出感興趣區域(ROI,Region of Interest),通常選額頭或臉頰,因為這些部位血管較豐富且較少毛髮遮擋。
2. 提取 RGB 色彩訊號
對 ROI 內所有像素取平均值,得到每個畫面的 R、G、B 三個通道數值。把 30 秒的影片(假設 30fps)串起來,就會得到三條各 900 個數據點的時間序列。
3. 訊號分離與去雜訊
原始的 RGB 訊號裡混雜了很多雜訊:環境光變化、頭部移動、攝影機本身的電子雜訊等等。這裡需要用演算法把心跳訊號從雜訊中分離出來。
一個經典的方法是 ICA(Independent Component Analysis,獨立成分分析)。概念上,ICA 假設 R、G、B 三個通道收到的訊號,是由幾個「獨立來源」混合而成的(其中一個來源就是心跳造成的血量變化)。ICA 透過數學運算,嘗試把這些來源「拆開」,還原出各自獨立的訊號,再從中挑出心跳那一組。
除了 ICA,後來的研究也發展出 CHROM、POS 等演算法。這些方法利用已知的皮膚光學特性,設計特定的色彩通道組合方式,在效果和計算速度上都有所改進。
4. 頻率分析與心率計算
得到乾淨的脈動訊號後,對它做 傅立葉轉換(FFT)——也就是把時間域的訊號轉換成頻率域,看哪個頻率的振幅最大。正常人的心率大約在每分鐘 60~100 下,對應頻率為 1~1.67 Hz。頻譜上最高峰對應的頻率,乘以 60,就是估算出的心率(bpm)。
應用場景
- 非接觸式健康監測:對燒燙傷患者、新生兒等不適合貼感測器的族群特別有價值。
- 駕駛安全:車內攝影機可持續監測駕駛的心率與疲勞狀態,在異常時發出警示。
- 遠距醫療:透過視訊鏡頭就能初步評估病患的心率,降低就醫門檻。
- 情緒與壓力偵測:心率變異度(HRV)與壓力、情緒狀態相關,rPPG 有潛力用於心理健康評估。
目前的限制
rPPG 還不是萬能的。幾個主要挑戰:
- 環境光線變化:日光燈閃爍、陽光忽明忽暗都會產生干擾,和心跳訊號混在一起。
- 受測者移動:頭部晃動會改變 ROI 的位置和光線角度,嚴重影響訊號品質。
- 膚色差異:較深的膚色因黑色素吸收較多光線,可反射的訊號較弱,演算法需要額外校正。
- 即時運算需求:要在手機或嵌入式裝置上即時處理,對計算效能是一大考驗。
這些問題正是目前研究的活躍方向。隨著深度學習的介入,近年已有不少基於神經網路的 rPPG 方法,在準確度和抗干擾能力上都有顯著進步。
延伸概念:主成分分析 · 宿主-病原體交互作用 · 物種交互作用 · 藥物交互作用 · 深度學習在生物 · 蛋白質-蛋白質交互作用 · 交互作用體 · 血紅素與氧結合 · 蛋白質分析方法


