吴 博
(浙江旅游职业学院 公共教学部,浙江 杭州 311200)
虽然跑步锻炼的方式很受欢迎,但大部分跑步者会出现跑姿失常甚至出错的情况.这种错误的姿势会给他们的身体带来难以想象的伤害,甚至是永久性的伤害[1].目前常用的判断跑步姿势是否标准的方法是通过人为直接观察得出判断结论,但这种方法存在许多局限性.
当前已有物体运动轨迹监测方法的相关研究,例如帧间差分法、光流法和背景相减法等.文献[2]利用帧间差分法进行地区筛选,使用轻量级卷积神经网络进行可疑区域的超分辨率重建,强化选定区域的细节特征后再进行目标检测.该方法具有较好的环境适应性,但容易产生空穴效应;文献[3]提出在T-1帧跟踪结果的基础上使用光流法计算跟踪目标的运动矢量,将初选框区域作为区域卷积网络的输入,计算目标的精确跟踪结果.该方法可对位移较大的帧、帧率进行调整,检测速度快,检测结果也比较精确,能够实时处理.但该方法对算法以及硬件的要求比较复杂,实时性差;文献[4]采用背景差分法的基本原理,重点设计了监控视频中的运动目标检测的流程及相关算法,结合Python与OpenCV的编程,混合高斯的建模过程,实现了运动目标的检测.但该方法对环境要求较高,当环境改变时,算法将变得更加敏感,并在运行中产生负面影响.
为此,提出了基于KNN算法的跑步运动轨迹监测系统设计,通过高速摄像机、轨迹跟踪模块对运动物体进行跟踪拍摄,通过射频子模块、上下位机模块与控制子模块进行信息收集、传递以及处理工作,利用KNN算法识别运动姿势,实验结果证明该方法可改善运动轨迹监控系统的准确性.
图1显示了跑步运动轨迹监测系统的总体框架,层间调用可以通过特定的接口或方法,尽可能隔离不同层间功能,从而简化系统流程,保证其良好的可扩展性[5].
图1 系统总体框架
表现层是一个面向用户的界面,它能与用户进行交互[6].其主要职责是收集用户输入和显示数据,对网页导航进行控制,并将用户输入传递给业务逻辑层,后者需要对用户输入进行验证[7].它具有视频监控集中、视频抽象长度自适应的功能,与用户交互次数少,表现层将实时处理后产生的原始监控视频和摘要视频显示在同一界面上[8].
基于业务和需求分析,应用层主要负责业务逻辑的实现.本层主要完成背景处理部分、前景处理部分和前景背景拼接部分.背景处理部分对每一帧原始视频图像进行建模和分析,并对背景和前景进行定位;在此基础上,对每一帧图像的信息进行二值化处理,根据被分析图像的前景和背景区域位置,生成标记为前景和背景区域位置的二值图像,依据二值图和原始视频图,得出每帧图像中每个目标的前景掩码[9].
前处理部分分析处理每一帧监控视频,锁定移动对象,提取其轨迹,并将其存储在一个虚拟“容器”(即轨迹集)中[10].在满足充填条件后,所有跟踪“容器”,到视频浓度空间按一定规则进行充填,然后在适当的集中空间内截断跟踪,防止情况浓缩视频中只有一个移动的目标,浓度效应无法实现[11-13].切断后,通过 alpha混合法将主体部分粘贴在一起,以便于后续编码;参与下一个轨迹填充,以避免信息丢失和轨迹中断.前景背景拼接部分将前景背景合并编码为代码,生成视频摘要.
数据层主要包括系统使用的资源,包括输入数据及输出数据.多个摄像机生成监控视频作为输入数据,输出数据为实时集中处理生成的视频文件[14].
至此,系统的总体框架构建完毕,基于此设计系统的硬件和软件结构部分.
基于KNN算法的跑步运动轨迹监测系统硬件结构如图2所示.
图2 基于KNN算法的跑步运动轨迹监测系统硬件结构
本文所设计的跑步运动轨迹监测系统硬件结构由摄像头和轨迹跟踪两个模块组成,轨迹跟踪模块又由射频子模块、控制子模块及上下位机模块组成.以下分别对系统硬件各模块进行设计.
利用高速摄像机对跑步机上的运动物体进行拍摄,选择多个摄像机同时拍摄,实现多角度观测.依据运动模型建立的原理,采样角分为后角和侧角两种,摄像机放在物体的背面和侧面,通过视频逐帧播放,对运动目标的运动轨迹和运动过程进行分析,根据所建立的模型和标记点进行路径跟踪[15-17].
使用IMX179型号摄像头,其模组如图3所示.
图3 IMX179型号摄像头模组
采用工业级光学全波镜头,视角可任意选择,且图像清晰,可外加补光夜视功能.标准USB2.0插头速度可达到480Mbps,UVC驱动程序即插即用.
轨迹跟踪模块主要是由射频子模块、控制子模块、上下位机模块和指示灯4个部分组成,射频子模块用于处理摄像机拍摄的图像,由RF子模块进行下变频处理、A/D转换,通过时间基准、采样判断、信号分析等方法采集运行轨道信号,并发送到控制子模块;控制子模块用于对RF子模块数据进行控制和处理,控制RF子模块的工作方式和时序,两个子系统之间的通信是通过PCI总线实现的.利用上下位机模块处理相关数据,通过指示灯显示跟踪结果[18].
2.2.1 射频子模块
射频子模块的核心为RF收发器,该模块还包括功率放大器、天线开关模块、前端模块、双工器、滤波器和合成模块.功率放大器用于放大收发器输出的射频信号,双工器是射频子模块的核心处理单元,主要包括接收单元和发送单元.首先对接收到的信号进行滤波放大处理,然后转换,最后输出基带信号.通常使用零中频和数字低中频作为射频基带,前端模块结合开关和射频滤波器完成天线的收发切换、频段选取、滤波等工作[19].
2.2.2 控制子模块
控制子模块完全独立于数据空间,可同时获取指令和操作数,实现不同程序空间的数据传输.控制子模块结构如图4所示.
图4 控制子模块
该控制器分4个阶段实现:指令获取、指令解码、操作数获取和指令执行.抽取指令占用PAB和PRDB,解码指令不占用总线;通过使用DRAB和DRDB获取操作数,并在指令执行时将执行结果写回数据内存,可以极大地提高指令的速度.
2.2.3 上下位机模块
主机安装普通桌面电脑,操作系统为Windows XP,主要分析机器人运行轨迹.它的作用是向下位机发送各种任务中断信息,刺激下位机调用相应的程序来完成任务.485模块采用专用PCI总线实现上下级计算机间的通信,并将差分信号与下级计算机连接,实现可靠的数据传输.
通过专用PCI总线,485模块完成上下位机之间的通信,并与下位机连接,实现数据的可靠传输.若将PWM输出连接到电机驱动端,就需要进行光电隔离.它的作用是隔离强、弱电流,使驱动装置直接连接到电机上.
近邻算法又称K-近邻算法,它选择一个距离函数,计算出测试样本和训练样本在多维空间中的距离,选择K个最接近的训练样本点,然后根据点的类型对测试样本进行判别[20-22].身体稳定是跑步过程中的重要原则,但许多跑步者在实际运动过程中,身体摆动的幅度偏差较大,使用了kinovea跟踪运动目标的水平位移软件,可以直接反映跑步过程中运动目标的左右摆动.根据这一标准,将其分成3类:A类为稳定底盘,B类为稳定底盘的左行驶过程,C类为右行驶过程.
在左脚第一次完全落地时,为统一样本的大小,每个观察点选取60个样本.试验期间,共采集14组样本数据,其中 A类5组,B类6组,C类3组.每个训练样本的特征数是60个,选择K值为3.图5显示了 KNN算法的实现过程.
图5 KNN算法流程
以14组样本为训练样本,将1组样本进行分类,训练测试用来保存训练样本的特征标签,测试数据特征用于测试数据文件存储;各测试样本之间的欧氏距离用k=3表示,欧氏距离以A2、A3、B3和标签之间最小距离表示,最大距离以A表示.所以,根据分类结果,该组训练样本属于 A类,即底盘运动目标相对稳定.
基于kinovea的运动轨迹监测软件,将网格线插入视频,选择肩胛骨的后部位置作为观察点,逐帧播放.该软件能够跟踪观测点的位置,自动记录每个帧对应的位置.跟踪过程中,由于不能清晰地识别特征点,造成跟踪误差.因而在路径跟踪时,需要进行人工修正,将原视频放大几倍,并手动调整跟踪点以获得更精确的位置.一帧一帧地播放视频、分析视频.因为在视频中可以获得跑步机的高度和参数,所以采用移动尺寸法(内插距离法)来计算.根据运动目标的实际高度,可以获得视频中图像的比例.在此基础上,确定出运动物体的实际位置.
以基于KNN算法跑步运动姿态识别结果为依据,构建跑步运动方程为:
(1)
Step1:选定观察点
追踪过程中,选择跑步者后的白色标记作为观察点.
Step2:细化跟踪路径
为方便直接观察路径跟踪过程结果,可对矩阵进行色彩和线条设置.
Step3:路径跟踪
回放视频,分帧播放视频,根据每帧观察点的位置,自动跟踪和标记观察点的轨迹.同时,如果有一个路径跟踪错误,就可以手动对错误帧进行校准,以便Kinovea软件继续跟踪.
Step4:结束跟踪
完成所选视频路径跟踪后,右击该区域结束路径跟踪.在运动跟踪过程中,运动轨迹保持在观测点处.
Step5:数据分析与保存
在路径跟踪结束后,右键单击轨迹进行数据分析,可获得此期间选定观测点的部分数据.该数据可直接以表格的形式保存,而运动轨迹图则可以图片的形式保存.
至此,系统的硬件及软件部分设计完成,对该系统的性能进行仿真实验,并对比该方法与文献[2]~[4]方法的精确度差异.
为了验证基于KNN算法的跑步运动轨迹监测系统设计合理性,进行实验验证分析.跑步者要正确摆动手臂,在跑步机上跑步,手臂要完成90°或接近90°,并且手臂要贴紧身体.拍摄用到的摄像头参数如表1所示.
表1 摄像头参数
采用上述参数的摄像头拍摄一段120帧,200 mm*200 mm的人体跑步视频,搭建仿真实验平台如图6所示.
图6 实验平台
分别使用文献[2]方法、文献[3]方法、文献[4]方法和所提方法,从正面和背面两个角度分析跑步运动轨迹监测精准度.
选择正面角度拍摄的视频图像分析,以跑步过程中身体左右摆动幅度偏差为原则,将不同方法进行对比分析,对比结果如图7所示.
由图7可知,水平坐标下,文献[2]方法与实际值波动幅度一致,但水平坐标不一致;文献[3]方法不仅与实际值波动幅度不一致,而且水平坐标也不一致;文献[4]方法不仅与实际值波动幅度不一致,而且水平坐标也不一致;所提方法与实际值波动幅度一致,且水平坐标基本一致,波动偏差为0.1 mm.
(a)水平坐标
(b)垂直坐标图7 正面角度不同方法身体左右摆动幅度偏差对比分析
垂直坐标下,文献[2]方法不仅与实际值波动幅度不一致,而且垂直坐标也不一致;文献[3]方法不仅与实际值波动幅度不一致,而且垂直坐标也不一致;文献[4]方法与实际值波动幅度相差较大,而且垂直坐标也不一致;所提方法与实际值波动幅度一致,且垂直坐标基本一致,波动偏差为0.2 mm.
选择背面角度拍摄的视频图像分析,将不同方法进行对比分析,对比结果如图8所示.
由图8可知,水平坐标下,文献[2]方法与实际值波动幅度不一致,水平坐标也不一致;文献[3]方法和文献[4]方法不仅与实际值波动幅度不一致,而且水平坐标也不一致;所提方法与实际值波动幅度一致,且水平坐标基本一致,波动偏差为0.05 mm.
(a)水平坐标
(b)垂直坐标图8 背面角度不同方法身体左右摆动幅度偏差对比分析
垂直坐标下,不同方法与实际值波动幅度一致,但只有所提方法与实际值垂直坐标一致,波动偏差为0.03 mm.
通过上述分析可知,利用所提方法监测的跑步运动轨迹与实际轨迹一致.
本文提出的基于KNN算法的跑步运动轨迹监测系统,通过Kinovea运动分析软件,获取跟踪点的运动轨迹和相关位置信息.采用 KNN算法对跟踪轨迹进行分类与计算,并使用计算机监测跟踪过程.通过实验结果可知,该系统正面和背面两个角度下的跑步运动轨迹监测误差较小,提高了监测结果的准确性.但由于条件限制,还具有一定局限性,今后的研究可以从上下机模块方面着手,降低信息采集过程中的误差,进一步完善运动轨迹检测系统.