第 1 章 绪论 1
1.1研究背景及意义 1
1.2国内外研究现状 2
1.2.1全息投影应用研究现状 2
1.2.2医学全息投影研究现状 3
1.3主要研究内容 4
1.4论文组织结构 5
第 2 章 相关技术 7
2.1计算机图形学相关知识 7
2.2全息投影相关知识 8
2.2.1全息投影技术原理 8
2.2.2全息投影和虚拟现实的区别 9
2.3OBJ 模型相关知识 10
2.4OpenGL 相关知识 11
2.5手势识别相关知识 12
第 3 章 系统需求分析与系统设计 14
3.1需求分析 14
3.1.1系统功能需求分析 14
3.1.2系统非功能需求分析 16
3.2系统总体设计 17
3.2.1系统总体架构设计 17
3.2.2系统总体功能设计 19
3.3系统详细设计 19
3.3.1硬件平台详细设计 19
3.3.2功能模块详细设计 20
3.4数据库设计 24
第 4 章 系统关键技术 27
4.1手势识别技术 27
4.1.1改进的手势识别方法 27
4.1.2匹配器模块 29
4.1.3分类器模块 33
4.1.4融合方法 41
4.2实验 41
4.2.1数据集介绍 42
4.2.2实验结果及分析 43
4.3本章小结 44
第 5 章 系统实现与测试 45
5.1系统开发技术及运行环境 45
5.2系统实现 46
5.2.1硬件平台实现 46
5.2.2功能模块实现 47
5.3系统测试 53
5.3.1系统测试目的 53
5.3.2系统功能测试 54
5.3.3系统性能测试 55
5.4本章小结 57
第 6 章 总结与展望 58
6.1总结 58
6.2展望 58
参考文献 60
图表目录
图目录
图 2-1 波前记录原理示意图 8
图 2-2 物体再现原理示意图 9
图 2-3 OpenGL 渲染管线流程图 11
图 3-1 系统总体功能用例图 14
图 3-2 认证管理模块用例图 15
图 3-3 数据管理模块用例图 15
图 3-4 手势识别模块用例图 16
图 3-5 模型处理模块用例图 16
图 3-6 系统架构图 18
图 3-7 功能模块图 19
图 3-8 全息投影装置示意图 20
图 3-9 系统流程图 20
图 3-10 认证管理流程图 21
图 3-11 数据管理流程图 22
图 3-12 手势识别流程图 22
图 3-13 模型处理流程图 23
图 3-14 模型初始及渲染流程图 24
图 3-15 E-R 图 25
图 4-1 改进的手势识别方法架构图 28
图 4-2 自定义“匹配器”模块示意图 29
图 4-3 关键点特征矩阵示意图 29
图 4-4 手部关键点分布示意图 30
图 4-5 宽度缩放示意图 34
图 4-6 深度缩放示意图 34
图 4-7 分辨率缩放示意图 35
图 4-8 综合缩放示意图 35
图 4-9 自定义手势数据集样例图 37
图 4-10 Accuracy 曲线图 38
图 4-11 Loss 曲线图 38
图 4-12 单类别识别精度分析 39
图 4-13 类激活图 40
图 4-14 融合方法处理示意图 41
图 4-15 Kinect & Leap Motion 数据集 RGB 图像样例图 42
图 4-16 Creative Senz3D 数据集 RGB 图像样例图 42
图 5-1 全息投影装置实物图 47
图 5-2 登录界面 48
图 5-3 用户信息管理界面 48
图 5-4 模型数据管理界面 49
图 5-5 手势指令示意图 50
图 5-6 OBJ 模型可视化效果图 50
图 5-7 模型放大示意图 51
图 5-8 模型左旋示意图 51
图 5-9 向上平移示意图 52
图 5-10 模型内窥示意图 52
图 5-11 模型重置示意图 53
表目录
表 2-1 OBJ 文本模型基本的关键字及含义 10
表 3-1 用户表 25
表 3-2 模型表 25
表 3-3 操作表 26
表 4-1 EfficientNetV2 在 ImageNet 数据集上的测试结果 36
表 4-2 不同算法 Microsoft Kinect & Leap Motion 数据集上的测试结果 43
表 4-3 不同算法在 Creative Senz3D 数据集上的测试结果 43
表 4-4 消融实验结果 44
表 5-1 认证管理模块测试用例 54
表 5-2 数据管理模块测试用例 54
表 5-3 手势识别模块测试用例 55
表 5-4 模型处理模块测试用例 55
表 5-5 系统性能测试用例 56
第1章 绪论
1.1研究背景及意义
传统医学教学注重理论性知识,课堂教学模式基本上是讲授式,学生学习方 式基本上是接受式,理论脱离实际,基础脱离临床[1]。这种以教师为主体的单一 教学方式,使得学生长期处于被动状态,无法有效激发学生的学习兴趣以及创新 型思维的培养。
在医学影像学习的过程中,传统的医学影像都是二维的图像数据,通常需要 借助 X 光片以及显示屏直接对二维图像进行观察、分析诊断,需要医生在大脑 中构想出具体的组织、器官或病灶区域的结构,然后再进行疾病的诊断,费时费 力,需要专业知识极强才可胜任[2]。传统医学影像教学存在着多方面的问题和挑 战,需要通过创新性的教学模式和教学方法,不断提高教学质量和效果,以满足 医学专业学生的学习和应用需求。
全息投影能够改善传统医学教学中局限性问题,全息投影技术通过在真实 空间构建清晰度高、色彩丰富、立体逼真的三维组织器官影像,给医学影像专业 的学生强烈的视觉冲击力,从而加深学习过程中的印象和提高对专业知识的理 解力[3]。另外,还可以通过互动对三维医学影像模型进行缩放、平移、旋转等交 互操作,教师在授课的过程中,可以为学生提供多个方位、多个层次、多个角度 的医学影像观察视角,从而更好的学习医学影像专业知识。
全息投影技术提供了一种沉浸式、体验式、观摩式教学方式,使教学内容更 加形象化、情景化、智能化和多元化。虽然目前存在一些基于虚拟现实技术的医 学应用研究,但需要佩戴VR头盔或者其他传感器设备进行观看与交互,在使用 的过程可能会产生负重和眩晕的效果,这在教学过程中十分不方便,另外设备的 造价也比较昂贵,因此不利于在医学影像教育领域进行普及。
本文主要针对当前传统医学影像教学过程中存在的局限性问题,开发一款 简便、易用、廉价的裸眼3D全息投影医学影像示教系统,从而能够给医学影像 专业的学生带来一种新的学习方法,从而帮助同学们能够更好地学习专业知识、 增强对专业知识的理解力和提高对专业学习的兴趣。
1.2国内外研究现状
1.2.1全息投影应用研究现状
全息投影技术是一种新兴的投影技术,它可以将三维立体图像投射到现实 空间中,从而让观影者感受到如此生动真实的视觉效果。近年来,全息投影技术 发展迅速,在军事、商业、教育、医疗等领域得到了广泛应用。
在军事领域中,全息投影技术主要应用于虚拟仿真、信息显示、电子对抗等 方面。例如,全息投影技术可以将虚拟的战场环境投影到实际的训练场地上,让 士兵们在真实的环境中进行训练,提高训练效果。此外,全息投影技术还可以用 于信息显示,在军事领域中,它可以将复杂的战场信息以三维的形式呈现出来, 帮助指挥员更加直观地了解战场情况,做出更加准确的决策。
全息投影技术在商业方面的应用越来越广泛。全息投影技术可以将三维立 体图像投射到任何表面上,从而让用户体验到更加逼真的视觉效果。在商业场景 中,全息投影技术可以用来展示产品,提升品牌形象,提高销售效果。
全息投影技术在教育方面也有着广泛的应用。全息投影技术可以将三维立 体图像投射到任何表面上,从而让学生体验到更加逼真的视觉效果。在教育场景 中,全息投影技术可以用来展示课程内容,提高学生的学习兴趣,提升学习效果。
全息投影技术在医疗方面也有着广泛的应用。全息投影技术可以将三维立 体图像投射到任何表面上,从而让医生体验到更加逼真的视觉效果。在医疗场景 中,全息投影技术可以用来展示病人的病情,提高医生的诊断效率,提升治疗效 果。
总之,全息投影技术发展迅速,在商业、教育、医疗等领域得到了广泛的应 用。未来,全息投影技术将会发展得更加成熟,在更多领域得到更广泛的应用。
但是,目前全息投影在医学教育领域的发展,存在较多问题,主要问题如下:
1.技术门槛较高
全息投影技术目前多应用于一些探索性医学应用、商娱展示、舞台演出等。 由于技术水平不成熟,所需设备价格昂贵,设计及开发门槛较高,其在医学领域 的应用尚处于实验阶段[4]。
2.缺乏触觉交互
目前全息投影技术的交互主要关注视觉与听觉,缺乏必要的触觉交互手段, 虽然在多数应用环境中,视觉和听觉可以达到不错的效果。但在医学领域教育 中,尤其是临床实践操作环节,触觉交互占据主导地位[4]。
3.设备操作复杂
现有的全息投影设备操作繁琐,学生获取信息的渠道变得多元化,在提高对 复杂内容认知效率的同时容易造成学生的认知负荷。如何有效的实现技术与教 学的融合,平衡学生的认知压力至关重要[4]。
1.2.2医学全息投影研究现状
医学全息投影是一种新型的医学影像技术,它可以将医学影像以三维立体 的形式呈现,帮助医生更加全面地了解病情,提高诊断和治疗效果。目前,医学 全息投影的研究在国内外都得到了广泛关注和重视,将全息投影技术和医学相 结合逐渐成为一个新的趋势,拥有巨大的发展前景。现如今,医学全息投影比较 成熟的应用研究,主要集中在国外一些做全息医学领域的大型企业;虽然国内在 医学临床领域有过个别应用案例,但国内对其研究尚在起步阶段。
2020年12月,日本国立护士大学在看护系看护学科的授课中引入了 VR平 台,VR平台使用智能手机,通过VR可以确认人体的3D数据等,作为该校护 理学部护理学科的基础解剖课的课程教材。日本国立护理大学引进的是Holoeyes 株式会社开发的面向医疗教育的VR平台“Holoeyes Edu”。
2021年6月,圣地亚哥Xenco Medical创始人兼首席执行官杰森•海德尔 (Jason Haider)在世界上最大的沉浸式科技活动VR/AR全球峰会上发布了第一个 无眼镜全息手术模拟平台HoloMedX。这个革命性的平台允许用户在全息空间中 模拟整个脊柱手术,而不需要佩戴任何头盔或眼镜。Xenco Medical的HoloMedX 平台可以即时调整全息场景,允许多个用户同时进行无眼镜全息观看和交互。
2021 年 11 月,RealView Imaging 获得了 FDA 510(k)对其 Holoscope-i 全息 系统的许可。RealView Imaging是一家以色列初创公司,在全球交互式实时全息 技术领域处于领先地位,他们推出了 Holoscope-i 有史以来第一个医疗全息
系统。 Holoscope-i 系统是根据临床医生和介入医生的特定需求设计和定制的, 其“头顶式”系统配置悬挂在医生上方,不需要任何头戴式设备、特殊眼镜或交互 工具。
2022年12月,德国医疗技术公司apoQlar宣布其开创性的混合现实软件设 备 VSI HoloMedicine 获得了 FDA 510(k) II 级许可,它让外科医生能够利用沉浸 式3D全息技术助力复杂的手术规划。VSI HoloMedicine使用3D全息投影技术, 可以为外科医生在手术筹划和准备过程中,提供一种近乎“X射线视觉”的视角。
2018年12月,陆军军医大学陆军特色医学中心(大坪医院)骨科副主任熊 雁带领医工团队,自主研发出MR (混合现实)+DAA (微创直接前路)髋关节 置换技术,为多例髋关节炎和股骨头坏死的患者顺利实施了手术。在MR全息 投影技术辅助下,医生戴上集成高新技术的眼镜就会拥有一双“透视眼”,能够 用肉眼看清患者的血管、骨骼、神经组织,有着“术前精准规划、术中精确透视、 术中无创调整完成精准力线对位、对病人无任何附加损伤”等优点。
2022年11月,在世界5G大会的黑龙江拓盟科技有限公司展位,3D全息投 影技术被应用在医学领域,医生在进手术室之前就能清楚看到彩色3D的患者病 灶部位影像。医生手术时头戴 MR 全息眼镜,眼镜集合了全息透镜、深度摄像 头、传感器中枢等,通过GPU、CPU与摄像头在眼镜里创造360度影像。相当 于给医生装上了“透视眼”,病灶周围的血管和组织纤毫毕现。依据全息三维影 像的引导,医生可以精准进行外科手术。
总之,国内医学全息投影技术还处于研究和发展阶段,虽然存在一些基于 VR技术的医学应用研究,但国内的医学全息投影系统软件还没有完全进军医学 领域,在功能和效率方面与欧美等国外的软件还存在较大进步空间。而国外的医 学全息投影系统软件,大都是将其软件系统和硬件设备进行捆绑售卖,在价钱方 面来说,极其昂贵。
因此,我们需要进一步深入研究理论和应用,开发一套价格低廉、功能完善、 效率良好的医学影像全息投影示教系统。这样的系统的开发将具有重要的意义, 它将推动我国医学教育事业的快速发展,为医学教育领域提供更多的选择和更 好的解决方案。未来,随着技术的进一步发展,医学全息投影技术将为我国医学 教育领域带来更多的机会。
1.3主要研究内容
针对以上问题,本文的研究内容与方向是开发一款简便、易用、廉价的全息 投影医学影像示教系统,并且是可以进行实时交互的裸眼3D全息投影。希望在 未来的医疗影像教学过程,能够看到全息投影技术带来的便利。本文主要从系统 研究和实现过程中所使用的关键技术,以及系统的需求分析与系统设计进行开 展研究工作。
第一、 OBJ 模型可视化技术研究:经过阅读大量文献和在国内外网站调研 后,学习和了解OBJ模型可视化实现方法,并基于OpenGL进行开发一个OBJ 模型可视化软件,用于可视化各种医学影像3D模型。
第二、3D全息投影技术研究:在仔细查阅大量文献后,学习和了解了全息 投影技术的发展以及原理,并设计了一个180度全息投影装置,为用户提供一个 形象的显示设备。
第三、手势识别技术研究:这是本系统使用的关键技术,查阅了一些比较经 典的手势识别文献,在研读文献后汲取精华去其糟粕,提出了一个改进的手势识 别方法:一种融合卷积特征和关键点特征的方法,既考虑了手势的全局特征,也 考虑了手势的局部特征。
第四、系统的需求分析与系统设计:主要进行了功能需求分析和性能需求分 析,基于 Python3.8+QT 进行开发一款桌面应用程序,数据的存储使用 MySQL 数据库,运行环境为Windowl0操作系统+16G运行内存+GPU RTX 2060系列。
第五、系统实现与测试:本系统是一个桌面应用程序,在系统开发完成以后, 对系统的主要功能界面进行展示。另外,在系统完成界面开发后,对系统的主要 功能模块进行测试。
1.4论文组织结构
本文内容大致分为六个章节,每个章节的主要内容如下:
第1章 绪论。主要阐述了研究背景及意义,课题研究内容的国内外研究现 状,主要研究内容以及论文的组织结构。
第2章 相关技术。主要介绍课题研究过程中所用到的相关技术,阐述了实 现本系统所用到的技术知识,大致内容包括计算机图形学相关知识、全息投影相 关知识、 OBJ 模型相关知识、 OpenGL 相关知识以及手势识别相关知识。
第3章 系统需求分析与系统设计。主要从功能和非功能两个方面进行需求 分析,然后根据需求分析完成了系统的总体架构设计、硬件平台设计、系统功能 设计以及数据库设计。
第4章 关键技术。为了实现一个高可用的医学全息投影示教系统,需要使 用一些关键技术,其中手势识别技术至关重要。本章节主要对手势识别技术进行 深入研究,并且在手势识别的研究过程中,提出了一个改进的手势识别方法,这 是本文的主要创新内容。
第5章 系统实现与测试,主要介绍了系统的开发技术与运行环境,在实现 系统的硬件平台和系统功能后,完成功能测试和性能测试,最后运行系统并展示 系统的主要界面、演示系统的主要功能。
第6章 总结与展望,主要阐述了在实现系统过程中做了哪些重要的工作, 并且指出了当前系统的优点和缺点,为以后进行完善系统提供一个根据。最后阐 述了对本系统的发展前景的展望。
第2章 相关技术
本系统是基于3D全息投影技术的医学影像示教系统,系统的研究与实现过 程中涉及到一些理论知识,本章主要介绍在开发过程中所用到的一些理论知识 背景,主要包括计算机图形学相关知识、全息投影相关知识、 OBJ 模型相关知 识、 OpenGL 相关知识以及手势识别相关知识。
2.1计算机图形学相关知识
计算机图形学[5]是一门研究计算机如何生成、处理、显示和交互图形的学科。 它是计算机科学、数学和工程学等学科的交叉领域,广泛应用于游戏、VR、动 画等方面。目前,计算机图形学领域是一个发展比较快的领域,在各种应用领域 中得到了广泛应用,并取得了显著的实践成果[6]。以下是计算机图形学目前的发 展现状:
实时渲染技术的发展:显卡技术日益发展,提供了强大的算力平台支持,这 对于实时渲染得到了支持,使得实时渲染技术越来越成熟,并且实现了更高质量 的渲染效果,在游戏、VR、电影等领域中得到了广泛应用。
3D打印技术的应用:3D打印技术已经成为了一种常规的制造方式,计算机 图形学在3D打印技术中的应用越来越广泛,能够提供更高效、更准确的3D模 型生成和处理技术。
图像处理和计算机视觉的融合:计算机图形学和计算机视觉的交叉应用,使 得计算机视觉可以更加准确地感知和分析图像内容,为各种应用领域提供了更 加强大的技术支持。
促进虚拟现实技术的进一步发展:计算机图形学领域的日益发展和进步,为 很多领域的发展都提供了很大的帮助,最为熟悉的就是在虚拟现实领域的应用, 使虚拟现实技术已经成为了一个热门的领域,虚拟现实技术将会越来越成熟,并 且在教育、娱乐、医疗等领域得到更加广泛的应用。
深度学习技术的应用:深度学习技术在计算机图形学领域中的应用越来越 广泛,例如图像分类、目标检测、图像生成等领域,这些技术的应用将会使得计 算机图形学更加智能化,并且提高了计算机图形学在各种领域中的应用效果。
总之,计算机图形学作为一个重要的学科,随着计算机技术的不断发展,其 在各个领域中的应用将会越来越广泛,并且会与其他领域的技术不断融合,为人 们提供更加强大和高效的解决方案。
2.2全息投影相关知识
2.2.1全息投影技术原理
全息投影技术是利于光的干涉原理和光的衍射原理,可以记录并再现真实 的三维物体的图像,全息投影技术也被称为虚拟成像技术,用户可以进行裸眼观 看,无需佩戴一些辅助设备,例如全息眼镜;用户可以从多个角度和多个方位进 行观看浏览3D模型影像。
首先,全息投影技术要利用干涉原理记录物体光波信息,这是拍摄过程。具 体流程是:第一,由激光器发出的光被分束镜散射成两束光,一束光被平面镜反 射、扩束镜分散后照向物体,形成漫射式的物光束;第二,另一部分激光会作为 参考光束,照射到全息底片或者全息干板上,和物光束叠加产生干涉,把物体光 波上各点的位相和振幅转换成在空间上变化的强度,进而利用干涉条纹间的反 差和间隔将物体光波的所有信息记录下来[7,8]。如图 2-1 所示:
图 2-1 波前记录原理示意图
然后,利用光的衍射原理再现物体光波信息,这是成像的过程。工作流程是: 全息图犹如是一个复杂的光栅,在相干激光照射下,一张线性记录的正弦型全息 图的衍射光波一般可给出两个像,即原始像和共轭像,两像叠加后具有真实的视 觉效应[7,8]。如图 2-2 所示:
图 2-2 物体再现原理示意图
2.2.2全息投影和虚拟现实的区别
虽然全息投影和虚拟现实技术均可产生三维立体效果,但两者之间在成像 原理上、成像设备上和观影方式上完全不同。
首先,在成像原理上,对于全息投影技术来说,其利用了光的干涉和衍射原 理,它通过将光投射到物体表面,然后将反射的光线投射到二维平面上,从而形 成三维物体的投影[9,10]。虚拟现实成像原理是通过计算机模拟出一个虚拟的三维 环境,然后通过显示器等设备将这个虚拟环境的图像投射到用户的眼睛中,让用 户感觉到身临其境的感觉。
其次,在成像设备上,全息投影设备包括用于投影的一些设备,例如投影仪 或者显示器,以及用于呈现投影影像的全息板或者全息投影膜等。虚拟现实技术 以计算机技术为核心,主要设备包括:输入设备(三维传感器、鼠标、键盘、数 据手套等)、计算机、输出设备(大型显示设备、传动杆、力反馈机械臂等), 以及相关的数据库软件和应用软件等[11]。
最后,在观影方式上,全息投影技术无需再借助其他辅助设备,用户可以裸 眼观看投影效果,而虚拟现实设备则必须通过辅助装置如头盔、眼镜等方可进行 观看。
2.3OBJ模型相关知识
OBJ 模型是一种常用的三维模型格式,它由 Alias|Wavefront 开发,用于描 述三维物体的几何形状。OBJ模型由一系列的顶点、纹理、顶点法向量和面的坐 标组成,可以用来描述三维物体的几何形状,以及物体表面的纹理-OBJ格式可 以描述3D物体的几何形状、纹理信息、材质信息、光照信息等,但并不包含动 画信息,因此通常用于存储静态3D模型。OBJ模型的文件后缀为“.obj”,它 是一种文本文件,可以使用一些文本工具进行打开查看文件内容。文件中包含一 系列的指令,每个指令都有一个关键字,用于指示OBJ模型的构建方式[12],如 表 2-1 所示。
表 2-1 OBJ 文本模型基本的关键字及含义
关键字 含义
v 顶点 表示 3D 模型中的一个点,通常由 x、y、z 三个坐标值组成。
文本格式:v x y z
表示 3D 模型中每个顶点对应的纹理坐标,通常由 u、v 两个值表示。
vt 纹理坐标
文本格式:vt u v w
表示3D模型中每个面的法线方向,通常由x、y、z三个坐标值表示。
vn 顶点法向量
文本格式:vn x y z
示3D模型中的一个三角形面片,由三个顶点和对应的纹理坐标、法线
f面 组成。
文本格式: f v/ vt/vn v/vt/vn v/vt/vn
OBJ模型文件通常包含两个文件,一个是“.obj ”文件,另一个是“.mtl”文 件。“.obj”文件是模型的主文件,包含模型的顶点、面、纹理坐标等信息。“.mtl” 文件则是模型的材质文件,包含模型的材质信息、纹理贴图等信息[12]。
OBJ模型的构建方式主要有三种:顶点,面和纹理坐标。顶点指令用于描述 物体的几何形状,它们由一系列的点组成,每个点都有一个唯一的索引号,用于 标识它们。面指令用于描述物体的表面,它们由一系列的面组成,每个面都有一 个唯一的索引号,用于标识它们。纹理坐标指令用于描述物体表面的纹理,它们 由一系列的纹理坐标组成,每个纹理坐标都有一个唯一的索引号,用于标识它 们。
OBJ 模型可以用于游戏开发,因为它可以描述三维物体的几何形状和表面 纹理,可以用来创建复杂的游戏场景。OBJ模型也可以用于虚拟现实开发,因为 它可以描述三维物体的几何形状和表面纹理,可以用来创建复杂的虚拟现实环 境。OBJ模型可以用于3D打印,因为它可以描述三维物体的几何形状和表面纹 理,可以用来创建复杂的3D打印模型。OBJ模型也可以用于动画制作,因为它 可以描述三维物体的几何形状和表面纹理,可以用来创建复杂的动画场景。
总之,OBJ模型是一种常用的三维模型格式,它由一系列的顶点,面和纹理 坐标组成,可以用来描述三维物体的几何形状,以及物体表面的纹理-OBJ模型 可以用于游戏开发,虚拟现实开发,3D打印和动画制作等多种应用场景。
2.4OpenGL相关知识
OpenGL全称是Open Graphics Library,其译名为开放式图形库,是一种跨 平台的应用程序编程接口(API),用于为2D和3D图形渲染提供支持。它是一 种软件库,可以让软件开发人员在他们的应用程序中使用图形功能,广泛流行于 游戏、医学影像、地理信息、气象模拟等领域,是高性能图形和交互性场景处理 的工业标准。OpenGL渲染管线流程,如图2-3所示。
图 2-3 OpenGL 渲染管线流程图
OpenGL 提供了一组标准的图形操作,如绘制线条、绘制三角形、绘制多边 形等。OpenGL还提供了一组标准的图形状态,可以用来控制图形的外观和行为, 如颜色、纹理、深度测试、混合等。OpenGL还提供了一组标准的图形管道,可 以用来控制图形的处理流程,如图形着色、图形变换、图形裁剪等。OpenGL还 提供了一组标准的图形缓冲区,可以用来存储图形数据,如颜色缓冲区、深度缓 冲区、模板缓冲区等。OpenGL还提供了一组标准的图形着色器,可以用来控制 图形的外观,如颜色、纹理、光照等。
OpenGL的优势在于它可以在不同的操作系统和硬件平台上运行,而且它的 性能也很高。OpenGL还支持多种图形技术,包括着色器、纹理、深度测试等, 可以满足不同的图形需求。
OpenGL的缺点在于它是一种低级的图形编程接口,开发者需要自己编写大 量的代码来控制图形硬件,这对于初学者来说可能会有一定的挑战。此外, OpenGL的文档也比较复杂,开发者需要花费大量的时间来阅读和理解文档,才 能正确使用 OpenGL。
总之,OpenGL是一种跨平台的应用程序编程接口,它提供了一组标准的图 形操作、图形状态、图形管道、图形缓冲区和图形模型等,可以让软件开发人员 在他们的应用程序中使用图形功能。
2.5手势识别相关知识
手势识别可以识别和跟踪人类手势,以控制计算机或其他设备,它可以用于 游戏、虚拟现实、机器控制等应用,以提高人机交互的效率和便捷性。在人机交 互中,无论是简单的静态手势识别,还是复杂的动态手势识别,都具有较多应用 方向,都可以用来实现人机交互。
手势识别发展之初,需要借助一些穿戴式的设备,大多数需要通过有线方 式,将用户和系统进行交互连接,如数据手套。数据手套由传感器、采集和处理 以及供电的设备、传感器支架构成。美国Grimes教授带领的团队,早在20世纪 80 年代初,研究出了一中基于数据手套的手势识别技术[13];2005 年, Bernardin 提出了一个系统,该系统结合数据手套和触觉传感器,来获得的手形和接触点信 息,从而来识别连续的人类抓握序列[14],准确率高达95%;国内, 2000年吴江 琴通过结合神经网络和判定树,实现了基于数据手套的手势字母识别系统[15],精 度高达98%以上;2010年,王新宇提出了一种基于数据手套和优化的神经网络 手势识别系统[16],提高了手势识别的智能水平。
目前手势识别技术主要是基于计算机视觉技术,根据运动状态大致可分为 静态手势识别和动态手势识别。静态手势,可以理解为一张静态的图像代表一种 手势类型;动态手势,表示一段连续的帧代表一种手势类型,也可以理解为一段 视频代表一个手势类型。
从技术角度来看,近年来计算机视觉技术的发展促进了手势识别技术的发 展,使得手势识别技术可以更加准确地识别手势。此外,深度学习技术也在推动 手势识别技术的发展,使得手势识别技术可以更加准确地识别手势。现如今手势 识别方法主要有基于传统方法和基于深度学习方法的手势识别技术。
传统的基于计算机视觉技术的静态手势识别技术,一般包括“手部的分割”、 “特征的提取”、 “手势的分类”三个主要模块。可以利用基于肤色或边缘的分割方 法,将手部 ROI 从一张图像中裁剪出来[17];对于分割后生成的手型二值图,可 以利用SIFT或者HOG以及自定义的算法来提取手型特征卩8];最后将提取的特 征输入到分类器进行分类,常用的分类器包括支持向量机(Support Vector Machine, SVM)、K最邻近(K Nearest Neighbor,KNN)等,然后输出手势类型。 这种手势识别方法特别容易受到光照环境的影响和背景环境的干扰,但是识别 速度较快,具有实时性。
近几年,深度学习得到了很快的发展,一些基于深度学习的目标检测识别算 法随之而起,在手势识别研究中,越来越多的研究人员使用深度学习这一技术, 从而开创了一条新的研究方式。深度学习方法,一般将特征提取模块和分类器模 块,集成到一个完整的神经网络架构中,是一中端到端的学习方式,更加智能化。
基于深度学习的静态手势识别方法有:一种基于卷积神经网络的手势识别, 利用背景减少技术除去手部区域外的复杂背景,并赢得了 95.9%的准确率[19];一 种基于R-CNN目标检测算法的手势识方法[20],获得了 99.4%识别精度,但是非 常耗时,一张图像的识别需要40s; 一种使用Faster R-CNN模型为控制机器人开 发的智能手势识别系统[21],在自定义的数据集上测试的平均准确度为91.9%,但 是一张手势图像的识别,大概需要的时间为230 ms; 一种结合Attention机制与 特征融合,并且提出一个轻量级的模型r-mobilenetv2[22],在LaRED公共数据集 识别准确率为 98.8%等。
第3章 系统需求分析与系统设计
3.1需求分析
3.1.1系统功能需求分析
本系统是3D全息投影医学影像示教系统,系统由硬件装置平台和软件平台 共同组成。本系统的硬件装置平台是一个3D全息投影机柜,用于呈现医学影像 渲染后的结果,这是本系统所需要的硬件装置平台。
系统软件平台的主要功能模块包括:认证管理模块、数据管理模块、手势识 别模块和模型处理模块。普通用户可以登录系统,选择医学影像模型,启动模型 进行演示,还可以通过手势进行控制模型变换。管理员不仅拥有普通用户的所有 权限,还可以对系统数据进行管理。系统总体功能用例图如图 3-1 所示。
(1)认证管理模块:系统的使用者角色分为管理员(老师)和普通用户(学 生),不同的角色对系统拥有不同的访问权限,此模块用来对用户进行登录认证、 权限认证等操作。认证管理模块用例图如图 3-2所示。
图 3-2 认证管理模块用例图
(2)数据管理模块:系统管理员可以简单方便地对系统数据进行管理,主 要功能包括:管理员可以上传模型文件、添加模型文件描述信息、修改模型文件 描述信息以及删除模型文件等;管理员还可以添加普通用户、查询普通用户信 息、删除普通用户以及编辑普通用户信息等。数据管理模块用例图如图 3-3 所 示。
图 3-3 数据管理模块用例图
(3)手势控制模块:用户位于相机视野范围内,然后采集用户手势图像, 最后对用户的手势图像进行处理,输出最终的手势类别。手势控制模块用例图如 图 3-4 所示。
(4)模型处理模块:主要对模型文件进行加载,然后对成功加载后的模型 进行初始化、渲染、显示和变换等操作。模型处理模块用例图如图 3-5 所示。
3.1.2系统非功能需求分析
本系统应用领域是医学教育领域,系统面向的用户群体是医学影像专业的 老师和学生,该系统应是一款简便、易用、廉价的全息投影医学影像示教系统, 本小节主要从以下方面进行系统非功能需求分析。
(1)性能需求 系统的性能需求主要体现在手势识别的准确性和模型渲染的流畅性,系统 应该能够准确的识别用户的手势控制指令并且模型能够及时进行变换。如果手 势识别准确率太低或者模型变换过程卡顿,那么系统的用户体验会变得极其差。
(2)可靠性需求 系统可靠性需求的主要目的是确保系统在特定条件下能够保持稳定运行, 以达到用户或业务方的期望,并且在意外事件发生时保障系统的安全性和可用 性,本系统应该在保证使用期间能够稳定运行。
(3) 易用性需求 系统的使用群体,通常是非计算机专业的人员,用户可能对于程序或者系统
的认知度不高,所以系统的界面设计、操作流程、帮助文档应该符合用户要求。 总而言之,对于用户来说系统应该操作起来简单,不需要花费太多的时间对用户 进行培训。
(4) 可维护性需求 系统易维护性需求是指系统应该具备易于维护的特性和能力,以便在系统
运行期间进行修改、扩展和维护。维护性是指系统的代码、文档和其他相关资源 易于理解、修改和维护,包括代码的可读性、可修改性、可测试性、可扩展性和 可重构性等方面。
(5)安全性需求 本系统是用于医学影像教学领域,对于系统保存地用户数据以及模型数据, 普通用户应该不具有访问地权限,用于确保系统能够保护用户数据和系统资源 的安全性;另外,用户只有成功登录系统后才能进行使用。
3.2系统总体设计
3.2.1系统总体架构设计
系统分层设计是软件开发中较为常用的一种设计模式,其目的是为了将系
统按照不同的层进行分离,每个层具有独立的功能,并向上层提供服务。本系统 按照分层设计的模式,自底向上分为基础层、数据层、框架层、业务层、视图层, 系统架构设计如图 3-6 所示。
视图层 系统交互界面 模型可视化界面
图 3-6 系统架构图
(1)基础层:基础层是本系统框架的最底层,主要提供软件系统的底层硬 件平台支持,其中全息投影机柜是模型可视化显示的投影装置, RGB 相机是用 来采集用户手势图像的设备。
(2)数据层:数据层是用来持久化系统中的数据,简单来说,就是存储系 统用户信息、模型信息等,本系统采用MySQL关系型数据库。
(3)框架层:框架层是一个中间层,主要提供深度学习框架和GUI应用程 序框架支持,这是本实现系统所依赖的重要技术框架。
(4)业务层:业务层是用来处理系统的业务逻辑的,是本系统的核心层, 主要提供认证管理、数据管理、手势识别、模型处理等服务。
(5)视图层:视图层是用于对系统数据进行可视化展示,方便用户进行管 理系统数据和操作系统功能。其中系统界面主要包括登录界面、用户管理界面、 模型管理界面以及模型可视化界面等。其中模型可视化界面主要是对渲染后的 模型,通过窗口界面的形式进行展示。
3.2.2系统总体功能设计
根据系统功能需求分析,系统的主要功能模块包括认证管理模块、数据管理 模块、手势识别模块和模型处理模块。认证管理模块包括登录认证和权限认证; 数据管理模块包括用户信息管理和模型数据管理;手势识别模块包括手势采集 和手势处理;模型处理模块包括模型初始化、模型渲染、模型显示和模型变换。 系统功能模块设计如图 3-7 所示。
3.3系统详细设计
3.3.1硬件平台详细设计
通过对全息投影技术原理的研究,本小节设计出了系统所用到的投影装置 示意图,如图 3-8 所示。装置主要由玻璃板、显示屏、主机、相机、机柜等组成。
全息投影玻璃板位于显示屏正下方,两者水平夹角为 45°;显示屏正面朝下, 位于机柜的顶端;主机位于柜体底部,并与显示器通过 HDMI 接口进行连接, 用于传输3D影像数据。
用户位于相机的视野范围内,可以进行观看投影以及手势控制模型变换。如 图所示,用户位于机柜前方观看全息玻璃板上呈现的心脏影像模型,在相机视野 范围内通过手势控制,对模型进行控制变换操作。
图 3-8 全息投影装置示意图
3.3.2 功能模块详细设计
本系统是全息投影医学影像示教系统,用户可以登录系统,然后选择医学影
像模型,最后通过手势进行控制模型变换,系统工作流程如图 3-9 所示。
图 3-9 系统流程图
(1)认证管理模块设计 系统的使用者角色分为管理员(老师)和普通用户(学生),不同的角色对 系统拥有不同的访问权限,此模块用来对用户进行登录认证、权限认证等操作。 用户只有输出正确的用户名和密码,才能成功登录系统。管理员可以进入后台管 理数据,普通用户只能选择模型、启动模型等。认证管理模块流程如图 3-10 所 示。
图 3-10 认证管理流程图
(2)数据管理模块设计
数据管理模块主要对用户信息和模型数据进行管理,用户信息管理模块是 指管理员可以添加普通用户、查询普通用户信息、删除普通用户以及编辑普通用 户信息等。模型数据管理模块指管理员可以上传模型文件、添加模型文件描述信 息、修改模型文件描述信息以及删除模型文件等。数据管理流程如图 3-11 所示。
图 3-11 数据管理流程图
(3)手势识别模块设计
用户位于相机视野范围内,启动相机采集用户手势图像,最后对用户的手势
图像进行分类识别处理,输出最终的手势类别。手势识别流程如图 3-12 所示。
图 3-12 手势识别流程图
(4)模型处理模块设计
OBJ 格式模型文件,是一种存储在文本格式文件的三维模型,它可以与附带 的“.mtl”格式的文件共同使用,能够描述对象表面的细节,使其完美的表现出 来[23]。
模型处理模块主要对 OBJ 模型进行加载,然后对成功加载后的模型进行渲 染、显示,如果用户通过手势控制模型变换,模型会立即执行变换操作。模型处
理流程如图3-13所示。
图 3-13 模型处理流程图
图3-13描述的是对OBJ模型处理流程,其中模型初始化环节和模型渲染环 节至关重要。模型初始化主要作用是为模型渲染环节进行模型数据准备,模型渲 染就是对模型数据进行可视化。这两个环节具体步骤主要包括以下四个部分,具 体工作流程如图 3-14 所示。
1)OBJ文本解析模块:解析OBJ文本文件中的顶点坐标、法线坐标、纹理 坐标、颜色信息等,分别保存到数据缓冲区。
2)MTL文本解析模块:解析OBJ模型附带的“.mtl”格式的材质文件,将 解析后的材质信息保存到数据字典中。
3) 数据处理模块:OBJ模型主要由面组成的,“.mtl”材质信息保存的是模 型的贴图信息,其作用是给模型表面进行贴图,使模型表面更加真实,此模块的 作用就是将材质信息和模型面信息进行贴图处理,用于初始化模型数据,最后形 成多个Mesh (网格对象),每个Mesh代表一个可绘制实体。
4) 模型渲染模块:其作用主要是将初始化的模型数据,输入到自定义着色 器进行处理,最后将多个Mesh进行渲染和显示。
图 3-14 模型初始及渲染流程图
3.4数据库设计
在数据库的设计阶段,本文使用 E-R 图的方法明确实体和属性之间的关系。 本系统主要包括两个实体对象,分别是用户和模型,用户和模型之间存在多对多 的关系。系统 E-R 图设计如图3-15所示。
根据 E-R 图进行了表结构的设计,系统共有三个表,一个为用户表,一个为 模型表,一个为关系表。用户表用于保存系统用户信息,模型表用于保存模型描 述信息,模型文件保存在本地磁盘,通过描述信息中的id字段进行映射。
表3-1用户表字段包括编号ID、用户名、密码、昵称、注册日期和角色。
表 3-1 用户表
字段 字段类型 长度 约束条件 说明
id int 10 主键非空 用户编号
username varchar 50 非空 用户名
password varchar 50 非空 密码
nickname varchar 10 非空 昵称
createdate varchar 10 非空 注册时间
role int 1 非空 角色
表3-2模型表字段包括编号、名称、创建时间、备注和详情,id可以唯一映
射 OBJ 模型文件。 表 3-2 模型表
字段 字段类型 长度 约束条件 说明
id int 10 主键非空 模型编号
name varchar 50 非空 模型名称
createdate varchar 10 非空 创建时间
note varchar 50 非空 备注
detail varchar 255 非空 详情
表 3-3 操作表字段包括操作记录编号、用户编号、模型编号、模型启动时间 和操作结束时间。
表 3-3 操作表
字段 字段类型 长度 约束条件 说明
id int 10 主键非空 操作记录编号
user_id int 10 外键非空 用户 id
model_id int 10 外键非空 模型 id
startdate varchar 10 非空 模型启动时间
enddate varchar 50 非空 操作结束时间
第4章 系统关键技术
本章节主要对实现本系统所用到的手势识别技术进行介绍,主要详细介绍 本文改进的手势识别方法,以及对手势识别方法中的关键模块进行深入研究与 详细阐述。最后通过做消融实验和基准实验进行验证,本文提出的手势识别方法 的有效性。
4.1手势识别技术
4.1.1改进的手势识别方法
本系统应用的场景是室内医学影像教学场合,当室内环境背景复杂、光照因 素不稳定、手势肤色存在明显差异时,导致仅依靠RGB图像来提取纹理、颜色 和轮廓等卷积特征进行手势识别的传统方法,会造成识别不准确的情况[24],从而 降低手势识别系统的稳定性。
针对上述问题,本文提出了一种融合卷积特征和关键点特征的手势识别方 法,既考虑了手势的全局特征,也考虑了手势的局部特征。通过本文提出的分类 器模块和自定义的“匹配器”模块,分别提取卷积特征和关键点特征进行手势识 别,最后将两个模块输出的类别概率分布进行融合处理,作为最后的手势识别结 果,从而弥补只通过提取卷积特征进行手势识别的不足之处。
为了实现一个高可用的手势识别系统,本文提出了一个基于 MediaPipe
Hands©]融合卷积特征和关键点特征的手势识别方法。如图4-1所示,本文提出 的手势识别方法的主要思想如下:
首先,基于MediaPipe Hands获取手部ROI以及手部关键点,分别输入到分 类器和自定义的“匹配器”模块;然后,分类器提取卷积特征进行手势识别,匹 配器提取关键点特征进行手势判定,分别输出手势识别的概率分布结果,记作 socrel和score2;最后,将输出的两个手势识别概率分布结果进行加权融合,作 为最后手势识别的结果。
伪代码如下所示:
Algorithm 4-1 改进的手势识别算法 GestureRecognizer
Input: rgb_ iamge //输入 RGB 图像
Output: score[p1...pnc] //输出手势类别分布概率,类别数量为 nc
1. //获取手部 ROI 和关键点
2. hand_roi,key_points <- HandDetector(rgb_iamge)
3. //如果没有检测到手势
4. if hand_roi is null or key_points is null then
5. return null
6. else
7. //手部 ROI 输入到分类器进行识别
8. score1 <- classifier(hands_roi)
9. //关键点输入到匹配器进行识别
10. score2 <- matcher(key_points)
11. //加权融合, w 为权值
12. score <- w*score1 + (1-w)*score2
13. end if
14. //返回融合后的手势类别概率分布结果
15. return score
4.1.2匹配器模块
“匹配器”是自定义的一个模块,是本文提出的手势识别方法中的一个关键 模块,其作用是提取手势关键点特征进行手势判定,如图4-2所示。主要思想是: 基于手部21关键点,根据手指弯曲状态以及指尖距离状态规则构建特征矩阵M, 然后计算矩阵M分别与矩阵Gi (i=1,2,..,nc)的海明距离(汉明距离)再取反, 最后进行 softmax 操作,输出手势识别概率分布。其中矩阵 M 表示对当前手势 关键点进行构建的关键点特征矩阵,矩阵Gi表示人工预先构建的手势关键点特 征矩阵,“i”表示手势类别编号,手势类别数量为nc。
对于关键点特征矩阵的构建方法,本文提出了一种基于“两状态”的编码方 式。这里所提出的“两状态”有两层含义:其一,指手指弯曲和指尖距离两种状 态;其二,指手指弯曲状态和指尖距离状态各自包含两种状态,分别是手指弯曲
编码为 0)和手指伸直(编码为 1)两种状态,指尖靠近(编码为 1)和指尖
远离(编码为0)两种状态。例如图4-3表示的手势G5关键点特征矩阵。
图 4-3 关键点特征矩阵示意图
接下来,将详细介绍特征矩阵构建过程,包括关键点的获取以及手指的弯曲 状态和指尖距离状态的判定方法。主要分为两个过程:其一,关键点获取以及预 处理;其二,手指弯曲状态和指尖距离状态判定。最后,阐述一下如何构建关键 点特征矩阵并基于特征矩阵进行计算手势识别概率分布。
(1)关键点获取以及预处理
关键点的获取是基于MediaPipe Hands,它是谷歌推出的一个高保真的手和 手指跟踪解决方案。MediaPipe Hands主要有两个模型组成:palm detector和hand landmark model,其中palm detector用于对完整的输入图像进行操作,检测出手 掌的边界框的位置, hand landmark model 用于检测出手部21 个关键点的位置。 手部 21 个关键点分布如图 4-4 所示。
图 4-4 手部关键点分布示意图
MediaPipe Hands获取的手部关键点坐标(x,y)是针对一张完整的图像进行输 出的,是在像素坐标系获取的关键点,对于640*480分辨率的图像来说,x取值 范围为[0,640], y 取值范围为[0,480]。为了消除手势和相机之间距离远近造成的 影响(便于后文确定阈值),所以对获取的关键点进行了归一化预处理,其坐标 点的值是相对手部R0I像素坐标系进行归一化后的值,其范围为[0,1]。
(2)手指弯曲状态判定
手指的弯曲状态分为弯曲和伸直两种状态,分别用0和1表示,通过二进制 进行编码,最后构成一个由5 个元素组成的手指弯曲状态特征向量。手指弯曲状 态的判断方法是根据指尖关键点(*_TIP)、指掌关键点(*_MCP)以及手腕关 键点(WRIST)进行判断的。判断方法是计算指掌关键点,到指尖关键点和手腕 关键点所成直线的距离(点到直线的距离),是否小于某个阈值(%)。例如, 判断食指是否弯曲,则要判断5号关键点到8号和0号关键点所成直线的距离 是否小于某个阈值。点到直线距离计算方法如公式4.1所示,手指i弯曲状态判 定方法如公式4.2所示。
IA * x0 + B * y0 + Cl
^A2 + B2 + e
其中 /亍2 -yl,B=x1 - x2,C=x2*y1 - x1*y2, £ 值为 1.0E-8 为了避免分母 为零,坐标(xO,y0)、(x1,y1)、(x2,y2)分别代表指掌关键点、指尖关键点和手腕关 键点。
(1, if di < t1
{0, if di > t1
其中 di 表示计算第 i 根手指指掌关键点到指尖关键点和手腕关键点所成直
线的距离,G为阈值;如果距离小于阈值则判定为伸直状态,否则为弯曲状态。 ( 3)指尖距离状态判定
指尖的距离状态分为靠近和远离两种状态,分别用1和0表示。需要计算每 一个手指尖(_TIP)与其他四指手指尖(_TIP)的距离状态,最后构成由20个 元素组成的指尖距离状态特征矩阵。判断方法是计算两个关键点的欧式距离是 否小于某个阈值(匕2),如果小于阈值则判定为靠近,否则为远离。欧式距离计算 方法如公式4.3所示,指尖i和丿距离状态判定方法如公式4.4所示。
dij((x1,y1), (x2,y2)) = J(x1 — x2)2 + (yl — y2)2 (4.3)
其中坐标(x1y1 )和^2丿2)表示两个手指指尖关键点的坐标,编号为i和jo
=(1, if dij < t2
U = {0, if dij > t2
其中dij表示编号为i和j两个指尖关键点的欧式距离,$为阈值;如果距离 小于阈值则判定为靠近状态,否则判定为远离状态。
(4)特征矩阵M构建方法
手势关键点特征矩阵 M 是根据手指弯曲状态和指尖距离状态进行构建而 成。根据公式4.2可以计算出每根手指弯曲状态,从而构成手指弯曲状态特征向 量记作curvate_status,元素长度为5,排列顺序分别为大拇指、食指、中指、无 名指和小拇指。根据公式4.4可以计算出指尖距离状态,从而构建出指尖距离状 态特征矩阵记作distance_status,大小为5行4列,每一行代表一根手指指尖和 其他四根手指指尖距离状态向量。构建特征矩阵M的具体方法如下所示。
伪代码如下所示:
Algorithm 4-2 构建特征矩阵 M 方法 GetKeyPointsFeatureMatrix
Input: key_points //输入关键点,大小为21x2
Output: M[0...4][0...4] 〃输出关键点特征矩阵M5x5
1.//1.手指弯曲状态:判断五根手指是否伸直或者弯曲
2.config1 = [ [0, 4, 2, 0.10],
3.[0, 8, 5, 0.25],
4.[0, 12, 9, 0.20],
5.[0, 16, 13, 0.20],
6.[0, 20, 17, 0.15] ]
7.curvate_status[0...4] 〃手指弯曲状态向量,长度为5
8.for i = 0 to 4 do
9.wrist, _tip, _mcp, t1 = config1[i][0], config1[i][1], config1[i][2], config1[i][3]
10.//判断手指弯曲状态
11.status <- judge_finger_is_straight(key_points, wrist, _tip, _mcp, t1)
12.curvature_status[i] = status
13.//2.指尖距离状态:判断每一根手指指尖和其他四指指尖距离状态
14.config2 = [ [4, 8, 12, 16, 20, 0.25],
15.[8, 4, 12, 16, 20, 0.25],
16.[12, 4, 8, 1[12,04, 8, 16, 20, 0.25],
17.[16, 4, 8, 12, 20, 0.25],
18.[20, 4, 8, 12, 16, 0.25] ]
19.distance_status[0...4][0...3] //指尖距离状态向量,大小为 5x4
20.end for
21.for i= 0 to 4 do
22.current_tip, t2= config2[i][0], config2[i][5]
23.for j = 1 to 4 do
24.other_tip = config2[i][j]
25.//判断指尖距离
26.status <- judge_finger_is_closed(key_points, current_tip, other_tip, t2)
27.distance_status[i][j] = status
28.end for
29.end for
30.〃3.构建关键点特征矩阵M,大小为5x5
31.M <- contact(curvature_status, distance_status)
32.return M
(5)手势类别概率分布计算
特征矩阵 M 是通过自定义的“匹配器”,提取的手势关键点特征进行构建 而成;特征矩阵 Gi 是人工预先构建的特定手势的关键点特征矩阵,然后计算矩 阵M分别和矩阵Gi的海明距离再取反,其结果组成一个列向量记作a,再进行 softmax 后输出类别概率分布记作 score2。
海明距离定义:两个字码中不同位值的数目称为海明距离。海明距离公式如 公式 4.5 所示。
m=4
n=4
h(M,Gi)=》M[i][j]㊉ G[i][j] (4.5)
1=0 j=0
其中 m 代表矩阵的行数, n 代表矩阵的列数, M 表示当前提取的手势关键 点特征矩阵,Gi表示人工预设手势关键点特征矩阵,㊉表示异或位运算。
向量a=[-h(MG1),-h(M,G2),…,-h(M,Gnc)],其中nc表示类别数量,然后对a 进行 softmax 归一化操作,计算得到类别概率分布结果记作 score2。
4.1.3分类器模块
分类器是本文提出的手势识别方法中的第二个关键模块,本小节主要研究 如何实现一个准确高效的手部 ROI 分类器,接下来主要从模型的选择、数据集 的制作、模型的训练以及模型的测试等内容进行研究。
( 1 )模型的选择
分类器主要是采用 CNN 模型(卷积神经网络模型),训练一个手势分类器 用于对手部 ROI 进行分类。由于系统人机交互需要实时性,需要同时考虑手势 识别的精度和速度两个方面,在对多个CNN模型的速度和精度进行研究分析后, 最终选择采用在识别精度和速度都具有良好表现的EfficientNetV2[26]卷积神经网 络模型。
对于神经网络模型的研究,之前关于提升模型性能的一些论文中,主要解决 方法如下:通过增加网络的宽度(卷积核的个数)来提升网络的性能,如图 4-5 所示;通过增加网络的深度(模型的层数)来提高性能,如图 4-6 所示;通过增 加输入网络图像大小(图像的分辨率)来提升网络的性能,如图 4-7 所示。
图 4-5 宽度缩放示意图
图 4-6 深度缩放示意图
图 4-7 分辨率缩放示意图
EfficientNetVU27]会同时增加网络的宽度、深度以及输入网络的分辨率来提 升网络的性能如图4-8所示。EfficientNetVl团队系统地研究了,模型如何在网 络的深度、宽度和分辨率上进行缩放,为了网络可以带来更好的性能,提出了一 种新的缩放方法即effective compound coefficient,使用简单而高效的复合系数统 一来对网络模型的深度、宽度、分辨率的所有维度进行同时缩放。
另外,为了更进一步提升网络的性能,使用NAS (神经架构搜索)技术来 设计一个新的基线网络,称为EfficientNet-BO;通过对其使用上述缩放方法进行 缩放,来获得一系列新的网络模型,称为高效率网络EfficientNets (即B0-B7)。
wider ……」
deeper
r. higher » resolution
谷歌于2021年4月提出了改进版EfficientNetV2,这是一种新的卷积神经 网络结构,相较于之前的模型来说,它具有更快的训练速度和更好的参数效率。 为了开发这些模型,研究人员将训练感知NAS (神经网络架构搜索)和缩放相 结合,共同优化训练速度和参数效率。这些模型是从搜索空间中搜索得来的,该 搜索空间包含了新的操作,如 Fused MBConv。
根据网络的深度、 宽度、 图像分辨率的不同, EfficientNetV2 提供 EfficientNetV2-S、 EfficientNetV2-M、 EfficientNetV2-L 三个网络架构,本文采用 EfficientNetV2-S 模型为分类器的主干网络,在运行速度和识别精度方面都较优。
表4-1是在文献[26]中选取的部分实验结果,是在ImageNet ILSVRC2012数 据集上是使用1.28M张图像从头开始训练的结果,模型推理时间是在V100 GPU FP16 且 bach size 设置为 16 进行计算的推理时间。
表 4-1 EfficientNetV2 在 ImageNet 数据集上的测试结果
Model Top-1 ACC. Params FLOPs Infer-time(ms)
EfficientNetV2-S 83.9% 22M 8.8B 24
EfficientNetV2-M 85.1% 54M 24B 57
Efficie ntNetV2-L 85.7% 120M 53B 98
从表 4-1 分析可知, EfficientNetV2-S 与 EfficientNetV2-L 和 EfficientNetV2- M 模型相比,在精度相差不是很大的情况下,模型的参数量最少,模型推理速度 最快,在精度和速度都有良好的表现。
(2)数据集的制作
第一步,采集手势 RGB 图像:主要在实验室的不同位置(背景不同、光照 不同、距离不同)使用2个RGB相机,分别采集5个人的手势图像,图像分辨 率为640*480,共6个类别(手掌、拳头、向上、向下、左右、OK),每个人每 个手势类别分别采集约1000张(每个相机采集约500张) ,每个类别共采集约 5000 张。
第二步,标注和裁剪手部ROI:将第一步采集的数据集,使用Labelme工具 进行标注出手部ROI,然后进行裁剪并分别保存到每一类;另外,在标注手势的 时候,上下左右四个边框同时向外扩展约0-20个像素,保证手部ROI图像的完 整性同时添加复杂的背景,用于丰富数据集。
第三步,数据集划分:将第二步裁剪的手势ROI数据集,按照6:2:2比例进
行随机选择,依次划分为训练集、验证集和测试集。训练集中的每一个手势图像
数量约为3000张,验证集和测试集每一个手势图像数量约为1000张。最后自定
(3)模型的训练
模型训练时优化器使用Adam,学习率learn_rate设置为0.01,批量大小bach size设置为8 (由于GPU显现为6G,无法设置太大),迭代次数设置为150, 模型初始化方法为使用预训练参数进行初始化。
模型训练过程使用tensorboardX进行绘制验证集上的Accuracy (准确率)曲 线和Loss(损失函数)曲线,分别如图4-10和图4-11所示。在训练模型的过程 中保存当前时刻验证集准确率最高的权重结果,以及每10次迭代之后也保存模 型的权重以及记录验证集的准确率。
图 4-11 Loss 曲线图
通过曲线图4-10分析,模型训练过程是向好的方向进行收敛的,验证集上 的准确率在不断的提高;图4-11也表明损失函数值也在不断下降,收敛于0.02 左右。
(4)模型的测试:模型训练停止后,选择在验证集准确率最高的模型进行 测试分析,测试结果主要展示每个类别的识别结果,如图 4-12所示。
单类别识别精度分析(%)
图 4-12 单类别识别精度分析
通过图 4-12 进行分析可知,每个手势类别识别率最低为 86.1%,最高可达 98.4%,平均准确率约为 91.6%,达到预期要求。
最后,在分类器训练结束后,本文又做了一个附加实验,主要是获取每个类 别识别的类激活图。类激活图(Class Activation Map,CAM)是一种可视化神经 网络中特征图的方法,它能够从卷积神经网络中提取出对分类结果影响最大的 区域,以可视化的方式解释了 CNN 模型是如何完成决策的。附加实验的主要目 的是验证训练的分类器,在自定义的手势数据集,是否真的提取到手势关键位置 上的特征,从而也能说明手势数据集的制作是否符合实际开发要求。
本文使用的方法是 Grad-CAM[28] (Gradient-weighted Class Activation Map- ping),它是一种用于可视化卷积神经网络(CNN)中哪些部分对分类结果有贡献 的方法。Grad-CAM的基本思想是在CNN的最后一个卷积层和全局池化层之间 插入一个全局平均池化层,以获取每个特征图的权重。然后,将这些权重与梯度 相乘,以获取每个特征图对分类结果的贡献度。最终,将这些贡献度乘以相应特 征图的值,以生成一个代表哪些部分对分类结果有贡献的热力图。
Grad-CAM的主要优点是它可以在不修改CNN结构的情况下进行可视化, 并且可以适用于各种CNN模型,已经被广泛应用于图像分类、目标检测和图像 分割等任务中,为深度学习模型提供了重要的可解释性和可视化工具。图 4-13
是本文在自定义数据集训练过程进行获取的类激活图。
图 4-13 类激活图
通过类激活图进行可视化解释模型在手势识别过程中,对于每个类别手势 的识别到底哪些特征起到主要作用,以便在用户使用的过程,可以多多关注某些 手势的重要特征信息,从而提高手势识别的准确率。如图 4-13 所示,在手势分 类的时候,分类器确实是对每个手势都提取了一些关键的手势特征,例如对于
“OK ”这种手势来说,模型可能更加关注的是用户手势食指和大拇指所构成的 “O”字型,以及另外三根手指并排竖起的状态。
4.1.4融合方法
本文提出的手势识别方法主要由两个关键模块构成,分别是分类器和匹配 器模块,两个模块并行处理,互相独立。分类器输入的是手部ROI,输出的是手 势分类概率分布scorel;匹配器输入的手部关键点,输出的是手势类别概率分布 score2;最后,通过一个简单的加权融合进行处理,权值w是一个超参数。如图 4-l4 所示:将两个概率分布向量,对应位置的每一个元素进行加权求和,作为最 后的手势识别概率分布结果,最后输出概率最大的手势类别作为最后的识别结 果。
图 4-14 融合方法处理示意图
4.2实验
为了验证本文提出的融合方法的有效性,将在两个公共数据集(Microsoft Ki- nect&Leap Motion 数据集[29,30]和 Creative Senz3D 数据集[31,32])做基准实验和消 融实验。
对于基准实验环节,在两个公共静态手势数据集分别进行实验验证,并与一 些现有的方法在此数据集上进行比较。
对于消融实验只在第一个数据集进行实验,实验目的主要是为了验证本论 文提出的手势识别方法,或者说是本论文提出的“匹配器”模块对于其他经典的 CNN 模型(例如 EfficientNetV2、VGG16[33]、GhostNet[34])也可适用。
4.2.1数据集介绍
Microsoft Kinect&Leap Motion 数据集包含 1400 张 1280*960 大小的 RGB 图 像,总共分为 10 个手势类别。此数据集的制作是由 14 个不同的人,分别做出 10 种不同的手势,并且每一类别的手势采集 10张图像,总共1400 个数据样本。 此数据集人数较多手势差异性较大,如图 4-15 所示。
图 4-15 Kinect & Leap Motion 数据集 RGB 图像样例图
Creative Senz3D 手势数据集是由 Creative 公司基于 Senz3D 深度摄像头技术 制作的一款手势数据集。该数据集总共有1320 个样本,图像分辨率为 640*480, 分为 11 个类别的手势。其制作包含 4 个不同的人所做的手势,每个人都做出 11 个不同类型的手势,并且每个人每个类型的手势都重复做了 30次。此数据集人 数较少且均为男性,手势差异性较小,如图 4-16 所示。
图 4-16 Creative Senz3D 数据集 RGB 图像样例图
4.2.2实验结果及分析
(1)评价指标
实验结果的评价指标是手势识别的平均准确率(Accuracy),计算方法如公 式 4.6 所示。
Accuracy = (TP+TN) / (TP+FP+TN+FN) (4.6)
其中TP、FP、TN FN含义如下:TP:真实结果为正例,预测结果为正例; FP:真实结果为负例,预测结果为正例;TN真实结果为负例,预测结果为负 例;FN:真实结果为正例,预测结果为负例。
( 2)基准实验
表 4-2 和表 4-3 所展示的是本文提出的手势识别方法与当前一些主流的方法 进行对比,分别展示了在两个公共数据集上的实验结果分析,
表 4-2 不同算法 Microsoft Kinect & Leap Motion 数据集
上的测试结果
方法 平均准确率 %
3LM+2K[29] 91.3
4LM+4K[30] 96.5
SFPS[35] 95.0
SP-EMD[36] 95.8
CSG-EMD[37] 96.6
3D Shape Context[38] 96.8
本文方法 97.1
表 4-3 不同算法在 Creative Senz3D 数据集 上的测试结果
方法 平均准确率 %
Memo et al[31] 90.0
SFPS[35] 97.4
SP-EMD[37] 96.6
Unsupervised Refinable Net[39] 94.0
Gesture GAN[40] 96.0
CSG-EMD[41] 97.4
本文方法 97.7
通过表4-1和表4-2分析可知,本文提出的手势识别方法与目前的一些主流 方法相比,在 Microsoft Kinect& Leap Motion 数据集上准确率高达 97.1%,在 Creative Senz3D 数据集上平均准确率高达 97.7%,与 Memo et al 方法相比提高 了 7.7 个百分点。但是,也存在一些方法与本文提出的方法在手势识别精度上相 差不是很大。总体来说,本文提出的手势识别方法确实有一定的优势。
(3)消融实验
表4-4所展示的是本文所做的消融实验的结果,通过在多个CNN模型上分 别融合本文自定义的“匹配器”,以及单独使用分类器进行手势识别实验验证。
表 4-4 消融实验结果
方法/模型 EfficientNetV2 VGG16 GhostNet
未融合(分类器) 89.6% 81.0% 75.0%
融合后(分类器+匹配器) 97.1% (+7.5) 94.6% (+13.6) 93.9% (+18.9)
通过消融实验结果表4-3分析可知,传统的只通过CNN提取卷积特征进行 手势识别的方法与本文提出的方法相比,本文提出的方法更加有效,可以弥补传 统方法的不足之处。
具体分析可知,在对 EfficientNetV2 模型进行融合自定义的“匹配器”后, 手势识别精度上升7.5%;在对VGG16融合后,精度上升13.6%;在对GhostNet 进行融合后,精度上升 18.9%。这说明,尤其对于本身表现较差的 CNN 模型来 说,通过融合本文提出的匹配器,使手势识别精度在一定程度上有了很大的提升 空间。
4.3本章小结
本章主要研究了开发系统所使用的手势识别关键技术。在对于手势识别研 究过程中,本论文提出了一种改进的手势识别方法,并且在两个公共数据集上进 行了基准对比实验,与目前存在的一些主流方法进行了对比分析,以此证明本文 提出改进的手势识别方法有效性。另外,通过消融对比实验进行验证,本文提出 的自定义“匹配器”模块不仅适用于EfficientNetV2网络,而且对于其他CNN模 型也可适用。
第5章 系统实现与测试
5.1系统开发技术及运行环境
本系统是一款基于 PyQt 的 Windows 桌面应用程序,使用的开发语言为 Python,采用C/S设计架构,系统数据库为MySQL数据库,开发工具为PyCharm, 对于开发系统中所用到深度学习框架,本系统使用的是GPU版的PyTorch。接 下来简要介绍一下 PyQt 和 PyTorch。
Qt是一个跨平台的C++应用程序开发框架,可以用于开发图形用户界面 (GUI)应用程序、命令行工具等。PyQt将Qt的功能与Python语言的易用性相 结合,方便Python开发者开发GUI应用程序。PyQt提供了大量的GUI组件, 如按钮、文本框、下拉框等,也支持绘图、动画、多媒体等功能。
总之,PyQt是一个功能强大、易用性高、跨平台的GUI框架,是Python开 发 GUI 应用程序的优秀选择之一。
PyTorch是一个科学计算包,其基于Python语言开发,主要用于深度学习和 神经网络的研究。PyTorch是Facebook AI Research实验室(FAIR)开源的机器 学习库。PyTorch的设计目标是实现灵活性和速度的最佳结合,同时提供强大的 GPU 加速和动态计算图的支持。 PyTorch 提供了强大的张量计算和自动求导功 能,可以轻松地实现多种神经网络算法。与其他深度学习框架不同,PyTorch采 用动态计算图的方式,在运行时才构建计算图,这使得模型的构建和调试更加简 单,同时带来了更好的灵活性和效率。 PyTorch 还提供了丰富的工具和库,如 torchvision、 torchtext 等,可以方便地进行图像、文本等数据处理。
总之,PyTorch是一个功能强大、易于使用的深度学习框架,在学术界和工 业界都得到了广泛的应用。它的开源性和活跃的社区也为用户提供了更好的支 持和发展空间。
PyCharm是一款由JetBrains公司开发的Python集成开发环境(IDE),旨 在提供完整的开发环境和工具,使Python开发者能够更加高效地编写、调试和 管理 Python 代码。 PyCharm 具有以下优点: PyCharm 可以根据代码上下文自动 补全代码,同时可以检查代码语法错误并进行提示;PyCharm内置了强大的调试 器,可以帮助开发者查找和修复代码中的错误; PyCharm 支持多种代码重构功 能,如变量重命名、函数提取、代码移动等,可以帮助开发者更好地管理和优化 代码; PyCharm 内置了多种数据库支持,可以方便地连接和管理数据库; PyCharm 可以智能识别代码中的变量、函数和类,并提供相应的代码提示和补全功能。
总的来说, PyCharm 是一款功能强大、易于使用、集成度高的 Python 开发 工具,可以帮助开发者更高效地编写、调试和管理Python代码,是Python开发 者必备的工具之一。
系统的实现离不开软件技术的需要,也离不开硬件配置的支持,得心应手的 开发工具也必不可少,本系统开发所需要的软件和硬件以及开发工具配置具体 如下:
(1)操作系统:Window10
(2)数据库: MySQL5.7
(3)深度学习框架: PyTorch1.7.1 + cuda10.1
(4)图形化应用程序框架: PyQt5.1.2
( 5 )运行内存: 16 GB
( 6) CPU: AMD Ryzen 7 4800H
( 7) GPU: RTX 2060 6GB 显存
(8)开发工具: PyCharm 2021
( 9)投影装置: 180 度全息投影机柜
5.2系统实现
5.2.1硬件平台实现
根据装置的示意图,本文对装置所用到的各个组件进行系统的研究,最终投 影设备选择的是一个亮度比较高的OLED显示屏,尺寸为19寸、长宽比为4:3、 分辨率为1280*800、亮度为350d/m2、HDMI长度为1.5m;投影介质选择的是一 块 47cm*47cm*0.5cm 厚度的钢化玻璃板;相机选择的是帧率为 30FPS 的普通 RGB相机,分辨率为1080P,通过USB3.0接口与主机相连,线长为2.5m;机柜 的外部框架长宽高分别为0.5m、0.5m、1.5m并且可以上下分离,附带脚轮。投
影装置的各个模块可以自行组装,投影装置实物效果如图 5-1 所示。
图 5-1 全息投影装置实物图
5.2.2功能模块实现
本章节主要对第 3 章设计的系统主要功能模块进行实现,通过图形化界面 的形式进行系统的展示,并对系统的主要功能模块进行操作演示。
( 1)认证管理模块实现 系统认证模块主要是指用户只有在输入正确用户名和密码后,用户才可以 登录系统进行操作,并且不同用户角色登录系统后拥有不同的数据访问权限。登 录界面如图 5-2 所示:
图 5-2 登录界面
( 2)数据管理模块实现 数据管理模块主要功能是管理员可以对用户信息和模型数据管理。用户信 息管理具体来说是指管理员可添加用户、删除用户、查看用户和编辑用户信息。 用户信息管理界面如图5-3所示:
E后台管理 - □ x
用户管理 模型管理
添加用户 11 iSSp | 提交修改
图 5-3 用户信息管理界面
模型数据管理主要是指管理员登录系统后,可以上传模型文件、删除模型文 件、编辑模型文件和查询模型文件。上传的文件格式为ZIP压缩文件,文件夹里 包含“.obj”格式的模型文件和“.mtl”格式的材质文件以及模型所需要的材质文 件,例如贴图。上传的压缩文件会保存到磁盘特定位置,数据库模型表中存储的 是模型的描述信息,包括模型id,用于映射本地存储的模型文件。模型数据管理 界面如图 5-4 所示:
图 5-4 模型数据管理界面
(3)手势识别模块实现
采集相机视野范围内的用户手势图像,然后将采集的用户手势图像输入到 手势处理模块进行处理,输出手势分类结果,最后通过将不同的静态手势进行组 合,再形成复杂的手势控制指令,对模型进行控制变换。
手势控制指令大致分为四个类型的变换指令,分别是平移、缩放、旋转以及 其他等控制指令。通过这些基本的模型变换指令,可以通过多个角度、多个方位、 多个层次对模型进行观摩。具体手势指令示意图如图 5-5 所示。
图 5-5 手势指令示意图
( 4)模型处理模块实现 模型处理模块主要是先将 OBJ 模型进行可视化,然后通过用户手势进行变 换。本系统主要是基于OpenGL开发一个OBJ模型可视化软件,用于渲染与显 示模型。模型可视化效果如图 5-6 所示。
图 5-6 OBJ 模型可视化效果图
模型可视化以后,用户可以对模型进行变换控制。接下来对模型的变换功能 进行实现,如图 5-7 表示用户双手呈手掌形状,同时向外拉伸,模型慢慢放大; 图 5-8 表示用户左手呈手掌形状,同时右手食指向左指向、模型向左慢慢旋转; 图 5-9 表示用户食指向上指向,模型向上慢慢平移;图 5-10 表示用户食指和中 指靠近时移动荧光棒,分开时确认点击、标记位置,然后标记光点位置的周围出 现银色光圈,对模型进行内窥变换;图 5-11 表示模型重置,还原初始化状态。
图 5-7 模型放大示意图
图 5-8 模型左旋示意图
图 5-9 向上平移示意图
图 5-10 模型内窥示意图
图 5-11 模型重置示意图
5.3系统测试
5.3.1系统测试目的
系统测试的目的是为了验证系统是否满足用户需求,以及系统是否符合预 期的质量标准和性能要求[42]。系统测试可以发现并报告已发现的缺陷,帮助开发 人员和测试人员改进和修复系统中的问题。同时,系统测试还可以提供对系统的 可靠性、可用性、可维护性和安全性等方面的评估。通过系统测试,可以提高系 统的质量和稳定性,确保系统能够正常地运行,并满足用户的需求和期望。
5.3.2系统功能测试
系统功能测试是一种软件测试方法,其目标是验证系统是否能够按照规格 说明书中所定义的功能要求进行正常操作[43]。系统功能测试通常在软件开发的 后期进行,旨在确保软件的功能完整性、正确性和稳定性,从而保证系统的功能 符合用户要求。本小节的功能测试是对系统的主要模块做了测试,测试内容以及 结果如下表所示。
表 5-1 认证管理模块测试用例
测试序号 测试类别 测试内容 预期结果 测试结果
1 登录认证功能 用户名和密码为空 提示用户名和密码
能为空 正常
2 登录认证功能 用户名正确 密码正确 登录成功 正常
3 登录认证功能 用户名错误 密码错误 提示用户名错误 正常
4 登录认证功能 用户名正确 密码错误 提示密码错误 正常
5 权限认证功能 管理员登录 可以对用户和模型 正常
6 权限认证功能 普通用户登录 数据进行管理
只能选择模型 正常
表 5-2 数据管理模块测试用例
测试序号 测试类别 测试内容 预期结果 测试结果
1 用户信息管理功能 添加一个不存在的用户 添加成功 正常
2 用户信息管理功能 添加一个存在的用户 添加失败 正常
3 用户信息管理功能 修改用户密码 修改成功 正常
4 用户信息管理功能 删除一个用户 删除成功 正常
5 用户信息管理功能 查询用户 查询成功 正常
6 模型数据管理功能 添加一个不存在的模型 添加成功 正常
7 模型数据管理功能 添加一个已存在的模型 添加失败 正常
8 模型数据管理功能 修改模型信息 修改成功 正常
9 模型数据管理功能 删除一个模型 删除成功 正常
10 模型数据管理功能 查询模型 查询成功 正常
表 5-3 手势识别模块测试用例
测试序号 测试类别 测试内容 预期结果 测试结果
1 手势识别功能 用户食指向上 输出向上平移指令 正常
2 手势识别功能 用户食指向下 输出向下平移指令 正常
3 手势识别功能 用户食指向左 输出向左平移指令 正常
4 手势识别功能 用户食指向右 输出向右平移指令 正常
5 手势识别功能 双手手掌,向外平移 输出放大指令 正常
6 手势识别功能 双手手掌,向内平移 输出缩小指令 正常
7 手势识别功能 左手手掌,右手食指向
左 输出左旋指令 正常
8 手势识别功能 右手手掌,左手食指向
右 输出右旋指令 正常
9 手势识别功能 手掌形状,五指分离, 逆时针旋转 输出逆时针旋转指令 正常
10 手势识别功能 手掌形状,五指分离, 顺时针旋转 输出顺时针旋转指令 正常
11 手势识别功能 右手前 3s 拳头,后
3sOK 输出模型重置命令 正常
12 手势识别功能 右手食指和中指靠近为
移动,然后分开为点击 荧光棒移动,标记光
点,输出内窥指令 正常
表 5-4 模型处理模块测试用例
测试序号 测试类别 测试内容 预期结果 测试结果
1 模型处理功能 加载初始化 初始化成功 正常
2 模型处理功能 渲染模型 渲染成功 正常
模型处理功能 显示模型 弹出一个窗口显示 正常
3 模型
4 模型处理功能 输入一个指令,模型变换 模型变换成功 正常
5.3.3系统性能测试
对系统地各个模块功能测试后,接下来需要测试一下系统的性能,主要是为 了验证系统地稳定性和执行效率[44],从而更好地满足用户地需求。本小节主要对 系统的一些功能进行性能测试,主要测试系统的响应时间,本小节主要测试具体 内容如表 5-5 所示。
表 5-5 系统性能测试用例
序号 测试内容 响应时间 测试结果
1 系统启动响
应时间 < 3s 通过
2 登录响应时 间 < 1s 通过
3 添加用户响
应时间 < 1s 通过
4 删除用户响
应时间 < 1s 通过
5 编辑用户响
应时间 < 1s 通过
6 查询用户响
应时间 < 1s 通过
7 添加模型响
应时间 < 1s 通过
8 删除模型响
应时间 < 1s 通过
9 编辑模型响
应时间 < 1s 通过
10 查询模型响
应时间 < 1s 通过
11 关闭系统响
应时间 < 1s 通过
12 启动模型响
应时间 < 3s 通过
13 模型变换响
应时间 < 1s 通过
14 手势识别响
应时间 < 1s 通过
通过表 5-5 分析可知,主要对系统的14 个功能进行了测试,每个功能的响 应时间,均符合用户要求,测试内容全部通过,测试通过率 100%。除了系统在 启动的时候和启动模型的时候,比较费时需要接近3s,其他功能响应时间均在 1s 之内,符合系统性能需求分析要求。
5.4本章小结
本章主要介绍系统的实现与测试过程,包括介绍了在开发系统过程中使用 的开发技术、开发工具、开发环境以及功能测试和性能测试等方面地内容。在系 统实现后,对其各个模块进行了相关的测试分析,从而及时的发现系统存在的错 误并及时进行修改,最后在完成一系列测试工作之后,对系统进行运行和演示。
第6章 总结与展望
6.1总结
本文研究的课题方向是关于医学影像教学方面,旨在通过结合计算机视觉 技术和全息投影技术,为医学影像教育领域提供一个基于全息投影技术的医学 影像示教系统,此系统能够改变传统医学影像教学的方式,能够弥补传统医学影 像教学过程中的局限性。为了更好的实现本系统,主要从以下方面进行逐步开展 研究工作。
首先,本文研究了传统医学影像教学过程中存在的问题,针对存在的问题并 提出了基于3D全息投影技术的医学影像示教系统,用于解决传统教学方式存在 的局限性问题,并且阐述了有关此领域的国内外研究现状。
其次,为了更好的实现本文所提出的系统,开展了大量的相关技术知识的研 究,其目的是为了后期在开发过程中,能够深入的理解系统开发所需要的技术支 持。
再次,在进行了大量的相关技术知识的研究后,针对实现本系统所需要的关 键技术,进行逐个模块关键技术的研究,从而保证了系统能够在规定时间实现。 另外,在对其中的手势识别模块研究过程中,针对现有方法的不足,提出了一种 改进的手势识别方法,并进行了实验验证其有效性。
最后,在系统开发之后,为了更好的满足用户的要求和期望,分别对系统的 每个模块进行了功能测试和性能测试,从而保证了系统的准确性和可靠性。
总之,在系统的设计和实现过程中,虽然遇到了很多的技术困难,但在通过 查找文献和网上调研后,攻克了每一个困难和问题,成功实现了本系统。
6.2展望
目前,本文设计的系统主要是对于系统核心功能模块的设计,对于其他一些 非核心的模块尚未进行深入研究,前期希望能够保证系统核心模块稳定的运行, 后期希望根据用户反馈,再进行其他功能的扩展,使系统不断的更新迭代,最后 能够成为一个在医学教育领域更加普及的示教系统。最后,希望在未来的医学影 像教育领域,能够看到本系统带来的便利,也希望本系统能够受到更多相关研究 人员的关注。
参考文献
[1]李泽桂,徐迪雄,陈俊国.关于我国基础医学教育改革的实践与思考J].中国高等医学教 育 ,2010(07):11-12.
[2]卢开文•医学影像三维重建系统的研究与实现[D] •电子科技大学,2016.
[3]赵慧.全息影像技术在医学辅助教学中的探讨与研究[J].中国管理信息 化,2017,20(06):227-228.
[4]陈晨,王锦秀,陈翀,等.全息投影技术在医学领域及医学教育中的应用[J].中华医学教育探 索杂志,2020,19(11):1255-1257.
[5]孔令德.计算机图形学:基于MFC三维图形开发[M].清华大学出版社,2014.
[6]陈宏欣.计算机图形学与图形图像处理技术应用[J].中国新通信,2022,24(24):51-53.
[7]王洁.全息投影技术的原理解析与应用展望[J].现代商贸工业,2020,41(22):156-15 &
[8]张禹可.3D全息投影技术原理及应用[J].通讯世界,2018(08):225-226.
[9]张晶,魏爽.虚拟现实技术和全息投影技术在虚拟校园中的应用[J].电子测试,2016,09:83- 84.
[10]王贤锋.全息术的历史与发展[J].现代商贸工业,2007,05:180-182.
[11]王舒晓.浅析全息投影、裸眼3D、虚拟现实技术的区别[J].电子测试,2018(22):107-109.
[12]李倩.基于OpenGL的三维OBJ模型可视化研究与实现[J].信息技术与信息 化,2021(03):165-167.
[13]Grimes G J.Digital data entry glove interface device:US,US4414537 A[P].
[14]Bernardin K,Ogawara K,Ikeuchi K,et al.A sensor fusion approach for recognizing continuous human grasping sequences using hidden markov models[J].IEEE Transactions on Robot- ics,2005,21(1):47-57.
[15]吴江琴,高文,陈熙霖.基于数据手套输入的汉语手指字母的识别J].模式识别与人工智 能,1999(1):74-78.
[16]Wang X,S un G,Ha n D,et al.Data glove gesture recog niti on based on an improved n eural network[C]//Proceedi ngs of the 29th Chi nese Con trol Co nferen ce」EEE,2010:2434-2437.
[17]Sharma S,Jain S.A static hand gesture and face recognition system for blind people[C].2019 6th International Conference on Signal Processing and Integrated Networks(SPIN). IEEE,2019:534-539.
[18]Gupta B,Shukla P,Mittal A.K-nearest correlated neighbor classification for Indian signlanguage gesture recognition using feature fusion[C].2016 International conference on computer communication and informatics(ICCCI),2016:1-5.
[19]Lin H I,Hsu M H,Chen W K.Human Hand Gesture Recognition Using a Convolution Neural Network [C]//2014 IEEE International Conference on Automation Science and Engineering (CASE).IEEE,2014:1038-1043.
[20]Arenas J O P,Moreno R J,Murillo P C U.Hand Gesture Recognition by Means of RegionBased Convolutional Neural Networks[J].Contemporary Engineering Sciences,2017, 10(27):1329-1342.
[21]Nuzzi C,Pasinetti S,Lancini M,et al.Deep Learning Based Machine Vision:First StepsTowards a Hand Gesture Recognition Set Up for Collaborative Robots[C]//2018 Workshop on Metrology for Industry 4.0 and IoT.IEEE,2018:28-33.
[22]胡宗承,周亚同,史宝军,何昊•结合注意力机制与特征融合的静态手势识别算法J] •计算机 工程,2022,48(04):240-246.
[23]李康,陈宪冬.obj模型在OpenGL中的加载与控制[J].甘肃科技,2019,35(11):8-10.
[24]章东平,束元,周志洪.融合手部骨架灰度图的深度神经网络静态手势识别J].传感技术学 报,2021,34(02):203-210.
[25]Zhang F,Bazarevsky V,Vakunov A,et al.Mediapipe hands:On-device real-time hand track- ing[J].arXiv preprint arXiv:2006.10214,2020.
[26]Tan M,Le Q.Efficientnetv2:Smaller models and faster training[C]//International Conference on Machine Learning.PMLR,2021:10096-10106.
[27]Tan M,Le Q.Efficientnet:Rethinking model scaling for convolutional neural networks[C]//In- ternational conference on machine learning.PMLR,2019:6105-6114.
[28]Selvaraju R R, Cogswell M, Das A, et al. Grad-cam: Visual explanations from deep networks via gradient-based localization[C]//Proceedings of the IEEE international conference on computer vision. 2017: 618-626.
[29]G. Marin,F. Dominio,P. Zanuttigh,"Hand gesture recognition with Leap Motion and Kinect Devices",IEEE International Conference on Image Processing (ICIP),Paris,France,2014.
[30]G. Marin,F. Dominio,P. Zanuttigh,"Hand Gesture Recognition with Jointly Calibrated Leap Motion and Depth Sensor",Multimedia Tools and Applications,2015.
[31]A. Memo,P. Zanuttigh,"Head-mounted gesture controlled interface for human-computer in- teraction",Multimedia Tools and Applications,2017.
[32]A. Memo,L. Minto,P. Zanuttigh,"Exploiting Silhouette Descriptors and Synthetic Data for Hand Gesture Recognition",STAG:Smart Tools & Apps for Graphics,2015.
[33]Simonyan K,Zisserman A.Very deep convolutional networks for large-scale image recogni- tion[J].arXiv preprint arXiv:1409.1556,2014.
[34]Han K,Wang Y,Tian Q,et al.Ghostnet:More features from cheap operations[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition.2020:1580-1589.
[35]He Y,Yang J,Shao Z,et al.Salient Feature Point Selection for Real Time RGB-D Hand Gesture Recognition[C]//2017 IEEE International Conference on Real-Time Computing and Robotics (RCAR).IEEE,2017:103-108.
[36]Alnujaim I,Alali H,Khan F,et al.Hand Gesture Recognization Using Input ImpedanceVariation of Two Antennas with Transfer Learning[j].IEEE Sensors Journal,2018,18(10):4129- 4135.
[37]Wang C,Liu Z,Zhu M,et al.A Hand Gesture Recognition System Based on Canonical
Superpixel-Graph[J].Signal Processing:Image Communication,2017,58:87-98.
[38]Chen Zhu,Jianyu Yang,Zhanpeng Shao,Chunping Liu.Vision Based Hand Gesture Recognition Using 3D Shape Context[J].IEEE/CAA Journal of Automatica Sinica,2021,8(09):1600- 1613.
[39]Dibra E,Melchior S,Balkis A,et al.Monocular RGB Hand Pose Inference from Unsupervised Refinable Nets[C]//Proceedings of the IEEE Conference on Computer Visionand Pattern Recognition Workshops.2018:1075-1085.
[40]Tang H,Wang W,Xu D,et al.Gesturegan for Hand Gesture-to-Gesture Translation in the Wild[C]//Proceedings of the 26th ACM international conference on Multimedia.2018:774- 782.
[41]Wang C,Liu Z,Chan S C.Superpixel-Based Hand Gesture Recognition with Kinect Depth Camera[J].IEEE Transactions on Multimedia,2014,17(1):29-39.
[42]黄光健.基于快速控制原型的自动变速箱控制软件设计与测试[D].北京理工大学,2016.
[43]钱杨.对计算机软件测试技术的几点探讨[J].电子测试,2021(03):91-92.
[44]张辉.Web系统的性能测试技术研究[J].计算机时代,2021(10):28-31.