虚拟腕饰试戴系统的研究与实践

2022-03-23 06:42罗立宏汤晓颖邹丛烁
实验室研究与探索 2022年1期
关键词:关节点手部手势

黄 丽, 罗立宏, 汤晓颖, 邹丛烁

(广东工业大学艺术设计学院,广州 510006)

0 引 言

进入21世纪以来,中国的经济和互联网相关技术得到了迅速发展,人们也越来越注重生活质量和消费体验。线上购物逐渐成为主流的购物形式,与线下购物相比,线上购物的可视化体验还有待提升,比如需要试穿的服装和试戴的腕饰[1],线上购物具备传统实体店无法比拟的便利性,传统实体店的真实化和人性化也是现阶段线上购物无法企及的。随着增强现实技术(Augmented Reality,AR)相关技术的发展,使线上购物兼具便利性和真实性[2]。近年来专门针对虚拟腕饰试戴的研究还较少,Radhika等[3]通过使用Vuforia图像跟踪来定位三维模型,由于识别图像是二维的,镜头倾斜时会出现模型与手部错位的问题。Günes等[4]提出了一种支持360°旋转的无标记三维增强现实应用程序,使用Kinect传感器捕捉RGB、深度和骨骼数据,并使用开放图形库(OpenGL)渲染技术,提高了模型叠加的精确性和灵活性,但使用过程需要使用kinect和显示屏等设备,提高了虚拟腕饰的使用门槛,在生活中难以普及。

近年来,手机端性能不断提升,使得基于移动端的AR技术研究与应用开发成为当前行业热点,同时手机配置深度相机给腕饰佩戴系统开发提供了新的可能。本文采用具备3D深度感知相机系统的移动设备进行实验。系统由散斑投射器、红外补光灯、距离感应器、环境光传感器、红外相机等组成。通过结合视觉跟踪算法、环境光传感器信息和距离感应器获取目标的位置信息和朝向信息。

1 虚拟手部模型

1.1 手势识别模型

手势识别分为静态手势识别和动态手势识别[5]。静态手势识别采集手部边界轮廓信息、肤色、几何学位置等信息将手部进行识别和分割[6]。动态手势识别通过每帧获取手的位置和朝向信息,逐帧分析手部动作[7]。本研究采用动态手势识别,通过摄像机和传感器获得特定的图像序列,对图像序列处理后使用。传统的图像识别一般是通过颜色和灰度值来识别物体,从而获得物体的轮廓和纹理[8],本文所使用动态手势识别,通过配合深度相机可以在获取RGB图像的同时获取像素的深度(Depth)信息,即深度图像(RGBD)[9]。

1.2 建立虚拟手部模型

在三维空间中建立虚拟手部模型,主流的有4种方法:网格模型、体模型、几何模型和骨骼模型法[10],其中比较常用的是骨骼模型法,大量的实验数据表明,通过识别人体骨骼关键节点能很好地预测人体地动作行为[11]。通过移动端的深度摄像头逐帧采集手部各关节的3D深度数据,利用指尖位置信息搭建虚拟手部的手部边界,通过人体手部的尺寸限制关系逆向计算出各关节点的位置信息,建立完整的虚拟手部模型[12],如图1所示。通过虚拟手部模型可以判断出左、右手,并可以返回手部的21个骨骼关节特征点数据信息[13]。

图1 手部骨骼点模型

2 虚拟腕饰试戴系统构架

系统通过手机深度摄像头对3D手部骨骼关节深度信息进行采集,获得手部关节的21个特征点信息,以此建立手部的虚拟模型,增强现实引擎(AR Engine)提供的手部模型算法是通过手掌方向朝向摄像机判断左、右手的,而腕饰试戴则需要以手背对准摄像机,所以建立的手部虚拟模型左、右手判断结果需要进行校正。得到矫正后的手部信息后,通过21个手部骨骼关节点信息建立手部的定位点和放置姿势坐标系。将3D虚拟手表模型与定位点和姿态信息进行绑定,当摄像机检测到手部运动信息后,获取的手部骨骼关节特征点的信息会随之更新,生成的虚拟手部骨骼模型会跟随运动,最终实现3D虚拟手表跟随使用者的手部进行相应运动,达到可以360°3D虚拟试戴效果。虚拟腕饰试戴系统整体流程如图2所示。

图2 虚拟腕饰试戴系统整体流程

3 腕饰叠加方法

3.1 虚拟手部模型与腕饰模型的映射

三维虚拟手表模型从物体坐标系准确定位到虚拟手部骨骼模型,达到位置和朝向姿态与之匹配,需要在虚拟手部骨骼模型上构建映射的三维坐标系。以手部骨骼点0点设为定位手表的锚点,以手腕关节点0,中指关节点9,大拇指关节点17构建与虚拟手表表盘平行的面,并通过矢量计算得到垂直该平面的法向量V1,以定位手表表盘的视图方向1,以中指指向确定手表表盘按钮方向,计算得到垂直按钮和表盘的手表向上的矢量V2,以该矢量确定表盘的视图方向2,通过垂直的2个矢量V1和V2确定以小拇指方向为正向的矢量V3,用来定位手表表盘12点钟视图方向3。使手表的位置和方向与手腕节点的位置及朝向保持一致,映射关系如图3所示。

图3 虚拟手部模型与腕饰模型的映射

为将虚拟手表模型准确地叠加在手腕处,需建立摄像机像素点位置与三维空间的映射关系[14],这一过程称为摄像机标定,此过程涉及多个坐标系转换:屏幕坐标系,相机坐标系,世界坐标系,物体坐标系。

图4 虚拟手表模型空间坐标系转换示意图

为一个点在物体坐标系坐标,首先定义虚拟手表模型在物体坐标系空间,根据放置位置和朝向,通过模型矩阵Mmodel变换转换成世界坐标系[15]

通过变换矩阵Mview将世界坐标转到相机坐标系(在此过程相机的位置和姿态决定两个坐标系空间的转换关系)

将相机坐标系转换到裁剪坐标系

通过投影变换矩阵Mprogection。屏幕空间是一个二维空间,将顶点经齐次除法从剪裁空间投影到屏幕空间。在屏幕空间,左下角像素坐标是(0,0),右上角像素坐标是(pixelWidth,pixelHeight)。

3.2 程序逻辑

基于Unity平台使用C#语言进行开发,通过新建会话(ARSession)实时获取相机信息,当识别到手部信息时,会根据相机获取的手部骨骼关节点的信息建立虚拟手部模型,实现手部和手表的映射,当手部移动旋转时,根据摄像头返回的帧数据实时获取手掌各关节的位置,并动态计算手掌朝向,而手表是根据虚拟手表模型进行精确定位,在实现手部移动旋转时,虚拟手表模型随之改变状态,其程序逻辑如图5所示。

图5 程序逻辑流程图

4 结果分析

腕饰虚拟试戴系统是基于增强现实引擎和Unity 3D实现的,需要在搭载增强现实引擎和深度相机的移动端进行使用。用户可随时随地通过移动端选择心仪的腕饰进行试戴,并可360°转动手腕查看佩戴效果。

4.1 手部边界定位与虚拟手部骨骼模型展示

基于手部边界信息探测整个图像并逐帧返回定向的手部边界框,以识别手的整体框架和方向,考虑到本实验是基于检测手部关节点骨骼点展开的,为使检测结果尽可能准确,选用手部全部伸直打开的手势作为检测手势,手部边界定位效果展示如图6所示。

图6 手部边界定位效果

检测结果包括手势识别、左右手的识别、相机类型返回等结果,可以看到实验机型2D相机和3D深度相机处于正常开启状态。本实验采用的是深度相机是手机前置摄像头,返回的左右手结果与实际相反。通过3D深度相机获取右手手部骨骼关节点位置和深度信息,构建的虚拟手部骨骼关节点模型效果如图7所示,可以清楚地看到手部的21个关节点。

4.2 最终佩戴效果展示

右手手背、手掌、侧面试戴效果如图7所示。分别使用右手的掌心与手背进行识别测试与真实环境的一致性,结果显示能良好地识别右手的掌心和手背方向,正确地匹配模型达到与真实环境一致的效果。

图7 虚拟手部骨骼模型效果

在手的旋转移动过程,手表模型会实时根据手腕的位置及朝向进行调整,能较好的达到与真实环境匹配一致的效果。当手部转动到手掌垂直手机屏幕时,手部的21个骨骼关节点部分形成重叠,相机采集的手部骨骼点数据可能存在误差,在旋转到侧面时存在跳跃点,虚拟手表模型会出现短暂跳跃,如图8(c)所示。

图8 右手手背匹配状态

5 结 语

本文研究的主要目的是实现基于深度视觉的虚拟腕饰试戴系统,使用搭载增强现实引擎和深度相机的机型进行手部彩色信息、深度信息及骨骼点信息的获取,通过Unity 3D开发引擎实现系统架构的搭建,完成移动端和增强现实引擎的信息传递。当识别到手部信息时,进行左右手判断,根据深度相机获取的手部骨骼关节点的深度信息建立虚拟手部模型,当手部移动旋转时,根据摄像头的返回帧数据实时获取手掌各关节的位置,动态计算手掌朝向,虚拟手表是根据手表模型进行定位,实现手部移动旋转时,手表模型随之改变状态。

目前此虚拟腕饰佩戴系统存在旋转到侧面一定角度时虚拟模型会发生跳跃,以后将加以完善,继续研究手旋转的角度对虚拟模型适配的跳跃点范围;在实验过程中尙没考虑环境因素对实验结果的影响,未来希望增加环境变量比如光照强度对腕饰匹配效果影响的研究。

猜你喜欢
关节点手部手势
手部皮肤软组织缺损修复的皮瓣选择
基于深度学习和视觉检测的地铁违规行为预警系统研究与应用
关节点连接历史图与卷积神经网络结合的双人交互动作识别
挑战!神秘手势
V字手势的由来
搞好新形势下军营美术活动需把握的关节点
胜利的手势
RGBD人体行为识别中的自适应特征选择方法
皮瓣修复手部皮肤软组织缺损的临床应用
发生于手部的硬下疳一例