TOP

宇龙酷派赛题六:基于Android平台的视觉手势识别及其相册管理实现
2013-01-30 15:15:10 来源: 作者: 【 】 浏览:9898

 

 

试题标题                   基于Android平台的视觉手势识别及其相册管理实现

赛题简介:介绍整个赛题的思路和整体要求

Android手机平台上开发一个利用手势识别的人机交互系统,用于相册中图片的浏览与操作。

手势是人类交流沟通中不可分割的一部分,人们在相互交流时常常会使用肢体语言,而手势识别系统是利用摄像头跟踪以及捕获人的肢体动作,并将其转换为机器能识别的操作命令,这一技术开辟了人机交互系统的新方向。

视觉手势识别技术在最近几年得到了很好的商业化应用,最著名的产品就是微软的KINECT和索尼的PlayStationEye游戏设备,它们都是通过专业的计算设备来完成的。最近许多移动设备厂商希望在手机和平板电脑中配置手势识别设备,许多技术上的难题也在逐步得到解决,高通公司2012年也推出了Snapdragon芯片的视觉手势识别技术。市场研究机构ABITesearch 公司公布的一项最新研究显示,预测到2017年具有视觉手势识别功能的智能手机出货量将达到6亿部。2013年手势识别技术将成为计算领域的最重要的发展方向之一。

比赛获奖作品,可以获得酷派在线软件商店的特殊推广(每年增加数千万部智能手机用户群),并得到酷派免费提供的大屏幕高清4核手机作为比赛用品。

赛题业务场景:描述赛题相关的真实企业业务背景。从真实场景中,适当简化或者提炼出适合比赛的赛题场景

手势识别是计算机视觉领域和数值图像处理领域一个迅速发展的重要方向。手势主要分为静态手势和动态手势两种,动态手势可以看作是连续的静态手势序列。动态手势具有丰富和直观的表达能力,与静态手势结合在一起,能创造出更丰富的语义。利用动态手势识别构建新型的交互界面,是新一代的人机交互界面对输入方式自然性的要求,可以弥补传统交互方式的不足。

手势识别技术在过去几年得到了很好的发展,但移动设备中的手势识别技术仍然面临一些重要的难题,例如移动设备常常处于各种不同的环境中,其环境背景可能会有差异,而且处于变化状态中,那么在这一情况下能够实现较高准确度的手势识别就能使得这一技术得到很好的用户体验。所以相关的手机应用研究是非常有意义的。

该赛题将手势的应用限制在对相册中图片的操作,手机用户在繁忙或不方便的时候可以用手势控制的照片浏览或其他操作。实际上,与现在成熟的触屏技术不同,用户与屏幕非接触式的手势操作会得到用户更大的青睐,这也是人的最自然的肢体表达方式。

功能性需求

参赛者可以在完全自主开发或在android的原生相册源代码上做增强或增加,实现一个基于手势识别的相册图片操作软件。希望通过各种不同手势完成以下几项基本功能:

1     手掌变握拳手势表示关闭图册应用(20分);

2     握拳变手掌表示打开图册应用(20分);

3     当打开图册浏览照片时,单手指向右(左)滑动表示向前(后)翻阅图片,每滑动一次翻阅一张图片(20分);

4     当打开图册浏览照片时,拇指和食指向相反方向滑动表示放大图片(20分);

5     当打开图册浏览照片时,拇指和食指滑向同一个点表示缩小图片(20分);

除了以上几项手势以外,参赛人员也可以开发新的图片操作手势项用于拓宽图片操作功能(此为加分项,增加实现的功能在功能实现有效的情况下可加10分)。

另外软件的设计需要满足一个条件,即除了软件所定义的几项运动手势以外,对非规定的运动手势,一律不响应,这是为了保证手势操作功能的可靠性。对于各项功能应用后面所给出的分数,评分将会考虑识别准确率和响应时间,来综合给出最终得分。

非功能性需求

以上一些基本功能的完成需要满足一些实现条件,以使得基于手势识别的相册图片操作功能得到实际使

用效果以及好的用户体验,这些条件包括:

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项基本操作都被测试完毕以后,将所有五项的得分相加就得到此开发者的最终得分。

决赛阶段将考虑更多因素,同时会让多个评判者来对开发的作品进行评判,故评判标准将会采取更加科学而客观的统计评判方式,具体评分准则参见附录项。

其他限制条件:开发环境、实验平台、开发语言、数据库、编译器等限制条件

开发环境:Android SDK4.0以上、ADT


开发平台:ECLIPS

 
开发语言:JAVA\C++


数据库:mySQL\SQLite

测试数据或平台:提供给参赛者的测试环境和测试数据。(可提供电子档)

测试平台:ADTAndroid Development Tools)、Android智能手机


测试数据:图册中的图片

其他要求

文档要求:概要设计说明书(描述软件系统架构、逻辑架构、物理架构、部署结构、功能架构及关键技术,关键业务模块需通过UML图(用例图、时序图、状态图、包图、主要类图等)进行详细描述)、需求规格说明书(包括功能设计、非功能性设计、系统用例);
 
测试要求:需进行单元测试,提供单元测试用例,单元测试覆盖率不低于90%;提供性能测试文档(包括测试脚本、识别准确率、处理速度、CPU和内存占用率等);

赛题帮助说明

    手势识别应用程序的设计和开发就是将现实生活中存在的手势映射到计算机交互中去以传达人的想法。手势识别任务相对来说可以简单也可以很复杂,这取决于要识别的手势。有三种基本的方法可以用来识别手势:基于算法,基于神经网络和基于手势样本库的方法。每一种方法都有其优缺点。开发者具体采用那种方法取决与待识别的手势、项目需求,开发时间以及开发水平。基于算法的手势识别相对简单容易实现,基于神经网络和手势样本库则有些复杂。关于手势识别及其开发的基本概念,网络上的文章“Kinect for Windows SDK开发入门(十):手势识别基本概念”能够提供一些初步的指导。

    在现有基于手势识别的商业化产品中,MicrosoftKinect游戏机是开发较早而且比较成熟的产品,Microsoft也提供了Windows版的开发工具Microsoft Kinect SDK供开发者使用,这应该能够为Android版的手势识别应用提供一些好的参考。在OpvenCVMatlab软件中也有一些相关的范例。另外一些第三方开发者所创建的手势识别引擎也能在网上查到。相关的介绍与工具能在以下网址下载:

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

3.         选择L=5种距离作为每一次测试时手距离手机的距离,分别为L1=10cm, L2=20cm, L3=30cm, L4=50cm, L5= 80cm5

4.         每个人对每一种手势在每一个距离范围的测试次数记为m

5.         每个人对每一种手势在每一个距离范围的一次测试,操作的系统响应时间记为tt的时间越短,说明响应速度越快,同时考虑项目限定了响应时间需控制在1.5s范围内,所以为了能将这个响应时间考虑到最终评分结果中,可以考虑将t转化为一个得分因素D

(1)       t>1.5s, 得分D=0;

(2)       1s<t<1.5s, 得分D=0.1;

(3)       0.5s<t<1s,得分D=0.2;

(4)       t<0.5s, 得分D=0.3;

 

测试的评分方式:

评分将对每个人对每一种手势在每一个距离范围的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

 

 

关键字: 责任编辑:cnsoft
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇比赛题目一:基于安卓的文件浏览.. 下一篇宇龙酷派赛题五:基于Android平台..

相关栏目