连续无创式血压估算cNIBP
参考来源:ADI官网技术文章、知乎(hxl695822705、埃微许伯、Paddington、Lonerpaul、政聪、KingPo-张超、啪啦钉子、深圳加1健康科技)
参考文献:基于单路PPG信号的连续血压检测算法设计_刘乔寿
定义
连续式无创测量法:在某一时段内无创连续地测量血压,能够检测每搏血压及连续的动脉压波形,为临床诊断与治疗提供更充分的依据,特别是在临床监护及特殊情况下观察血压连续变化方面,对有创血压和传统袖带血压测量等均具有无法比拟的优势。目前较为成熟的无创连续血压测量方法是动脉张力法和容积补偿法,但上述方法并没有解决在血压测量过程中气囊对人体束缚带来的不适感,设备及测量过程亦相对复杂,无法对被测者在运动状态下进行连续检测,测量精度也有待进一步提高。
血压:指-血管内血液对单位面积血管壁的侧压力,即压强。
单PPG测量血压(波形特征)
脉搏波特征参数法的核心在于,建立脉搏波特征参数与血压之间的关系。该方法提取每搏血压值及对应的脉搏波特征参数,并分析血压值与脉搏波特征参数间的相关性。选择相关性较大的特征参数与血压进行回归分析,推导出血压和特征参数的方程。相比前两种只需提取主波峰特征点的方法,脉搏波特征参数法通常需要多个特征点,对PPG信号的完整程度要求较高。
单独PPG测的话,采取脉络波的波形特征来做回归分析,得到线性比例方程。析脉搏波的上升斜率及波段时间等特征参数可以得到特定的计算公式,估算血压数值。
从一些医学文献上来说,PPG这种模式目前的准确度偏差是在±10mmhg左右,而且是在特定场景下。
对于用户来说,由于他们并不知道真实的血压,在测的时候只能大致测量血压,比如测量出来是120mmhg,那从真实性来推算,可能是是130mmhg或者是110mmhg。对普通用户来说是感觉不到的差别,因为并没有引起很大的不舒适性。
但是对于医学上的要求,血压需要有一个标准,你要测你的标准血压,它到底是高了多少,低了多少。而采用医疗器械测量血压,标准偏差标准是±5mmhg。
PPG特征点识别
设定一个脉搏波中有A、B、C、D 和E五个特征点,A点为起点;B点为主波峰及最大值点;C点为次波谷;D点为次波峰;E点为终点,也是下一个周期波形的起点。其中,A、E两点均为主波谷及最小值点。
滤波处理
由于周围光的噪声影响,原始PPG 信号的波形具有毛刺,特征点不易识别,所以先将原始数据通过滑动滤波消除毛刺。
令Sr(n)表示原始PPG序列,其中n =0,1,...,1999 表示样本编号。本文对Sr(n) 进行跨度为15的滑动均匀滤波,得到滤波后的脉搏波序列Ss(n) ,如上式所示。
周期分割
对PPG 信号进行周期分割的前提是,确定每个脉搏波的A点。PPG 信号的二阶导函数称为加速度容积脉搏(AccelerationPlethysmogram),简称APG信号。然后通过自适应阈值法,对APG信号的a波波峰进行识别,确定A点。
先对(2)中的Ss(n) 进行二阶差分计算得到APG 信号序列Sa(n),如式(2)所示。
设门限值T =0.6max(Sa(n)),其中max(Sa(n))表示当前测试时间APG信号的最大值。当信号质量较为理想时,0.6的系数大小既能保证a波波峰点位于门限值之上,又能保证其他波峰点位于门限值之下。当Sa(nA)>T时,有Sa(nA)>Sa(nA -1)且Sa(nA)>Sa(nA +1),则所对应PPG信号的A点为nA。
特征点识别
除了识别脉搏波的A点,还需要识别特征点B、C、D。B点为PPG 信号的主波峰及最大值点,也是一个极大值点。其在PPG 信号的一阶导信号中,对应一个由正到负的过零点N,本文通过识别N点来确定B 点。令Sd(n)为PPG 信号序列的一阶差分序列,当Sd (nN )>0 且Sd (nN +1)<0 成立时,则nN 为Ss(n) 的极大值点。C点为PPG信号的局部极小值点,在PPG信号的一阶导信号中,对应一个由负到正的过零点,即O,P间的零点。同理,D点为PPG信号的第二个局部极大值点,在PPG信号一阶导信号中,对应一个由正到负的过零点,即P,Q间的零点。
特征值计算与筛选
选用特征参数主要包括时间参数、幅度参数、面积参数以及人体心率,并求得各个特征值与收缩压SBP、舒张压DBP的相关性。
根据右边表格计算得到的特征值与SBP、DBP的相关性,选择两个相关性最大的特征值作为回归参数,即选择t2/t和HR。然后计算回归模型即可得到收缩压SBP和舒张压DBP的方程。
PPG+ECG测量血压(基于PTT)
基于流体模型: 假设血管中流动的血液像水在水管中流动一样(图),在管壁摩擦等限制条件已知或相对固定的情况下,只要知道血液的流动速度,就可推算出对侧壁的压力。
一般情况下,人体对光的吸收主要有三部分组成(图):
动脉血液、静脉血液、骨骼和其他组织。
而静脉血液、骨骼和其他组织对光的吸收变化在固定时间点可以忽略不计。而随着心脏的收缩和舒张,动脉血液的流速会发生变化,所以皮肤对光的吸收变化与动脉血液流速的变化直接相关。
基于流体模型和皮肤对光的吸收特点,我们得出皮肤对光的吸收变化与动脉血液流速的变化直接相关。所以我们只要测得皮肤对光的吸收变化,就可以推出动脉血液流速的变化,进而可以得到某一时间点血压值。那么我们又是如何监测到皮肤对光的吸收变化呢?我们通过手环的内置光学传感器在某一时间段对用户的皮肤进行连续信号收集,通过对某一时间段连续图像进行信号处理,从而得出该时间点皮肤对光的吸收变化(图)。所以通过皮肤对光的吸收变化,我们能求得动脉血液的流速(ν)变化,再通过流体模型计算得到血压(P)的变化值。
脉搏波从心脏位置传导至PPG信号测试点的时间差,称为脉搏波传导时间(Pulse Transit Time,PTT)。PTT血压测量模型通常使用心电信号(Electrocardio⁃Gram,ECG)作为PTT的起点,而在身体其他位置(如耳垂、指尖)记录的PPG信号作为PTT的终点。通过识别ECG信号和PGG信号的主波峰,便可得到两个主波峰的时间间隔PTT。PTT与收缩压SBP成线性相关,运用线性回归方程建立矫正系数,能较准确地计算出SBP。但PTT与DBP相关性较小,通常配合其他方法计算DBP。而因人体差异及活动状态差异,需不断对 PTT 模型进行校准。相对于其他研究方法,该方法的理论研究较为成熟,血压测量模型已能较准确地测量血压。但除了所需测量的PPG信号外,该方法还需要额外的设备测量ECG。
通过光电传感器采集手腕部位的脉搏波ppg和心电ecg信号结合起来分析ppg和ecg波峰的时间差。这个时间差主要受血流速度的影响,而血流速度主要受血压的影响。从而来推算出血压值。
在测量误差上,PPG+ECG组合法,误差能控制在±5mmhg左右内,误差会比单纯采用PPG高一些。
采用PPG+ECG,测量方法不是直接戴着就可以测,而是要手指按压在手环/手表的金属片上面,才可以测出血压。而单独采用PPG测量血压的手环,则是直接佩戴就可以测血压,不需要手指按压。
血压值和心率值一样,连续测量的话,是可以绘制成一条曲线值。由于血压在不同时间段,会有不同变化。只测一个单点的血压值,并不能诊断是不是高/低血压,有一些疾病是需要连续测血压。用PPG或者PPG+ECG这种方法的话,能够连续测量。
特征值计算与筛选
两路PPG结合法(基于PTT)
两路光电容积脉搏波结合法利用人体两个不同部位,如手指、手腕、耳垂间等。根据测得的两路脉搏波信号特征点的脉搏到达时间差(Pulse Arrive Time Difference,PATD),通过PATD模型来估算血压。该方法相比 ECG与PPG结合法,在设备复杂度上更加简单,成本较低。但需要佩戴多个传感器,且传感器的时间同步要求度高,一定程度上加大了测量难度。
其他方式
存在问题
测高血压主要有2个因素引起的,一个是叫心搏储量,还有一个叫外周血管主力。
用PPG+ECG的方法,测量的是血流速度预测血压值。这个是有一个前提,就是你的动脉血管的顺应性是保持衡静的状态,它只有在动脉血管顺应性,它只有在动脉血管顺应性保持不变的情况下,供血才成立。因为测血流的速度,它必须在动脉血管的顺应性保持不变的情况下,动脉血管的顺应性有可能会发生变化的,比如吃了高血压药之后测量,那就会影响到血管的舒张性,血压测量就不准了。
医院采用的血压计直接测的是压力,血压就是血的压力,所以就没有这么多限制。
直接测压力会更准确,PPG或PPG+ECG测量,都是相当于通过一些数据或者一些公式来换算间接测量。而且在间接测量时,还有一些测量要求,达到这些要求才可能会准确。比如说你吃了一些特定药时,测量数据肯定不准。这个方案对硬件以及测试的条件要求非常高,需要无损的拿到PPG和ECG的波形,而对于ECG,往往很难通过单导联(用在可穿戴产品上只能通过单导联的方式,没法像医疗产品一样做到多导联)取得准确的ECG波形,而对于PPG波形,往往也都是变形的,这样通过2种错误的数据,是没法取得正确的数值的,所以这种方式还只是存在于理论中,没法做到量产。
pulse transit time (PTT)和 血压有线型关系这里面实际存在的问题其实比较多。这个所谓的线性关系首先是源于两个模型,Huges + Moens-Kortweg。先不谈这个模型/公式的假设条件,如果完全按照公式推导那血压应该跟 ln(pulse wave velocity(PWV)) 存在线性关系。值得注意的PWV是与传统定义上的PTT是存在区别的,具体的区别在下面的公式里假设里讨论。联合利用这两个公式的前提假设:只在elastic tube测量。如果真的是这样,那上述关系还可以基本成立。然而PTT的测量,通常涉及到末端(peripheral),这个过程中经过的血管并不都是elastic的,于是这个关系过于简化,忽略了其他变量。实际上针对个人的频繁的再校正(recalibration),也是为了解决这个问题。至于题主提到的calibration,这个是必须要做的,以解决个体差异,然后随着时间的进行,需要不断的再校正才能保证一定的精度。此外利用ECG与PPG来计算PTT,引入了另外一个变量,Pre-ejection period (PEP),这个变量在某些情况下的影响甚至大于PTT本身,如果强行利用线性模型来估计,极端的情况是估计了血压和PEP 的关系。。。
波形特征估计血压也讨论了一些年,但没有PTT那么火热,大概是因为波形特征和血压之间的关系并不像PTT那样拥有理论模型。特别地,单一的波形特征通常不如PTT与血压的关系那么紧密,虽然后者如上文所述,也并没有很出色。截至目前,与血压关系最紧密的大概就是dicrotic notch相关的特征,然而由于dicrotic notch自身的不稳定性,这个特征在实际中也难以持续做出贡献。现存的文献中,尚未发现任何一篇文章可以利用波形特征很好地估计血压。但是很难做到稳定。比如用同样的姿势测几次血压,拿到的数据相差很大,或者用不同的姿势(比如站立,静坐等)取得的数值相差不大,找不到任何规律。导致用户体验感并不好。光电脉搏波信号测到血压,那么针对不同个体,影响到脉搏波特征点除了血压本身之外,还有年龄、性别、身高、体重、体脂率、血管弹性、血液粘稠度等等非常多的指标,所以针对不同的个体,没有一个统一的PPG模型可以代入,但是退而求其次的来讲,针对同一个个体,他的脉搏波PPG的特征点是固定的,较短时间内,这个个体的PPG的变化只是跟他的血压有关,那么我们可以针对这个个体的PPG的变化,推算出其血压的变化规律,这一点是可行的。也是经得起检验的。
连续无创式血压估算cNIBP的更多相关文章
- noi 1.5 24 正常血压
描述 监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数. 输入 ...
- SSD在SQLServer中的应用
一. 首先,回顾一下 SSD 的读写特性 (1)有限次数写: (2)随机读性能最好: (3)顺序读性能好: (4)顺序写性能差: (5) ...
- 【转】Java 中字符串的格式化
原文网址:http://blog.csdn.net/aimartt/article/details/8307237 参考资料:JDK API 1.6.0 中文文档 1.格式字符串语法 产生格式化输出的 ...
- java okhttp包的类特点
1.开始使用这个包时候不习惯,觉得api用起来很别扭,不管是Request okhttpClient formBody只要是设置啥,就必须使用类里面的Builder类,然后一个方法接受一个参数,不停地 ...
- 基于ARM的射频识别读卡器电路设计
http://tech.yktworld.com/201010/201010032128115666.html 来源:一卡通世界 作者:江小平,李中捷,余晓峰 2010-10-3 ...
- 菜鸟笔记 -- Chapter 11 格式化
我们在String中介绍过它有一个格式化的方法,在其它很多地方,也都能看到格式化的操作,那么这节我们就来认真了解一下Java中的格式化操作. 我们在操作中涉及到的格式化有字符串的格式化和一些其它数据类 ...
- Java 中字符串的格式化
1.格式字符串语法 产生格式化输出的每个方法都需要格式字符串 和参数列表.格式字符串是一个String,它可以包含固定文本以及一个或多个嵌入的格式说明符.请考虑以下示例: Calendar c = C ...
- NLP预训练模型-百度ERNIE2.0的效果到底有多好【附用户点评】
ERNIE是百度自研的持续学习语义理解框架,该框架支持增量引入词汇(lexical).语法 (syntactic) .语义(semantic)等3个层次的自定义预训练任务,能够全面捕捉训练语料中的词法 ...
- Simulink仿真入门到精通(五) Simulink模型的仿真
5.1 模型的配置仿真 由各种模块所构建的可视化逻辑连接,只是模型的外在表现,模型仿真的核心驱动器是被称作解算器(Solver)的组件,相当于Simulink仿真过程的心脏,驱动着模型仿真,它在每一个 ...
- webRTC中语音降噪模块ANS细节详解(三)
上篇(webRTC中语音降噪模块ANS细节详解(二))讲了ANS的处理流程和语音在时域和频域的相互转换.本篇开始讲语音降噪的核心部分,首先讲噪声的初始估计以及基于估计出来的噪声算先验信噪比和后验信噪比 ...
随机推荐
- 日志监控平台搭建(Loki+promtail+grafana)
搭建Loki+promtail+grafana日志监控平台,可以直接在grafana的UI界面查看系统应用日志,使日志查看起来更方便.快捷. Loki:主服务器,负责存储日志和处理查询. Prom ...
- 3.0 Python 迭代器与生成器
当我们需要处理一个大量的数据集合时,一次性将其全部读入内存并处理可能会导致内存溢出.此时,我们可以采用迭代器Iterator和生成器Generator的方法,逐个地处理数据,从而避免内存溢出的问题. ...
- Stable Diffusion基础:ControlNet之图片风格迁移
今天继续给大家分享AI绘画中 ControlNet 的强大功能,本次的主角是 Reference,它可以将参照图片的风格迁移到新生成的图片中,这句话理解起来很困难,我们将通过几个实例来加深体会,比如照 ...
- .Net AsyncLocal介绍
AsyncLocal的基本概念 AsyncLocal是一个在异步环境中存储和传递状态的类型.它允许你在线程或任务之间共享数据,而不会受到异步上下文切换的影响. 每一个异步的AsyncLocal的数据都 ...
- Trino418版本动态加载catalog不需要重启集群修改思路及实现
熟悉Trino 的同学应该都知道Trino新增.删除 catalog 都需要重启集群,这个生产环境里如果需要频繁增加数据源的场景是非常不友好的操作. 网上关于动态加载Catalog ...
- SqlServer表添加字段
IF NOT EXISTS (SELECT * FROM syscolumns WHERE id=object_id('表名') AND name='字段名') ALTER TABLE 表名 ADD ...
- 文心一言 VS 讯飞星火 VS chatgpt (90)-- 算法导论8.3 3题
三.用go语言,利用归纳法来证明基数排序是正确的.在你所给出的证明中,在哪里需要假设所用的底层排序算法是稳定的? 文心一言: 基数排序是一种非比较型整数排序算法,其通过在每一位上进行比较来排序.基数排 ...
- TIPTOP GP ERP二次开发规范说明
TIPTOP GP ERP二次开发规范说明 TIPTOP ERP共分三大区:topstd(标准区) + toppord(正式区) + toptest(测试区) 标准区 ...
- 文心一言 VS 讯飞星火 VS chatgpt (111)-- 算法导论10.2 2题
二.用go语言,用一个单链表 L实现一个栈.要求操作 PUSH和 POP 的运行时间仍为 O(1). 文心一言: 在 Go 语言中,我们可以用结构体来实现一个单链表,然后再用栈的相关操作. 以下是一个 ...
- 如何基于three.js(webgl)引擎架构,研发一套通过配置就能自动生成的3D机房系统
序: 这几年观察下来,大部分做物联网三维可视化解决方案的企业或个人, 基本都绕不开3D机房.包括前面也讲过这样的案例<使用webgl(three.js)创建自动化抽象化3D机房,3D机房模块详细 ...