基于Kinect的虚拟鼠标系统研究

时间:2022-03-17 09:25:26

基于Kinect的虚拟鼠标系统研究

【摘要】 随着科技的进步,传统GUI人机交互技术已经无法满足日所有用户的需求,随之而来的NUI人机交互将引领一场新的人机交互革命。本文主要介绍了新一代Kinect的特点和优势,以及在此基础上如何实现虚拟鼠标应用并完成与计算机的交互。

【关键词】 人机交互 kinect 模拟鼠标

一、引言

计算机交互界面的发展从起初不得不迁就效率而是使用的命令行式的机器语言,到微软公司创建的图形化用户界面GUI(Graphical User Interface),科技的进步把我们从枯燥繁琐的机器语言中解放了出来,鼠标和键盘成了后来几十年间人们再也熟悉不过的交互设备,不难看出在人类与计算机沟通方式的变革中,技术正逐步帮助人类取得“优势”地位。随着2010年微软的Kinect,标志着电脑适应人类、用户主导交互的NUI(Natural user interface)交互时代的开始。

二、Kinect v2.0简介

2014年,微软了KinectV2,第二代Kinect从硬件上对做了很大改进。感应器具备了更高的分辨率和色彩识别度,使识别更加精准,为开发者制作更精良的画面提供了良好支持。KinectV2拥有“三只眼睛”和“四只耳朵”。“三只眼睛”分别是彩色摄像头(RGB Camera);位于彩色摄像头右侧的深度传感器(Depth Sensor)以及位于面板中央的红外发射器(IR Emitters); “四只耳朵”则是四元线性麦克风阵列,声音从4个麦克风采集,内置数字信号处理器DSP等组件,同时过滤背景噪声,可定位声源方向。

三、基于Kinect的虚拟鼠标控制系统的设计

3.1系统运行设计

本应用程序使用 Kinect for Windows SDK 2.0配合C#语言进行开发,这个新的开发包提供了多种接口,简化了开发过程。整个程序的运行过程主要分为以下几个部分:

(1)初始化并接收数据

初始化Kinect到接收数据帧其实是Kinect完成数据引用的过程大致是source -> reader->frame -> data,其中一种数据源(source)可以有多种阅读器(reader) ,而这里我们用到的就是BodyFrameSource这个源。关键代码如下:

(2)注册帧到达事件

Kinect以每秒接收30帧的速度进行来进行人体和规定动作的识别,因此对于是否识别到人体以及后续的动作捕捉来说注册帧到达事件是前提,具体实现如下:

新的SDK提供了新的三种手势状态接口分别是Open , Closed , Lasso三种手势状态,利用这三种状态,可以设置对应的鼠标事件:HandState.Open- MouseLeftUp(鼠标移动),HandState.Closed- MouseLefDown(左键按下),HandState. Lasso- MouseRightDown(右键按下)

其中对应的鼠标响应事件我们需要用到位于user32.dll这个库文件里面的mouse_event函数,所以只需在程序之前先声明引用即可。

3.2 Kinect与计算机之间坐标系的转换

在程序实际运行的过程中,直接利用kinect得到的用户手部坐标往往无法很好的模拟鼠标的移动, 而模拟鼠标移动的原理是使用Kinect 捕捉用户左手或者右手的空间坐标,之后再将获得坐标的XY 平面坐标部分映射为屏幕坐标。但是由于鼠标移动的绝对坐标系和屏幕坐标系又不完全移植,鼠标绝对坐标系的X 轴、Y 轴的点坐标为Int 型,值范围是(0~65535),因此中间还需要做一次转换,如图1所示。

关于坐标转换的核心代码如下:

四、结束语

本文利用Kinect的特性追踪人体的特定部位,运用空间坐标到平面坐标之前的转换完成了模拟计算机鼠标移动的功能,又利用了新一代SDK提供的手势状态接口模拟了鼠标的点击,完成了虚拟“空气鼠标”的程序开发。基于Kinect的虚拟鼠标的交互可以运用到教育、娱乐等多个领域中去,它的应用前景将会越来越广。就像微软公司著名的发明家Alex kipman所说的那样,Kinect的诞生或将成为下一代人机交互的革命的原点。

参 考 文 献

[1] 邵浩,侯文利. Kinect用于其他应用时坐标系转换问题研究 [J].现代计算机(专业版).2014(2):40-42.

[2] 张诗潮,钱冬明. 体感技术现状和发展研究[J].华东师范大学学报(自然科学 版).2014.2:40-42.

[3] 余涛.kinect开发实战:用最自然的方式与及其对话[M].北京:机械工业出版社,2012:21-23.

[4] 王森.kinect体感程序设计入门:使用C#和C++[M].北京:科学出版社,2014:164-167.

上一篇:电气设备检修过程中的常见问题及应对措施探讨 下一篇:如何巧妙解答小学高年级数学应用题