基于processing的老年人健康手表PPG心率监测算法优化研究

2018-05-14 09:29万启元曲强桑贤伯杨武帅李宽
科技风 2018年14期

万启元 曲强 桑贤伯 杨武帅 李宽

摘要:Processing是算法开发中一种重要的数据可视化工具。本文就老人手表的心率算法开发过程介绍了Processing在算法开发中的应用并具体阐述了算法开发的整个过程。

关键词:算法开发;Processing;老年人健康手表

1 绪论

在各类算法飞速发展的今天,人们对算法的研究并不只停留在数字上。在实验中,需要分析的数字由于传感器精度的提高增涨迅速。算法的开发需要在纷繁复杂的数据中抽象提取各类信息,通常需要把数以万计的统计数据进行具体分析。这对抽象数字的人工分析是一项巨大的挑战。于是信息可视化这个学科应运而生,这个学科它分析数据方便,在图像识别,数学建模,人工智能等等多克学科都有相当多的应用。本文将使用一种可编程性强,开放源代码的信息可视化工具Processing来进行算法的研究。

在老人群体中心脏病发病率极高,心脑血管疾病一直是老人身体的一大威胁,在老人的手表中使用稳定可靠的心率检测算法是相当必要的。

2 心率检测算法现状

近年来我国一直走在世界心率检测的前端,在2011年马俊领、王成等人使用了660mm光源制作的反射式光电脉搏传感器可以准确的测得脉动脉搏中的PPG信号,开创了PPG心率的先河。在2014年路知远研究了基于波形检测的心率算法,该算法可以根据输入波形强弱自适应调整相关值,并使用了PPG算法,使PPG心率算法在商用的道路上更进一步。在目前的商用的心率传感器一般采用PPG传感器和基于波形检测的心率算法。

3 目前心率检测算法存在的问题

目前心率检测算法成为了智能手表标配的功能,為了研究当前智能手表心率检测算法的弊端,我们寻找了多种手表的评测数据,最终总结为市售大多数智能手表的心率检测数据在静止时都能极其贴近真实值,数据完全可以作为真实值使用,只是在运动时和手表佩戴处有汗水时心率检测数据大幅偏离真实值,以至于数据可信率小于90%甚至低至75%。

根据该现象,我们不难发现,目前的心率检测算法会由于运动或者人体表面的汗水导致算法获得的心率值偏离正常值。

4 使用Processing的算法改良研究

在改良心率检测算法时,如果测得的数据无法可视化,算法的改良难度将巨大,此时使用Processing将会使算法的改良研究更直观。

我们使用单片机连接PPG传感器,将单片机测得的PPG信号原始数据通过串口发送到电脑,并使用Processing将接收到的数据转换为图形,以便于查看。

最终可以明显地发现在有无汗水时的PPG波形有非常大的区别,有汗水时的波形明显扰动极大,非常影响算法的判断。于是需要一种滤波算法能使有汗水情况下的心率波形平滑化、标准化,便于分析心率值。

5 自整定系数滤波算法

一个n阶滤波器,其系数为C(n),期望信号为q(m),输入信号为x(m)=d(m)+v(m)

其输出量为y(m)= Σw(n)(mn)n=0…C

矩阵化为y(j)=WT(j)*X(j)

在时刻m的输出误差为e(j)= d(j)y(j)= d(j) WT(j)X(j)

定义目标函数为 E[e2(j)],则

J(j)=E[e2(j)]= E[(d(j) WT(j)*X(j))2]

当此滤波算法最优时即为误差量最小时,此时的滤波效果最好,在此,使用梯度下降法进行优化

W(j+1)=W(j)+0.5*u(▽J(j))

▽J(j)=2E[X(j)*( d(j) WT(j)*X(j))]= 2E[X(j)e(j)]

W(j+1)=W(j)+μE[X(j)e(j)]

其中真实梯度使用瞬时梯度替代,因为瞬时梯度为真实梯度的无偏估计,即2X(j)e(j)用来代替真实梯度。

于是:

W(j+1)=W(j)+uX(j)e(j)

以此算法程序可以整定滤波算法最佳系数,并对原始数据进行滤波。

使用滤波优化算法后的PPG心率波形如下图:

使用了优化算法后,在有汗水情况下的心率测得准确率大幅上升,可信度高于90%。

6 结论

在使用Processing后心率算法改良研究的效率高,工作量更少。得到的算法具有抗干扰性,在有汗水的情况下可靠性大幅提高。

参考文献:

[1]路知远.穿戴式健康监护及人机交互应用中若干关键技术研究[D].中国科学技术大学,2014.

[2]徐杰.基于图像的心率测量软件模块的设计及实现[D].重庆邮电大学,2016.

[HTH]项目:[HTK]由辽宁科技大学大学生创新创业训练计划专项经费资助(项目编号:201710146000011)

作者简介:万启元(1996),男,本科,研究领域为嵌入式;曲强(1973),男,本科,研究领域为模式识别与智能系统;桑贤伯(1997),男,本科,研究领域为硬件电路设计。