非功能性需求 以上一些基本功能的完成需要满足一些实现条件,以使得基于手势识别的相册图片操作功能得到实际使 用效果以及好的用户体验,这些条件包括: 1、 考虑到各种不同手势识别方案及其算法的差异,设计者应指出,在哪一些人手到摄像头之间距离范围,操作都能达到较好的识别效果,用于测试者评分作参考; 2、 手势识别的准确率应该达到80%以上,小于80%被认为手势识别功能不可靠,同时,识别率越高,意味着软件设计越好,将会在评分中得到更高的分数。 3、 从手动作完成到图册响应需控制在1.5s以内,同时,在手势识别正确的情况下,响应时间越少,意味着算法设计越好,将在最终评分中有所体现; 4、 以上功能的设计是基于分辨率为30万及以上,采集帧率为15f/s及以上的前摄像头进行设计的,为了跟随手机前置摄像头的主流,建议开发者针对分辨率为130万像素的手机摄像头进行开发; 初赛阶段,整个软件的实现效果的评分将综合以上功能性需求的完成情况和非功能性需求的完成质量,通过对识别准确率,响应时间这两个因素进行统计,算出一个客观的分数值。例如,对于每一项分值20的手势操作基本功能来说,评判人做出相应的手势将对其进行10次测试,每一次满分2分,对于每一次测试的计分方式如下: (1) 手势识别失败,或识别正确但响应时间大于1.5秒,计0分; (2) 手势识别正确,但是响应时间小于1.5秒而大于0.7秒,计1分; (3) 手势识别正确,而响应时间小于0.7秒,计2分, 当完成这10次测试后,由评判人将10次测试结果相加得到这一手势操作基本功能的得分,而当5项基本操作都被测试完毕以后,将所有五项的得分相加就得到此开发者的最终得分。 决赛阶段将考虑更多因素,同时会让多个评判者来对开发的作品进行评判,故评判标准将会采取更加科学而客观的统计评判方式,具体评分准则参见附录项。其他限制条件:开发环境、实验平台、开发语言、数据库、编译器等限制条件开发平台:ECLIPS开发环境:Android SDK4.0以上、ADT 开发语言:JAVA\\C++数据库:mySQL\\SQLite测试数据或平台:提供给参赛者的测试环境和测试数据。(可提供电子档)测试平台:ADT(Android Development Tools)、Android智能手机 测试数据:图册中的图片 36
其他要求 文档要求:概要设计说明书(描述软件系统架构、逻辑架构、物理架构、部署结构、功能架构及关键技术,关键业务模块需通过UML图(用例图、时序图、状态图、包图、主要类图等)进行详细描述)、需求规格说明书(包括功能设计、非功能性设计、系统用例); 测试要求:需进行单元测试,提供单元测试用例,单元测试覆盖率不低于90%;提供性能测试文档(包括测试脚本、识别准确率、处理速度、CPU和内存占用率等); 赛题帮助说明 手势识别应用程序的设计和开发就是将现实生活中存在的手势映射到计算机交互中去以传达人的想法。手势识别任务相对来说可以简单也可以很复杂,这取决于要识别的手势。有三种基本的方法可以用来识别手势:基于算法,基于神经网络和基于手势样本库的方法。每一种方法都有其优缺点。开发者具体采用那种方法取决与待识别的手势、项目需求,开发时间以及开发水平。基于算法的手势识别相对简单容易实现,基于神经网络和手势样本库则有些复杂。关于手势识别及其开发的基本概念,网络上的文章“Kinect for Windows SDK开发入门(十):手势识别基本概念”能够提供一些初步的指导。 在现有基于手势识别的商业化产品中,Microsoft的Kinect游戏机是开发较早而且比较成熟的产品,Microsoft也提供了Windows版的开发工具Microsoft Kinect SDK供开发者使用,这应该能够为Android版的手势识别应用提供一些好的参考。在OpvenCV和Matlab软件中也有一些相关的范例。另外一些第三方开发者所创建的手势识别引擎也能在网上查到。相关的介绍与工具能在以下网址下载: http://kinectforwindows.codeplex.com/ http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx 如果开发者需要对手势识别的理论算法有一定的了解,能够在中国期刊网以及IEEE期刊和会议上查询到相关的理论文献。
附录:决赛测试结果评分方案参考
评分考虑因素:
1. 不同人手势识别准确率 2. 从手动作完成到图册响应时间
3. 在摄像头到人手不同距离范围的识别准确率。
测试方式:
考虑到不同手机使用者的手的大小,形状,同一种手势行为的差异,为了能测试到所开发软件的实际有效性,本测试应该选择至少10位形色各异
的测试人员,包括男女测试者各一半等,然后让各位测试者对每一种所开发的手势进行多次操作,例如10次,然后记录正确识别的次数,以及识别所需时间,当然,这一操作要在不同的距离范围内反复进行。
测试评分所考虑的评判因素:
1. 所开发软件的手势数目记为K,(方案给出了K=7项必须开发的手势动作,但又提出参赛人员可以开发新的手势识别项目,作为加分项,
那么这里如果开发了新的手势,手势数目就会是K>7,在后面的加权过程中就可以对其进行比较客观的加分了) 2. 测试人数记为N
37
3. 选择L=5种距离作为每一次测试时手距离手机的距离,分别为L1=10cm, L2=20cm, L3=30cm, L4=50cm, L5= 80cm这5种 4. 每个人对每一种手势在每一个距离范围的测试次数记为m
5. 每个人对每一种手势在每一个距离范围的一次测试,操作的系统响应时间记为t,t的时间越短,说明响应速度越快,同时考虑项目限定了
响应时间需控制在1.5s范围内,所以为了能将这个响应时间考虑到最终评分结果中,可以考虑将t转化为一个得分因素D:
(1) t>1.5s, 得分D=0; (2) 1s 测试的评分方式: 评分将对每个人对每一种手势在每一个距离范围的m次测试进行统计,然后在测试完以后,对其进行加权平均。例如,首先测试者小张对“手掌变握拳手势表示关闭图册应用”这一手势在手距离手机大约10cm左右进行m次测试,m次测试中有v次识别正确,每一次测试时系统响应时间分别为t1, t2,…,tm,然后根据其数值,把这些响应时间转化为D1, D2, …, Dm,然后综合考虑识别率和响应时间,对以上这些数字进行加权平均: (1) 是一个人在一个距离范围对一种手势进行测试的识别率,是测试的平均响应时间的得分,而将这两个因素相乘,就得到m次测试的得分。如果将所有测试人员,手势数目,测试的距离的测试完成后,就可将其进行叠加: (2) 这里k=1,…,K代表所要测试的手势的数目,n=1,…,N代表测试的人数, l=1,…,L代表要测试的手到手机的距离(这里L=5,实际上可以根据需要进行选择),就是第n个人对第k个手势,在l距离进行m次测试所得到的测试得分,其计算方法就是公式(1)中所示。将各种测试情况下的得分加起来,得到的F就是最后关于这个软件的测试结果的得分。 以上评分方式也可以根据需要进行简化,例如不需要考虑摄像头到人手距离的问题的话,就可以去掉这一项的影响,而得到评分公式: (3) 开发语言:JAVA\\C++ 38