融合leap motion和kinect的人体动作识别研究毕业论文
2021-05-06 13:26:47
摘 要
人机交互方式是计算机领域最热门的领域之一。由于传统人机交互,如键盘、鼠标、触摸屏等,都囿于其设备和使用场景的限制,有着诸多不便。比如鼠标键盘需要一个相对平整的平面支撑,所需空间也略大。而触摸屏由于其脆弱性和不准确性,往往被使用在有限的场景。而且以上设备在进行3D交互时都有着先天的缺陷。基于人体动作和手势识别的人机交互方式被开发出来弥补传统设备在特定领域的不足。在医疗,娱乐,演示等领域中有非常突出的优势。
最近几年,科技届出现了两款革命性产品。Microsoft公司发布的Kinect设备能够识别获取目标的深度图像,彩色图像和人体骨骼图像。并返回一系列身体重要关节的数据。通过这些数据,我们可以对人体动作进行识别。Leap Motion采用的系统能够在高精度下检测和跟踪手掌,手指的位置,计算出其速度,得到其坐标等信息。通过这些信息,我们可以编程实现手势的识别。
本次设计为了达到识别人体动作和手势的目的,用两种不同的设备读取到人体各个关节的空间位置数据。对于人体动作,基于Microsoft公司的kinect设备,利用其SDK,在visual studio平台上结合OpenNI的人体骨架库,通过编程调用人体骨架各个节点的坐标,通过对比,计算各个节点的先对位置和距离,识别出简单的人体肢体动作。通过Leap Motion公司发布的Leap Motion设备和其SDK,在Visual Studio平台上编程,通过类函数调用手掌,手指等各个关键节点的空间位置坐标,然后计算,对比各个坐标的相对位置关机,识别出简单的手部姿态。
本次设计最终识别的人体动作有:左、右手(同时)举起,拍手,左、右手(同时)向前抬起。识别的手势有:画圈,平移,模拟按键,模拟触屏,各个手指的伸缩。实验表明,本文设计的系统可稳定识别人体的各种动作和手势。
关键词:Kinect;Leap Motion;手势识别;人体骨架库;人机交互
Abstract
Human-computer interaction is one of the hottest fields of the computer science. Because traditional human-computer interaction methods, such as a keyboard, mouse, touch screen, etc., are confined to the limits of their equipment and usage scenarios which brings a lot of inconvenience. For example, mouse and keyboard should be used on a flat. Further more, the space that users use the device with are slightly too much. Because of the vulnerability of the glass and inaccuracy when users work on the screen, the touch screen is often used in limited scenarios. What’s worse, equipment working in 3D situation often has a nature flaw that can not be added up. The new method of human-computer interaction which is based on human movement and gesture recognition is to be developed to make up for the lack of traditional equipment in specific situations. There are very prominent advantages in the medical, entertainment , demonstrations and other areas for this new method of HCI.
In recent years , there are two landmark devices that are buyable for ordinary people. Microsoft released the Kinect device which can obtain the target depth image, color image, and the image of the human skeleton, and then return a list of important joint body of data. With these data, we can identify the operation of the human body. Leap Motion is capable of detecting and tracking precisely of the palm, fingers positions, calculates its speed to give the coordinates and other information. With this information, we can program to identify the gesture.
In order to accomplish the target of this design that to recognize human movement and gesture, I use two different devices to track the coordinates in 3D space. For human movement recognition, this design use Microsoft 's kinect device working with the Kinect SDK for Windows, and combined with OpenNI which can obtains the body skelenton data. By comparing the distance of some specific body skeleton points, I can detect simple human movements. For gesture recognition, I use Leap Motion device working with the released SDk for LM, which can obtain the coordinates of hands and fingers in 3D space. Working under the help of visual studio IDE, identifies some simple hand gestures, I compare the distances that between fingers and palm center with a constant value to identify stretch of fingers.
For human movements’ recognition, this design can identify the hands’ rising up, clapping, hands’ rising forward. For gesture recognition, this design can identify the stretching of the fingers, circle, swipe, key clapping, screen touching. Experiments show that the system this paper described can stably recognize kinds of human movements and gestures.
KeyWords :Kinect; Leap Motion; Hand–gesture recognition; human skeleton joint; HCI
目录
第1章 绪论 1
1.1 研究目的及意义 1
1.2 国内外研究现状 2
1.3 研究内容及安排 3
第2章 Kinect和Leap Motion原理及分析 4
2.1 Kinect原理及分析 4
2.1.1 Kinect简介 4
2.1.2 OpenNI函数库分析 5
2.1.3 Kinect版本选择 6
2.2 Leap Motion原理及分析 7
2.3 Kinect与Leap Motion的融合方案 8
2.4 本章小结 9
第3章软件设计 10
3.1基于Kinect的动作识别设计 10
3.1.1OpenNI的骨架库 10
3.1.2识别思路 12
3.1.3 判定阈值的选择 13
3.1.4程序流程 14
3.2 基于Leap Motion的手势识别 18
3.2.1 Leap Motion的数据获取方式 18
3.2.2 基于Leap Motion的手部检测 21
3.2.3 Leap Motion的基本识别手势 22
3.2.4 检测阈值的设定 25
3.3 本章小结 26
第4章程序运行结果 27
4.1 动作识别 27
4.2手势识别 28
4.3 本章小结 30
第5章总结与展望 32
5.1总结 32
5.2展望 32
第6章 致谢 34
参考文献 35
绪论
人的动作与手势是一种自然而直观的交互方式,我们人类都能通过动作手势无障碍的进行沟通[1]。在某些文化背景下,手势的隐喻甚至要多过语言。相比于声音交互,视觉交互可以存在于自己的维度,能够让人在声音之外找到交互的信息。人体手势与动作识别也是最近几年人机交互领域用户限制最少的识别方法[2]。这种交互方式让我们尽量脱离了设备和场景的现值,能够完全舒展身体,举手之间完成对机器的操作。
1.1 研究目的及意义
手势识别是一种人机交互技术,以人手部的动作直接控制 计算机的输入,相比传统的键盘、鼠标等具有自然、直观、易于 学习等优点[3]。早期的手势识别主要使用数据手套等传感器设 备采集手部关节数据的方法进行手势提取,同时使用神经网络 进行关节数据的分析从而获得手势意义,但机械手套一般价格 昂贵且使用时有较多限制。近年来随着技术的发展,使用 摄像头捕捉手势的计算视觉技术成为了手势识别的主流方式。与数据手套等设备相比,使用计算机视觉技术进行手 势采集更加自然,便于使用。
手势通常被定义为手或者手臂结合所产生的各种姿势和动作,来帮助报答使用者的想法、情绪或者强调[4]。手势都被分为动态手势和静态手势。对于静态手势,一般被用来形容在某一时刻上手的姿态,包括手的形状、朝向、与身体的相对距离。而动态手势是一个动态过程。从表现上看,动态手势是一系列静态手势的集合,这一类特定的手势包括手或手臂的运动导致二者的相对运动。在人机交互领域,手势通常被定义为有意义的手势和无意义的手势两种[5]。无意义的手势就像信道中杂音一样是干扰项要被排除,尽量准确的找到有意义手势,并将其转化为之前约定好的控制指令传递下去是这个领域所做的工作。