一种三维指尖跟踪技术的研究
2021-08-18王福任李洪璠
王福任,李洪璠
(三亚学院,海南三亚,572000)
0 引言
随着硬件技术和通信技术的飞速发展,增强现实、虚拟现实交互逐渐成为下一代人机交互技术的主流。本文旨在设计一种三维指尖跟踪方式,借用深度学习模型、双目同步相机模组及双目测距原理,完成三维指尖跟踪。在后续研究中,使用者或可以此实现增强现实、虚拟现实设备的人机交互,即隔空点触、隔空划动、隔空拉伸等相应操作。
1 三维指尖跟踪的基本原理
1.1 基于深度学习模型的指尖关键点检测原理
指尖关键点检测的目的是,找出待检测画面或视频流中手指的指尖关键点。其原理类似于人体关键点检测或面部关键点检测。不过,在指尖关键点检测中,手部将一个目标物体。
本文使用OpenPose 作为指尖跟踪模型。OpenPose 人体姿态识别项目是世界上首个基于深度学习的实时二维姿态估计应用,其拥有良好的鲁棒性,可用于单个或多个目标。OpenPose 可以实现脸部表情、人体活动、手指活动等姿态估计。目前,基于OpenPose 的实例大量涌现,该技术在VR 试衣、体育评估、动作采集等领域拥有非常广阔的应用前景。
1.2 双目视觉原理
双目视觉广泛应用在机器人导航、精密工业测量、物体识别、虚拟现实、场景重建,勘探领域。双目视觉是模拟人类视觉原理,使用计算机被动感知距离的方法。从两个或多个点观察一个物体,获取在不同视角下的图像,根据图像之间像素的匹配关系,通过三角测量原理计算出像素之间的偏移来获取物体的三维信息。得到了物体的景深信息,就可以计算出物体与相机之间的实际距离,物体3 维大小,两点之间实际距离。[3]
本文主要使用的是双目测距原理。双目测距的操作分为四个步骤,即相机标定—双目校正—双目匹配—计算深度信息。
1.3 指尖关键点的定位原理
本文使用了可进行手部关键点识别的深度学习模型进行手指关键点标注,在此基础上用双目测距原理完成视差数据的收集,并计算深度信息以获得食指指尖的三维数据。
获得食指指尖的三维立体数据后,应对数据进行处理,使得数据可对应AR、VR 眼镜中的虚拟屏幕。其中,本文所用的处理方式包含中点坐标计算等。
2 三维指尖跟踪的基本流程及实现
2.1 三维指尖跟踪的流程
三维指尖跟踪的总体流程如图1 所示。
图1 三维指尖跟踪流程图
2.2 三维指尖跟踪的实现
本文设计的三维指尖跟踪系统是以OpenPose 为基础,利用Python 语言进行脚本编写。本文所用OpenPose 的版本是1.6.0, Python 版本是3.7.6,且安装有OpenCV-Python库及相关依赖。CPU 为Intel E3-1285lv4, GPU 为Nvidia GTX1060,内存为16GB,系统为Windows10。相机模组采用的是搭载两颗OV9570 的双目同步摄像头模组。
在本文中,为简化模型,仅提取了食指指尖作为模型的目标。在实际操作中,可将手指其他关键点设为目标,以完成更加复杂的操作。
2.2.1 输入图像
输入图像如图2 所示,由双目同步摄像头模组拍摄,该模组采取拼叠的方式将两个1280720 的视频流横向拼叠为总分辨率为2560720 的视频流。在本此操作中,OpenPose 模型将使用OpenCV 调用相机视频流。
图2 输入图像
2.2.2 模型进行处理
在OpenPose 中,视频流经过卷积网络提取特征,得到一组特征图,然后分别使用CNN 网络提取局部置信图和局部亲和域并进行二元分配,以得出高置信区域,如图3 所示。
图3 模型处理过程中输出的热力图
在本文中,分辨率为2560720 视频流将会被切割为两个1280720 的视频流同时处理,以此提高性能。
2.2.3 输出结果
得到高置信区域后,模型将高置信区域标记并输出坐标,同时进行视差测算。以此得到同一坐标系下的两个二维坐标“position of left”、“position of right”和距离参数“distance”。
在这之后,应对两个二维坐标进行中点坐标计算,获得两坐标的连线中点坐标,并将所得中点坐标系进行裁切,使裁切后的坐标系等效于1280720 的坐标系,并以[x,y]格式输出。此时模型输出了一个三维坐标系下的坐标,即二维坐标[x,y]和距离参数“distance” ,如图4 所示。
图4 坐标打印结果
需注意的是,在实际操作中受限于双目同步相机的镜头特性,目标放置于某些角度时不能保证目标被完整录入。本文为简化模型,暂未考虑此方面的影响。
3 结语
本文所述方法可以解决增强现实和虚拟现实设备进行指尖跟踪的问题。本文根据深度学习模型和双目视觉算法,使用双目相机模组,实现了三维指尖跟踪。在本文所展望的实际应用中,使用者或可以此实现隔空的点触、划动、拉伸、旋转等操作,这将简化增强现实和虚拟现实设备的可操作性与实用性。不过,经测试后发现,软件在所述配置中运行十分缓慢。例如,测试用视频流分辨率为2560*720,但在测试中发现,整体方案无法达到预期的30HZ 采样率,原因是OpenPose模型处理高分辨率视频流时有较强的性能要求,超过了本文所使用平台的硬件性能。为此,本文尝试了多种方法解决,包括隔帧处理和图像拆分等。
本文的思路与方向是正确的,但在投入实用前,尚需解决手指关键点识别模型的精简化与轻量化的问题,并使用深度学习的专用加速芯片对模型进行加速,才能达到在移动设备中使用的目的。