APP下载

一种基于增强现实的自适应在线虚拟眼镜试戴新技术

2022-09-14张泊平张云贞

关键词:人脸头部姿态

张泊平,路 凯,张云贞

(1. 河南省偏振感知与智能信号处理国际联合实验室,河南 许昌 461000; 2. 许昌学院 信息工程学院,河南 许昌 461000; 3. 许昌市虚拟现实重点实验室,河南 许昌 461000)

0 引言

眼镜试戴系统最早在美国得到应用,以Warby Parker为代表的眼镜电商率先推出了网上试戴功能[1]。近年来,国内眼镜销售商也开始尝试在线试戴功能[2-4]。增强现实(augmented reality, AR)能够把虚拟场景叠加到现实世界中,并能够实时互动,给虚拟眼镜试戴提供了技术支持,其关键技术如在线试戴的速度、体验感和沉浸感是近年来研究的热点[5-6]。目前,已经有4类虚拟眼镜试戴技术应用于在线购物。第1种是基于二维图像叠加,将人脸照片和眼镜框架图像通过平移、缩放、旋转等基本变换,再配合一阶梯度算子(Sobel算子)提取眼镜框架图像边缘,合成后呈现出正视图试戴效果。文献[7]应用这种方法实现了正面视图佩戴,但侧视图佩戴效果不佳,用户的体验不够理想。第2种是将三维眼镜模型与二维人脸图像融合得到试戴效果。基于这种思想,文献[8]提出了一种基于人脸和标识物特征相互叠加的虚拟眼镜试戴方法,并在安卓(Android)移动平台上得到应用。但是,当人脸旋转角度大于20°时,人脸特征点标定误差偏高,当用户头部旋转时,部分眼镜图像被遮挡,效果不理想。文献[9]对头部运动姿态进行实时跟踪,但是佩戴过程中仿射变换效果不稳定,眼镜模型容易变形,使用户的真实感和沉浸感受到影响。第3种方法是对用户的人脸进行三维重建,三维眼镜模型加载到人脸的三维模型上。文献[10]和文献[11]应用这种技术,实现了试戴过程自动化,允许用户从不同的角度观察虚拟人脸和眼镜。该方法由于对硬件要求太高,人脸三维重建耗时较长,用户佩戴的速度需要提高,且重建后的图像缺乏真实感,实际应用中效率很低。第4种方法是利用深度相机和高速配件完成试戴。文献[12]提出的基于视频序列的虚拟试戴技术,对虚拟眼镜由于折射效应产生的畸变进行矫正,并充分考虑了反射和阴影影响,眼镜框架能够正确输出,为用户提供了一个真实感体验。该方法需要借助深度相机和其他高速配置的硬件,这种专业设备给用户提出了更高的要求,不具有普适性,影响了系统更广泛的应用。

综上所述,4类虚拟眼镜试戴方法各具优势,又都存在一定的不足。二维图像叠加的真实感和沉浸感稍差,三维人脸重建又耗时太长,实时性要求不足。因此,研究一种试戴效果真实自然又能被普通用户接受的虚拟试戴技术,实现更加准确的跟踪和匹配,对在线购物具有重大的意义。

本文研究了一种移动平台上的增强现实虚拟眼镜试戴技术。采用单目摄像头作为输入设备,采集人脸信息,建立支持向量机(support vector machine, SVM)分类器进行人脸检测,利用尺度不变特征变换(scale-invariant feature transform, SIFT)算法进行人脸局部特征提取,再通过监督下降算法(supvised descent method, SDM)对齐特征点,经过多次迭代找出最优对齐方案。为了解决眼镜与头部姿态自适应问题,对头部进行姿态估计,虚拟三维眼镜模型能够准确地叠加在人脸模型上。将上述研究应用到移动端眼镜试戴系统中,完成了一个移动平台上的增强现实虚拟眼镜试戴系统应用。

1 人脸识别

虚拟眼镜试戴首先要解决的问题是人脸识别,在特定的条件下,人脸检测失败比例会增大,比如光照条件不适合、人体姿态不正确、光线遮挡等都会导致检测失败。为了获得良好的试戴效果,系统的实时性是一个重要指标。本文设计了一个通用的人脸识别流程[13],如图1所示。

1.1 基于SVM分类器的人脸检测

SVM分类器人脸检测流程如图2所示。

图1 人脸识别流程

图2 SVM分类器人脸检测流程

图3 支持向量机网络结构

其中,基于SVM分类器人脸检测网络结构设计如图3所示。

图2中,假设支持向量机的输入向量为x=(x1,x2,…,xn),输出层关于x的网络输出如式(1)所示:

(1)

使得:

(2)

将对应于∂i>0的训练样本xi训练为支持向量,由式(3)求出最优化参数b*:

(3)

1.2 基于SIFT的面部特征提取

本文利用SIFT算法进行面部特征提取[14]。关键点特征用位置、尺度和方向表示。关键点匹配分为梯度计算和梯度直方图统计。由于出现大量的错误匹配点,关键点匹配成功后,整个算法还不能结束,需要利用Ransac算法来消除这些错配点,并反复测试、多次迭代。

为了评估上述人脸分类与识别算法的有效性,采用Terravic公司提供的人脸红外数据库进行试验。数据库中共有20个红外图像序列,带有头部旋转、佩戴眼镜、佩戴帽子和光照明暗的图片。从每个人脸中挑选3组图像对,一共60对。图4中显示了挑选的部分图像,采用经典SIFT匹配算法作为最初的SIFT匹配方法,设定每个匹配的正确率和错配率,用精确度和误识度来描述匹配性能。

精确度=正确匹配数/匹配总数;误识度=(关键点总数-匹配点数)/匹配点数。

图4 样本序列集合

从这120个样本中,按照头部旋转角度、是否佩戴眼镜、是否佩戴帽子以及光照的变换为变量进行抽象匹配对比,同时控制其他变量保持相同。面部特征匹配结果如图5所示。

(a) 头部旋转角度匹配图

匹配结果分析如表1所示。由表1可知:佩戴眼镜对SIFT匹配性能更容易造成较大的影响,其次是头部旋转、光照明暗和佩戴帽子。由于实验样本的有限性,实验结果不可避免地产生误差,但总体的结果依然表现出较好的趋势。

表1 匹配结果分析表

2 人脸对齐与姿态估计

经过人脸图像检测后,面部的眉毛、眼睛、鼻尖、嘴巴等特征轮廓点由SIFT算法自动定位。下一步需要根据头部姿态定位眼镜的位置,并将头部姿态估计应用到眼镜的追踪注册子系统中,产生透视变换。受人脸特征点定位的影响,姿态估计会产生一定的估计误差,为了提高效果,需要更高的特征点的准确率。

2.1 人脸对齐

(Ⅰ)图像归一化

图像归一化是实现人脸对齐的必要操作,这样可以提高训练的效率。设人脸特征点最优解为α*,初始点为α0,x(α)∈Rn×1是图像中n个特征点的坐标,每个特征点附近的非线性特征提取函数用β表示,如果每个特征点提取128维度的SIFT特征,则β(x(α))∈R128n×1,在α*处提取的SIFT特征可以记作Ø*=β(d(α*))。那么,人脸特征点对齐运算就转换成了求使得函数(4)取得最小值的Δα:

(4)

下面根据SDM求步长Δx。

αk=αk+Δαk。

(5)

若Rk和bk表示每次迭代的路径,则函数(6)能够把特征点从初值α0收敛到α*。

αk+1=αk-1+Rk-1Øk-1+bk-1。

(6)

(7)

这样从训练集中得到R0和b0,经过多次迭代后得到Rk和bk,在后期表现为测试图像的对齐结果。

图6 SDM人脸对齐过程

(Ⅱ)SDM对齐结果

目前有很多人脸对齐算法[15]。本文利用效果较好的SDM[16],人脸对齐过程如图6所示。

样本训练时,主要使用IBUG和LFPW人脸数据库,每一张人脸图像上标注71个特征点,训练样本集合大小为1 006,人脸图像为356张。正面对齐结果如图7所示,侧面对齐结果如图8所示。

2.2 人脸姿态估计

首先,对应人脸图像上二维坐标标注与三维坐标,并找出对应的投影关系,确定相机的运动坐标。三维人脸模型相对于相机有平移和旋转两种运动状态。设相机当前位置为(X,Y,Z),新位置为(X′,Y′,Z′),则平移后的向量τ=(X′-X,Y′-Y,Z′-Z)。旋转运动有6个自由度,姿态估计需要确定3个平移参数和3个旋转参数。

(Ⅰ)特征点标定

计算1个人脸图像对应的三维姿态,首先确定N个点的二维坐标,然后再确定这些点的三维坐标。其中,二维坐标选取鼻尖、下巴、左眼角、右眼角、左嘴角、右嘴角6个特征点,这些点具有刚体不变性。为获得与选取的二维坐标对应的三维坐标,本文使用Surrey Face Model脸部模型库作为实验通用三维人脸模型[17],人工标定模型上的6个自由度,这些是姿态估计所需要的世界坐标(x,y,z)。

图7 人脸正面对齐

图8 人脸侧面对齐

(Ⅱ)相机标定

世界坐标确定后,还需要确定相机的矩阵,主要包括相机的焦距、图像的光学中心和径向畸变参数,这个过程就是对照相机进行配准。本文采用文献[18]的方法对相机进行标定,以获得相机矩阵。

图9 3个坐标系

(Ⅲ)特征点映射

图9中为世界、相机、图像3个坐标系,相机的中心是O,二维图像平面的光学中心是c,P是世界坐标中的任意一点,P′是P在图像平面上的投影,P′可以由P点的投影确定。

设P的世界坐标为(U,V,W),旋转矩阵R(3×3矩阵)和平移向量τ(3×1矢量)已知,则可以确定P在相机坐标系中的位置O(X,Y,Z):

(8)

展开式(8),得到式(9):

(9)

如果有足够数量的点(X,Y,Z)和(U,V,W)对应,上述问题可以转化为一个线性方程组,其中,(τx′,τy′,τz′)是未知数,然后可以对线性方程进行求解。

本文首先需要手工标定三维模型上的6个点,得到它们的世界坐标(U,V,W),通过式(10)可以确定这6个点的图像坐标系(X,Y):

(10)

其中:fx和fy是x和y方向上的焦距,并且(cx,cy)是光学中心;S是一个未知缩放因子。若连接P点到O点,P′就是P的像。式(10)转换为式(11):

(11)

已知P和P′坐标,则式(10)和式(11)转化为:

(12)

3 注册生成系统

3.1 跟踪注册系统

跟踪注册是将虚拟对象和真实世界中的事物对齐。目前有两种跟踪注册方法,一种是人脸特征点跟踪,将人脸特征点与虚拟眼镜模型的某一点进行叠加[19];另一种是几何变换关系跟踪,把人脸的几何图形与虚拟眼镜模型进行仿射变换,虚拟眼镜模型随着人头部的运动而运动,并且做出相应的透视变换,展现三维试戴效果[20]。前一种方法中,眼镜模型不能随用户头部运动而做出相应的变化,用户体验效果不佳;后一种方法跟踪效果较好,但如果头部转角过大,虚拟眼镜变形失真情况比较严重。本文尝试将上述两种方法相结合,利用本文2.2节的人脸姿态估计方法得到的6个自由度,对眼镜模型进行透视变换,并与人脸图像叠加,得到立体变化,实现更为准确的跟踪。

3.2 眼镜试戴仿射变换方法

图10 人脸和眼镜图像上所取得的等腰三角形

图10为人脸和眼镜图像上所取得的等腰三角形。如图10所示,A为眼角位置,B为两眼角间的中心位置,ABC是一个等腰直角三角形[21]。若3个点的坐标是A(a1,a2) ,B(b1,b2)和C(c1,c2),在阈值提前通过实验确定的情况下,眼镜模型在脸上的位置C点的坐标为:

C(c1,c2)=(b1-b2+a2,b1+b2-a2)。

(13)

眼镜模型到眼部匹配通过式(14)进行仿射变换:

y′=dx+ey+f。

(14)

(15)

简写为Ø=Wλ,λ由最小二乘法计算得到:

λ=(WTW)-1。

这样,眼镜模型投射到脸部的位置即可确定。

3.3 眼镜试戴透视变换方法

图11 人脸和眼镜图像上所取得的四边形

仿射变换能够跟踪三维模型,但是由于仿射变换是基于3点的变换,具有平行性和平直性,跟踪后眼镜容易发生变形[22]。本文结合头部姿态估计得到3个平移参数和3个旋转参数,对眼镜实施透视变换,并与眼部特征点叠加融合,实现实时跟踪效果。头部转动时,眼镜的空间模型应有一定的形变,这就需要通过对其做透视变换来实现。人脸和眼镜图像上所取得的四边形如图11所示。短边AD旋转后得到A′D′,设头部旋转角度为γ,r1为短边AD平均每增大10个像素所增加的比例,r2为长边AB平均每增大10个像素所增加的比例,则r1、r2根据式(16)确定:

(16)

3.4 虚拟模型注册生成系统

本文的三维眼镜模型在3dsMax2018软件中建模,为了进行模型注册,将模型导出为3DS格式的文件[8]。由于3DS 数据文件不能在OpenGL 中实时显示,需要对3DS数据进行解析运算,运算结果由OpenGL的传递函数实时绘制[23]。

3.5 虚实合成系统

图12 融合后的眼镜试戴子系统总体结构

虚实合成系统将虚拟眼镜模型定位到现实世界中,本文通过标识物和自然特征相互融合实现[23-24]。融合后的眼镜试戴子系统总体结构如图12所示。

4 系统应用分析

为了验证技术的有效性,本文开发了一款移动平台的“增强现实眼镜试戴销售系统”。实验环境使用的操作系统是iOS9,开发环境是Xcode12,图像库是OpenCV和 MFC,脚本语言是Objective-C。

图13 增强现实眼镜试戴销售系统软件结构

系统综合运用了常用控件,并对控件进行重构和优化,提高了系统的运行效率;同时,大部分功能块都经过改造封装,最大程度减少了第三方框架的应用和依赖,以及维护过程的繁琐[24]。系统分为8个模块,实现了眼镜商品的浏览、用户注册、登陆、收藏商品、添加购物车、用户地址修改、购买商品、集成支付宝支付和订单管理等功能。另外,还嵌入了眼镜试戴、拍照、录制视频、上传等功能,同时还可以分享到自己的社交平台,供用户浏览其他用户的试戴效果,提供快速试戴同一款眼镜等功能。增强现实眼镜试戴销售系统软件结构如图13所示。

其中,商品浏览是系统的核心模块,涵盖了商品浏览、筛选、试戴、拍照、上传与分享,试戴和快速试戴两个子系统需要调用本文第2节和第3节的人脸识别与对齐算法。通过摄像头捕捉到脸部数据进行处理,在捕捉人脸的时候,要求用户将脸部放在手机前摄像头正前方30~50 cm的位置。在试戴过程中,用户不能背对光源,否则光线会干扰摄像头的捕捉效果;当摄像头捕捉不到脸部数据的时候,系统会提示用户调整脸部位置,用户通过手势在摄像头的前方挥动,系统搭载的引擎会重新识别用户脸部信息。

用户通过点击快速试戴按钮,进入快速试戴模式,用户将手机放在脸部前方30~50 cm的位置,让脸部出现在手机屏幕中,系统会自动识别用户的脸部数据,给用户戴上眼镜,用户通过滑动切换眼镜,也可以点击详情按钮,来查看商品详情。眼镜试戴详细流程图如图14所示。

图14 眼镜试戴详细流程图

在实现眼镜试戴时,使用了第三方oepnframeworks,并根据需求对类库进行改造,封装接口,增加系统的稳定性,减少对第三方控件的依赖[21]。具体方法是,在openframeworks中调用其内部封装的Appdeleagte类,兼容iOS平台的UIKit库,调用引擎时初始化ofApp函数,以加载眼镜模型。试戴结果分析如表2所示。

表2 试戴结果分析表

表2中试戴次数是指不同人试戴的次数,不一定是同一个人。由表2可知:当人脸处于移动设备前方30~50 cm时,系统能够自动识别用户的脸部数据,正视图试戴正确率为100%;当人体头部旋转、佩戴眼镜、佩戴帽子等状态,或者光照不足时,匹配准确率会有所降低,其原因是特征匹配准确率下降导致试戴正确率受到影响,但总体的结果依然表现出较好的趋势,说明系统具有一定的自适应性。

5 结束语

本文研究了一种基于增强现实的自适应在线虚拟眼镜试戴技术。该技术利用移动设备自带的单目摄像头获取人脸图像信息,解决了系统实时性问题,也便于该技术的推广应用,人脸姿态估计和眼镜透视变换解决了头部转动时试戴匹配问题,提高了系统的自适应性。眼镜试戴过程自然,用户可以快速、逼真地查看镜框样式和颜色,提高了用户体验。研究结果稍加改进可应用于服装、发饰品、首饰、手提包、鞋类等其他商品在线销售,未来具有更广阔的应用空间。

猜你喜欢

人脸头部姿态
有特点的人脸
自动驾驶走向L4 企业头部效应显现
一起学画人脸
火箭的头部为什么是圆钝形?
攀爬的姿态
三国漫——人脸解锁
全新一代宋的新姿态
跑与走的姿态
长得象人脸的十种动物
蚝壳巧制作