基于手势识别系统的需求分析和概念原型
为了更好的完成工程实践,在项目的初始阶段需要对其进行需求分析与概念原型的设计,从而可以对后续工作定下明确的方向,本文从需求分析、业务领域建模、数据模型和概念原型等几个方面,基于我的工程实践项目——手势识别系统,进行一个简要的实践分析。
工程实践项目
我的工程实践项目是一个手势识别系统,根据以往的文献来看,该项目的实现有多种技术路线,在手势的检测与分割上,一种是利用单目摄像头提取二维手势图像,在利用颜色空间进行一个手势的分割,提取出要识别的目标手势;另一种则是利用深度相机获取深度手势图像,利用一些现有的库函数来进行手势的分割与提取。至于手势的识别,主要分为模板匹配、状态图转移、统计学习、神经网络等几种方法。
而我对该项目既定的技术路线是:利用Kinect摄像头来获取手势的深度图像,利用OpenCV来对手势进行一个分割,提取出手势图像,最后选择模板匹配的方法,将手势的特征与训练的模板进行一个匹配,从而识别出手势的内容。
需求分析
原型化方法和建模的方法是整理需求的两类基本方法。原型化方法可以很好地整理出用户接口方式,比如界面布局和交互操作过程。建模的方法可以快速给出有关事件发生顺序或活动同步约束的问题,能够在逻辑上形成模型了整顿繁杂的需求细节。
在本文的手势识别项目中,其主要的需求有:
- 用户的手势可以被采集
- 采集到的用户手势被分割、提取
- 将手势进行特征提取
- 利用特定算法,对提取的手势特征进行匹配
- 用户可以与系统交互,进行多次的手势提取
- 用户利用用户界面,进行常规操作,如登录,开始与退出
上述需求中,第三、四两条没有与用户交互,没有画出其对应的用例图如下:
业务领域建模
业务领域建模的基本步骤如下:
- 收集应用业务领域的信息。聚焦在功能需求层面,也考虑其他类型的需求和资料;
- 头脑风暴。列出重要的应用业务领域概念,给出这些概念的属性,以及这些概念之间的关系;
- 给出这些应用业务领域概念分类。分别列出哪些是类、哪些是属性和属性值、以及列出类之间的继承关系、聚合关系和关联关系;
- 将结果用UML类图画出来。
通过上一阶段的分析,该系统应该具有GUI类、Users类、Gestures类,Template类等四个类,在用户交互界面,用过有登录、开始、退出等控制按钮;在用户类中,用户应该可以利用GUI控制系统进行操作,与手势类进行交互,从而获取手势;在手势类中,应该包括进行手势检测与分割的方法、手势特征提取的方法;在模板类中,应包括训练得到的手势模板,并且应具有手势匹配的方法。其UML类图如下:
数据模型
1)用户表
序号 | 变量名 | 类型 | 描述 |
1 | id | string | 用户名 |
2 | gesture | Gesture[] | 手势 |
2)手势表
序号 | 变量名 | 类型 | 描述 |
1 | gesturetype | string | 手势类型 |
2 | gesture_id | string | 手势ID |
概念原型
概念是人对能代表某种事物或发展过程的特点及意义所形成的思维结论。概念原型是一种虚拟的、理想化的软件产品形式。
概念原型 = 用例 + 数据模型
该项目的工作过程如下:
首先,用户通过图形化界面登录进系统,开始使用手势识别系统;接着,用户做出手势,通过深度摄像机进行手势的收集;然后,利用系统将手势进行分割和提取;最后,利用手势识别算法,进行匹配,得出手势的类型。
总结
通过本文,我对用例建模、业务领域建模和数据建模有了更深的理解,也对工程实践项目有了更明确的目标,为以后再进行项目的开发打下了基础。