课题背景与软件系统设计方案
该工程实践项目主要是实现一个对动态手势的实时识别系统,通过Kinect摄像头获取手势动作,通过特定手势识别算法对手势进行识别,并在图形化用户界面上实时展示结果。
整个系统拟采用经典MVC架构,model中存储实时手势的特征信息和识别结果,view实时展示摄像头获取的视频流和实时手势识别的结果,controller中包含完整的手势识别过程,包括手势信息提取,特征获取,手势建模和手势分析。
依赖视图
依赖视图展现了软件模块之间的依赖关系。比如一个软件模块A调用了另一个软件模块B,那么我们说软件模块A直接依赖软件模块B。如果一个软件模块依赖另一个软件模块产生的数据,那么这两个软件模块也具有一定的依赖关系。依赖视图能帮助我们找到没有依赖关系的软件模块或子系统,以便独立开发和测试,同时进一步根据依赖关系确定开发和测试软件模块的先后次序,也能有效帮助我们理清一个软件模块的变更对其他软件模块带来影响范围。
实现视图
实现视图是描述软件架构与源文件之间的映射关系。一般我们通过目录和源文件的命名来对应软件架构中的包、类等静态结构单元,然后由软件项目的源文件目录树来呈现典型的实现视图。
工作分配视图
工作分配视图将系统分解成可独立完成的工作任务,以便分配给各项目团队和成员。工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在个项目团队和成员之间合理地分配和调整项目资源,甚至在项目计划阶段工作分配视图对于进度规划、项目评估和经费预算都能起到有益的作用。
核心数据结构设计
整个手势识别过程中核心数据结构就是手势输入的保存形式,在不同的实现方法中也有所不同。
如果使用肤色检测的方法来做手势分割,则输入为二维的整型矩阵,每个二维矩阵代表视频流中一帧的手势图像,而二维矩阵中每个元素代表手势图像中一个像素点的灰度值。
如果使用基于深度信息的方法来做手势分割,则输入为两个二维矩阵,一个是RGB手势图像,另一个是深度手势图像,其中每个元素代表手势图像中一个像素点的深度信息(距离摄像头的远近)。
软件系统运行环境和技术选型
目前项目的运行环境中,硬件包括Kinect传感器和联想笔记本电脑:
操作系统: Windows10 64位操作系统
处理器:Inter(R) Core(TM) i5-9300H CPU @2.40G Hz
内存: 16GB
显卡:NVIDIA GeForce GTX1650
软件包括:Kinect for Windows SDK 、 python3 、tensorflow
由于项目主要实现方法还没有确定,可能用到的方法有:基于肤色检测的手势分割、基于深度信息的手势分割、基于动态时间规整算法的手势识别、基于图卷积神经网络的手势识别。
核心工作机制
训练时,用户打开图形化界面通过多次摄像头获取或者直接导入手势图片信息,训练手势模型。识别时,通过Kinect摄像头获取手势图像传入系统,经过手势分割、手势分析、模型比较给出识别结果并实时显示在图形化界面上。