基于Kinect手势控制的全息展示系统的设计与实现

2022-09-10

一、绪论

全息展示技术利用干涉和衍射原理记录并再现物体真实的三维图像, 是一种在三维空间中投射三维立体影像的次世代显示技术。使用该技术可以实现360度幻影成像, 立体影像将三维画面悬浮在实景的半空中成像, 并且可结合实物, 实现影像与实物的结合, 产生亦真亦幻的美妙感觉。而Kinect是微软的体感外设, 是一种3D体感摄影机, 它不需要使用任何控制器, 依靠相机捕捉三维空间中用户的运动, 同时导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能, 同时提供了程序开发接口, 用户可以使用他支持的语言开发各种人机交互系统, 如体感游戏。本文将Kinect的动作捕捉及识别技术应用在全息展示的控制系统中, 设计实现了一种基于Kinect手势控制的全息展示系统。

二、系统分析设计

(一) 系统分析

本文旨在实现一种基于Kinect手势控制的全息展示系统, 用户启动程序后, 通过一些特定的手势控制全息展示台内容的展示, 该系统使用无线全息端展示, 展台可以随意移动, 用户可以在完全没有束缚下尽情观看3D幻影立体显示效果。

基于以上的需求, 分析得出系统的数据流向, 即用户发出手势被kinect获取, kinect识别出相应的手势数据传给系统程序, 由系统程序匹配手势数据与对应的动作之间的关系, 并将动作命令发给播放控制部件, 播放控制部件将系统程序四分屏后的动画视频数据送到显示端显示, 此处的显示端是一个四棱锥的全息展台。系统数据流向图如图1所示。

(二) 系统设计

基于前文的需求分析, 可以将系统分为Kinect手势控制端、服务器端和全息展示客户端。Kinect手势控制端通过服务器连接全息展示客户端, 用于采集人物图像并提取图像中人物的骨骼点结构后绑定在虚拟模型上形成动作指令;服务器端接收Kinect手势控制端的动作指令并发送至全息展示客户端;全息展示客户端接收动作指令并将动作指令显示四分屏投影至全息展示台。系统整体功能结构经过细化分解后, 可以分为输入部分、输出部分和控制部分, 输入部分负责接收经kinect识别的用户手势数据, 控制部分负责整个系统的数据处理, 包括手势信息与动作指令的匹配及动画的播放控制, 输出部分主要负责动画的四分屏处理及播放命令在全息展台的执行。系统结构图如图2所示。

经过需求分析的功能确认, 对系统涉及相关类的设计, 主要包括用户、kinect、kinect处理器、动作匹配器、任务驱动器、骨骼模型控制器、展示播放器等主要类, 类之间的关系如图3所示。

三、系统实现

系统使用Unity3D作为开发工具, 而Unity3D本身不与Kinect设备兼容, 要将Kinect设备连接上Unity3D, 本文选择目前网络上比较成熟的中间件卡耐基梅隆的Kinect Wrapper for Unity3D来实现Unity3D和Kinect之间的数据交互工作。基于Kinect手势控制的全息展示系统的实现模块主要由模型绑定、动作采集、服务器搭建、平台播放等部分组成。

(一) 模型绑定

先通过Kinect传感器捕捉并提取人物的骨架结点的坐标, 并将其转换成虚拟人物相对于屏幕的坐标, 实现虚拟人物与真实人物关节点的同步;再通过Unity提供的Avatar骨骼系统来实现骨骼的各种运动。当用户手臂某个结点发生位移时, 根据该结点的序号找到对应的Avatar骨骼结点, 将Avatar节点与人物骨骼结点做相同的运动, 从而实现整个手臂的运动。

(二) 动作采集

当用户进入识别区域, Kinect传感器自动开启捕捉模式, 对区域内的用户跟踪识别, 当捕捉到符合条件的手臂动作后, 启用Gesture In Progress () 函数给用户分配id以及序号, 并对区域内用户进行关节跟踪识别, 获取关节类型。通过移动骨骼模型的方法构建对应动作的虚拟模型, 用Gesture Completed () 识别完成动作生成动作指令。

(三) 服务器搭建

获取并解析人物骨骼点数据和动作指令, 比对动作指令与骨骼点数据是否匹配, 当匹配成功后在服务器端进行动作指令预演并根据用户需求传输动作指令。通过Start Connect () 函数创建服务器, Onserver () 函数在判断服务器是否运行后创建客户端, 通过unity3D自带的unet组件, 以及RPC协议来完成远程计算机程序上的请求服务。将动作指令传送至客户端播放平台上。

(四) 平台播放

将反映在虚拟模型上的动作指令进行四分屏后的画面投影于全息展示台的四个面上进行播放。全息展台端获取指令后, 调用setstate () 函数来完成对anivator系统功能的控制。图4为动画在unity3D中进行四分屏的效果图, 图5为在全息展台上的展示效果。

四、结束语

本文采用了Kinect传感器作为输入设备改进了传统的交互方法, 通过手势的识别与控制实现了对全息影像的播放。与传统的全息展台相比, 本系统的播放者不用在中控机上进行控制播放, 而是可以自由的在kinect能识别到的区域用自然地手势来控制全息展台的播放。为了给用户带来了更大的方便, 系统同时开发了手机端APP, 可通过Kinect远程控制通知移动端播放动画, 另外, 用户也可以使用键盘的按键命令进行操作控制。

摘要:本文阐述了一种基于Kinect手势控制的全息展示系统的设计与实现。该系统使用Kinect作为手势捕捉输入源, 使用全息展台作为输出平台, 采用Unity3D作为开发工具, 可实时捕捉用户手势动作, 并将动作对应的指令发送至全息展示平台, 从而控制全息影像的播放, 用户无需辅助任何设备, 便可裸眼观看3D全息立体影像, 给人以逼真的视觉效果。

关键词:手势控制,全息展示,Kinect,Unity3D

参考文献

[1] 吴国斌.KINECT人机交互开发实践[M].北京:人民邮电出版社, 2013.77-78.

[2] 于泽升, 崔文华, 史添玮.基于Kinect手势识别的应用与研究[J].计算机科学, 2016, 43 (s2) :568-571.

[3] 潘丹.基于unity3D的手术训练游戏的设计与实现[D].济南:山东大学, 2014.

[4] 陈燕军, 汪地, 杨浩, 卢泉奇, 苗同升.基于Kinect的手术辅助系统研究[J].计算机技术与发展, 2014 (9) :81-83.

[5] 史小龙, 李晓玲, 高虹霓, 韩枫.全息显控界面中多通道人机交互技术研究[J].包装工程, 2016 (4) :120-124.

上一篇:一部慷慨激昂的法律史诗——读《为权利而斗争》下一篇:当前形势下优化高校财务管理的建议