一种基于手机三轴加速度传感器的计步方法与流程

文档序号:13161769阅读:980来源:国知局
一种基于手机三轴加速度传感器的计步方法与流程

本发明涉及一种基于手机三轴加速度传感器的计步方法,属于消费应用电子技术领域。



背景技术:

随着人民生活水平的提高,人们对如何进行合理的身体锻炼已经越来越重视,对身体状况进行及时监控,及时获取运动数据成为广大热爱运动的群体的基本需求。另一方面,在物联网的蓬勃发展的今天,越来越多的传感器设备被应用到可穿戴设备中。智能手机作为典型的智能可穿戴设备以及智能的监控设备走入了大众的生活中,在智能手机这个移动平台上出现了许多健康监控和运动指导的应用软件,这为获取健康信息提供了有力的物质和技术的支持。计步器就是相关应用的典型例子。

目前存在很多统计使用者行走步数的设备,但是它们都有一些缺陷。现有的大多通过加速度传感器获取加速度信号,然后设定简单的阈值判断合加速度中波峰值是否有效,从而实现计步功能。由于传感器采集过程中容易出现伪波峰,该方法可能出现误判,导致计步精度偏低。此外也有利用运动的周期性特点,判断前后两个波的合加速度波形相似度是否在某些阈值范围内等等。由于运动者的运动形式多种多样,比如跑步,行走,同时在运动的过程中,当采集装置放置在身体的不同位置时,加速度变化不同,波形的相似度可能不够高。因此,仅使用合加速度数据以及提取波形的周期性特性进行步数统计容易出现误计或漏计的情况,现有方法还有不足的地方。



技术实现要素:

本发明所要解决的技术问题是提供一种基于手机三轴加速度传感器的计步方法,该方法提取三轴加速度数据以及合加速度数据的特征,利用分类算法识别需要计步的数据,通过重构数据去除伪波峰以及伪波谷带来的影响,此外,识别手机在运动过程中所处在的不同位置,对不同位置的数据设置不同的阈值进行过滤,最终提高计步精准度,具有较高的抗干扰性。

本发明为解决上述技术问题采用以下技术方案

本发明提供一种基于手机三轴加速度传感器的计步方法,具体步骤如下:

步骤1,根据设定采样频率与采样时间窗口确定采样计算窗口,采集手机三轴加速度传感器的三轴加速度数据,每个采样计算窗口内的每一轴数据按照采集顺序编号为0,1,…,n-1,其中,n表示每个采样计算窗口内每一个轴的的数据个数;

步骤2,在每个采样计算窗口内,对采集到的三轴加速度数据分别进行平滑处理,并计算平滑后的合加速度;

步骤3,在每个采样计算窗口内,对步骤2中平滑后的三轴加速度数据以及合加速度进行特征提取,其中,提取x轴加速度的平均值xmean和方差xvariance作为x轴数据特征,提取y轴加速度的平均值ymean和方差yvariance作为y轴数据特征,提取z轴加速度的平均值zmean和方差zvariance作为z轴数据特征,提取合加速度波峰个数peakcount作为波峰的出现特征;利用聚类算法将合加速度数据聚成3类,分别对每类合加速度数据求取平均值,并将3个平均值按照由大到小进行排序作为合加速度特征<clusterpeak,clustermean,clusterthrough>,clusterpeak>clustermean>clusterthrough;

步骤4,根据步骤3中提取到的特征,判断每个采样计算窗口内采集到的数据的类别;

步骤5,若步骤4中的判别结果为静止噪声或运动噪声,则舍弃当前采样计算窗口内的数据,否则,对当前采样计算窗口内的合加速度数据进行波形重构;其中,波形重构的方法具体如下:

5.1,计算当前采样计算窗口内合加速度的平均值,利用平均值将当前采样计算窗口内的合加速度分割为多个波峰所在区域和波谷所在区域,其中,波峰所在区域与波谷所在区域交替出现;

5.2,搜索每一个波峰所在区域,获取当前波峰所在区域中最大的波峰,作为该区域的真波峰peak,并记录真波峰在当前采样计算窗口内对应数据编号peakindex;

5.3,搜索每一个波谷所在的区域,获取每个波谷所在区域中最小的波谷,作为该区域的真波谷,同时记录真波谷值在当前采样计算窗口内对应数据编号;

5.4,真波峰peak与其前最后一个真波谷troughleft、其后第一个真波谷troughright以及半波长度halfwavelength组成重构波形四元组<peak,troughleft,troughright,halfwavelength>,完成一个波形的重构,halfwavelength=max{|peakindex-troughindexleft|,|peakindex-troughindexright|},troughindexleft表示troughleft在当前采样计算窗口内对应数据编号,troughindexright表示troughright在当前采样计算窗口内对应数据编号;

步骤6,根据当前采样计算窗口内采集到数据的类别,设定阈值四元组<peakthreshold,troughthreshold,maxwavelength,minwavelength>,对步骤5中得到的重构波形进行逐一判决:

6.1,根据当前采样计算窗口内采集到数据的类别,从预设阈值四元组中获取对应的阈值四元组<peakthreshold,troughthreshold,maxwavelength,minwavelength>,其中,peakthreshold作为真波峰的阈值,troughthreshold作为真波谷的阈值,maxwavelength以及minwavelength分别为halfwavelength的最大可取值以及最小可取值;

6.2,将重构波形的波形四元组<peak,troughleft,troughright,halfwavelength>逐一与阈值四元组进行比较:首先,判断真波峰,若peak>peakthreshold则进入下一步,否则比较下一个重构波形的波形四元组;然后,判断真波谷,若troughleft<troughthreshold且troughright<troughthreshold则进入下一步,否则比较下一个重构波形的波形四元组;最后,判断半波长,若halfwavelength>minwavelength且halfwavelength<maxwavelength则当前重构波形计为一步,且对应数据类别的总步数加一;否则比较下一个重构波形的波形四元组;

步骤7,各个采样计算窗口内的步数根据不同数据类别分别相加,即实现计步。

作为本发明的进一步优化方案,步骤2中采用平均值平滑法对三轴数据的每一轴数据分别进行平滑处理,平滑公式为:

其中,s为预设的平滑窗口大小且为大于零的偶数,ai+j表示平滑前采样计算窗口内编号为i+j的数据,ai′表示平滑后采样计算窗口内编号为i的数据,n表示采样计算窗口内的数据个数。

作为本发明的进一步优化方案,步骤5中步骤5.1中利用平均值将当前采样时间窗口内的合加速度分割为波峰所在区域和波谷所在区域,具体为:通过判断合加速度是否大于平均值进行分割,当合加速度大于平均值时其所在区域为波峰所在区域,当合加速度值小于平均值时其所在区域为波谷所在区域。

作为本发明的进一步优化方案,步骤5.4中当前一个采样计算窗口内最后的合加速度数据中无法重构一个完整波形四元组时,将该部分合加速度数据添加到下一个采样计算窗口的前部,以保证相邻采样计算窗口中计算的连续性。

作为本发明的进一步优化方案,采样计算窗口的长度windowlength=采样频率f*采样时间窗口的长度n。

作为本发明的进一步优化方案,步骤4中每个采样计算窗口内采集到的数据的类别的判断方法为:

4.1,根据数据类别分别采集手机三轴加速度数据,并按照步骤1至3的方法进行特征提取,将提取到的特征作为训练集,其中,数据类别包括a)静止噪声、b)手机在上衣口袋、c)手机在裤子口袋、d)手机在手中时行走、e)手机在手中时跑步、f)手机在其他位置、g)运动噪声;

4.2,构建分类模型,并利用步骤4.1中的训练集对分类模型进行训练学习;

4.3,将每个采样计算窗口内采集到的数据提取到的特征输入训练学习后的分类模型,分类模型的输出即为其对应的类别。

作为本发明的进一步优化方案,步骤4.2中的分类模型为三层神经网络,其中,第一层和第二层的激活函数均为带泄露线性整流函数,第三层采用归一化指数函数softmax函数,采用带动量的随机梯度下降算法对三层神经网络进行训练,损失函数为交叉熵损失函数。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

1、本发明方法采集三轴加速度传感器的三轴数据,提取数据特征,借助分类算法进行手机位置状态的判别,可以识别手机在运动过程中所处的不同位置,重构数据识别出完整波,对不同的位置类别分别进行计步,使得计步更加精准;

2、本发明方法识别手机在运动过程中所处的不同位置,可以对不同的位置类别进行识别并进行计步,满足使用者对不同应用场景的需求;

3、本发明方法通过重构数据识别出真正的波峰以及真正的波谷,去除伪波峰以及伪波谷的影响,具有较强的抗干扰性;

4、本发明方法基于手机平台,可以利用随身携带的手机作为数据采集、计算、存储和展示设备,普通智能手机中都有三轴加速度传感器,实用性强,具有很强的可移植性。

附图说明

图1为本发明实施例的系统流程图;

图2为本发明实施例的三轴加速度示意图;

图3为本发明实施例的波形重构流程图;

图4为本发明实施例的波谷解析流程图;

图5为本发明实施例的步数计算流程图。

具体实施方式

下面结合附图对本发明的技术方案做进一步的详细说明:

如图1所示,给出了本发明实施例的系统流程,包括以下步骤:

101、数据采集:包括设置手机三轴加速度传感器的采样频率以及采样时间窗口,计算采样计算窗口,并存储采集到的三轴加速度的值。每个采样计算窗口内的每一个轴的数据按照采集顺序编号为0,1,…,n-1,其中,n表示每个采样计算窗口内每一个轴的数据个数。

计算采样计算窗口,公式为:windowlength=f*n。其中,windowlength表示采样计算窗口的总长度,单位为个;f表示采样频率,单位为赫兹;n表示采样的时间长度,单位为秒;举例来说,当f=50赫兹,n=4时,得到windowlength=4*50=200个,此时,当加速度传感器在x轴,y轴以及z轴分别采集到200个对应方向上的数据时,当前计算窗口关闭,将数据传递到下一步骤,开启新的计算窗口接受新数据。

所述的三轴加速度传感器的三轴如图2所示,分别记为x轴、y轴以及z轴。以屏幕朝上水平放置时的状态为例,所述x轴采集加速度传感器左右运动时该方向加速度变化情况;所述y轴采集加速度传感器前后运动时该方向上加速度变化情况;所述z轴采集加速度传感器上下运动时该方向上加速度变化情况。

102、数据预处理:包括采用平均值平滑法对101中采集得到数据进行平滑处理。根据预设的平滑窗口系数s对三轴加速度中的x轴加速度、y轴加速度以及z轴加速度分别进行平滑,平滑公式如下:

其中,s为预设的平滑窗口大小且为大于零的偶数,ai+j表示平滑前采样计算窗口内编号为i+j的数据,ai′表示平滑后采样计算窗口内编号为i的数据,n表示采样计算窗口内的数据个数。

将平滑后的x轴加速度、y轴加速度以及z轴加速度计算合加速度值,公式如下:

其中,xf、yf、zf分别为平滑后的x轴加速度、y轴加速度以及z轴加速度。

103、特征提取:提取当前计算窗口内加速度的特征,包括:分别提取三轴加速度传感器中x轴,y轴以及z轴加速度值的特征;提取三轴合加速度值的特征,提取波峰的出现特征。

分别提取三轴加速度传感器x轴,y轴以及z轴加速度的特征,包括:计算窗口内提取x轴加速度值的平均值xmean以及方差xvariance,分别作为当前计算窗口内x轴方向上运动的大小特征以及混乱程度;类似的,提取y轴加速度值的平均值ymean以及方差yvariance,提取z轴加速度值的平均值zmean以及方差zvariance。提取当前计算窗口内合加速度波峰个数作为波峰的出现特征,记为peakcount;同时,提取三轴合加速度值的特征。

提取三轴合加速度值的特征,包括:利用预先设置聚类个数的聚类算法将合加速度数据聚成3类,分别将属于同一类的数据求取平均合加速度值,对得到的3个平均值进行从大到小排序,得到3个聚类中心<clusterpeak,clustermean,clusterthrough>作为合加速度特征,clusterpeak表示波峰的均值特征,clustermean表示平均值附近的特征,clusterthrough表示波谷的均值特征。

提取波峰的出现特征peakcount,计算当前计算窗口内合加速度值中波峰的出现次数。其中的波峰满足如下公式:

ah-1<ah

ah+1<ah

其中,ah表示采样计算窗口内数据编号为h的合加速度值,ah-1表示采样计算窗口内数据编号为h-1的合加速度值,ah+1表示采样计算窗口内数据编号为h+1的合加速度值。

以上构成特征值组

<xmean,xvariance,ymean,yvariance,zmean,zvariance,peakcount,clusterpeak,clustermean,clusterthrough>。

104、数据类别的判别:根据提取的x轴的特征,y轴的特征,z轴的特征,合加速度的特征以及波峰的出现特征组成当前采集的计算窗口的特征值组,利用分类算法进行对采集到的数据的类别进行判别。其中,数据的类别包括:a)静止噪声、b)手机在上衣口袋、c)手机在裤子口袋、d)手机在手中时行走、e)手机在手中时跑步、f)手机在其他位置、g)运动噪声,b到f这5种类别表示手机的位置,f是当手机放置于包内等其他位置时的统称。

所述的分类算法,在本发明中使用的是多层神经网络,网络分为3层,第一层和第二层的激活函数为带泄露线性整流函数,第三层采用归一化指数函数softmax函数。在其训练学习的过程中,首先根据不同的类别分别采集相应的三轴数据,进行101、102、103的处理提取特征,然后进行类别标记,即按照a到g的顺序根据所处类别进行独热码编码得到类别标签,将特征数据与对应的类别标签输入到多层神经网络中,采用带动量的随机梯度下降算法进行训练,损失函数为交叉熵损失函数。

105、波形重构:根据104中的类别判别结果,当判别结果为a或者g时,表示当前采样计算窗口内的数据为无效数据,舍去当前采样计算窗口内的数据。否则,重构当前采样计算窗口内的数据,计算当前计算窗口内合加速度值的平均值,利用该平均值解析出真波峰和真波谷,重构得到波形四元组,将计算窗口内的数据解析成多个四元组的集合,即可得到重构的多个完整的波形四元组。

重构获取波形四元组:计算当前计算窗口内合加速度值的平均值,利用平均值分割出波峰所在区域以及波谷所在区域,当合加速度值大于平均值时,当前所在区域为需要搜索的波峰区域,当合加速度值小于平均值时,当前所在区域为需要搜索的波谷区域;搜索波峰所在区域,获取该波峰区域中最大的波峰,作为当前区域的真正波峰peak,并记录真波峰所在的数据编号peakindex;搜索波谷所在的区域,获取该波谷区域最小的波谷,作为当前区域的真正波谷。

一个完整波由三个区域构成,分别是左波谷区域、波峰区域以及右波谷区域。波峰区域与波谷区域交替出现,从左波谷区域穿越平均值到达波峰区域,波峰区域穿越平均值到达右波谷区域,一个完整波两次穿越平均值。

为了去除伪波峰的影响,定义一个波的真波峰为:在两次穿越平均值中,一个波峰区域内,众多波峰中波峰最大的值,波峰满足如下公式:

ah-1<ah

ah+1<ah

类似的,定义一个真波谷为:在两次穿越平均值中,一个波谷区域内,众多波谷中取波谷最小的值,波谷满足以下公式:

ak-1>ak

ak+1>ak

其中,ak表示采样计算窗口内数据编号为k的合加速度值,ak-1表示采样计算窗口内数据编号为k-1的合加速度值,ak+1表示采样计算窗口内数据编号为k+1的合加速度值。

具体操作包括:在一个波峰搜索区域中,获取波峰的最大值,记录真波峰所在的数据编号,计为peakindex;类似的,在一个波谷搜索区域中,获取最小的一个波谷,记录真波谷的所在的数据编号,最终得到一个四元组<peak,troughleft,troughright,halfwavelength>,其中各变量分别为:真波峰peak,遇到真波峰前的最后一个真波谷troughleft,真波峰过后的第一个真波谷troughright,halfwavelength表示半波的长度。

halfwavelength的计算公式为:

halfwavelength=max{|peakindex-troughindexleft|,|peakindex-troughindexright|}

其中,troughindexleft表示troughleft所在的数据编号,troughindexright表示troughright所在的数据编号。

以上完成一个波的重构,在一个采样计算窗口中,可以重构得到多个重构波形四元组。为了保证计算窗口内相邻完整波数据的连续性,一个四元组的troughright为下一个四元组的troughleft。

完整波的搜索从真波谷开始,当无法完整地得到上面的四元组时,认为当前波不完整,需要保存当前残波数据,等待下一个计算窗口的数据到来,将合加速度数据中,troughleft所在区域及其以后的数据添加到下一个计算窗口数据的前部,继续搜索真波峰以及真波谷。当得到一个完整波的波形四元组时,进行下一步骤的计算。

如图3所示为步骤105进行波形重构的具体流程:

301、判断合加速度值是否大于均值。如果大于均值,表示进入波峰搜索区域,则开始寻找波形四元组<peak,troughleft,troughright,halfwavelength>中的真波峰信息;否则,开始寻找真波谷信息。

302、判断当前值的前一个值是否小于均值。如果是进行信息保存;否则,表示上一个波的信息已经保存好了,无需在进行信息保存。

303、信息保存。当小于均值时,说明当前正在穿越均值,到达波峰所在的区域。此时,将真波谷信息保存为上一个波的四元组信息中的真波谷值troughright以及数据编号troughindexright,计算上一个波中的halfwavelength,公式为:

max{|peakindex-troughindexleft|,|peakindex-troughindexright|}

以上完成上一个波的特征采集。同时,将波谷信息保存为当前波的真左波谷值troughleft,记录数据编号troughindexleft,将原有波谷区域清空。

304、判断当前合加速度值是否为波峰。如果不是波峰,舍去数据,读取下一个合加速度值。

305、当前合加速度为波峰值,需要判断当前合加速度值是否为波峰域中最大值。将当前合加速度值与已有的波峰域中的波峰进行判断,查找最大值。如果不是最大值,舍去数据,读取下一个合加速度值。

306、当前合加速度为波形四元组所潜在的真波峰peak值,保存peakindex,并将当前波峰加入波峰域中。

307、当前合加速度值不大于均值,是波谷所在的区域,进行真波谷相关特征的提取。

如图4所示为步骤307进行波谷解析的具体流程:

401、判断是否为当前波中第一次进入波谷所在区域,如果是,那么需要保存当前波的真波峰信息。否则,表示当前波的真波峰信息已经保存,直接进行波谷搜索。

402、当前是从真波峰穿越平均值进入到波谷所在的波段,需要将当前完整波的真波峰特征信息保存到四元组中,即保存真波峰的值peak,以及真波峰所在的数据编号peakindex,同时清空波峰区域。

403、判断当前合加速度值是否为波谷,如果不是,则输入下一个合加速度值。

404、判断当前的波谷是否为波谷域中的最小值,将当前的合加速度值与域中的已有波谷值进行对比,选出最小值作为最终候选的真波谷值。

405、保存当前得到的候选的最小波谷值,将波谷的信息进行保存,包括波谷值以及波谷对应的数据编号,将波谷值加入到波谷域当中。输入下一个合加速度值进行判断。

106、步数计算:根据105波形重构得到的四元组数据,以及104中判别所得到的数据类别信息,利用每种类别的对应的阈值四元组进行判别,当满足阈值四元组的要求,则在对应类别的总计步数加1。

根据步骤104得到的数据类别信息,获取相应类别的阈值四元组<peakthreshold,troughthreshold,maxwavelength,minwavelength>,将所得到的波形四元组特征<peak,troughleft,troughright,halfwavelength>与通过阈值四元组进行比较,筛选出符合要求的四元组,进行步数计算。

如图5所示为步骤106进行步数计算的具体流程:

501、步骤104获取数据类别type。

502、根据获取的类别type,当类别对应为静止噪声或者运动噪声时,舍去。否则,取出对应的阈值四元组<peakthreshold,troughthreshold,maxwavelength,minwavelength>。使用阈值对重构得到的四元组数据进行判别。

503、判别真波峰值是否在预定范围内,如果peak<peakthreshold,那么舍去当前重构数据,判断下一个重构波形四元组。

504、判断真左波谷是否在预定的范围内,如果troughleft>troughthreshold,那么当前重构数据不是有效的数据,舍去。

505、判断真右波谷是否在预定的范围内,如果troughright>troughthreshold,那么表示当前数据为无效数据,舍去。

506、判断半波长是否在设定的范围内,如果halfwavelength<minwavelength,那么当前数据为无效数据,舍去。

507、判断半波长的是否超出预先设定的范围,如果halfwavelength>maxwavelength,那么当前数据不符合要求,舍去。

508、当前重构四元组数据为有效数据,属于正确的计步数据,将type类型的数据的计步总数加上一步。

以上所述,仅为本发明中的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1