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