APP下载

基于Leap Motion 手势识别的悬浮真3D 显示实时交互系统

2022-04-27林星雨张汉乐王琼华

液晶与显示 2022年5期
关键词:片源反射镜二面角

林星雨,邢 妍,张汉乐,王琼华

(北京航空航天大学 仪器科学与光电工程学院,北京100191)

1 引 言

人类生活在三维(3D)空间中,三维显示相较于目前普及的二维(2D)显示,能够更高效地呈现空间信息,具有更强的真实感和沉浸感。裸眼真3D 显示无需佩戴眼镜等辅助设备,无立体观看视疲劳问题,能够提供舒适逼真的3D 图像,应用前景十分广阔[1]。悬浮真3D 显示结合裸眼真3D显示与悬浮显示两种技术的优势,利用悬浮器件,将3D 图像成像在空中,进一步增强了空间真实感。该技术与手势交互等非接触式交互技术结合[2],既能进一步发挥3D 显示自然直观的优势,又能使人和空间中的3D 图像自由交互,可避免不必要的接触,特别有利于减少疾病传播风险,在2019 年至今的新冠肺炎大背景下有多种应用场景。

现有的悬浮真3D 显示手势交互主要利用全息、光场和集成成像等裸眼真3D 显示技术实现3D 图像的再现,配合体感检测器件或图像传感器完成手势交互功能。台湾交通大学提出了一种嵌入式集成成像3D 显示手势交互系统[3],利用嵌入在微透镜阵列下的分布式光传感器推算手指位置,实现了手指对3D 场景的精确控制。日本东京工业大学实现了一种基于全息3D 显示的手势交互系统,采用RGB 相机检测手指散射光,对手指位置进行检测,实现了手指与复杂场景的精确配准[4]。浙江大学提出了一种悬浮真3D 显示系统力触觉交互技术,通过指套振动实现力触觉交互,提高了交互的真实感[5]。尽管目前国内外进行了一些悬浮真3D 显示手势交互技术研究,但多数仅考虑单个3D 物体的交互或3D 场景的整体交互,未考虑复杂3D 场景中多个3D 物体的独立交互,不同3D 物体独立交互存在的串扰问题亟待解决。

本文提出一种基于Leap Motion 的悬浮真3D 显示实时手势交互系统,可实现多个悬浮3D物体的独立实时交互,交互帧率为30 帧/s。

2 系统结构与工作原理

2.1 系统结构

悬浮真3D 显示手势交互系统由集成成像3D 显示屏、二面角反射镜阵列、Leap Motion 和计算机组成,如图1 所示。系统原理如图2 所示。集成成像3D 显示屏与二面角反射镜阵列共同构成系统的显示模块。如图3 所示,二面角反射镜阵列是一种悬浮器件[6-8],将其倾斜45°放置能够使集成成像3D 显示屏再现的3D 图像“悬浮”于该器件前方[9];悬浮3D 图像相比原3D 图像深度反转,可抵消传统集成成像3D 显示的深度反转现象,最终形成深度关系正确的悬浮3D 图像。

图1 悬浮真3D 显示手势交互系统结构Fig.1 Structure of the floating 3D display gesture interaction system

图2 交互系统原理示意图Fig.2 Principle of the proposed interaction system

图3 二面角反射镜原理示意图Fig.3 Principle of the dihedral corner reflector

Leap Motion 连接计算机,两者共同组成系统的交互模块。Leap Motion 是一款体感控制器,它内置双目相机,基于计算机视觉算法采集手的数量、各个关节节点的空间位置、手指和手掌的朝向等数据,通过应用程序编程接口(API)被计算机读取。为充分利用Leap Motion 的探测范围,我们将Leap Motion 水平放置在二面角反射镜阵列底边的正前方。悬浮真3D 显示手势交互系统的手势交互流程如图4 所示。

图4 手势交互流程图Fig.4 Flow diagram of the gesture interaction

在一次交互循环流程中,计算机通过API 从Leap Motion 读取手势数据,然后利用交互通道机制检查物体是否被占用。若未被占用,将读取到的关节空间坐标映射到开放图形库(OpenGL)世界坐标系下,与预设手势进行比对,确定交互类型。之后计算并更新每个参与交互的物体的空间位置与姿态,并渲染3D 片源,刷新显示在LCD 屏上,使得悬浮3D 图像中的物体发生位移、旋转等变化,实现人机交互。

集成成像3D 显示屏的3D 片源即图像阵列。为确保实时性和手势交互模块设计的便捷性,采用OpenGL,通过设置多视口模拟相机阵列的拍摄,生成图像阵列。渲染过程应用了双缓冲和顶点缓冲对象(VBO)技术,以保证3D 片源的实时生成。

2.2 显示空间与交互空间坐标映射

为精确模拟现实世界的“触碰”等手势交互动作,需要建立显示空间与交互空间的关联。显示空间指悬浮3D 图像所处的空间,交互空间指Leap Motion 可探测到的手关节所处的空间。然而手关节坐标基于Leap Motion 自身的坐标系,无法直接得到该坐标与悬浮3D 图像之间的坐标关系。因此需要将Leap Motion 坐标映射到显示空间,才能进行触碰与否的判断。根据集成成像原理可知,3D 拍摄与显示过程互逆,显示空间坐标系与渲染过程的OpenGL 世界坐标系统一,悬浮3D 图像坐标与待渲染的3D 模型坐标完全一致。因此,只要确定Leap Motion 坐标系和OpenGL 世界坐标系的映射规则,即可实现显示空间与交互空间的坐标映射。

假设OpenGL 世界坐标系O-XYZ的OX、OY、OZ轴在Leap Motion 坐标系O'-X'Y'Z'下的单位方向矢量分别为(X'X,Y'X,Z'X,)T,(X'Y,Y'Y,Z'Y,)T,(,)T,坐 标 系O-XYZ与O'-X'Y'Z'的标度比为Ks,则可计算出从坐标系O'-X'Y'Z'到O-XYZ的自由向量变换矩阵C[10]:

在Leap Motion 中经过标定得到原点O'的坐标,记作()T,则 点O'映 射 到OpenGL 世界坐标系的变换矩阵为:

由公式(1)和(2),可将Leap Motion 坐标映射到OpenGL 世界坐标系中:

2.3 手势交互的实现

本系统预设了3 种手势交互方式:抓取平移、划动旋转和按键平移/旋转。3 种手势的交互过程均包括3 个阶段:选定物体、发生运动、释放物体。以抓取平移动作为例,人在用手移动一个体积较小的物体时,主要是单手的拇指、食指、中指弯曲并发力,夹持物体,移动一定距离后,手指略微伸直而释放。那么手指弯曲到一定程度夹持住物体为选定对象,移动为发生运动,手指松开则为释放对象。

本文以抓取平移为例介绍交互实现过程,其他两种手势原理与此类似,不再赘述。

首先选定对象,采用地球和月球两个球体模型,两个球体球心均位于各自模型局部坐标系的原点处,其在OpenGL 世界坐标系的坐标表示为(Xobj,Yobj,Zobj)T。当手的映射坐标处在以(Xobj,Yobj,Zobj)T为中心、半径为df的球域内,并做出抓握动作时,视为选定交互对象。选定交互对象的位置判断条件为:

其 中(X'f,Y'f,Z'f)T表 示 将 拇 指(X'thumb,Y'thumb,Z'thumb)T、食指(X'index,Y'index,Z'index)T和中指(X'middle,Y'middle,Z'middle)T作为整体考虑的一个加权平均坐标,其表达式为:

其中Athumb+Athumb+Athumb=1。除此之外还要满足3 个手部形态判断条件:

当拇指、食指和中指远节的中心点与它们加权平均坐标的距离小于各自的给定阈值dthumb、dindex、dmiddle时,视为抓取到该物体。

在运动发生过程中,3D 图像跟随手部动作发生平移运动。两帧之间的手部位移被映射到OpenGL 坐 标 系 上,位 移 值 表 示 为(ΔXf,ΔYf,ΔZf)T,对应模型跟随手部同步运动,位移值同样为(ΔXf,ΔYf,ΔZf)T。

最后阶段为释放对象,只需使选定物体的4个条件不同时满足。需要注意的是,手在“抓取”和“释放”的过程中,拇指与其余4 指的运动幅度不同,拇指运动距离明显小于其余4 指。因此,在计算平均坐标(X'f,Y'f,Z'f)T时给予权重系数Athumb更大数值。

2.4 多物体独立交互

多物体独立交互指同一时刻3D 场景中的每个物体都能独立响应一只手的手势交互,互不干扰。当交互过程中手与手、物体与物体的空间位置非常接近甚至部分重合时,由于Leap Motion动态的手势数据存在不可避免的漂移和抖动,即使采用物理碰撞检测,也会出现手势选定物体的错乱,无法达到理想的交互效果。本文提出通道模型解决多物体交互串扰问题。如图5 所示,每个待交互物体参与手势交互的状态都被储存,称为交互通道。交互通道在物体未参与交互时取值为-1,表示“未占用”;参与交互时取值为与物体交互的手的标识ID,表示物体被占用并正在参与交互。标识ID 在每只手进入Leap Motion 交互范围时被自动分配。

图5 多物体交互的通道模型Fig.5 Channel model for multiple objects interaction

当一只手进入某一物体的交互范围时,需要遍历所有物体的交互通道,增加额外的判断条件决定物体是否受到该手的控制:(1)物体的交互通道如果被除当前手以外的手的ID 占用,物体不会对当前手的手势产生响应;(2)物体的交互通道被当前手的ID 占用,物体将保持接受当前手的控制;(3)物体的交互通道没有被任何手的ID 占用,则当前手势图与该物体建立新的控制与被控关系,即有可能将当前手的ID 放入对应的通道内;(4)当前手的ID 未在其他物体的交互通道里,建立一一对应的控制与被控关系;(5)多只手同时进入物体的交互范围,按照ID 从小到大分配从高到低的优先级,这是由于先被Leap Motion 追踪的手ID 更小,后被追踪的更大,满足“先来后到”的规则。

上述一系列判断流程在交互的选定物体阶段完成。只有建立物体与手的交互关系后,才会进入下一阶段,计算物体对交互手势产生的响应。

3 实验结果

实物系统如图6 所示。右侧为悬浮3D 显示模块,从上至下依次为二面角反射镜阵列和集成成像3D 显示屏。集成成像3D 显示屏内使用的LCD 屏与左侧的便携计算机连接。二面角反射镜阵列倾斜45°放置。为便于展示光路,Leap Motion 被置于桌面。实际交互时,Leap Motion被水平放置在二面角反射镜阵列底边的正前方。悬浮3D 图像位于二面角反射镜阵列前方,其中心与二面角反射镜阵列中心的距离为259 mm。实验系统的其他参数如表1 所示。

图6 系统实物图Fig.6 Experiment setup of the proposed system

表1 系统关键参数Tab.1 Parameters of the proposed system

多物体独立交互效果如图7所示。悬浮3D 图像包括“地球”、“月球”、简易的按键和状态栏。“月球”的独立交互实验效果如图7(a)和7(b)所示,交互动作为划动旋转。从“月球”表面的纹理变化可以看出,“月球”跟随用户食指逆时针绕自轴旋转,此时“地球”表面纹理未发生变化。“地球”的独立交互实验效果如图7(c)和7(d)所示,交互动作为抓取平移,“地球”跟随做出抓握动作的手自左下向右上方发生平移,此时“月球”位置未发生变化。以上实验结果表明,所提系统可实现对3D 场景内多物体的独立交互。在3D 片源分辨率为3 840×2 160像素下,系统交互帧率为30帧/s。

图7 手势交互效果图Fig.7 Effect of the gesture interaction

4 结 论

本文提出了一种基于Leap Motion 的悬浮真3D 显示实时手势交互系统。该系统能够实现不同手势的实时交互,3D 片源分辨率为3 840×2 160 时,交互帧率为30 帧/s。系统还可满足多手同时对多物体的独立交互,交互动作相互不受干扰,解决了多物体独立交互存在的串扰问题,使得交互更加灵活。所提系统为悬浮3D 显示人机交互的应用提供了可能性。

猜你喜欢

片源反射镜二面角
高发电量固定式光伏支架
ϕ440 mm车载离轴反射镜支撑结构设计与有限元分析*
立体几何二面角易错点浅析
综合法求二面角
求二面角时如何正确应对各种特殊情况
大口径反射镜重力卸载设计
探讨城市夜景照明媒体立面片源内容的重要性
为什么你买了家庭影院就闲置了?
2019可以买8K电视吗?
求二面角的七种方法