发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种智能穿戴设备及人体运动的监测与识别方法,可以有效地简化算法以降低运算资源要求以及功耗要求。
本发明解决其技术问题所采用的技术方案包括:提供一种人体运动的监测与识别方法,依次包括:
进行初始化处理,其包括进行将采集到的数据队列中的三维陀螺仪分量转换成一个一维的用以衡量人体活动幅度的一第一数据队列的处理;进行将采集到的数据队列中的三维加速度分量转换成一个一维的用以衡量人体周期性运动的变化节拍的一第二数据队列的处理;以及,将监测模式参数置为第一监测模式;
进行模式处理,其包括根据当前的监测模式参数而进行第一监测模式、第二监测模式或者第三监测模式的处理;
进行数据滑动处理,其包括用新的数据队列重新生成所述的第一数据队列以及所述的第二数据队列,供上述的进行模式处理的过程使用;
其中,所述第一监测模式的处理包括:搜索相对稳定的静止状态,计算出静止状态开始时刻,监测活动幅度,依据第一策略进行所述监测模式参数的重置;所述第二监测模式的处理包括:搜索相对稳定的重复性运动,监测活动幅度,依据第二策略进行所述监测模式参数的重置;所述第三监测模式的处理包括:通过运动节拍的特征的相似性比较对已经识别出的运动的基本动作的个数进行计数,监测活动幅度,依据第三策略进行所述监测模式参数的重置。
本发明的更进一步优选方案是:所述第二策略包括:当发现重复性的运动时推算出这种运动状态开始时刻并且识别出这种运动的运动类型,重置所述监测模式参数为第三监测模式;如果发现活动幅度低于静止与运动的临界值的次数达到一定程度时,重置所述监测模式参数为第一监测模式。
本发明的更进一步优选方案是:所述的重复性运动的运动类型的识别方法包括:提取重复性运动的基本动作特征,并将该基本动作特征与已有的知识库中的所有知识点,一一进行相似度比较,根据比较结果判断上述基本动作特征所述的运动类型;其中相似度比较获得若干评分序列,取评分序列中最小的评分数的运动类型是所述基本动作特征。
本发明的更进一步优选方案是:所述的重复性运动的基本动作特征的提取方法包括:将所述的三维加速度分量与三维陀螺仪分量构成与运动节拍同步的六维数据序列片段,并计算出各维的期望与方差;将六维数据序列片段重新构造并得到数据浮动比例矩阵;根据设定参数对数据浮动比例矩阵进行纵向分割与计算,得到数据浮动比例描述序列;根据六维数据序列片段各维的期望与方差以及数据浮动比例描述序列,得到相应运动节拍所标示的基本动作特征。
本发明的更进一步优选方案是:所述设定参数包括分割段数和分割尺度,该分割段数用于设置所述数据浮动比例矩阵纵向分割的段数,该分割尺度用于设置数据浮动比例矩阵各维分隔段的数据长度。
本发明的更进一步优选方案是:所述分割段数为3~10段。
本发明的更进一步优选方案是:所述知识点的生成方法包括:获得若干基本动作特征,并计算每个基本动作特征对应位置上的数据所构成数列的期望与方差;根据生成的期望与方差构成某一运动的基本动作的知识点。
本发明的更进一步优选方案是:所述第三策略包括:如果与已知运动基本动作不同的动作连续出现的次数达到一定数目,就认为已经结束了已知类型的运动,根据已知类型运动的基本动作的个数计算出已知运动状态结束时刻,重置所述监测模式参数为第二监测模式;如果发现活动幅度低于静止与运动的临界值的次数达到一定程度时,重置所述监测模式参数为第一监测模式。
本发明的更进一步优选方案是:所述第三监测模式的处理还包括:根据已知类型运动的基本动作的个数,计算出所消耗的能量。
本发明的更进一步优选方案是:所述第一策略包括:如果发现活动幅度低于静止与运动的临界值,就累计静止状态持续时间,如果发现活动幅度超过静止与运动的临界值的次数达到一定程度时,就计算出静止状态结束时刻,重置所述监测模式参数为第二监测模式。
本发明的更进一步优选方案是:所述第一监测模式的处理还包括:根据静止状态结束时刻与静止状态开始时刻,计算出这段时间所消耗的能量。
本发明的更进一步优选方案是:所述第一监测模式的处理包括:在所述的第一数据队列中查找出所有静止段的开始位置与结束位置以及所有运动段的开始位置与结束位置,返回最长的静止段的开始位置与结束位置,同时返回最长的运动段的开始位置与结束位置。
本发明的更进一步优选方案是:所述的相对稳定的静止状态主要包括:被测对象坐着时的无规则运动、躺着时的无规则运动、以及一些其他的轻微抖动。
本发明的更进一步优选方案是:所述的进行将采集到的数据队列中的三维陀螺仪分量转换成一个一维的用以衡量人体活动幅度的一第一数据队列的处理指:针对每一个三维陀螺仪分量构成三维向量,将它本身的长度以及在缓冲数据队列中排在它前面所有历史向量所对应的长度加在一起再求平均值,计算结果作为第一数据队列中相应位置上的值。
本发明的更进一步优选方案是:所述的进行将采集到的数据队列中的三维加速度分量转换成一个一维的用以衡量人体周期性运动的变化节拍的一第二数据队列的处理指:针对每一个三维加速度分量构成三维向量,将三维加速度分量进行求和的处理,计算结果作为第二数据队列中相应位置上的值。
本发明的更进一步优选方案是:所述第二监测模式的处理和所述第三监测模式的处理均包括:
在第一数据队列进行运动段与静止段查找,其具体包括:在所述的第一数据队列中查找出所有静止段的开始位置与结束位置以及所有运动段的开始位置与结束位置,返回最长的静止段的开始位置与结束位置,同时返回最长的运动段的开始位置与结束位置;以及,
根据运动段的开始位置与运动段的结束位置,查找所述的第二数据队列中的特定运动段中的节拍链的信息。
本发明的更进一步优选方案是:所述的节拍链的信息包括节拍波形的特征信息、节拍的个数、每个节拍的开始位置与结束位置、第一个节拍的开始位置以及最后一个节拍的结束位置。
本发明的更进一步优选方案是:所述的第三监测模式包括至少一子类型,每个子类型对应于一种已经识别出的运动的基本动作;所述第三监测模式的处理还包括:根据所述的节拍链信息的第一个节拍的开始位置和结束位置从传感器数据缓存队列截取出与节拍同步的三维加速度计信号片段和三维陀螺仪信号片段,再从这个六维数据序列片段提取相应的波形特征作为这种运动基本动作的特征,并进而根据这种运动基本动作的特征确定第三监测模式的子类型。
本发明的更进一步优选方案是:所述的在第一数据队列进行运动段与静止段查找的过程具体包括:
首先,设置运动段编号为0,静止段编号为0;
然后,按照从前到后的顺序将第一数据队列的数据依次与人体运动与静止的临界值进行比较:
对于第一数据队列的第1个元素,当发现第1个元素的值大于等于人体运动与静止的临界值时,将运动段编号自加1,并且将编号1存储为运动段编号所指的运动段的开始位置,紧接着查找第2个元素的值,如果发现第2个元素的值大于等于人体运动与静止的临界值,那么退出;如果发现第2个元素的值小于人体运动与静止的临界值,那么会将编号1存储为运动段编号所指的运动段的结束位置,同时计算并存储该运动段的长度,同时将静止段编号自加1,将编号2存储为静止段编号所指的静止段的开始位置;当发现第1个元素的值小于人体运动与静止的临界值时,会将静止段编号自加1,并且将编号1存储为静止段编号所指的静止段的开始位置,紧接着查找第2个元素的值,如果发现第2个元素的值小于人体运动与静止的临界值,退出;如果发现第2个元素的值大于等于人体运动与静止的临界值,那么会将编号1存储为静止段编号所指的静止段的结束位置,同时计算并存储该静止段的长度,同时将运动段编号自加1,将编号2存储为运动段编号所指的运动段的开始位置;
对于第一数据队列的第n个元素,该第n个元素为第1个元素与最后元素之间的元素,当发现第n个元素的值大于等于人体运动与静止的临界值并且第n+1个元素的值小于人体运动与静止的临界值时,将编号n存储为运动段编号所指的运动段的结束位置,计算并存储该运动段的长度,将静止段编号自加1,同时将编号n+1存储为静止段编号所指的静止段的开始位置;当发现第n个元素的值小于人体运动与静止的临界值并且第n+1个元素的值大于等于人体运动与静止的临界值时,则将编号n存储为静止段编号所指的静止段的结束位置,计算并存储该静止段的长度,将运动段编号自加1,同时将编号n+1存储为运动段编号所指的运动段的开始位置;
对于第一数据队列的最后一个元素,当发现最后一个元素的值大于等于人体运动与静止的临界值时,则将最后一个元素的编号存储为运动段编号所指的运动段的结束位置,计算并存储该运动段的长度;当发现最后一个元素的值小于人体运动与静止的临界值时,则将最后一个元素的编号存储为静止段编号所指的静止段的结束位置,计算并存储该静止段的长度。
本发明的更进一步优选方案是:所述的查找所述的第二数据队列中的特定运动段中的节拍链的信息的处理采用了二级聚类分析方法,所述的二级聚类分析方法的第一级聚类采用了基于差值比较进行分类的C-means算法,所述的二级聚类分析方法的第二级聚类采用了基于相似性比较进行分类的C-means算法。
本发明的更进一步优选方案是:所述的第一级聚类的过程具体包括:
提供人体重复性运动的一个节拍{ai}1≤i≤n;
计算该节拍的期望与方差:
构造{bi}1≤i≤n,
设置分割段数:sectionNum,和分割尺度:
并做如下计算:
当i=1,…,sectionNum-1时,有
当i=sectionNum时,有
故称{E,V,{si}1≤i≤sectionNum}为{ai}1≤i≤n的特征,其中{si}1≤i≤sectionNum为{ai)1≤i≤n的形状特征。
本发明的更进一步优选方案是:所述的第二级聚类的过程具体包括:
节拍A为其形状特征为节拍B为其形状特征为
定义{di}1≤i≤sectionNum,其中
设置相似度阀限similarityThreshold,做如下计算:
取0.1≤similarityThreshold≤0.3,
当Vd≤similarityThreshold时,{ai}1≤i≤n与{bi}1≤i≤n相似;
当Vd>similarityThreshold时,{ai}1≤i≤n与{bi}1≤i≤n不相似。
本发明解决其技术问题所采用的技术方案包括:提供一种智能穿戴设备,包括一模块,用以完成人体运动的模式识别,所述模块包括:
初始化处理单元,用以进行将采集到的数据队列中的三维陀螺仪分量转换成一个一维的用以衡量人体活动幅度的一第一数据队列的处理;进行将采集到的数据队列中的三维加速度分量转换成一个一维的用以衡量人体周期性运动的变化节拍的一第二数据队列的处理;以及,将监测模式参数置为第一监测模式;
模式处理单元,用以根据当前的监测模式参数而分别调用第一监测模式处理子单元、第二监测模式处理子单元或者第三监测模式处理子单元;
滑动处理单元,用以用新的数据队列重新生成所述的第一数据队列以及所述的第二数据队列,供上述的模式处理单元进行处理;
其中,所述第一监测模式处理子单元用以搜索相对稳定的静止状态,计算出静止状态开始时刻,监测活动幅度,依据第一策略进行所述监测模式参数的重置;所述第二监测模式处理子单元用以搜索相对稳定的重复性运动,监测活动幅度,依据第二策略进行所述监测模式参数的重置;所述第三监测模式处理子单元用以通过运动节拍的特征的相似性比较对已经识别出的运动的基本动作的个数进行计数,监测活动幅度,依据第三策略进行所述监测模式参数的重置。
本发明的有益效果在于,通过监测模式参数的设置来实现三种监测模式的分别处理,并依据不同的监测模式参数重置策略,可以很巧妙地实现不同监测模式之间的切换,进而可以有效地简化算法以降低运算资源要求以及功耗要求。
具体实施方式
现结合附图,对本发明的较佳实施例作详细说明。
本发明提出一种基于三轴陀螺仪与三轴加速度计来对人体规律性运动进行监测与识别的算法。该算法主要由初始化处理模块、监测与识别模块、数据滑动模块构成。本发明可以有效地简化算法以降低运算资源要求以及功耗要求。这个算法已经在一种智能穿戴设备中进行了实现。
其中,初始化处理模块要完成三个任务。第一个任务:处理器不断地从陀螺仪和加速度计采集同步数据,并且将采集到的数据存放在FIFO缓存数据队列中,这样直到FIFO缓存数据队列被传感器数据填满;第二个任务:用FIFO缓存数据队列中的三维陀螺仪分量构造一个一维的反映人体活动幅度的第一数据队列,并且针对第一数据队列中的数据规定人体运动与静止的临界值;第三个任务:用FIFO缓存数据队列中的三维加速度计分量构造一个一维的反映人体活动节拍的第二数据队列。
其中,监测与识别模块总共有三种工作状态,他们分别是-1状态、0状态、i状态(i=1,2,,n,这些非零的正整数代表了规律性运动的编号),这三种状态都有各自特有的主要任务和次要任务。
具体地,-1状态最主要的任务是搜索人的相对稳定的静止状态,并且计算出静止状态的起始时间;-1状态次要的任务是监测人体的活动幅度,如果发现人体的活动幅度低于静止与运动的临界值,那么就累计人体静止状态的持续时间,如果发现人体的活动幅度超过静止与运动的临界值的次数达到一定程度时,那么会计算出静止状态的终止时间以及这个过程中人所消耗的能量,同时就由-1状态进入0状态。这里所说的人的静止状态主要包括人坐着时的无规则运动、躺着时的无规则运动、以及一些其他的轻微抖动。
0状态的最要任务是搜索相对稳定的重复性运动,当发现重复性的运动时推算出这种运动开始的时间并且识别出这种运动的运动类型i,同时由0状态进入i状态;0状态次要的任务是监测人体的活动幅度,如果发现人体的活动幅度低于静止与运动的临界值的次数达到一定程度时,那么会由0状态进入-1状态。
i状态的主要任务是通过运动节拍的特征的相似性比较对已经识别出的运动的基本动作的个数进行计数,如果与已知运动基本动作不同的动作连续出现的次数达到一定数目,那么就认为佩戴设备的人已经结束了已知类型的运动,进一步根据已知类型运动的基本动作的个数计算出已知运动的终止时间以及在这个过程中所产生的距离和消耗的能量,同时结束i状态进入0状态。i状态次要任务是监测人体的活动幅度,如果发现人体的活动幅度低于静止与运动的临界值的次数达到一定程度时,那么会由i状态进入-1状态。
数据滑动模块要完成两个任务。第一个任务:用未被处理过的传感器数据覆盖掉被处理过的数据,并用新采集到的传感器数据将缓存队列填充满;第二个任务:用新的缓存数据队列重新生成第一数据队列以及第二数据队列。
图1为本发明监测与识别方法的原理图。本发明提出一种人体运动的监测与识别方法,包括以下步骤:
S101:进行初始化处理,不断地从陀螺仪和加速度计采集同步数据,并且将采集到的数据存放在FIFO缓存数据队列windowData中,直到缓存数据队列windowData被传感器数据填满;用缓存数据队列windowData中的三维陀螺仪分量构造一个一维的反映人体活动幅度的第一数据队列motionLevel,并且针对第一数据队列motionLevel中的数据规定人体运动与静止的临界值motionLevelThreshold=1;用缓存数据队列windowData中的三维加速度计分量构造一个一维的反映人体活动节拍的第二数据队列motionClock,第二数据队列motionClock的变化节拍体现了人体周期性运动的变化节拍;置监测模式stateType=-1(也就是第一监测模式)。
S102:进行监测与识别处理,其具体包括:
S1021:判断当前的监测模式stateType是否为第一监测模式,是的话,转步骤S1022,否的话,转步骤S1023。
S1022:进行第一监测模式的处理,然后转步骤S103。
S1023:判断当前的监测模式stateType是否为第二监测模式,是的话,转步骤S1024,否的话,转步骤S1025。
S1024:进行第二监测模式的处理,然后转步骤S103。
S1025:进行第三监测模式的处理,然后转步骤S103。
S103:进行数据滑动,用未被处理过的传感器数据覆盖掉被处理过的数据,并用新采集到的传感器数据将缓存数据队列windowData填充满;用新的缓存数据队列windowData重新生成第一数据队列motionLevel以及第二数据队列motionClock,然后返回步骤S102进行循环。
图2为本发明监测与识别方法中第一监测模式实施例的流程图。其大致包括以下步骤:
S201:静止状态开始时刻staticStartTime=0;静止状态结束时刻staticEndTime=0;静止状态持续时间staticKeepingTimer=0;运动状态持续时间motionKeepingTimer=0。
S202:在第一数据队列motionLevel中查找出所有静止段的开始位置与结束位置以及所有运动段的开始位置与结束位置,返回最长的静止段的开始位置staticStartOrder和结束位置staticEndOrder,同时返回最长的运动段的开始位置motionStartOrder和结束位置motionEndOrder。
S203:判断(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder)是否不小于两倍的(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder),是的话,转步骤S204,否的话,转步骤S207。
S204:判断静止状态持续时间staticKeepingTimer是否为0,是的话,转步骤S205,否的话,转步骤S206。
S205:将静止段的开始位置staticStartOrder对应的系统时间赋给静止状态开始时刻staticStartTime;将从静止段的开始位置staticStartOrder到静止段的结束位置staticEndOrder的时间加进静止状态持续时间staticKeepingTimer;运动状态持续时间motionKeepingTimer清0,结束。
S206:将从静止段的开始位置staticStartOrder到静止段的结束位置staticEndOrder的时间加进静止状态持续时间staticKeepingTimer;运动状态持续时间motionKeepingTimer清0,结束。
S207:将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进运动状态持续时间motionKeepingTimer。
S208:判断运动状态持续时间motionKeepingTimer是否超过静止状态怀疑阀限,是的话,转步骤S209,否的话,转步骤S213。
S209:计算静止状态结束时刻staticEndTime;计算这段时间消耗的能量;置监测模式stateType=0(也就是准备进入第二监测模式)。
S210:判断静止状态持续时间staticKeepingTimer是否超过静止状态信息保存阀限,是的话,转步骤S211,不是的话,转步骤S212。
S211:将静止状态开始时刻staticStartTime、静止状态结束时刻staticEndTime、静止状态持续时间staticKeepingTimer以及消耗的能量保存到flash存储器上。
S212:静止状态开始时刻staticStartTime=0;静止状态结束时刻staticEndTime=0;静止状态持续时间staticKeepingTimer=0;运动状态持续时间motionKeepingTimer=0,结束。
S213:退出。
其中,步骤S202的具体实现过程包括:
首先,设置运动段编号为0,静止段编号为0;
然后,按照从前到后的顺序将第一数据队列motionLevel中的数据依次与人体运动与静止的临界值motionLevelThreshold进行比较;
对于第一数据队列motionLevel中的第1个元素,当发现第1个元素的值大于等于人体运动与静止的临界值motionLevelThreshold时,会将运动段编号自加1,并且将编号1存储为运动段编号所指的运动段的开始位置motionStartOrder,紧接着会查找第2个元素的值,如果发现第2个元素的值大于等于人体运动与静止的临界值motionLevelThreshold,那么退出;如果发现第2个元素的值小于人体运动与静止的临界值motionLevelThreshold,那么会将编号1存储为运动段编号所指的运动段的结束位置motionEndOrder,同时计算并存储该运动段的长度(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder),同时将静止段编号自加1,将编号2存储为静止段编号所指的静止段的开始位置staticStartOrder;当发现第1个元素的值小于人体运动与静止的临界值motionLevelThreshold时,会将静止段编号自加1,并且将编号1存储为静止段编号所指的静止段的开始位置staticStartOrder,紧接着会查找第2个元素的值,如果发现第2个元素的值小于人体运动与静止的临界值motionLevelThreshold,那么退出;如果发现第2个元素的值大于等于人体运动与静止的临界值motionLevelThreshold,那么会将编号1存储为静止段编号所指的静止段的结束位置staticEndOrder,同时计算并存储该静止段的长度(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder),同时将运动段编号自加1,将编号2存储为运动段编号所指的运动段的开始位置motionStartOrder;
对于第一数据队列的第n个元素(第1个元素与最后元素之间的元素),当发现第n个元素的值大于等于人体运动与静止的临界值motionLevelThreshold并且第n+1个元素的值小于人体运动与静止的临界值motionLevelThreshold时,将编号n存储为运动段编号所指的运动段的结束位置motionEndOrder,计算并存储该运动段的长度(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder),将静止段编号自加1,同时将编号n+1存储为静止段编号所指的静止段的开始位置staticStartOrder;当发现第n个元素的值小于人体运动与静止的临界值motionLevelThreshold并且第n+1个元素的值大于等于人体运动与静止的临界值motionLevelThreshold时,则将编号n存储为静止段编号所指的静止段的结束位置staticEndOrder,计算并存储该静止段的长度(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder),将运动段编号自加1,同时将编号n+1存储为运动段编号所指的运动段的开始位置motionStartOrder;
对于第一数据队列的最后一个元素,当发现最后一个元素的值大于等于人体运动与静止的临界值motionLevelThreshold时,则将最后一个元素的编号存储为运动段编号所指的运动段的结束位置motionEndOrder,计算并存储该运动段的长度(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder);当发现最后一个元素的值小于人体运动与静止的临界值motionLevelThreshold时,则将最后一个元素的编号存储为静止段编号所指的静止段的结束位置staticEndOrder,计算并存储该静止段的长度(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder)。
图3a、图3b和图3c为本发明监测与识别方法中第二监测模式实施例的流程图。其大致包括以下步骤:
S301:静止状态持续时间staticKeepingTimer=0;锁定动作开始时刻someActionStartTime=0;锁定动作结束时刻someActionEndTime=0;锁定动作持续时间someActionKeepingTimer=0;锁定动作发生个数someActionCounter=0;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0。
S302:在第一数据队列motionLevel中查找出所有静止段的开始位置与结束位置以及所有运动段的开始位置与结束位置,返回最长的静止段的开始位置staticStartOrder和结束位置staticEndOrder,同时返回最长的运动段的开始位置motionStartOrder和结束位置motionEndOrder。
S303:判断(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder)是否不小于两倍的(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder),是的话,转步骤S308,否的话,转步骤S304。
S304:将从静止段的开始位置staticStartOrder到静止段的结束位置staticEndOrder的时间加进静止状态持续时间staticKeepingTimer。
S305:判断静止状态持续时间staticKeepingTimer是否大于锁定动作怀疑阀限,是的话,转步骤S306,否的话,转步骤S307。
S306:清空锁定动作的波形特征标准unitClockFeatureStd;锁定动作开始时刻someActionStartTime=0;锁定动作结束时刻someActionEndTime=0;锁定动作持续时间someActionKeepingTimer=0;锁定动作发生个数someActionCounter=0;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0;静止状态持续时间staticKeepingTimer=0;置监测模式stateType=-1(也就是准备进入第一监测模式),结束。
S307:退出。
S308:根据运动段的开始位置motionStartOrder与运动段的结束位置motionEndOrder,查找第二数据队列motionClock中的特定运动段中的节拍链的信息(包括节拍波形的特征信息、节拍的个数、每个节拍的开始位置与结束位置、第一个节拍的开始位置、最后一个节拍的结束位置);如果查找到了这些信息,则附带地返回节拍链存在状态clockChainBeingness=1;如果没有查找到这些信息,则附带地返回节拍链存在状态clockChainBeingness=0。
S309:判断节拍链存在状态是否为1,是的话,转步骤S310,否的话,转步骤S312。
S310:判断锁定动作持续时间是否为0,是的话,转步骤S311,否的话,转步骤S313。
S311:将节拍链信息中的波形特征标准clockChainInfo.clockFeatureStd赋值给锁定动作的波形特征标准unitClockFeatureStd;将节拍链信息的节拍个数clockChainInfo.segmentNum加到锁定动作发生个数someActionCounter中去;将运动段的开始位置motionStartOrder所对应的系统时间赋给锁定动作开始时刻someActionStartTime;将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进锁定动作持续时间someActionKeepingTimer;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0;静止状态持续时间staticKeepingTimer=0,结束。
S312:退出。
S313:判断节拍链信息中的波形特征标准clockChainInfo.clockFeatureStd与锁定动作的波形特征标准unitClockFeatureStd是否相似,相似的话,转步骤S314,不相似的话,转步骤S318。
S314:用当前的锁定动作的波形特征标准unitClockFeatureStd以及节拍链信息中的波形特征标准clockChainInfo.clockFeatureStd修正锁定动作的波形特征标准unitClockFeatureStd;将节拍链信息的节拍个数clockChainInfo.segmentNum加进锁定动作发生个数someActionCounter;将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进锁定动作持续时间someActionKeepingTimer;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0;静止状态持续时间staticKeepingTimer=0。
S315:判断锁定动作持续时间someActionKeepingTimer是否大于锁定动作识别阀限,是的话,转步骤S316,否的话,转步骤S317。
S316:根据节拍链信息的第一个节拍的开始位置和结束位置从传感器数据缓存队列截取出与节拍同步的三轴加速度计信号片段和三轴陀螺仪信号片段,再从这个六维数据序列片段提取相应的波形特征作为这种运动基本动作的特征赋给当前提取到的基本动作特征unitActionFeatureU;确定监测模式stateType=运动识别函数FeatureRecognition(unitActionFeatureU),也就是,对于第三监测模式,存在一个分类的过程,这个过程具体会随unitActionFeatureU的不同,而有不同的子监测模式,换言之,对于不同的人体运动的规律性动作,可以采用不同的监测模式来相应地进行处理。
S317:退出。
S318:将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进其他动作持续时间otherActionKeepingTimer;将clockChainInfo.segmentNum加进otherActionCounter。
S319:判断其他动作持续时间otherActionKeepingTimer是否大于锁定动作怀疑阀限,是的话,转步骤S320,否的话,转步骤S321。
S320:清空锁定动作的波形特征标准unitClockFeatureStd;锁定动作开始时刻someActionStartTime=0;锁定动作结束时刻someActionEndTime=0;锁定动作持续时间someActionKeepingTimer=0;锁定动作发生个数someActionCounter=0;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0,结束。
S321:退出。
其中,步骤S302的具体实现与前述的步骤S202的具体实现类似,在此不再赘述。
其中,在步骤S308中,查找第二数据队列motionClock中的特定运动段中的节拍链的信息的处理采用了二级聚类分析方法。具体地,所述的二级聚类分析方法的第一级聚类采用了C-means算法思想,在分类过程中主要采用差值比较技术。所述的二级聚类分析方法的第二级聚类采用了C-means算法思想,在分类过程中主要采用相似性比较技术。
本实施例中,人体重复性运动产生的节拍信号的特征提取的计算步骤(也就是第一级聚类的实现过程)如下:
提供人体重复性运动的一个节拍{ai}1≤i≤n;
计算该节拍的期望与方差:
构造{bi}1≤i≤n,
设置分割段数:sectionNum,和分割尺度:
并做如下计算:
当i=1,…,sectionNum-1时,有
当i=sectionNum时,有
故称{E,V,{si}1≤i≤sectionNum}为{ai}1≤i≤n的特征,其中{si}1≤i≤sectionNum为{ai}1≤i≤n的形状特征。
本实施例中,人体重复性运动节拍信号之间的相似性比较的计算步骤如下:
节拍A为其形状特征为节拍B为其形状特征为
定义{di}1≤i≤sectionNum,其中
设置相似度阀限similarityThreshold,做如下计算:
取0.1≤similarityThreshold≤0.3,
当Vd≤similarityThreshold时,{ai}1≤i≤n与{bi}1≤i≤n相似;
当Vd>similarityThreshold时,{ai}1≤i≤n与{bi}1≤i≤n不相似。
其中,在步骤S313中,人体重复性运动节拍信号之间的相似性比较的具体实现与上述步骤S308中的人体重复性运动节拍信号之间的相似性比较的具体实现类似,在此不再赘述。
其中,步骤S316的具体实现是基于本实施例所提供的一种模式识别算法,其包括以下步骤:
A、与节拍信号同步的由三轴加速度信号与三轴陀螺仪信号构成的六维数据序列片段的特征提取,具体包括:
对六维数据序列片段各维进行计算,得到各维的期望和方差;根据上述的期望和方差重新构造六维数据序列片段并得到数据浮动比例矩阵;根据设定参数,包括分割段数和分割尺度,对数据浮动比例矩阵进行纵向分割与计算,得到数据浮动比例描述序列;根据六维数据序列片段各维的期望与方差以及数据浮动比例描述序列,得到相应运动节拍所标示的基本动作特征;其中,该分割段数用于设置所述数据浮动比例矩阵纵向分割的段数,该分割尺度用于设置数据浮动比例矩阵各维分隔段的数据长度,所述分割段数设置为3~10段。
具体实现方式包括:
六维数据序列片段:unitData∈R6×l;六维数据序列片段长度:l;
六维数据序列片段各维的期望与方差:
其中:
accX代表它所在的量与三维加速度数据的X轴分量相关;
accY代表它所在的量与三维加速度数据的Y轴分量相关;
accZ代表它所在的量与三维加速度数据的Z轴分量相关;
gyroX代表它所在的量与三维陀螺仪数据的X轴分量相关;
gyroY代表它所在的量与三维陀螺仪数据的Y轴分量相关;
gyroZ代表它所在的量与三维陀螺仪数据的Z轴分量相关;
accXE代表三维加速度数据的X轴分量的期望;
其他轴分量的期望与方差如上述accXE的表示方式一致,就不一一叙述。
数据浮动比例矩阵unitDataCorrection:
首先,设定分割段数:sectionNum,和分割尺度:紧接着,沿着行方向对unitDataCorrection进行分块,对于前sectionNum-1个块,它们的宽度都是分割尺度;
对于最后的那个块,其宽度不一定刚好达到分割尺度。
对于unitDataCorrection的第1行数据,做如下计算:
当i=1,…,sectionNum-1时,有
当i=sectionNum时,有
其中,accXDescription(i)表示三维加速度数据序列片段对应的数据浮动比例矩阵在X轴上的比例描述序列,其比例描述序列如所述accXDescription(i)表的表示方式一致,就不一一叙述。
其中,对于unitDataCorrection的其他的行的数据,做类似处理。
最终可以得到运动的基本动作特征actionFeature:
B、基于六维数据序列片段的几个性质的统计分析,具体包括:
基于六维数据序列片段的特征提取,获得某一运动的若干个基本动作特征;计算每一个基本动作特征对应位置上的数据所构成的数列的期望与方差;由上述生成的期望与方差,构成某一种运动的基本动作的知识点;由若干个知识点构成知识库。
其中,从基本动作特征序列中提取基本动作的知识点的具体实现方式包括:
设置基本动作特征数目actionFeatureNum,获得若干个基本动作特征:{actionFeature(k)}1≤k≤actionFeatureNum,
其中:
可以通过统计计算产生这种动作的知识点:
其中,
当1≤i≤sectionNum时
其他维的算法如上所述,在此就不再赘述。
C、重复性运动的运动类型的识别方法,具体包括:
提取重复性运动的基本动作特征,并将该基本动作特征与已有的知识库中的所有知识点,一一进行相似度比较,根据比较结果判断上述基本动作特征所述的运动类型;其中相似度比较获得若干评分序列,取评分序列中最小的评分数的运动类型是所述基本动作特征。
其中,具体实现方式包括:假设运动节拍信号从传感器数据序列中提取到一个基本动作特征actionFeature,
知识库中知识点为{actionDefinition(k)}1≤k≤actionDefinitionNum;
计算actionFeature与{actionDefinition(k)}1≤k≤actionDefinitionNum中的每一种运动的相似度评分,这些评分构成一个序列{similarityGrade(k)}1≤k≤actionDefinitionNum。取评分序列中最小的评分数 则actionFeature是所述识别的运动类型actionDefinition(p)。
actionFeature关于actionDefinition(k)的相似度评分具体步骤是:
similarityGrade(k)=0,
i由1增加到sectionNum都要进行,
similarityGrade(k)在其他知识描述上的累计加分和上述描述一样,在此就不再一一描述。
图4a、图4b和图4c为本发明监测与识别方法中第三监测模式实施例的流程图。其大致包括以下步骤:
S401:在第一数据队列motionLevel中查找出所有静止段的开始位置与结束位置以及所有运动段的开始位置与结束位置,返回最长的静止段的开始位置staticStartOrder和结束位置staticEndOrder,同时返回最长的运动段的开始位置motionStartOrder和结束位置motionEndOrder。
S402:判断(运动段的结束位置motionEndOrder-运动段的开始位置motionStartOrder是否不小于两倍的(静止段的结束位置staticEndOrder-静止段的开始位置staticStartOrder),是的话,转步骤S410,否的话,转步骤S403。
S403:将从静止段的开始位置staticStartOrder到静止段的结束位置staticEndOrder的时间加进静止状态持续时间staticKeepingTimer。
S404:判断静止状态持续时间staticKeepingTimer是否大于锁定动作保持阀限,是的话,转步骤S405,否的话,转步骤S409。
S405:根据静止段的结束位置staticEndOrder所对应的时间以及静止状态持续时间staticKeepingTimer计算锁定动作结束时刻someActionEndTime;根据锁定动作发生个数someActionCounter计算这种运动所消耗的能量。
S406:判断锁定动作持续时间是否大于锁定动作信息保持阀限,是的话,转步骤S407,否的话,转步骤S408。
S407:将锁定动作开始时刻someActionStartTime、锁定动作结束时刻someActionEndTime、锁定动作持续时间someActionKeepingTimer、锁定动作发生个数someActionCounter以及这个过程中所产生的距离、能量的数据保存在flash存储器中。
S408:清空锁定动作的波形特征标准unitClockFeatureStd;锁定动作开始时刻someActionStartTime=0;锁定动作结束时刻someActionEndTime=0;锁定动作持续时间someActionKeepingTimer=0;锁定动作发生个数someActionCounter=0;其他动作发生个数otherActionCounter=0;其他动作持续时间otherActionKeepingTimer=0;静止状态开始时刻staticStartTime=0;静止状态结束时刻staticEndTime=0;静止状态持续时间staticKeepingTimer=0;置监测模式stateType=-1(也就是准备进入第一监测模式),结束。
S409:退出。
S410:根据运动段的开始位置motionStartOrder与运动段的结束位置motionEndOrder,查找第二数据队列motionClock中的特定运动段中的节拍链的信息(包括节拍波形的特征信息、节拍的个数、每个节拍的开始位置与结束位置、第一个节拍的开始位置、最后一个节拍的结束位置);如果查找到了这些信息,则附带地返回节拍链存在状态clockChainBeingness=1;如果没有查找到这些信息,则附带地返回节拍链存在状态clockChainBeingness=0。
S411:判断节拍链存在状态是否为1,是的话,转步骤S412,否的话,转步骤S414。
S412:判断节拍链信息中的波形特征标准clockChainInfo.clockFeatureStd与锁定动作的波形特征标准unitClockFeatureStd是否相似,相似的话,转步骤S413,不相似的话,转步骤S415。
S413:将节拍链信息的节拍个数clockChainInfo.segmentNum加进锁定动作发生个数someActionCounter;将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进锁定动作持续时间someActionKeepingTimer;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0;静止状态持续时间staticKeepingTimer=0,结束。
S414:退出。
S415:将从运动段的开始位置motionStartOrder到运动段的结束位置motionEndOrder的时间加进其他动作持续时间otherActionKeepingTimer;将clockChainInfo.segmentNum加进otherActionCounter。
S416:判断其他动作持续时间otherActionKeepingTimer是否大于锁定动作怀疑阀限,是的话,转步骤S417,否的话,转步骤S421。
S417:根据运动段的结束位置motionEndOrder以及其他动作持续时间otherActionKeepingTimer计算出锁定动作结束时刻someActionEndTime;根据锁定动作发生个数someActionCounter计算这种运动所产生的距离以及所消耗的能量。
S418:判断锁定动作持续时间someActionKeepingTimer是否大于锁定动作信息保存阀限,是的话,转步骤S419,否的话,转步骤S420。
S419:将锁定动作开始时刻someActionStartTime、锁定动作结束时刻someActionEndTime、锁定动作持续时间someActionKeepingTimer、锁定动作发生个数someActionCounter、以及这个过程中所产生的距离、能量的数据保存在flash存储器中。
S420:清空锁定动作的波形特征标准unitClockFeatureStd;锁定动作开始时刻someActionStartTime=0;锁定动作结束时刻someActionEndTime=0;锁定动作持续时间someActionKeepingTimer=0;锁定动作发生个数someActionCounter=0;其他动作持续时间otherActionKeepingTimer=0;其他动作发生个数otherActionCounter=0,结束。
S421:退出。
其中,步骤S401的具体实现与前述的步骤S202的具体实现类似,在此不再赘述。
其中,步骤S410的具体实现,与前述的步骤S308的具体实现类似,在此不再赘述。在步骤S412中,人体重复性运动节拍信号之间的相似性比较的具体实现与上述步骤S308中的人体重复性运动节拍信号之间的相似性比较的具体实现类似,在此不再赘述。
图5为本发明智能穿戴装置的结构框图。本发明提供一种智能穿戴设备,比如:运动腕带,其包括模式识别模块502、运动描述库503和传感模块504。其中,该模式识别模块502借助传感模块504,通过采用前述的监测与识别方法可以查找运动描述库503而进行规律性运动的归类,该运动描述库503包括至少一运动的基本动作的描述。本领域普通技术人员可以清楚地理解,这里所说的模块可以通过硬件实现,也可以借助软件以及必要的通用硬件平台的方式来实现。
参见图6为本发明智能穿戴设备中模式识别模块的结构框图。该模式识别模块大致包括:第一单元601,用以对应实现图1中步骤S101的功能;第二单元602,用以对应实现图1中步骤S102的功能;以及,第三单元603,用以对应实现图1中步骤S103的功能。本领域普通技术人员可以清楚地理解,这里所说的模块和/或单元可以通过硬件实现,也可以借助软件以及必要的通用硬件平台的方式来实现。
应当理解的是,以上实施例仅用以说明本发明的技术方案,而非对其限制,对本领域技术人员来说,可以对上述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改和替换,都应属于本发明所附权利要求的保护范围。