APP下载

基于三维镜框建模的眼镜虚拟试戴系统

2022-09-14章锌栋付东翔

电子科技 2022年9期
关键词:镜框人脸姿态

章锌栋,付东翔

(上海理工大学 光电信息与计算机工程学院,上海 200093)

随着互联网的发展,网上购物逐渐成为新的消费方式。在网上购买眼镜产品时,眼镜的配戴效果是重要的衡量因素,因此针对该问题进行研究,对提高虚拟眼镜试戴的真实性与时效性,提高用户的购物体验具有一定的现实意义。

目前已有的关于眼镜虚拟试戴技术的研究主要有3大类[1]:(1)基于2D图像,在用户的正面图像上添加2D眼镜图像。从技术上讲,这种方法相对简单,已被广泛地应用于商业用途。但它只能处理正面视图[2];(2)将3D眼镜模型结合在2D的面部图像上。当用户旋转头部时,该方法不能解决遮挡问题;(3)基于人脸三维模型[3]。该方法将眼镜模型添加到重建的三维人脸模型上,虽然可解决遮挡问题,但是人脸的重建具有一定难度,不仅会耗费大量的时间,且所获得的纹理始终缺乏真实感,使用体验效果不佳[4]。

针对这些问题,本文提出了一种三维镜框建模与人脸姿态估计相结合的方法。首先利用特征点检测和头部姿态估计来获取人脸在空间维度上的旋转角度;然后借助可视化工具包构造三维眼镜模型,将处理后的眼镜模型与人脸融合。相比于已有的3种类型的虚拟试戴技术,本文所提方法不仅可以解决试戴角度单一的问题,还不需要重建三维人脸模型[5],避免了繁琐的计算。除此以外,本文所提方法无需借助深度相机[6]、3D扫描仪[7]等特殊硬件来解决消隐问题,且试戴的真实感和实效性良好,符合基本的试戴要求。

1 单幅图像的特征点定位和姿态估计

人脸检测的核心是寻找人脸区域的特征。根据人脸检测的依据信息类型,可将人脸检测方法大致分为以下4类:基于先验规则的方法、基于灰度信息的方法、基于几何形状的方法、基于机器学习[8]和深度学习[9]的统计类方法。

本文眼镜虚拟试戴的核心是人脸特征点的精确定位,对算法的鲁棒性要求较高。与其余3种类型的检测方法相比,基于统计学习的人脸检测方法在速度和准确率上都具有一定的优势,因此本文选用机器学习方法中的ERT级联回归树(Ensemble of Regression Trees)算法进行人脸对齐。

1.1 ERT算法定位单幅人脸特征点

ERT算法[10]通过创建级联的残差回归树GBDT(Gradient Boosting Decision Tree)[11]使人脸形状从当前的形状一步步回归到真实形状。每棵GBDT的每个叶子结点上都存储一个残差回归量,当输入落到一个节点上时,就将残差加到输入上,达到回归的目的。最终,将所有残差叠加在一起,完成人脸对齐。

当获得一张单幅人脸图像后,算法首先创建一个初始形状,即估计人脸特征点的大致位置;然后采用梯度增强算法减小初始形状和基本真值的平方误差总和。本文采用最小二乘法来最小化误差,得到每一级的级联回归因子,核心计算式为

(1)

图1 68个特征点定位Figure 1. Position of 68 feature points

1.2 基于特征点定位的人脸多角度姿态估计

本文用3个欧拉角(Pitch、Yaw、Roll)表示面部姿态信息[12]。

图2 面部姿态角Figure 2.Facial posture angle

通过章节1.1可以得到人脸特征点的二维坐标。为获得与二维坐标对应的三维坐标,本文使用通用3D人脸模型获得姿态估计所需要的6个点的三维坐标(X,Y,Z)。本文选取的6个点的坐标值如表1所示。

表1 3D坐标标定值

由表1可以看出,想要估计图像人脸的3个欧拉角,需要3个坐标系,即世界坐标系、相机坐标系和图像坐标系[13]。世界坐标系存储3D人脸模型的6个关键点的三维坐标,当明确旋转矩阵R与平移向量t后,通过经张正友相机标定法[14]标定完的标准相机将相机坐标系中的3D关键点投影到二维图像平面上。投影原理如图3所示。

图3图像投影原理Figure 3. Principle of image projection

如图3所示,O是相机中心,世界坐标系中存在一个3D点P(U,V,W),相机坐标系存在一个3D点Q(X,Y,Z)。通过一个旋转矩阵R与一个平移向量t即可得到P点和Q点的映射关系,如式(2)所示。

(2)

带入R和t,得式(3)。

(3)

在不考虑相机参数畸变的情况下,二维图像坐标系中的P点坐标(x,y)由式(4)得出

(4)

带入式(2),得式(5)。

(5)

相机的4个内参fx、fy、cx、cy可由张正友标定法算出。对单幅人脸图像,获取6个关键点的二维平面坐标带入式(5)。若已知三维头部模型6个关键点坐标,则可求得对应当前人脸的旋转矩阵R和平移向量t。最后将旋转矩阵R转化为以欧拉角表示的人脸旋转状态,即式(6)。

(6)

2 三维镜框建模

医学图像可视化技术通过对2D断层扫描图像序列进行三维重建来获得人体组织的三维数据。本文借鉴医学图像三维重建的过程[15],通过给定的3张眼镜结构图片,生成描述眼镜体内部切面信息的序列图片,并通过可视化技术构建眼镜的三维模型。

2.1 可视化工具包VTK

可视化工具包VTK(Visualzation Toolkit)是可视化领域的重要研发工具。本文主要通过面绘制中的Marching Cube算法[16]渲染三维眼镜模型。此算法利用体数据构造中间几何单元,并根据几何元素近似拟合目标物体的表面信息来完成绘制。

2.2 基于VTK的三维眼镜建模

首先需要对眼镜3个部分的图片进行预处理,包括图像尺寸调整、图像灰度化、去噪、阈值分割。经过预处理,可得到如图4所示的两张镜腿图片和一张镜框图片。

图4 预处理后的眼镜图片Figure 4. Preprocessed glasses picture

基于眼镜3部分的二维图片,通过列扫描图片像素值的方法,构造出264张序列图片,然后利用VTK生成三维镜框。不同角度的观测图如图5所示。

图5 三维眼镜空间展示Figure 5. 3D glasses space display

3 三维镜框处理及图片合成

当人脸姿态估计及基于VTK的三维镜框建模完成后,对根据人脸姿态估计旋转的三维眼镜模型进行抓拍处理,得到二维眼镜模型。图像分割与预处理流程如图6所示。

图6图像预处理流程Figure 6. Flow chart of image preprocessing

3.1 图像分割与预处理

通过轮廓查找找出眼镜图片中的所有轮廓。在一幅眼镜图片中,本文只截取眼镜框区域。在此基础上,可以求出横梁O1点在此区域中的相对位置。裁剪后的镜框模型如图7所示。

图7 裁剪后的镜框模型Figure 7. Cropped mirror frame model

眼镜的大小需要适应人脸图片,因此需根据人脸关键点信息按照一定比例放缩眼镜。由于两个眼角在人脸特征定位上更加稳定,因此本文选取人脸特征点中的37号和46号特征点,将这两个特征点横坐标之差的1.4倍作为眼镜图片的长度。

在图像融合过程中,白色背景会覆盖人脸,因此需要对眼镜图片进行透明化处理。本文通过在图片中加入一个透明通道来实现图片的透明化。本文选取了28号点作为眼镜O1点的贴合点。通过对眼镜图片进行裁剪、放缩、透明化操作后,即可进行初步试戴,如图8所示。

图8 初步的眼镜试戴Figure 8. Preliminary try-on glasses

如图8所示,左侧图像为不加眼镜腿的情况。在对眼镜腿未加处理时,右侧图像中出现镜腿遮挡人脸的情况,因此在图像融合中需要解决镜腿消隐问题[17]。

3.2 消隐处理

图9 镜腿长度及位置示意图Figure 9. Schematic diagram of length and position of the temples

如图9所示,两条眼镜腿之间存在平行关系,两条眼镜腿的实际长度比值可由眼镜腿在图像中水平方向像素长度的比值得出。利用人脸特征点信息以及镜框在人脸图像上的位置信息,可计算出左右两边眼镜腿实际展露出来长度的比值。在三维眼镜模型的建模中,可根据这个比例自适应调整镜腿,并通过重复以上试戴步骤,解决试戴的消隐问题。

4 试戴实验结果对比分析

4.1 算法精度测试与对比

为测试上述姿态估计算法的精度,本文选用带有关键点位置和姿态信息数据的AFLW(Annotated Facial Landmarks in the Wild)数据库进行测试。AFLW数据库有大约25 000张在现实生活中采集的图像,其图片的分辨率、背景、光线各不相同,被采集者的年龄、种族、姿态表情等也存在变化,其中头部姿态变化涵盖转动、俯仰、摆动。每个方向角度变化范围均在-90°~90°。本文测试集为1 000张随机抽取的图像,剔除存在脸部被遮挡的图片,最后测试集的图片数量为700张。测试数据如表2和表3所示,表2统计了头部不同姿态范围内的平均误差,表3统计了各误差范围内涵盖的图像数量百分比。

表2 姿态估计平均误差

表3 姿态估计误差统计结果

由表2可知,本文基于ERT算法的姿态估计算法在-60°~60°内的平均误差为9.6°。由表3可知,92%以上的俯仰和转动图像角度估计及85%以上的摆动图像角度的估计误差范围在±20°之内,基本满足虚拟佩戴技术的精度要求。

4.2 虚拟试戴效果与分析

本文实验算法环境如下:Intel(R) Core(TM) i7-6700HQ 2.60 GHz的CPU、16 GB内存、Windows10操作系统,Python3.6编程语言、PyCharm集成开发环境、OpenCV 4.2.0、VTK7.1.1。

本文选取3个不同视角下的图像对虚拟试戴效果进行测试,实验结果如图10所示。

图10 整体佩戴效果Figure 10. Overall wearing effect

文献[18]所提方法的试戴真实感和立体感较强,但仅能实现水平转动情况下的虚拟试戴,无法实现三维空间虚拟佩戴,且未解决消隐问题。其实验结果也只显示了一侧眼镜腿。文献[19]所提方法可实现不同倾斜姿态的虚拟试戴,且取得了良好的效果,但该方法只显示镜框正面的效果。本文提出的算法能实现三维多角度试戴,三维立体效果较好,也解决了消隐问题。采用本文方法后,虚拟眼镜和实际人脸基本无缝融合,试戴的真实感更强。

表4 本文方法与其他方法的比较

文献[20]利用人脸特征点的几何关系实现了人脸左右旋转的虚拟试戴,但该方法没有涉及人脸俯仰和倾斜这两个维度的旋转。此外,该方法也未解决消隐问题,所呈现出的试戴效果一般,缺乏真实感。文献[5]中,虽然试戴效果良好,且解决了消隐问题,但是需要创建3D人脸头部模型,纹理缺乏真实感。此外,该系统只能适应旋转的头部模型,并不适用于多角度的试戴。文献[7]使用深度相机构建3D面部可变模型,理论上可以解决消隐问题,但并未涉及人脸姿态估计,只展示了正面人脸的试戴效果,试戴效果一般且缺乏真实感。本文方法在保证试戴效果真实的前提下,不依赖复杂的硬件条件,无需重建3D人脸,还解决了消隐问题,可以支持不同姿态下的虚拟试戴。

本文统计了处理一张图像时,各模块的平均运行时间,如表5所示。

表5 各模块运行时间

由表5中可以看出,该虚拟眼镜试戴系统完成一张人脸图片试戴效果检测的时间约为14.57 ms,基本满足系统对时效性的要求。

5 结束语

本文对单幅人脸图像的人脸检测、面部特征点定位以及人脸姿态估计进行了研究,并结合VTK构建了三维镜框,提出了基于三维镜框建模的眼镜虚拟试戴系统。本文用三维模型替代了传统二维眼镜图片,解决了试戴角度单一、不支持消隐等问题。试验结果表明,采用本文方法可以提高头部姿态估计精确度,虚拟试戴效果逼真,三维立体效果良好。此外,本文方法能够根据图片中人脸空间旋转角度实现三维多角度试戴,且试戴系统运行速度较快,能较好地满足基本的虚拟试戴技术要求。未来的研究重点是提高人脸特征点的精度和鲁棒性,并进一步提高镜框和人脸图像融合效果的逼真度。

猜你喜欢

镜框人脸姿态
有特点的人脸
玻璃窗上的人脸
攀爬的姿态
一天比一天老
Geek潮流:我是爱凹造型的读书人
一天比一天老
“领家系”可爱脸VS“高冷系”美人脸
另一种姿态
金属画框生锈了怎么办?
长得象人脸的十种动物