光学测量 PPG
参考来源:ADI官网技术文章、知乎(hxl695822705、KingPo-张超、深圳加1健康科技 )
现状
PPG测量心率、血氧的技术距今发展快100年,影响心率、血氧测量准确度的因素主要有心率传感器的光学结构设计和算法,心率传感器的供应商有Maxim、ADI、AMS、Osram、Partron、TI、Pixart,汇顶等,算法公司有firstBeat(被Garmin收购)、Gomore、LifeQ等公司,可以评估参数包括健康生活指标类、训练期间评估类、训练管理类。
工作原理
不同位置对采集的影响


当血流动力发生变化时,例如血脉搏率(心率)或血容积(心输出量)发生变化时,进入人体的光会发生可预见的散射。当我们把光转换成电信号时,正是由于动脉对光的吸收有变化而其他组织对光的吸收基本不变,得到的信号就可以分为直流DC信号和交流AC信号。提取其中的AC信号,就能反应出血液流动的特点。
- 直流DC信号:当光照透过皮肤组织然后再反射到光敏传感器时光照有一定的衰减的。像肌肉、骨骼、静脉和其他连接组织等等对光的吸收是基本不变的(前提是测量部位没有大幅度的运动),
- 交流AC信号:由于动脉里有血液的流动,那么对光的吸收自然也有所变化。


PPG信号特征提取
PPG脉冲:出现通常分为两个阶段:
- 脉冲的上升边缘:收缩期
- 脉冲的下降边缘:舒张期

时域分析、频域分析

PPG原始波形→VPG一阶导数波形→APG二阶导数波形

组成结构
- 光发射器(通常是几种LED):用于生成光信号,按波长分为红外光IR、红光R、绿光G、
- 光电二极管PD:将光信号转化为模拟电信号(光电流),响应必须具备足够的灵敏度和线性度。
- 多通道模拟前端AFE:用于控制LED、对模拟电信号(光电流)的放大TIA、滤波BPF、采样ADC

光源波长

- 皮肤的黑色素会吸收大量波长较短的波
- 皮肤上的水份也会吸收大量的UV和IR部分的光
- 进入皮肤组织的绿光(500nm)-- 黄光(600nm)大部分会被红细胞吸收
- 红光和接近IR的光相比其他波长的光更容易穿过皮肤组织
- 血液要比其他组织吸收更多的光
- 相比红光,绿(绿-黄)光能被氧合血红蛋白和脱氧血红蛋白吸收
在光学系统中,光从皮肤表面投射出来。再由光电传感器测量红细胞吸收的光量。随着心脏跳动,不断变化的血容量使接收到的光量分散开来。在手指或耳垂上进行测量时,由于这些部位有相当多的动脉血,使用红光或红外光源可获得最佳精度。不过,手腕表层很少有动脉存在,腕部穿戴式设备必须通过皮肤表层下面的静脉和毛细血管来检测脉动分量,因此绿光效果会更好。
光学测量缺点
采集PPG信号的光学噪声:PPG信号的去噪处理,特别是将生理信号与噪声信号分离(运动过程中产生的噪声),是该技术目前面临的最大障碍。阳光产生的直流误差相对而言比较容易消除,但日光灯和节能灯发出的光线都带有可引起交流误差的频率分量。模拟前端使用两种结构来抑制DC 至100 kHz 的干扰信号。模拟信号经过调理后,14 位逐次逼近型数模转换器(ADC)将信号数字化,再通过I2C 接口发送到微处理器进行最终后处理。同步发送路径与光接收器并行集成在一起。其独立的电流源可驱动两个单独的LED,电流电平最多可编程至250 mA。LED 电流是脉冲电流,脉冲长度在微秒级,因此可保持较低的平均功耗,从而最大程度地延长电池使用寿命。LED 驱动电路是动态电路且可即时配置,因此不受各种环境条件影响,例如环境光、穿戴者皮肤和头发的色泽或传感器和皮肤之间的汗液,这些都会降低灵敏度。激励LED 配置非常方便,可用于构建自适应系统。所有时序和同步均由模拟前端处理,因此不会增加系统处理器的任何开销。
运动产生的干扰:当光学心率监护仪用于睡眠研究时,这可能不是问题,但如果在锻炼期间穿戴,运动腕表和护腕将很难消除运动伪像。光学传感器(LED 和光电检测器)和皮肤之间的相对运动会降低光信号的灵敏度。此外,运动的频率分量也可能会被视为心率测量,因此,必须测量该运动并进行补偿。设备与人体相贴越紧密,这种影响就越小,但采用机械方式消除这种影响几乎是不可能的。我们可使用多种方法来测量运动。其中一种是光学方法,即使用多个LED 波长。共模信号表示运动,而差分信号用来检测心率。不过,最好是使用真正的运动传感器。该传感器不仅可准确测量应用于可穿戴设备的运动,而且还可用于提供其他功能,例如跟踪活动、计算步数或者在检测到特定g 值时启动某个应用。对于在检测到运动时启动某个应用的情况,则无需进行高速采样,因此可将数据速率降至6 Hz,此时平均功耗为300 nA。因而,对于低功耗应用和不易更换电池的植入式设备来说,此传感器非常有吸引力。
PPG传感器的安装位置:市面上大多数的光学心率传感器是佩戴在三个部位:耳朵(耳塞式耳机)、手臂(佩戴在手臂较高或较低位置的臂带)、手腕(智能手表或是健身追踪腕带)。手腕是准确进行PPG心率量测的最差部位之一,而皮肤表面血管密度较高的前臂,被认为是较好的位置,耳朵则是迄今在人体放置光学心率监测器的最佳位置。
周期交叉问题:周期性活动所产生的光学噪声(慢跑时),心率与步伐速度彼此交错
低灌注流量:灌流是人体推送血液到微血管床(capillary bed)的过程,如同肤色,血液灌流程度在不同人之间有高度差异,可能受到肥胖、糖尿病或心脏动脉疾病的影响,使得血液灌流量降低。低灌流量─特别是在人体四肢,会对光学心率监测器带来挑战,因为信噪比可能会显著降低,而较低的灌流量与较低的血流信号相关联。
肤色的吸收率:PPG传感器中光电二极管(PD)采集到的信号强度取决于穿戴者的肤色。影响因素有:黑皮肤、黄皮肤、白皮肤、有无纹身、有无伤疤

PPG的预处理
处理来自AFE和加速计的信号,然后将处理后的信号叠加到PPG波形上,由此可生成持续的、运动容错心率数据和其他生物计量数据。
PPG信号估算心率
心率监测一般优选波长约为540 nm的绿光LED。它的调制指数高于红光或IR LED,因而能产生优质PPG信号。它还提供不错的CTR水平,因此功耗不会太高。
AC SNR是一个关系信号质量的参数,可以通过DC SNR乘以调制指数来计算。例如,调制指数为1%时,95 dB DC SNR相当于55 dB AC SNR。
PPG信号时域分析:
通过对原始的PPG信号进行滤波处理,得到一定时间内的波峰个数,然后既可算出心率值

PPG信号频域分析:
把血液流动对光吸收转变成了AC信号,如果对于进行FFT变换,那么就能看到频域的特点。如下图就是对PPG信号的FFT转变

上图中的频域图,0Hz的信号很强,这部分是骨骼、肌肉等组织的DC信号,在1Hz附近有个相对比较突出的信号就是血液流动转变的AC信号。假设测得到的频率f = 1.2Hz
那么心率HeartRate HR = f x60 = 1.2 x 60 = 72
补充:脉搏与心率
每一次的收缩力都是不一样的,如果收缩力大,就形成脉搏,有的时候收缩力度小,而且时间短,心输出量就很少,就会导致没有脉搏的形成,脉率就比心率小。在记录房颤患者的脉率时,不应简单的把心率数写成脉率。
PPG信号估算血氧
脉搏血氧测定使用红光(通常为660 nm波长)和红外(IR) LED(通常为940 nm波长)。由于血液中含有的氧合血红蛋白HbO2和血红蛋白Hb存在一定的比例,下图表示了氧合血红蛋白HbO2和血红蛋白Hb对波长600~1000nm的光吸收特性,脱氧血红蛋白主要吸收660 nm波长的光,而氧合血红蛋白主要吸收940 nm波长的光。

光电二极管感知未被吸收的光,然后将感知到的信号分为直流分量和交流分量。直流分量代表组织、静脉血和非搏动性动脉血引起的光吸收。交流分量代表搏动性动脉血。然后按照下式计算SpO2的百分比:
%SpO2 = (ACred/DCred)/(ACIR/DCIR)
光学测量 PPG的更多相关文章
- 心跳之旅—💗—iOS用手机摄像头检测心率(PPG)
[前情提要] 光阴似箭,日月如梭,最近几年,支持心率检测的设备愈发常见了,大家都在各种测空气测雪碧的,如火如荼,于是我也来凑一凑热闹.[0]这段时间,我完成了一个基于iOS的心率检测Demo,只要稳定 ...
- Xamarin.iOS开发初体验
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
- MySQL数据库的安装与密码配置
MySQL是由MySQL AB公司开发,后由Oracle公司收购 MySQL是一个关系型数据库管理系统 分为社区版和企业版 ...
- SQLite剖析之事务处理技术
前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等.在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率.假设需要在一张表内一次插入20个人的 ...
- iOS GCD NSOperation NSThread等多线程各种举例详解(拷贝)
2年多的iOS之路匆匆而过,期间也拜读来不少大神的博客,近来突然为自己一直做伸手党感到羞耻,是时候回馈社会.回想当年自己还是小白的时候,照着一些iOS多线程教程学,也只是照抄,只知其然.不知其所以然. ...
- background-position
在学习网页"换肤"效果时:对background-position的理解更深了. 这是我使用的一整张图片:
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- Tomcat双向Https验证搭建,亲自实现与主流浏览器、Android/iOS移动客户端超安全通信
紧接着<Tomcat单向Https验证搭建,亲自实现与主流浏览器.Android/iOS移动客户端安全通信>,此处演示下更安全的双向Https认证的通信机制,为了清晰明了,以下进行单独描述 ...
- opencv 简单模糊和高斯模糊 cvSmooth
cv::Mat 是C++版OpenCV的新结构. cvSmooth() 是老版 C API. 没有把C接口与C + + 结合. 建议你们也可以花一些时间看一下介绍. 同样,你如果查看opencv/mo ...
- css3学习----transform
css 2D转换
随机推荐
- Docker下elasticsearch8部署、扩容、基本操作实战(含kibana)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇记录了用docker搭建ElasticS ...
- [远程Call]32位远程多参数带返回调用
[远程Call]32位远程多参数带返回调用 引子 在Windows上可以使用CreateRemoteThread实现远程Call,但是有不带返回值且只能传递一个参数的限制. 解决思路 将多个参数利用V ...
- 《Kali渗透基础》09. 漏洞利用、后渗透
@ 目录 1:漏洞基本介绍 1.1:漏洞从哪里来 1.2:缓冲区溢出 1.3:如何发现漏洞 2:漏洞利用 2.1:EXP 选择与修改 2.2:避免有害的 EXP 3:后渗透阶段 3.1:Linux 上 ...
- 【matplotlib基础】--手绘风格
Matplotlib 中有一个很有趣的手绘风格.如果不是特别严肃的分析报告,使用这个风格能给枯燥的数据分析图表带来一些活泼的感觉. 使用手绘风格非常简单,本篇主要手绘风格的效果以及如何配置中文的支持. ...
- Vitess全局唯一ID生成的实现方案
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键. 但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足 ...
- 在Go中如何实现并发
Go语言的并发机制是其强大和流行的一个关键特性之一.Go使用协程(goroutines)和通道(channels)来实现并发编程,这使得编写高效且可维护的并发代码变得相对容易.下面是Go的并发机制的详 ...
- 文心一言 VS 讯飞星火 VS chatgpt (105)-- 算法导论10.1 3题
三.用go语言,仿照图 10-2,画图表示依次执行操作 ENQUEUE(Q,4).ENQUEUE(Q,1).ENQUEUE(Q,3).DEQUEUE(Q).ENQUEUE(Q,8)和 DEQUEUE( ...
- 给网站添加xml地图索引写法和应用
使用php给网站添加xml地图索引写法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...
- 深挖 Python 元组 pt.1
哈喽大家好,我是咸鱼 好久不见甚是想念,2023 年最后一次法定节假日已经结束了,不知道各位小伙伴是不是跟咸鱼一样今天就开始"搬砖"了呢? 我们知道元组(tuple)是 Pytho ...
- 数据重整:用Java实现精准Excel数据排序的实用策略
摘要:本文由葡萄城技术团队原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在数据处理或者数据分析的场景中,需要对已有的数据进行排序,在Ex ...