欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    基于手机传感器的多种热身动作检测算法研究分析计算机科学与技术专业.docx

    • 资源ID:7002694       资源大小:261.88KB        全文页数:35页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于手机传感器的多种热身动作检测算法研究分析计算机科学与技术专业.docx

    11)'iJJ-jAi11.2 系统发展背景11.2.1 安卓平台优势11.2.2 常见热身运动姿态简介21.3 SVM分类器32.1 安卓技术简介42.1.1 安卓系统架构42.1.2 安卓系统的四大核心组件52.2 安卓传感器技术52.2.1 安卓传感器系统架构52.2.2 安卓传感器接口简介62.2.3 三种传感器的特点72.2.4 传感器数据的获得7第三章系统分析研究93.1 系统需求分析93.1.1 系统功能需求93.1.2 系统技术需求93.1.3 系统维护需求103.1.4 系统安全需求103.2 可行性分析103.2.1 经济可行性103.2.2 技术可行性103.2.3 操作可行性113.3 系统结构设计113.4 系统开发流程分析12第四章系统设计与实现134.1 传感器结构134.2 工作流程134.3 用户用例图设计144.4 系统界面设计及操作简介144.5 系统模块设计16I/175.1 简介175.2 具体步骤175.2.1 数据预处理:去燥和分割175.2.2 特征提取185.2.3 分类器算法选择195.2.4 SVM分类器原理简介205.2.5 SVM算法识别运动状态23第六章系统测试266.2 测试步骤266.3 测试结语27第七章总结(缺陷和展望)287.1 本文总结287.2 后续工作28 3)参考文献致谢错误!未定义书签。摘要随着当下新兴科技日新月异的发展,智能手机的功能变得越来越先进,而且手机上集成了非常多的微型传感器模块。因为手机具有小巧且方便使用的缘故,所以相较于其他的设备更加合适用来进行行为识别方面的研究。又因为现在人们越来越注重身体健康,喜欢运动的人群也随之增多,但由于许多人缺少运动之前的热身环节,从而导致运动时受伤的现象屡见不鲜,所以本文将通过一个具体的开发实例,提出一种基于Android系统的热身运动识别应用的设计思路。在进行软件开发时,其中的主要的工作就是通过智能手机内置的传感器来采集用户的热身运动信息,经由内部程序处理后,当再次接收到相同的运动信息时,能够识别出用户的运动状态。论文具体阐述了系统的设计思路到具体开发流程,采用Android平台完成开发,实现了运动识别功能,包括慢跑、转体运动和高抬腿,满足用户运动数据的采集和运动识别。其中通过比较各种分类器之后,决定采用SVM分类器算法对获取到的传感器数据进行处理,将经过预处理操作之后的传感器数据放到SVM分类器中进行分类,分类后会导出训练模型,用于之后进行的行为识别。论文最后通过两个实验对系统功能进行了检测。关键词:运动状态识别;AndrOid平台;手机传感器;SVMAbstractWiththerapiddevelopmentofemergingtechnologiesinrecentyears,thefunctionsofthesmartphoneshavebecomemoreandmoreadvanced,andmanyembeddedmicro-sensormoduleshavebeenintegratedinthesmartphones.Sincethesizeofthesmartphonesissmallandconvenienttouse,itismoresuitableforstudyingthebehavioridentificationthanotherdevices.Recentyears,peoplearepayingmoreattentiontophysicalhealth,thenumberofpeoplewholikesportsisincreasing.However,manypeoplelackthewarm-upsessionbeforeexercise,whichleadstoinjuriesduringexercise,thisarticlewilladoptaspecificdevelopmentexampletoproposetheideaforwarm-upsportsrecognitionapplicationsbasedontheAndroidsystem.Duringsoftwaredevelopment,oneofthemaintasksistocollectwarm-upsportsinformationoftheuserthroughthebuilt-insensorsofthesmartphone.Afterprocessingthroughtheinternalprogram,whenreceivingthesamemotioninformation,theuser'smotionstatuscanberecognized.Thethesiselaboratedonthesystem'sdesignideastothespecificdevelopmentprocess,usingAndroidplatformtocompletethedevelopment,toachievethefunctionofmotionrecognition,includingjogging,swivelingmovementsandhighleglift,tomeettheuser,smotiondataacquisitionandmotionrecognition.Amongthem,aftercomparingvariousclassifiers,itisdecidedtousetheSVMclassifieralgorithmtoprocesstheacquiredsensordatatogenerateacorrespondingmodel,andfinallyperformmotionrecognition.Finally,aseriesofexperimentsareusedtoverifytheaccuracyoftheapplication.Keywords:Warm-upstatusrecognition;Androidplatfonn;Mobilephonesensor;SVM第一章绪论1.1 应用背景在当下,智能手机已经成为每个人不可或缺的便携式智能设备,而且其重要性还在与日俱增,在某种意义上来说,它相当于一台我们生活中使用的狭义的电脑,但是它又具备电脑没有的优势,它随着时代的进步,功能变得越来越强大,可以用它做的事情也愈来愈多,手机中内置的传感器种类也越来越多,精度也愈发准确,与此同时,随着科学技术的发展,以及人类意识的进步,越来越多的人意识到运动的重要性,各种各样的运动方式琳琅满目,深受人们的喜爱,所以基于智能手机的行为识别技术的开发也就应运而生。当人们无论在户外还是在室内进行运动时,大多都会随身携带手机,而且大部分的智能手机中都配备了具有相当精度的微型传感器,人们的使用手机的频率和手机自身的素质使得基于便携式移动微型计算机的人类行为识别研究成为可能,而且能在运动识别方面获得十足的发展。胡龙的研究中指出了行为识别领域的开发技术。在Lane等人的研究中对基于移动设备传感器研究进行了阐述,在着眼于相关具体行为的自动识别领域,已经有人完成了相当的工作。例如在黄卓勋等和刘斌等进行的健身以及复杂行为识别算法领域的研究,以及李瑞峰等人在人体行为方面的研究综述。本文设计了一个基于智能手机传感器的用于检测3种热身运动的系统,以此给出一种运动检测系统的设计思路,以及有关的算法相关知识。1.2 系统发展背景1.2.1 安卓平台优势Android系统就是一个基于开放式的手机电脑平台操作系统,它是由Google公司于2007年首先推出。从它面世以来,到现在为止快速占领了大部分的市场份额,而且相对于其他的传统品牌例如诺基亚,摩托罗拉等,Android系统在移动客户端的开发中更具有优势,而且与传统的JaVa程序开发语言对比,它在运行时具有资源占用率低,性能稳定的特点,深受广大开发者和用户的青睐。韩文智等人在研究中指出了有关AndrOid的应用开发的相关知识。张娜网在其文章中总结了Android系统的基础架构,康立富等人指出了基于Android平台的行为识别应用的开发框架。Android系统是一种在Linux系统的基础上,开发出的一种基于开源代码的移动设备系统,现在可常见于除苹果以外的智能手机中,由于其代码是开源的状态,所以各大移动设备厂商争相入驻,使其迅速在全球得到蓬勃发展,并成为苹果系统的强烈竞争对手,而且他的系统完整度与应用丰富度也不容小觑。所以最后在经过各方面的因素考量后,因Android平台相较于其他平台适用性更广,容错率更大,限制较小,使我们专注于研究行为识别的开发,所以最后决定选择使用Android平台来开发这个应用。1.2.2 常见热身运动姿态简介吴哲君等人指出在进行行为识别应用开发之前要进行步态分析。我们设计系统的第一步就是要确定系统所具备的功能,最终经过思考之后确定了三个动作。(1)慢跑:用户将手机放在裤子的口袋中,然后开始进行相对匀速的跑步动作;(2)高抬腿:用户同样可以将手机放在裤子的口袋中,大幅度的做交替往上抬腿运动;(3)体转运动:用户手持手机,向左向右旋转身体。人体的身体行为分析(以走路为例):慢跑时的速度通常较低,但相较于行走来说更快,动作幅度相比快跑显得更下以及频率更慢,如下页图1.1所示。人在走路时,两只脚是呈相对应且对称的状态,当一只脚抬起来的时候,另一只离地,并且是周期性运动,当一只脚从落地到下一次落地视为一个周期,完成了两步走,经过比对分析发现,慢跑和高抬腿以及体转运动的运动模式与之有异曲同工,都是以周期为计算单位,所以我们可以通过传感器的数据差异值来判断出不同运动状态。InitialPeriods Double-hmSupportSingle-Iimb StanceSecondDoubIeJimb 卜, SupportInitial SwingMid* Swing"Terminal SwingFoot StrikeOppocite Foot Strike(Reversal of Fore-Aft Sear)Opposite Ib-OHFootTibiaClearanceVerticalFoot Stnk图Ll人类行走步态分析1.3SVM分类器SVM作为一种高效的统计学分类器,已经被应用于各种各样的研究当中。其中几个比较重要的研究如刘松松等人切在图像分类方面的研究,溪海燕等人网在交通行人识别的研究,倪志伟等人介绍了SVM在金融方面的研究。SVM分类器运用于运动识别领域己经有好几个年头,并且被大量运用于复杂行为识别的过程中,我们在这里阐述了一种基于智能手机传感器的SVM分类器的热身运动检测系统的开发过程,在选择使用SVM算法分类器进行开发前,先与其他几个常见算法进行了比较分析,随后阐述了SVM算法的数学原理。从运动识别系统开发的过程中看,其中的算法包括训练和检测两个阶段:首先通过把智能手机放到裤兜中,然后对Android系统获取到的传感器数据进行处理,处理后提供给向量机学习,然后再使用训练好的模型对用户的热身运动进行预测。李神送等人M在文章中对获取传感器数据进行了详细的介绍。第二章系统开发技术2.1 安卓技术简介2.1.1 安卓系统架构我们可以把AndrOid系统的架构粗略的分成四个个部分,分别是:LinUX内核层、系统运行层、应用框架层和运用层。如图2.1所示。ApplicationsHomeContactsPoneBrowserApplicationFrameworkActivityManagerWindowManagerContentProvidersViewSystemNotificationManagerPackage7IepbonyResourceLocationXMPPManagerManagerManagerManagerServiceLibrariesAndroidRuntimeSurfaceFfllH三Vi-SligManagerFrameworklibrariesOpenGLESFreeTyPeWebKit1.inuxKernelDisplayDriverCameraDriverBluetoothDriverFlashMemoryDriverBinder(IPC)DriverUSBKeypadWiAAudioPowerDriverDriverDriverDriversManaQement(1) 图2.1Android系统架构(2) 1.inux内核层:LinUX是Android系统的内核结构。它为Android智能手机中的摄像头、主板、显示器等提供了底层的驱动,总的来说LinUX内核层就是硬件驱动层。(2)系统运行层:系统运行层又可称之为代码逻辑层。这一层为Android系统的开发者提供了各种各样的库函数支持,其中有些决定了Android系统的某些特性功能。如SQLite库为Android手机提供了储存数据和提取数据的功能,OPenGLES库就使开发人员在进行软件设计时可以通过这个库实现3D绘画功能。还有比较重要的一点,就是系统运行层为AndrOid系统开发所提供的一些核心库,能够让开发者使用JAVA语言来进行开发。(3)应用框架层:这一层就主要是为Android系统开发提供了各种各样的外部或内部的APl供开发者调用,这里就不多加赘述。(4)应用层:应用层最通俗的说法就是APP(Application),它通过Android系统这个载体来实现与用户的交互行为,也就是手机中各式各样的程序。2.1.2 安卓系统的四大核心组件Android系统的四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)1。(1) Activity:简单的说活动就是Android应用程序UI界面,所有的显示内容都是归属于AetiVity的,俗称AndrOid应用系统的“门面”。它展示出了开发者想要在应用程序中提供给用户的功能,并起到引导用户与智能手机进行交互的作用。(2) Service:服务就是应用程序在后台实现的功能,用户在使用程序和退出程序时都看不到它,但它一直都在默默地运行,只要进行相应的设置,并获得一些权限,就可以使应用程序在后台完成用户指定的各种操作。(3) BroadcastReceiver:广播接收器的功能就像它的名字一样,是Android应用程序用来接收广播的组件,智能手机与其他手机之间的信息传输和主机中各个硬件之间的信息交互都是通过广播接收器来实现的,其中最简单的例子就比如短信和电话,当有电话呼入或者是接收到信息时,可以通过一系列的操作来通知用户接收到了信息,并让用户做出响应。(4) ContentProvider:内容提供器就是实现了同一一部智能手机中的不同应用程序之间可以相互通信,就比如微信有了权限之后就可以获取到你手机中保存到的电话号码一样,大大扩展了智能手机的功能。2.2 安卓传感器技术2.2.1 安卓传感器系统架构在进行有关Android传感器的开发中,Android官方为开发者提供了调用传感器数据的函数接口,我们在开发时,在明确了相关的参数之后,就可以直接调用相应的变量和函数以获取到传感器的数值。系统层次结构如下页图2.2所示。图2.2传感器系统层次结构图如图2.2所示,Android传感器系统的层次结构一共分三层,分别是应用程序层、Android系统层以及硬件和驱动层,在这其中,Sensor的JAVA类是由Android平台提供的传感器数据交互接口,我们在程序中就是在此层中调用函数来对我们需要的数据进行处理。2.2.2 安卓传感器接口简介(1) SensorManager类SensorManager类是Android智能手机中所有传感器的上级管理程序,可以在程序取得各种传感器的实例,接收参数为传感器的类型(SenSor.TYPE_SENSORTYPE):Sensorsensor=senserManager.getDefaultSensor(Sensor.TYPE_SENSORTYPE)(2) Sensor类Sensor类中定义了Android手机中各种各样的传感器的“名字”,我们可以使用参数获取到这些传感器的支持,然后在传感器管理器中注册后,即可设置监听程序,从而就可以获取到传感器的数据。(3) SensorEventListener接口它定义了OnSenSOrChanged()和OnACCUraCyChanged()这两个方法。在应用运行时,设置了传感器监听之后,当程序监听到有传感器的状态发生改变,数值有与之前不同之后,传感器管理器就会分别唤醒OnACCUraCyChanged()和OnSenSOrChanged()函数,使程序开始执行其中的代码。(4) SenSorEVent类SensorEvent类就是用来提取传感器获取到的数据的。2.2.3 三种传感器的特点(1)陀螺仪陀螺仪是现在智能手机中比较常见的传感器之一,它类似于一个陀螺,是由科学家针对陀螺的研究进而演变来的角速度检测仪器。它内置于大部分的智能手机中,常常被用于检测手机的偏转状态,即手机相对于直立状态下经过了何种变换,引起来角速度的改变,然后就会产生一个数值来表示手机的状态。手机中的陀螺仪传感器就是经过技术发展是其集成到了小小的手机当中。所以陀螺仪在程序开发时会返回三个参数,分别就是手机绕3个轴旋转的角速度,以此可以来推测手机在个方向上的转动速率。(2)加速度传感器加速度传感器也是手机中经常配备的硬件之一。我们将手机置于直立的状态,然后在上面建立一个三轴坐标系,加速度传感器就是用来检测手机在坐标轴中进行某一个方向的位移时产生的加速度,其中的加速度值是以重力为单位。在AndrOid应用开发时,它会产生四个参数,分别对应着三个轴上的加速度,以此来表示手机的运动状态,还有一个参数是智能手机的时间戳。它主要就是用于检测用户的生理运动状态,最简单的就是检测用户从静止到行走的过程特征,而且还可以表示一段时间内的运动变化。(3)重力传感器人们在加速度传感器的基础上,进而开发出了一种只检测重力方向上加速度的仪器,所以重力传感器传回来的参数值也就是手机运动状态相对重力方向的速度。2.2.4 传感器数据的获得(1)登录系统的传感器管理器,定义SenSOrMananger变量,并通过其获得各个传感器的应用实例,具体代码如图2.3所示。HiMananger=(SensorManagerlgetSysteniService(SINSOR_SEKVICE;GYRosCOPESensor=ZnMananger.getDefaultSensor(Sensor.TYPE_GYROSCOPE);AccELEROMETERSensor=HiMananger.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);GrivitySensor=TnMananger.getDefaultSensor(Sensor.TYPE_GRAVITY);接下来,我们们使用OnReSUme()函数向系统提交注册,让Android系统对传感器服务和传感器进行监听。如图2.4所示。0OverrideprotectedvoidOnResume()(/TODOAuto-generatedmethodstubnMananger.TegisterListener(listener:this,ACCELEROMETERSensor,SensorManager.SENSOR_DEIAY_NORMAL);nMananger.IegisterListener(Iistenei:this,GYROSCOPESensor,SenSorManager.SENSoRJgU二NOIRKaI);mMananger.IegisterListener(listener:this,GrivitySensor,SensorManager.SENSOK_DEIAr_NORMAI);SUPer.onResume;图2.4设置系统监听要使用传感器的数据,就要使用上文介绍的SenSorEVentLiStener接口,通过以下两个函数来实现:publicvoidonAccuracyChanged(Sensorsensor,intaccuracy)publicvoidonSensorChanged(SensorEventevent)在程序开始执行后,3个传感器都处于等待监听状态,如有数据就将数据保存到定义的变量当中,这里比较关键的一点是传感器的原始数据在变量中保存的顺序是按照传感器相应程序的唤醒顺序来的,并且每个传感器传回的参数都是3个,所以我们定义每一帧的传感器原始数据为9个单位,每3个参数为一个传感器的值。第三章系统分析研究3.1 系统需求分析3.1.1 系统功能需求近年来,移动智能手机设备功能越来越强大,智能化越来越强,比如图像识别、语音识别、动作识别等,这些功能的开发给人们带来了极大的便利。我们为了对用户的行为进行识别,就必须采用手机自带的传感器所获取到的数据,并对获取到的数据进行相应的处理,将数据保存到手机中之后,再供之后的运动识别所用。基本功能需求如图3.1所示:图3.1总体功能需求图3.1.2 系统技术需求首先我们选择在当下最流行,使用人数最多的Android平台下开发,也是顺应时代,顺应技术的发展。而且对于开发者来说,开发有关行为识别技术的应用就需要一个稳定的系统,并且系统提供了方便的调用传感器数据的途径,并且AndrOid平台具有全面开发框架结构,可以使用系统自带的数据库对实验中所使用的数据进行存储和读取,保证了数据的可靠和稳定性。系统的易维护性。在进行系统开发时需要考虑到系统对于开发者后期进行维护的成本,本系统采用Android平台进行开发,由官方提供了独立的系统开发架构,而且应用相对于系统处于一个相对独立的地位,并且系统使用的数据库为自带的数据存储结构,所以我们在进行与文件有关的数据处理更加容易与简捷。这样保证了我们在开发应用时不会导致系统的崩溃,为我们调试程序提供了条件,也满足了我们对于系统完成后,要进行维护和更新的需求。3.1.4 系统安全需求良好的安全性。由于只需要对用户进行的训练集、训练模型、以及识别数据进行保存,保存后所占用的系统空间很小,就可以使用系统自带的硬盘对数据进行存储,将数据保存到文本文件中,并且应用程序无法联网,杜绝了被侵入的风险,所以符合所需的安全性。3.2 可行性分析3.2.1 经济可行性在进行应用开发之间,通过市场的调查发现,大部分AndrOid智能手机的价格相对于苹果手机来说比较低,而且价格较低的Android手机中不乏性价比较高的机型供我选择,且内置的传感器系统也比较完善,在我的承受范围之内,所以AndrOid智能手机的成本是我选择在Android平台上进行开发的一个重要原因。3.2.2 技术可行性应用程序基于Android平台进行开发设计,Android系统从面世到现在的11个年头中,经过了多次版本的更新升级,经受住了市场和用户的检验,并且有着一套完善的开发框架,有越来越多的人涌入Android开发的行列中,又因为它的代码是开源的,减少了我们在开发应用时的成本,无论是针对开发者或者是研究课题来说,Android系统的技术都有很高的可取性。并且经过市场调查,市场上的绝大部分AndrOid手机中都集成有基础的传感器体系,并且Android开发技术也支持了提取手机传感器获取到的数据的功能。所以,在后续的软件开发过程中,将会围绕着AndrOid平台来进行相关应用技术的研究。3.2.3 操作可行性我们的系统是在AndrOid智能手机上进行开发,根据最新的调查显示,全球智能手机用户己经超过28亿,所以全球超过三分之一的人,他们每人至少都拥有一部智能手机,并且市面上的智能手机基本上是苹果系统与Android系统,他们的操作方式即为相似。所以只要一个人有一定的理解能力,就可以掌握应用的使用方法,系统在操作上也是可行的。3.3 系统结构设计本基于手机传感器的热身运动识别系统开发工程中应用了MVC框架,它是由以下三部分构成的,如图3.2所示。(1)视图层(View):应用的Ul界面设计。实现了实时动态地对界面进行控制,拥有了更强的表现力。(2)控制层(Controller):ACitVity在控制层中起到非常重要的作用,为了实现响应时间短,我们就不在Acitvity中写代码。(3)模型层(Model):对数据的存储都是在模型层中处理的,也就是说程序的二进制数据也是在这一层进行操作的。3.4系统开发流程分析在开发设计基于手机传感器的热身运动识别系统的时候,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,测试等,基于手机传感器的热身运动识别系统的设计流程图,如图3.3所示。图3.3系统设计流程图第四章系统设计与实现4.1 传感器结构本系统所使用的传感器的内部结构如图4.1所示。图4.1传感器内部结构图4.2 工作流程当手机的物理状态发生改变时,手机中的传感器的数值就会改变,接收器接收到变化,然后系统进行数据采集,读取数据,并进行数据处理,最后进行热身运动识别。如图4.2所示。图4.2工作流程图4.3 用户用例图设计用户进入系统后,可选择进行动作训练采集或热身运动识别操作,下面将通过用例图的方式展现用户和用例之间的关系。用户用例图如图4.3所示。图4.3用户用例图图4. 4训练进入页面4.4 系统界面设计及操作简介手机传感器的热身运动识别系统的界面UI设计如图4.4,4.5和下页图4.6所示。图4.5主界面图4.6运动训练界面关键代码如下(以慢跑为例关于用于系统启动自执行的代码在在这里就不多加赘述):/*定义不同的变量,将Ul中的不同按钮与变量绑定,以便监听用户按下按钮的操作,从而可以执行相应的操作*/InTrainRunSlowBtn=(BUtton)mTopView,findViewById(R.id.train_run_btn);代表的是图4.6中“慢跑”所在按钮,点击即设定将要进行训练的运动是慢跑trainStartBtn=(Button)mTopView.findViewById(R.id.train_start_bm);代表的是图4.6中的“开始采集”所在按钮,点击后用户即可进行相应运动的训练,随后点击停止训练即可将训练数据送入分类器中处理,并生成相应的模型detecStartBtn=(Button)findViewById(R.id.detect_start_btn);主界面图4.5的“开始”按钮,通过收集传感器的数据,与之前训练生成的模型进行处理预测出用户的运动状态,并显示在屏幕上如图4.7为将识别结果显示在屏幕上的关键代码。if(result.trim().equals("l.O")(Toast.三teText(context:MainActivity.this,text:喂卧,Toast.国码网QRr).show();Animationanimation=AniniationUtils.IoadAnination(context:MainActivity.this,R.anim.t);ADetectImg.StartAnination(animation);图4.7动态显示识别运动类型4.5系统模块设计在进行完系统的介绍和分析之后,我们对系统进行分模块化处理,并且在开发过程中以此模块分布来进行开发和调试。分模块处理有助于我们对于程序的理解,在完善各个模块的同时,也加深了对整体的把握,并且在最后的系统测试时可以很快地发现问题的所在。(1)显示模块:用于显示应用程序需要展示给用户看的内容,简单来说就是Ul设计。这一个部分起到的作用就是要激励用户点击屏幕,对应用程序进行操作。(2)人机交互模块:这个部分是用来实现用户与手机之间的“交流”,因为这里的设备已经确定是手机,那么就是对用户的点击事件进行响应,实现用户点击的功能。(3)传感器信息采集模块:这个部分用于调用相应的函数接口来获取用户在运动时的传感器信息。(4)原始数据预处理模块:将上一个模块获取到的传感器原始信息进行预处理,以备训练训练模型和运动识别时使用。(5)行为识别模块:将在下一章内容中进行详细描述。第五章算法描述5.1 简介行为识别(ACtiVityRecognition)技术狭义来说就是通过传感器读数来预测用户的行为,并且已经发展成为与人们生活息息相关的应用。近几年来因为机器学习技术的火热,行为识别领域越来越受到人们的关注,现在这项技术已经渗入大众生活的方方面面,比如医学健康领域的医疗仪器,运动管理设备中集成了行为识别技术。基于智能手机传感器技术就是将手机自带的传感器的读数作为输入的参数,从而来预测用户的运动状态。但是最贴近人生活的行为比如行走,站立,慢跑等比较典型的活动并以其隐蔽性、低(无)成本性、易用性,致使智能手机逐渐成为主要的人类活动识别的平台。本系统一共使用3个智能手机中的传感器进行数据采集,分别是加速度计(accelerationtransducer),重力传感器(GV-sensor),陀螺仪(gyroscope),根据3个传感器的采集到数据进行数据采集以及行为识别。在本实验中选择采用LlBSVM多分类方法库对程序获得的经过数据预处理的传感器原始数据进行训练,训练后根据特征值对不用的运动进行分类,分类后生成不同的模型,最后在运动识别过程中根据训练模型识别出用户的运动。1.IBSVM是由台湾的林智仁(Chih-JenLin)教授二十世纪出开发的一套SVM库。我们为什么选择这套库来进行整个系统最核心的部分开发呢?是因为它运算速度比较快,而且易用性很强,在进行ArKlrOid开发时,只需要调用它提供的函数接口,就可以通过其内置方法实现对传感器数据的分类和识别。并且由于LibSVM程序体积小,使用步骤简单,说明全面,代码开源,所以LibSVM成为了国内使用人数最多的分类算法库。5.2 具体步骤5.2.1 数据预处理:去燥和分割当传感器发现手机的状态改变之后,己注册的传感器就会给程序程序传回收集到的原始数据,在进行下一步操作之前,还要进行数据的预处理。在我们使用传感器发来的原始数据之前,需要对这些数据进行提前处理操作,这样做的其中一个目的是降低用户和传感器本身的噪声,是数据更加精确。我们在开发时对数据进行了分割处理,因为使用了三个传感器的原始数据,每个传感器的返回的关键参数都为3个,所以以每9个样本数据作为一个样本点,用于训练集和识别功能。并且由系统控制空白段,无动作时就不启动传感器那么识别算法接收不到数据也不会执行。5.2.2 特征提取特征提取作为运动识别算法中一个重要的步骤,能够使传感器的原始数据变得更加适合于之后的分类算法。在程序中的们进行了4个特征值的提取,分别是:(1) Energy:在2.3.4中提到,每一帧的传感器数据为9个参数单位,我们首先每一帧的传感器数据进行以下处理,对第一个传感器值和第三个传感器值进行完全平方差累加处理,作为第一个特征值。Energy=(x1-x7)2+(x2-x8)2+(x3-x9)2+(式5.1)(2) RoteMin:在对Energy进行计算的同时,随后找出其中的最小值,作为第二个特征值RoteMin0EnergyX=(x,-7)2+(x10-16)2+(式5.2)EnergyY=(x2-x8)2+(x11-x17)2+(式5.3)EnergyZ=(x3x9)2+(x12-x18)2+(式5.4)(4) Rorate:将第二个传感器的所有参数取绝对值相加,计算结果作为第三个特征值。如下式所示:Rotate=x4+x5+x6+x13+x14+x15+(式5.5)(5) pNUM:将每一帧的传感器数据前4个单位按顺序两两相乘,判断结果正负号,结果为正不计分,结果为负加分,具体算法如下所示:pNUM=numl+num2+num3(式5.6)num1=num,+l(x1×x2<0)(式5.7)num2=num2+l(x2×x3<0)(式5.8)num3=num3+l(x3×x4<0)(式5.9)对各段的特征值提取结束之后,将他们捆绑作为为特征值字段,供建立分类器使用。程中通过PriVateStringgetFeatures(ArrayList<Float>mList)方法来实现对传感器采集到的数据进行特征提取,函数返回一个特征值字段,如果是训练数据,则数据段之前加上代表运动的编号,如果是识别数据,则经特征值处理后,再经由SVM算法来识别。5.2.3 分类器算法选择选用的分类器为随机森林1、决策树”81、Bagging、朴素贝叶斯、kNNt20SVM,其中,Bagging使用的弱分类器为决策树,kNN的k为1,SVM使用多项式核。分类100H,IcNN图5.2各分类器运行时间从以上的对比数据中可以发现,SVM算法在训练时间以及准确率综合性较好,朴素贝叶斯算法的准确率较低,不予以采用;kNN表现较好,但是常用于复杂的模式识别应用中,考虑到需要实现的功能,不予以采用;其他分类器效果一般。又因为Android平台提供了LibSVM的工具,所以决定采用SVM分类器算法进行模型训练,并使用所获得的模型进行运动识别。5.2.4 SVM分类器原理简介首先先来介绍一下SVM分类器,SVM(支持向量机)(SUPPortVeCtorMaehine)就是一种分类算法,可以将不同特征的数据分割在一个平面的两侧,实现分类的目的。在这里我们先由二维平面引入,分类器的作用就是在两种坐标点之间找到一条可以完美分割两种点的直线,然而如果我们将

    注意事项

    本文(基于手机传感器的多种热身动作检测算法研究分析计算机科学与技术专业.docx)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开