一种用于步态分析的足印提取算法*
2018-11-02姚志明
叶 强,夏 懿,姚志明
(1.南京体育学院运动健康科学系,南京 210014;2.安徽大学电气工程与自动化学院,合肥 230601;3.中国科学院合肥智能机械研究所,合肥 230031)
步态是人类在行走过程中的行为特征,涉及行为习惯、职业、教育、年龄及性别等因素,也受到多种疾病的影响[1]。步态分析主要包括步态时空参数的计算,足底压力分布的提取,以及相关肌肉肌电的活动模式分析。步态分析在临床诊断[2],康复评估[3]以及体育训练[4]等活动中具有十分重要的应用价值。作为步态分析的一个基本步骤,跟踪足部运动并建立每一个脚印的帧序列是一个非常重要的必要步骤。只有正确的捕捉到每一个脚印的时空位置信息,才能够保证步态参数的正确计算。
大多数步态研究中,受压力感应区域面积的限制,步态实验过程中受试者的运动方式通常都是直线运动[5],因此两脚之间的距离跨度很大,而且脚的动作都是非常简单的常规足底动作[6],因此足印提取问题的解决相对比较容易。随着模块化柔性阵列传感器制造水平和数据通信技术的提高,压力感应场地(以下称之为数字场地)的面积越来越大。
大面积的数字场地为测试者采用任意方向的足部运动以及更加复杂的非常规足部动作提供了硬件条件,一些相关的步态应用,如足底压力分析[7],足部姿态识别[8]等,其研究开发都将成为可能。然而一旦不限制足部运动的方向以及姿态,足印提取任务将不再是一个简单的问题[6,9]。其困难主要来自两个方面:首先,因为足部运动不再是简单的直线跨步,因而两脚之间的距离在某些情况下非常小,导致距离测度不足以将属于两个不同脚印的各个数据点聚集块区分开来。其次,如果单脚在某个位置的着地过程中可能会存在多个非常规动作(如旋转、半抬,侧歪等),造成该区域的脚印是由多个单脚印叠加而成,如何正确的从中分割出单个脚印也不是一个容易的问题。例如图1(a)与图1(b)分别显示了一个太极拳表演者在运动过程中留下的杂乱足印轨迹,以及一个帕金森病人在拐弯处短促与慌乱的步伐轨迹。
为解决上述步态分析问题,本文提出一个三阶段的解决方案。第1阶段:沿时间轴对每一帧压力图像进行基于密度聚类的图像分割,其结果是得到不同的数据点聚集块;第2阶段:利用脚印的几何特征如脚印的大小、形状以及前后脚时间序列信息等,将第1阶段产生的不同数据块归属到相应的左、右不同脚印;第3阶段:通过寻找脚印面积—时间曲线上的波峰与波谷点,来完成复杂步态的单脚印分割。
图1 足迹轨迹
1 数据采集
本文实验中铺设的大面积数字场地是由24个压力感应模块拼装组成,形成一个3×8的行列结构。每个模块的面积为100 cm×100 cm,上面共有80×80个压力传感点,每个传感点的半径为0.5cm,相互之间的距离为1.25 cm。所有压力感应模块在数据层通过局域以太网实现实时数据传输。系统的采样频率是50 Hz,每个压力单元所受的压力分为4个等级。灰度压力图像宽为640(8×80)像素,高为240(3×80)像素。图2显示了一个太极拳表演者在数字场地上运动的场景。实验中,分别召募了5名太极拳运动表演者以及5名帕金森病人来采集相应的足底压力序列。试验者的相关信息见表1。太极拳运动者根据自己的喜好在场地上表演一套时间长度不一的太极拳,而帕金森病人则需要根据我们规划的路线(2段直线、3个拐弯)来进行测试。实验中,一共采集了10段(每位测试者一段)不同时长的足底压力图像视频进行算法的分析评估。为了验证本文提出的分阶段足印分割算法的有效性,实验过程中架设了一台摄像机以同步记录测试者的足底动作,然后通过回放录像来验证足印提取的准确性。
图2 足底压力感应场地
表1 测试者基本信息
HAY:Hoehn and Yahr score
2 足印提取算法
2.1 基于聚类方法的压力点聚集块分割
在测试者移动的过程中,足底不同部位所受的压力一直处在变化之中,在某个时刻有些部位所受的压力可很能小,或者没有接触到地面,再加上数字场地传感点之间还存在一定的距离,因此采集到的足底压力图像在物体形态上与摄像头得到的感光图像不一样,足迹不是整体连通的,而是由几个分离的大区域块加上周边一些小的区域块所共同构成。文中采用数据点聚类的方法来寻找压力图像中的不同区域块。足底压力图像中的足印受足底压力大小分布的影响,区域块的形状变化无常,因此本文选择一种对形状不太敏感的基于密度的聚类算法,DBSCAN[10],来完成足印区域块的寻找工作。
2.2 压力点聚集块的左右脚归属
如上所述,压力点聚集块划分主要目的是将不同聚集块归属到不同的脚印(在本文中被限定为同一个人的左或者右脚)。
假设给定如下条件:①当前时刻t时的压力图像帧:Ot={Ci},Ci是组成某一个聚集块的点集合,i=1,…,K,K为聚集块总数。②上一时刻t-1时所有聚集块均被正确归属到不同的左右脚,即Ot-1={Fi},Fi为组成一只脚印的点集合,i∈{left,right}。③假设Ti是左、右脚印的某种形状特征空间,EDi表示压力点集合Di对应的形状特征向量,如果数据点集合构成真实脚印的一部分,则EDi∈Ti,否则EDi∉Ti。
于是聚集块划分问题的解决需要满足如下约束:
Di∩Dj=∅,i≠j;i,j∈{left,right}
(1)
EDi∈Ti,i∈{left,right}
(2)
Di∩Fj=∅,i≠j;i,j∈{left,right}
(3)
EDi∪Fi∈Ti,i∈{left,right}
(4)
Di⊂Ot,i∈{left,right},为构成左脚或右脚的数据块集合。条件(1)表明每一帧中不同脚印之间在空间位置上应该没有重叠;条件(2)表明构成一个脚印的数据点集合在空间上的分布应该在一个脚印的形状范围内;条件(3)和(4)则描述了不同脚印的数据点集合在两个相邻帧之间的空间关系。由于帧t-1与帧t之间的采样间隔时间非常短(20 ms),因此两个不同脚印之间不会发生重叠,这就给出了条件(3)。类似,在上述短暂的间隔内,对单个脚印而言,相邻两帧数据点集合的并集在空间分布上应该仍然在一只脚印的范围内,于是条件(4)成立。
上述问题的解决步骤如下:
①判断当前帧中脚印的个数
如果当前帧中压力点聚集块的总面积超过了一只脚印的大小,那么可以很容易的得知当前帧中有多只脚印(本文实验中最多为两只,因为只有一个人)。然而,如果总面积在一只脚印范围内,脚印的数目既可能为一个,也有可能为两个,具体情形需要通过上述约束4个条件来具体判定。
②寻找每个脚印的主压力区域块
一旦发现当前数据帧中有不止一个的脚印时,我们根据每一脚印在任一时刻都有一个压力重心的原则,首先来寻找每一个脚印的主压力区域块Mi,其具体规则是:
(5)
式中,pressure( )是一个算子,用来获取数据点集合的总压力大小,条件Ck∩Fi≠∅ 约束当前左或右脚印的主压力区域块必须和上一帧此脚印在空间上有交集。
③将其他区域块归属到不同的脚印
完成脚印主区域块的定位之后,接下来就是将剩余的区域块进行左右脚归属划分。这一过程的原则为:
Bi={Cm|Cm=Ck∪Mi;Cm∈Ti;Cm∩Fj=∅},
Ck∈Ot;Ck≠Mi;i∈{left,right};i≠j
(6)
其具体过程为:给定不同脚印的主区域块Mi,上一帧脚印的区域块Fi,不同脚印的特征空间Ti,当前帧的区域块集合Ot,这里i∈{left,right};下面先选定一个主区域块Mi,然后检查待划分的区域块Ck,如果Ck和Mi的并集Cm符合一个脚印的特征,并且和上一帧其他脚印Fj没有交集,那么Ck和Mi在当前帧中同属一个脚印。这一个过程顺序执行,直到所有区域块划分完毕。
在上述过程中,如果双脚距离相对较远(图3(b)所示),根据可能的足印大小,那么区域的划分容易完成。但是如果双脚距离比较近,如图3(a)所示,那么其他小区域块的归属判定则不是那么直接。
图3 数据聚类得到的不同区域块
为此,我们采用一个层次化的决策方法来完成这一任务,其基本步骤为:
①利用区域块的包络框进行初步判断
首先根据条件(6)将不同的小区域块与主压力区域块相组合得到一个新的区域块集合Bi,计算其最小包络框,然后根据其长轴以及短轴的长短来进行一个初步的判断。
②利用卷积神经网络进行二次判断
第1步在双脚比较靠近的情况下往往不能有效判断合并后的区域块是否是一个有效脚印。如图4所示,是不同组合所形成的包络框,可以看出两种组合很难通过包络框的大小来进行选择。
图4 区域块的不同组合(对应图3(a))
为此,我们利用近年来在多个领域取得广泛成功的深度卷积神经网络[11]来进行左、右以及非脚印的判断。深度卷积神经网络通过卷积子、感受野、下采样、非线性化以及正则化等一系列操作来提取不同尺度下的图像特征[12],并通过误差反向传播[13]来训练神经网络的模型参数,从而实现特征的自动提取。而传统方法往往需要事先设计特定的算子来进行特征提取,其过程相对复杂且效果有限。卷积神经网络还可以通过将分类器集成到网络结构中,实现端(输入的脚印)到端(输出的分类结果)的流水线作业方式,从而省去了传统模式分类任务过程中不同模块的参数调优过程。模型完成训练后,通过前向网络传播,利用已训练的模型参数来得到正确的分类结果。
表2面积—时间曲线上有效波峰波谷提取算法
2.3 复杂脚印分割阶段
测试者运动过程中,除了直线跨步外,还有其他一些比较复杂的足部运动,例如单脚旋转,单脚轻拖,双脚并拢等等。这些动作所对应的脚印通常是多个单一脚印叠加而成,如图5所示。
图5 采集的复杂脚印
图6 足底触地面积沿时间轴变化曲线
为了分割这些复杂脚印,寻找单个脚印在时间轴上的起始与结束点是关键。而一个简单脚印的起始与结束点通常是触地面积沿时间轴最小的两个位置。图6所示是图5所对应的触底面积沿时间轴的变化曲线。
我们通过统计复杂脚印每一帧的足底压力面积,进而寻找面积—时间曲线上的谷底位置,并以此位置作为单个脚印的划分点来分割复杂脚印。由图6可以发现,面积—时间曲线上有不少并不是真正脚印划分点的波谷位置,这些小的波动主要是由脚着地过程中足底压力的波动[14]所造成。为了消除小波动所引起的干扰,本文首先利用高斯函数对曲线进行平滑处理,然后对平滑后的曲线通过表2中的算法1来进行有效波峰波谷的检测。
3 实验与结果分析
实验从两个方面来评价算法的有效性:①检查每一帧足底压力图像中的所有区域块是否被正确的划分到左右脚,实验中通过回放足底压力图像的方式来进行此项检查。在回放过程中,分属不同脚的区域块所显示的颜色不同,其中左脚的颜色为蓝色,右脚的颜色为红色。在双脚比较靠拢的情况,通过放慢回放速度的方法来人工判断是否有区域块划分错误。②检查复杂足部动作引起的复杂脚印的分割是否正确,此项检查首先观察足部运动录像来判断复杂脚印的构成,然后检查本文提出的分割算法是否准确的找到了这些单脚印在时间顺序上的起止点。
3.1 压力点划分左右脚实验
正如2.2节所述,在这一实验中我们需要构建一个基于深度卷积神经网络的脚印分类器。该分类器实现左、右以及非脚印形状的分类。为此我们分别采集左、右脚印样本800个,而非脚印样本600个。其中左、右脚印的采集比较容易,而非脚印是通过人工组合双脚靠近情况下不同区域块的方式产生的,这种方式产生的非脚印更适合本研究需要。为了提高训练效果,我们使用平移、旋转等数据扩展方式,使得最终的样本总数为6 000,三类样本各2 000个。每个样本通过预处理被统一为高48像素宽为48像素大小。实验中随机选取60%样本用于训练,40%样本用于测试。图7展示了所采集的不同类别样本。
上排左脚印,中排右脚印,下排非脚印图7 训练样本图片
这里“Conv”,“Bn”,“ReLU”,“FC”,‘DO’,and“MP”分别是“Convolutional layer”,“Batch normalization”,“Rectified Linear Unit”,“Fully connected layer”,“Drop Out”,and“Max pooling layer”的简写。“@”符号之前的数字代表相应操作的核参数,而之后的数字代表卷积层的特征图数量或者全连接层的输出维度图8 用于对三类脚印进行分类的卷积神经网络
本文所采用的深度卷积神经网络结构如图8所示。
实验中,我们采用的学习参数见表3,各参数的具体含义见文献[15]。针对测试数据,我们得到的top-1准确率为98.1%。针对所采集的10段足底压力图像视频,压力点左右脚划分的结果如表4所示。
表3 实验中卷积神经网络所使用的学习参数
表4 压力点左右脚划分结果
NL为划分左右脚发生错误的帧数
3.2 复杂脚印分割实验
图9给出了图5所示复杂脚印的分割结果。图中上排对应图6面积—时间曲线谷底点之前的动作,而下排对应谷底点之后的动作。其中图9(a)、9(b)是图5(a)的分解,图9(c)、9(d)是图5(b)的分解,而图9(e)、9(f)是图5(c)的分解。
图9 复杂脚印的分割结果(与图5、图6对应)
表5列出了10段动作中复杂脚印分割的准确率。
表5 算法的分割结果
NS为复杂脚印分割发生错误的个数
从实验结果来看,大多数情况下算法能够准确分割左右脚的足印,然而算法在分割的各个阶段都存在分析错误的情况。在区域块划分阶段,当双脚区域特别靠近时,受形状识别能力的限制,一些不属于该脚印的区域块被划分为该脚;而在复杂脚印分割阶段,曲线关键点寻找过程中所使用的阈值技术有其局限性,因此难免会存在一些真正的分割点没有定位到,而一些不是分割点的关键点被误认为是分割点。
4 结束语
针对大面积数字场地上的单人复杂步态运动的足印分割问题,本文提出一种分阶段的解决方案。首先从每一帧足底压力图像中分割出左右脚,形成左右脚的运动轨迹,然后针对某些复杂步态所形成的复杂脚印,通过寻找触地面积—时间曲线上的转折点来进行复杂脚印的多阶段动作分解。实验表明本文所提方法对于单人复杂脚印的分割提取具有很高的准确性。