【图像识别】【论文】残疾人手语交流辅助系统手语识别与翻译&&基于数据手套的虚拟手的实现

《残疾人手语交流辅助系统手语识别与翻译》

【本来以为这是一篇学位论文,没想到是比赛的“感言”,不过比赛有一个地方很好,什么最好用、最简单用什么,而是一大堆为写论文而进行研究的东西,各种先进算法交杂在一起】

1、 特征提取

原始数据含有背景等大量无用成分,通过骨架技术,直接获得手的运动信息,减小问题复杂度。硬件和软件使用的是:Kinect和OpenNI。Kinect可以获得深度图像,OpenNI不太了解,查了下,【百度百科】例如,一个中间件可以接收一副有人的图像,计算并返回人手掌在图像中的位置。OpenNI提供了一组基于传感器设备的API,以及一组由中间件组件实现的API。通过打破传感器和中间件之间的依赖,使用OpenNI的API编写应用程序就不需要额外的努力去处理由不同的中间件共存带来的问题(跨平台)。在本论文的后边描述,可以知道调用了《骨骼提取》算法,这是个不开源的【知乎】OpenNi类似Kinect的SDK,但是里面的很多算法不是开源的,比如实时的human poseestimation, hand tracking。这些算法来自一个叫primesense的公司的middleware,估计也是微软持资,openni只有接口。后期,骨骼提取技术因为处理速度慢,是整个系统的瓶颈,因为不开源的原因无法处理,因此添加了FPGA,【百度百科】系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。简而言之,就是一个有专门用途的芯片。

选择左右手、肘关节、肩关节6个骨架节点,在获得骨架节点后,通过常态化处理,使得每个动作延续121帧,原因是,标准化便于后期处理,方式是,均匀分配和插值处理。

2、 数据处理

【图像识别】【论文】残疾人手语交流辅助系统手语识别与翻译&&基于数据手套的虚拟手的实现_第1张图片

从骨架6个节点计算出14个特征点,每个动作总共121帧,总计1694个特征。通过SVM(支持向量机)对获取的向量处理。

通过LIBSVM训练分类器,而不用自己从头开始做。

【参与竞赛与做产品一样,总会使用最成熟、最简单的技术,不一定最先进,但最起码是次优的。这篇论文中,6、14、121这些数字的来源很令人好奇,估计也是从某个地方看过来的吧,另外,图像识别的关键环节:图像获取与预处理、SVM训练都利用成熟的技术和产品】

《基于数据手套的虚拟手的实现》

1、流程图,通过流程图可以对整个系统或者整篇论文有个基本的认识,之后可以对号入座,提高学习效率。

【图像识别】【论文】残疾人手语交流辅助系统手语识别与翻译&&基于数据手套的虚拟手的实现_第2张图片

OSG不了解,【百度】OpenSceneGraph(简称OSG)使用OpenGL技术开发,是一套基于C++平台的应用程序接口(API),它让程序员能够更加快速、便捷地创建高性能、跨平台的交互式图形程序。它作为中间件(middleware)为应用软件提供了各种高级渲染特性,IO,以及空间结构组织函数;而更低层次的OpenGL 硬件抽象层(HAL)实现了底层硬件显示的驱动。OpenGL不懂,【百度】OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。【百度链接】OpenGL学习总结

一.OpenGL是做什么的

一种图形硬件的接口。而不是像C和C++一样的编程语言,更像是一个运行库,提供一些预先封装的函数。

二.OpenGL的主要功能是什么

建模,变换,颜色模式设置,光照和材质设置,纹理映射,位图显示和图像。

三.OpenGL的体系结构是什么

最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,第五层为应用软件。

四.怎么样利用OpenGL来实现我们想要做的事情

首先要明白一点,OpenGL是一个与平台无关的三维图形接口,操作系统必须提供像素格式管理和渲染环境管理。因此要使用OpenGL来做我们想做的事情的时候,一定要先为OpenGL搭建一个窗口环境。在这个窗口环境中,我们才能够使用OpenGL来实现我们自己的目的。

另外要注意的是OpenGL应用的不是保留模式,而是直接模式。即我们去操作的并非是已经封装好的一些建好的图形信息,而仅是相当于操作一个图形界面。也就是说如果我们要画一个复杂的形体,我们要把这个形体的几何信息,包括点、线和面的一些信息包括进去,然后使用一定的方法,把这些基本的信息合起来,构成我们要创建的那个物体。中间件不懂,【知乎】其实从广义来说 操作系统上,业务系统下与业务无关的 ,都是中间件,包括数据库,离线等。当然 实际上不会这么分。 不过利用这个讲法应该能够更容易的去理解中间件是什么。对比与这个说明,库函数是位于代码与程序之间的中间件。

2、使用3D MAX和Creator建立手的3D模型,不研究这个,所以不细看,但作者的一个观点很令人耳目一新,通过树状结构建立数据库结构,原因有二:1、按照几何特征进行有效组织,并将模型转化为方便进行编辑和移动的节点;2、这种树状结构非常适合实时系统进行各种便利操作。【这样的思路跟之前读的结构模式识别很相似,利用模式(模型)本身的结构约束构建系统,减小不确定性】

3、数据手套的数据获取与处理

使用DG5 Vhand2.0数据手套,由5个嵌入玩去传感器测量手指的平均屈伸度,通过三轴加速计获得手的运动和方向。在软件层面,调用配套的函数库即可获得手的运动数据。

4、数据手套与虚拟手的交互控制

不是特别感兴趣,实现手套获取数据与虚拟手控制数据的某种映射。OSG可能采用MVC模式,Controller为数据手套,View为OSG提供的界面,Model为OSG映射函数。

 

你可能感兴趣的:(【图像识别】【论文】残疾人手语交流辅助系统手语识别与翻译&&基于数据手套的虚拟手的实现)