博客 心率 · rPPG · Apple Health

用手机摄像头测量心率:原理是什么,准确度究竟如何

基于摄像头的心率测量运用了光电容积描记法(PPG),这与脉搏血氧仪所用的光学原理相同。以下是关于它能做什么、不能做什么的真实情况。

身边没有 Apple Watch 或胸带心率带的时候,手机摄像头依然能大致告诉你此刻的心率。把指尖贴在后置镜头上,或者用前置摄像头对准脸部,不到一分钟,应用就能把它捕捉到的光线和肤色的细微闪烁转换成一个心率读数。这是信息性内容,不是医疗建议——手机摄像头给出的是一个估算值,而不是一次测量,这也不是对任何情况的诊断。在你信任这样一个数字之前,最值得追问的诚实问题是:它究竟有多接近专业心率设备给出的读数?

它究竟是如何工作的

摄像头心率背后的技术有一个名字——光电容积描记法,简称 PPG——它的历史比智能手机早了几十年。PPG 是一种简单、低成本的光学方法,用来追踪活体组织中微血管床内血容量的变化:每一次心跳,组织中的血容量都会随之起伏,透过或反射自这部分组织的光线也随之起伏。生理测量领域的研究者把由此产生的信号描述为两部分:一部分是随呼吸、交感神经活动和体温调节而缓慢漂移的「DC」基线,另一部分则叠加其上,是随每一次心跳搏动的「AC」分量(Allen, 2007)。手机摄像头用不同的硬件完成同样的工作:它没有专用的「LED + 光电二极管」传感器,而是逐帧捕捉皮肤颜色和亮度那些同样细微的变化——无论是贴在后置镜头上的指尖,还是对着前置摄像头的脸——而这种 AC 搏动的周期,正是应用回报给你的心率。

它与你真实的心率有多接近

基于摄像头的 PPG 并不是一个只验证过一次就被搁置的想法——它已经不止一次与临床参照设备直接比对过,其中最有价值的一次检验测试的是真实的消费级应用,而不是实验室原型。2017 年的一项研究让四款智能手机心率应用在 108 名患者身上接受检验,每位患者同时接受心电图和脉搏血氧仪读数作为参照。脉搏血氧仪本身——更直接的参照对象——相对心电图的平均绝对误差约为 2 ± 0.35 次/分钟,这为「好」的表现设定了一个有用的标尺。以这个标尺衡量,使用指尖贴在后置摄像头上的接触式应用表现尚可:Heart Fitness 平均偏差 2 ± 0.5 次/分钟,Instant Heart Rate 为 4.5 ± 1.1 次/分钟。让前置摄像头拍摄面部的非接触式应用则明显更差:Whats My Heart Rate 平均偏差 7.1 ± 1.4 次/分钟,Cardiio 为 8.1 ± 1.4 次/分钟(Coppetti et al., 2017)。作者自己的结论值得原样重述:接触式的指尖应用无论在易用性还是准确度上,都优于非接触式的面部应用。这些数字的诚实总结是:即便是最好的摄像头估算值,也会与临床设备相差几次/分钟——足以作为一个粗略的参考,但还不足以像信任心电图那样信任它。如果必须在两种方式中二选一,指尖比面部更可靠。

手机摄像头估算的脉搏,通常与心电图基准相差多少:临床血氧仪约在2 bpm以内,手指贴在摄像头上的估算相差几个bpm,面部摄像头的估算相差更多,而且只有在光线充足且保持静止时才成立。条形越长,平均误差越大。这是估算,不是测量。

CAMERA_PULSE · MEAN_ABSOLUTE_ERROR vs ECG (bpm)

  • PULSE_OXMEDICAL_DEVICE

    REFERENCE · 2±0.35 bpm · COPPETTI_2017

    临床基准设备

  • FINGER_ON_CAMERAESTIMATED_BY_CAMERA

    CONTACT · 2–4.5 bpm MAE · COPPETTI_2017

    手指估算 — 更可靠

  • FACE_IN_CAMERAESTIMATED_BY_CAMERA

    CONTACTLESS · 7.1–8.1 bpm MAE · COPPETTI_2017

    面部估算 — 需要光线与静止

010 BPM

FIG.11 · CAMERA_PULSE = ESTIMATED_BY_CAMERA · NOT_A_MEASUREMENT · NOT_A_DIAGNOSIS

什么会让估算失准

由于摄像头心率读取的是皮肤上一个微弱的颜色信号,任何削弱或搅乱这个信号的因素,都会把估算值推得离真实值更远。2021 年一项系统测试面部读数的研究发现,当面前的光线超过 500 勒克斯时——测试涵盖 100、300、500 和 700 勒克斯——估算最准确,而在更暗的房间里表现变差。运动的影响更大:参与者说话时(53.9 毫秒),心跳间期的平均误差几乎翻倍,相比之下静止不动时为 23.9 毫秒;一项与之相关的心率变异性指标,在静止状态下与参照设备几乎完美相关(0.976),说话时却几乎跌到零相关(0.047)。同一项研究还发现,约 0.5 米的距离和每秒 30 帧以上的帧率就已足够,所以实际的结论比听起来要窄:保持静止、面对良好的正面光线、稳住手机,估算就有真正的机会接近真实值(Tohma et al., 2021)。

还有第二个不那么明显的误差来源,它不会因为更好的光线或更稳的手而消失:肤色。基于摄像头的 PPG 依赖光线穿透皮肤后反射回来,而黑色素会吸收更多这部分光线——所以在其他条件相同的情况下,肤色较深的人产生的信号更弱。2025 年一项对约 100 项 rPPG 研究及其公开数据集的审查发现,较深肤色(Monk 量表 4–10)的人群占比不到 25%,而较浅肤色(Monk 量表 1–3)的人群占比约为 45%。作者直白地指出了其后果:"Datasets characterized by underrepresentation of darker skin tones or broad ethnic diversity limit the reliability and fairness of rPPG algorithms in real-world applications"(Bondarenko et al., 2025)。这不是一句无关紧要的注脚——它意味着上面那些准确度数字,是在某项研究恰好纳入的样本人群身上测得的,未必对读到这篇文章的每一个人都同样成立。

它不是什么

有必要在这里把边界说清楚,因为「摄像头心率」这个说法很容易让人以为它比实际能做的更多。它只估算一件事——脉搏频率——别无其他:不是血压,不是血氧饱和度(SpO₂),也不是其他任何心脏指标,无论你脸上的光线怎样闪烁。它不能替代脉搏血氧仪或心电图,这个方法也并非为诊断任何疾病而设计或验证。它真正是什么:在手表不在手腕上的那一刻,一个便利、粗略的脉搏估算——仅此而已,不多也不少。

它在 MeteoHealth 中的位置

MeteoHealth 使用同样的原理——基于摄像头的 PPG,通过指尖或面部——作为一种方式,在你的 Apple Watch 不在身边的日子里记录一个心率估算值,这样一天里的缺口就不必成为你数据里的缺口。这个估算值随后会汇入同一个设备端引擎,与这个系列中的其他每一项指标一样,它也会参照你的 Apple Health 数据和当地天气——它只是被拿来比较,而不是被用来诊断,并且在每一步都仍然只是一个估算值,绝不会被当成比这个方法本身更精确的东西。为了完成这种比较,读数不会离开你的设备。

结论

基于摄像头的心率建立在真实、原理清楚的光学基础之上——与临床脉搏血氧仪所用的光电容积描记法原理相同——在良好条件下,贴在后置摄像头上的指尖读数与正规心电图的差距只有几次/分钟。但这句话里「良好条件」四个字分量不轻:需要足够的正面光线、静止的手和静止的脸,还有一个不完全由你掌控的因素——摄像头和数据集所构成的生态系统,历史上对较浅肤色的读取一直比对较深肤色更可靠。这一切都不会让这个数字变得毫无用处;它只是恰如其分地保持原样——在手表不在身边时一个便利的估算值,而不是一个可以依赖的测量结果。

参考来源 [1..4]
  1. Photoplethysmography and its application in clinical physiological measurement J. Allen, Physiological Measurement, 2007.
  2. Accuracy of smartphone apps for heart rate measurement Coppetti et al., European Journal of Preventive Cardiology, 2017.
  3. Evaluation of Remote Photoplethysmography Measurement Conditions toward Telemedicine Applications Tohma et al., Sensors, 2021.
  4. Demographic bias in public remote photoplethysmography datasets Bondarenko et al., npj Digital Medicine, 2025.