融合表观与曲率特征的三维点云眉毛提取
2020-07-04余元辉蔡囯榕
赵 青,余元辉,蔡囯榕
(1.集美大学理学院,福建 厦门 361021;2.集美大学计算机工程学院,福建 厦门 361021)
0 引言
随着智能安防的快速发展和三维数据的深入研究,人脸识别技术的研究也逐步从二维人脸识别转向三维人脸识别。眉毛作为三维人脸数据重要的特征之一,具有独特的形状特征及纹理特征,即具有较好的身份特异性,使得眉毛提取在人脸识别、人脸图像美化等方面具有重要的研究价值。Sadr等[1]将人脸图像划分为缺失眉毛区域的图像和缺失眼睛区域的图像两类,通过对比两类图像的识别率说明了眉毛的识别率高于眼睛的识别率。已有的算法,例如特征串算法[2]、PCA算法[3],小波和SVM算法[4]、HMM算法[5]等,均是基于二维人脸图像进行眉毛提取,然而现实生活中的图像形变、光照变化等因素都会降低眉毛的识别特性。
陈智等[6]编码三维人脸模型顶点的几何信息构成正方形切平面描述符,采用随机森林算法进行面部区域分类,实现了三维人脸模型中眉毛、眼睛、嘴巴、鼻子的区域识别率达到了94.46%,但三维人脸模型的区域分割需要手工标记,尚达不到精准区域分割。Tsalakanidou等[7]基于局部特征检测器和人脸跟踪器,提出了完全自动化的人脸表情识别系统,基于眉毛形变实现细微的人脸动作和表情的有效分类,该方法的识别效果优于完全基于2D图像的人脸表情识别方法,但是受三维模型姿态的影响较大。在此基础上,Liu等[8-9]提出了一种分层CRF(conditional random field algorithm)方法进行眉毛和周期性头部姿态识别,通过标记3D人脸特征点并投影到2D平面上,同时采用鲁棒的人脸跟踪器进行2D人脸特征点标定,并依据眉毛区域的特征点确定眉毛区域,从而检测眉毛抬高或降低的幅度,但在提取几何特征和表观特征的过程中,需要进行特征排序,有序特征的识别提高了识别率的同时增加了计算量,特征如何排序达到最优识别结果也是一个较难处理的问题。Lei等[10]通过自动获取三维点云数据和深度图像上12个特征点以及二维图像映射到三维点云数据上的8个特征点,选取25个三维特征点之间的欧氏距离作为特征向量进行6种表情识别,平均识别率为87.1%,但无法实现三维点云上的特征点的全自动获取。杜星悦等[11]将三维人脸模型进行正交投影获得相对应的二维人脸深度图像和特征点,在卷积神经网络下实现眉毛、眼睛、嘴巴、鼻尖等区域的特征点定位,解决了需要手工标定三维人脸关键点且耗时长的问题,却忽略了初始标定三维特征点的准确度。
在此基础上,为了有效提取三维眉毛区域,本文以DMCSv1[12]数据库中的三维点云数据为实验数据,基于Matlab进行了三维眉毛区域提取的一系列仿真实验。
1 预处理
1.1 数据预处理
通过3D结构光技术获取的三维点云数据,包括头发、面部、耳朵、颈部、衣领的信息,其中的冗余信息、密度不均、离群点、孔洞、噪声等问题均会对眉毛提取操作造成干扰并增加复杂度[13]。因此高质量三维人脸数据对人脸关键点的提取和鼻尖点定位具有不可忽略的重要性。本文移除离群点与填充孔洞的具体方法为:
1)移除离群点。基于数理统计方法,利用点云库中的条件删除和统计异常值删除过滤器[14]对原始点云人脸数据(见图1a)进行滤除离群值处理(见图1b)。
2)填充孔洞。利用点云的法线与周围点云的拓扑结构建立同构关系,使得所有的点构成三角网格,同时孔洞部分的三角网格逼近其真实的拓扑结构,数据处理结果如图1c所示。
1.2 鼻尖点定位
本文在文献[15-17]的基础上进行鼻尖点定位。初始化包含n个顶点V=(v1,v2,…,vn)的三维点云正面人脸数据,记点云数据为:
(1)
2 融合表观和曲率特征提取三维眉毛区域
本文提出的三维眉毛区域提取方法结合3D-2D投影方法、二维图像的人脸关键点算法、Z值回归方法获取三维点云对应的眉毛区域关键点,构建眉毛区域的感兴趣区域ROI(region of interest),融合曲率和表观特征验证眉毛区域提取的可行性。
2.1 基于3D-2D-3D的眉毛关键点提取
本文提出了在3D-2D-3D的框架下实现三维点云数据中眉毛关键点的获取方法。3D-2D-3D框架是指三维点云数据通过一定的投影变换获得对应的二维图像数据,利用人脸关键点算法获得二维图像上的眉毛区域的关键点,再将关键点通过Z值回归至原三维空间,确定三维点云中眉毛区域的关键点。
2.1.1 3D-2D投影及特征点的可视化
3D-2D之间投影变换[19-21]关系的相关研究已相对成熟,假设投影得到的二维图像表示为:
(2)
设三维点云投影到二维平面的投影矩阵为P,图像坐标系转换到像素坐标系的变换矩阵为Pc,则投影过程为:I(U,V)=Pc°P(SP)。
三维点云数据SP中每个顶点s(xi,yi,zi)投影到xoy平面的像素点I(ui,vi),本文通过对已经训练好的Dlib库中68点人脸关键点算法[22]、DAN(deep alignment network)算法[23]、OpenPose开源库中69点人脸关键点算法[24]的实验结果比对发现:DAN算法不适用于本文投影得到的二维图像,Dlib库的68点人脸关键点算法对二维图像的关键点标定有较大误差,69点人脸关键点算法的关键点标定误差最小。基于此,对投影得到的二维图像I进行面部关键点标定,将眉毛区域的17到26共10个关键点进行提取,具体过程如图2所示。
2.1.2 2D关键点Z值回归
本研究将获得的图像I中眉毛区域关键点的像素坐标,进行投影逆变换以及Z值回归,进而确定三维空间中对应的关键点坐标。
2.2 基于表观特征提取三维眉毛区域
本文提出了一种R-RGB方法,即结合眉毛区域的ROI和眉毛本身的RGB特征实现三维眉毛区域的提取。
2.2.1 构建三维眉毛ROI
眉毛在面部区域的独特性表现在形状和颜色两方面,眉毛与其周围区域相比而言,具有RGB值突变、形状弯曲程度偏高的特点。以肉眼的视角可以直接提取出眉毛,但在三维点云数据中难以依据有限个关键点确定完整的眉毛区域大小,因此本文提出了一个基于眉毛关键点构建其ROI的方法。
在三维空间中确定标签为17到21的关键点为一组点集PL=(Xl,Yl,Zl),其中17≤l≤21,标签为22到26的关键点为一组点集PR=(Xr,Yr,Zr),其中22≤r≤26。已知人脸关键点算法在眉毛区域对应的10个关键点均位于眉毛上侧,以点集PL为例,确定5个关键点在各个方向上的取值范围,以关键点17的三维坐标为原点,以L=max(Xl)-min(Xl)为长,以W=max(Yl)-min(Yl)为宽,以H=max(Zl)-min(Zl)为高构建长方体,长方体内的三维点云数据为ROI区域(即图4红色区域)包含的点云数据,此时长方体为包含眉毛的最小区域。
2.2.2 确定ROI的点云灰度阈值
在三维点云数据中主要存在肤色和发色两种色彩,表明这两种色彩之间存在一个阈值可以将其区分开来。左眉毛和右眉毛的灰度值并不一致,主要是数据本身在采集过程中造成的。将三维点云数据的RGB值转换为灰度值(Gray)Go:
Go=R×0.299+G×0.587+B×0.114。
(4)
设置肤色与发色之间的阈值为TL,TR,根据特征点Gray值的平均值以及文献[25]中的Gray值,确定TL,TR,并提取出眉毛区域的点云Se(X,Y,Z)。
2.3 曲率描述子
在三维点云中每个顶点都具有曲率特征,曲率特征不会随着外界影响因素的变化而有所波动,因此用曲率来表示眉毛的形状具有稳定性。三维点云人脸数据是不规则曲面,构成的表面高低起伏不同,鼻子区域位于面部凸区域,内眼角位于面部凹区域,曲率变化相差最大。而眉毛区域位于内眼角区域之上,其本身也具有一定的弯曲程度,导致眉毛区域也具有较为明显的曲率变化。
当α=1时,该广义熵指数就是泰尔指数。泰尔指数具有可加分解性,通过分解成为组内差异和组间差异,从而可以看出区域之间发展差距以及各区域内部发展差距。泰尔指数最终分解为:
2.4 算法流程介绍
本文三维眉毛区域提取的算法流程如下:
输入:归一化处理后的点云数据SP(X,Y,Z)
输出:三维眉毛区域的点云Se(X,Y,Z)
1:I(U,V)=PC°P(SP(X,Y,Z));
2:I(ui,vi)=Open pose(I(U,V));
3:fori=17 to 26:
4:si+p(xi,yi,zp)=min(D(s(xp,yp),I(xi,yi)));
5: Whilesi+p(xi,yi,zp)∈SP(r3):
sf(xf,yf,zf)=min(e);
6: ROI=V(L,W,H);
8:returnSe(X,Y,Z)。
3 实验结果与分析
本文的仿真实验环境为Windows 10系统,搭载i7-8565U的CPU、NVIDIA GeForce MX-150的GPU,基于Matlab 2016a,实验结果仅为该配置下的运行结果。
3.1 数据集
DMCSv1[12]数据库中的三维面部点云数据是使用如图5所示搭建的MBS站(多模式生物识别系统站)测量装置获取的,包括左右面部点云数据以及融合之后的面部点云数据。该数据库有35个受试者,其中女性受试者有2名,所占比例为5.7%,男性受试者为33名,所占比例为94.3%。受试者面部均未进行化妆等修饰,每人有中性、微笑、生气、伤心、无聊的表情。按眉毛形状划分,粗直型眉毛的受试者有12名,所占比例为34.3%;弯曲型眉毛的受试者有11名,所占比例为31.4%;浅直型眉毛的受试者有12名,所占比例为34.3%。
3.2 实验结果
三维点云数据的Log-曲率(见图6a)整体偏小,取值范围在[-inf,0.0686],将其坐标轴取值范围扩大,增强Log-曲率之间的对比度。从曲率效果图可以发现眉毛的整体Log-曲率与面部区域存在明显差异,同时与眼睛部分的曲率区分较大,使得眉毛区域的形状与轮廓整体较为突出。三维点云数据的平均曲率(见图6b)整体集中在[-0.7876,0.8080],增强平均曲率之间的对比度,眉毛区域的平均曲率相较于面部的曲率对比明显,由于内眼角区域与眉毛部分的平均曲率差异较大,使得眉毛区域更加突出,但是眉毛区域与额头区域的平均曲率差异较小,使得眉毛的轮廓模糊,对眉毛区域形状的凸显效果较差。
针对DMCSv1数据库中的点云数据,数据在采集过程中有诸多影响因素,以至于RGB分布不均。直接利用RGB的方法,记为D-RGB法,与本文方法进行了效果对比,结果发现:D-RGB方法有诸多干扰区域,效果不理想,如图7所示。R-RGB方法提取三维眉毛区域效果如图8所示,针对不同表情,如中性表情、微笑表情、生气表情的三维点云数据,情绪的变化对眉毛区域的ROI影响微小,验证了眉毛区域的稳定性。就整个眉毛区域的提取效果而言,对眉头区域的提取较为准确,但对稀疏的与肤色接近的眉尾区域的提取效果仍有待提高。
按眉毛形状主要划分为直眉和弯眉两大类,其中直眉又分为颜色浅且短直(S-P)和颜色深且直(S-D)的眉毛。由图9可知,针对S-P类型的眉毛,对眉头区域的提取效果较为准确,但对眉毛尾部区域的提取不够细致;针对S-D类型的眉毛,因为眉毛相对于肤色更加明显突出,所以眉毛整体区域的提取效果较为准确。相对而言,弯眉也分为颜色浅且弯曲(C-P)和颜色深且弯曲(C-D)的眉毛。由图9可以看出,针对C-P类型的眉毛,特别是女性的眉毛颜色更浅且细,导致整体眉毛的提取与原始眉毛区域存在差异;针对C-D类型的眉毛,由于眉毛点云的颜色与周围点云的肤色相差较大,眉毛点云的提取更加接近原始眉毛轮廓。
结合不同表情,不同眉毛形状的提取结果,可以发现,本文所提方法具有有效性和可行性。
4 结论
本文的主要工作是实现三维眉毛提取。在3D-2D投影的基础上提出了一个3D-2D-3D框架,结合人脸关键点算法实现了三维点云数据中眉毛关键点的自动提取;通过构建眉毛的ROI,以曲率说明眉毛形状,利用灰度阈值进一步实现眉毛区域的提取。实验结果表明,针对DMCSv1数据库中不同表情的三维点云数据,本文提出的方法一方面有效缩小了目标区域,极大地减少了计算量,另一方面利用RGB特征在ROI区域将眉毛提取出来,快速、简便且有效,具有一定的可行性。