基于双目立体视觉的人脸三维重建方法与流程

文档序号:12787354阅读:271来源:国知局
基于双目立体视觉的人脸三维重建方法与流程

本发明涉及双目立体视觉技术领域,尤其涉及一种基于双目立体视觉的人脸三维重建方法。



背景技术:

人脸的三维结构信息广泛的应用在人脸图像处理中,例如人脸识别、人脸跟踪、人脸对齐等方面。在过去几年,国内外研究者提出了许多人脸三维重建的方法,一类方法是基于硬件设备进行三维人脸结构的采集,如使用三维激光扫描仪、结构光扫描仪等。这类方法能够获得精度较高的人脸三维结构数据,但是需要使用价格昂贵的硬件设备,使得此方法具有造价高、不灵活、复杂度高等诸多限制,并不适合应用于普通场合。另一类方法是基于视频或者基于多角度照片的三维人脸重建方法,这类方法成本低,使用灵活,能够应用在日常生活中。

基于双目立体视觉的人脸三维重建属于第二类方法中的一种,如何使用双目立体图像来重建人脸的三维结构仍然是一个有挑战的问题,这种方法只使用一对图像,它们来自双目摄像头的左摄像头和右摄像头,从而对人脸的三维信息进行恢复。目前存在很多双目匹配的方法,包含全局立体匹配算法和局部立体匹配算法,如BM算法、SGM算法、Meshstereo算法等。但是人脸区域的低纹理问题是人脸三维重建主要需要解决的问题。因此,提出了专门针对人脸结构的双目立体匹配方法,如基于人脸先验的块匹配方法、基于种子点增长法等进行三维人脸结构的恢复,这类方法采用高分辨率(1380是人脸区域的的摄像头采集设备,获得较高准确的结果,或者采取普通分辨率(640采集设备,的摄像头,但是获得的人脸精度比较差。由于人脸是曲面结构,而基于视差平面的立体匹配算法针对曲面结构的能够进行很好的恢复。结合人脸初始结构视差,通过立体匹配算法获取人脸的三维结构。



技术实现要素:

鉴于上述技术问题,本发明提供了一种基于双目立体视觉的人脸三维重建方法。

根据本发明的一个方面,提供了一种基于双目立体视觉的人脸三维重建方法

该双目立体视觉的人脸三维重建方法包括:

步骤A,构建双目立体视觉系统,其中,所述双目立体视觉系统包括左摄像装置和右摄像装置;

步骤B,利用所述双目立体视觉系统采集人脸图像,由左摄像装置得到左图像,由右摄像装置得到右图像;对左图像和右图像进行立体校正;检测左图像和右图像中的人脸区域;

步骤C,对于左图像和右图像中的人脸区域,进行人脸关键点的定位和匹配;

步骤D,利用匹配的人脸关键点进行脸部稠密视差初始化,得到初始化视差;

步骤E,通过立体匹配算法平滑初始化视差;以及

步骤F,结合平滑后的初始化视差进行人脸三维重建。

优选的,本发明双目立体视觉的人脸三维重建方法中,左摄像装置和右摄像装置为相同型号的相机或摄像头:

步骤A包括:

子步骤A1,对左摄像装置和右摄像装置进行标定,得到两者的内参数,畸变参数和对应三维点的外参数;基于左右摄像装置对应三维点的外参数,得到双目立体视觉系统的旋转矩阵R、平移矩阵T;

子步骤A2,基于左摄像装置的内参数和畸变参数、右摄像装置的内参数和畸变参数,以及求取的双目立体视觉系统的旋转矩阵R和平移矩阵T,得到左校正矩阵和右校正矩阵;

其中,左校正矩阵用于对左图像进行立体校正,右校正矩阵用于对右图像进行立体校正,经过左校正矩阵处理后的左图像中的点与经过右校正矩阵处理后的右图像中的匹配点在同一条扫描线上;

步骤B中对左图像和右图像进行立体校正包括:利用左校正矩阵对左图像进行立体校正,利用右校正矩阵对右图像进行立体校正。

优选的,本发明双目立体视觉的人脸三维重建方法中,子步骤A1包括:

子分步骤A1a,获取10~20组包含不同角度和方向的平面棋盘图像;

子分步骤A1b,对获取的平面棋盘图像进行棋盘监测,定位出所述三维点所对应的棋盘格中的角点;根据张正友标定方法和Brown算法,获取左摄像装置和右摄像装置的内参数、畸变参数和棋盘角点对应的外参数;

其中,所述棋盘角点对应的外参数包括:左摄像装置的旋转矩阵Rl和左摄像装置的平移矩阵Tl;右摄像装置的旋转矩阵Rr和右摄像装置的平移矩阵Tr

子分步骤A1c,将角点Q输入到左右摄像装置的摄像装置坐标系,对应左图和右图的坐标点Ql和Qr,存在如下式关系:

Ql=RlQ+Tl

Qr=RrQ+Tr

Ql=RT(Qr-T)

其中,Q为角点Q在世界坐标系的三维坐标,左图为左摄像装置得到的图像,右图为右摄像装置得到的图像,推出下面关系:

R=Rr(Rl)

厂=Tr-RTl

根据给定棋盘格的角点的对个联合视图,以及每个角点所对应的外参数矩阵,求解出旋转矩阵R和平移矩阵T;由于图像噪声和舍入误差,每一对棋盘都会使得R和T的结果出现细小不同,选用R和T参数的中值作为真实结果的初始值,运用Levenberg-Marquardt迭代算法查找棋盘角点在两个摄像装置视图上的最小投影误差,返回旋转矩阵R和平移矩阵T的结果。

优选的,本发明双目立体视觉的人脸三维重建方法中,子步骤A2中,利用Bouguet算法,左摄像装置的内参数和畸变参数、右摄像装置的内参数和畸变参数,以及求取的双目立体视觉系统的旋转矩阵R和平移矩阵T,得到左校正矩阵和右校正矩阵。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤B中运用Haar-Adaboost分类器检测左图像和右图像上的人脸区域。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤C包括:

子步骤C1,定位左图像和右图像中人脸区域的人脸关键点;

子步骤C2,匹配左图像和右图像中相关的人脸关键点,获得人脸先验的稀疏拓扑信息-左图人脸形状SL和右边人脸形状SR,其中左图人脸形状SL包含左脸关键点坐标{(lxi,lyi),i∈[1,n]},右边人脸形状SR包含右脸关键点坐标{(rxi,ryi),i∈[1,n]},n代表关键点的总数。

优选的,本发明双目立体视觉的人脸三维重建方法中,子步骤C1中,结合回归树集合ERT算法定位左图像和右图像的人脸关键点。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤D包括:

子步骤D1,计算左图像和右图像中匹配的人脸关键点的视差;

子步骤D2,利用左图像和右图像中匹配的人脸关键点的视差,计算左图像和右图像中除匹配的人脸关键点之外的其他点的视差,实现人脸视差的稠密化,得到初始化视差。

优选的,本发明双目立体视觉的人脸三维重建方法中,子步骤D1中,依据下式计算左图像和右图像中匹配的人脸关键点的视差:

其中,lxi代表第i个人脸关键点在左图像的所在的列,rxi代表在右图像中与其匹配的人脸关键点所在的列,视差D(pi)代表相对应的人脸关键点的列坐标差的绝对值,i=1,2,3,......,n,n为匹配的关键点的个数。

优选的,本发明双目立体视觉的人脸三维重建方法中,子步骤D2包括:

子分步骤D2a,利用脸部定位出的关键点对脸部进行Delaunay三角剖分,将脸部划分成n个三角形;

子分步骤D2b,对于每一个三角形,通过三角形的三个顶点视差获得三角形内点的视差,实现人脸视差的稠密化,得到初始化视差。

优选的,本发明双目立体视觉的人脸三维重建方法中,子分步骤D2b中,通过三角形的三个顶点视差获得三角形内点的视差包括:

三角形的三个顶点为p1,p2,p3,对于三角形内的点p,都存在一个u和v,使得p点与点p1,p2,p3存在关系如公式:

px=(1-u-v)·p1x+u·p2x+v·p3x

py=(1-u-v)·p1y+u·p2y+v·p3x

通过将p点的坐标(px,py),p1点的坐标(p1x,p1y),p2点的坐标(p2x,p2y),p3点的坐标(p3x,p3y)代入公式解出u和v参数;

由公式进行插值运算得到点p的视差D(p):

D(p)=(1-u-V)·D(p1)+u·D(p2)+V·D(p3)。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤E包括:

子步骤E1,利用代价计算得到左右两图对应点的相似度,得到左右两图对应点的匹配代价;

子步骤E2,利用代价聚合计算,通过左右两图对应点匹配代价,得到所述对应点周围点的聚合代价;

子步骤E3,选用最小聚合匹配代价的平面作为最优平面,反求出像素点视差。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤E1匹配代价的计算方法为:

G点为中心点,G点的亮度值I(G),N(G)代表以G为中心,半径为d的方形邻域内,邻域N(G)内的像素点的亮度值I(G′)为邻域N(G)内的像素点的亮度值,若邻域内的点的G′的亮度值小于G,则点G′的位置上的值记为1,反之则为0,即为ε(G,G′);

将邻域内的点的值串联起来,完成变换,值为Rτ(G),其公式如下:

对每一个点进行这样的变换后,左右两幅图点与点的相似性则为计算对应点的变换值的哈明距离H,距离越小,表示相似度越高,从而求出像素J,K之间的匹配代价为:

ρ(J,K)=H(R(J),R(K));

所述子步骤E2中,所述代价聚合计算公式为:

其中K为一像素点,J为WK下一点,WK代表像素K的方形窗口,dK=afKx+bfKy+cf代表像素K点的视差,W(J,K)为权重函数;

所述权重函数W(J,K)考虑到方形窗口内的边缘问题,利用两点的颜色相似度来定义权值函数,如果颜色相近则赋予高权重,反之,则赋予低权重,表示如公式所示:

其中,γ是定义的参数,||IJ-IK||表示J和K的RGB颜色空间的L1范数。

子步骤3中,视差计算包括最优平面计算,其计算公式为:

其中,F代表所有的视差平面,fJ作为J点的最优平面,通过最优平面的参数反求出像素的视差。

优选的,本发明双目立体视觉的人脸三维重建方法中,步骤F包括:

选取任意二维点S,其坐标为(x,y),相关联的视差d,将此点投影到三维中,三维坐标为(X/W,Y/W,Z/W),得到矩阵:

其中,O为投影矩阵,

O中cx表示主点左图像的x坐标,cy表示主点左图像的y坐标,Tx表示两个摄像装置之间的基线长度,f代表摄像装置的焦距,cx′表示主点右图像的x坐标;

通过上述公式求得像素点所对应的三维坐标,从而得到人脸三维结构。

从上述技术方案可以看出,本发明基于双目立体视觉的人脸三维重建方法至少具有以下有益效果其中之一:

(1)本发明针对人脸的曲面结构,采用视差平面的立体匹配算法,恢复更加平滑的人脸三维结构;

(2)本发明采用人脸先验结构,以此为基础初始化视差平面,提高了人脸三维重建结果的准确度;

(3)本发明采用普通摄像头作为图像的采集设备,能够节约设备的成本。

附图说明

图1为本发明实施例基于双目立体视觉的人脸三维重建方法的流程图。

图2为本发明实施例基于双目立体视觉的人脸三维重建方法的子步骤A1的流程图。

图3为本发明实施例基于双目立体视觉的人脸三维重建方法的子步骤D2的流程图。

图4为立体匹配视觉的几何模型。

具体实施方式

本发明提供了一种基于双目立体视觉的人脸三维重建方法。该人脸三维重建方法只使用一对图像,它们来自双目摄像头的左摄像头和右摄像头,从而对人脸的三维信息进行恢复。

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

参照图1至图4对本发明的实施例进行说明。

下面结合附图和具体实施方式来发明做出进一步描述。

如图1所示,首先,利用两台摄像机搭建平行的双目立体视觉系统,分别标定两台摄像机内外参数,并校正双目相机,使得相机的匹配点位于同一行,然后同时各拍摄人脸的一幅图像,使用Viola-Jones人脸检测方法,结合回归树集合(Ensemble ofRegression Trees,ERT)算法对左右图像进行人脸关键点定位,接着匹配左右关键点,恢复人脸稀疏的视差估计,运用线性插值算法初步估计脸部稠密的视差,结合基于视差平面的Patchmatch立体匹配算法对得到的视差进行平滑处理,重建脸部稠密的视差。根据标定的参数和对应点的视差,恢复出稠密的人脸三维点云信息。

下面对具体的实施过程分块进行描述:

步骤A:构建双目立体视觉系统,其中,所述双目立体视觉系统包括左摄像装置和右摄像装置;

利用两个同等型号的摄像头,平行放置,搭建双目立体视觉系统。并对两个摄像机进行参数标定及校正。

为了通过立体匹配算法重建出人脸的三维结构,首先必须获取摄像机的内参数和两个相机的相对基线参数,才能根据三角测量原理从像素点的视差恢复对应的三维坐标。这就需要首先对相机进行标定。

子步骤A1:

对左摄像装置和右摄像装置进行标定,得到两者的内参数,畸变参数和对应三维点的外参数;基于每个三维点对应的左右摄像装置的外参数矩阵,得到双目立体视觉系统的旋转矩阵R、平移矩阵T和左右摄像装置的相对基线参数。

本发明基于平面棋盘格标记物的摄像机标定方法。两个摄像机获取左右两个输入的棋盘图像。根据张正友标定方法,获取10到20组包含不同角度和方向的平面棋盘图像。接着进行摄像机标定,首先对输入对象进行棋盘检测,然后定位出三维点对于棋盘格中的角点。

根据张正友的标定算法和Brown算法,分别获取左右摄像机的内参数、畸变参数和每个棋盘格上的每个角点的对应的外参数,完成左右摄像机的标定和矫正。

这样得出了空间一点与图像中此点所对应的关系。对于之前记录的棋盘格上的某一角点Q,以及利用计算出的相对应的外参数矩阵,包括对左相机的旋转矩阵Rl和平移矩阵Tl,以及对右相机的旋转矩阵Rr和平移矩阵Tr

将Q点输入到左右摄像机的摄像机坐标系,对应左图和右图的坐标点Ql和Qr,存在如下式关系:

Ql=RlQ+Tl

Qr=RrQ+Tr

Ql=RT(Qr-T)

其中双目相机相对的旋转矩阵R和平移矩阵T,推出下面的简单关系:

R=Rr(Rl)

T=Tr-RTl

根据给定棋盘格的角点的对个联合视图,以及每个角点所对应的外参数矩阵,可以求解出旋转矩阵R和平移矩阵T。由于图像噪声和舍入误差,每一对棋盘都会使得R和T的结果出现细小不同。选用R和T参数的中值作为真实结果的初始值,运用Levenberg-Marquardt迭代算法查找棋盘角点在两个摄像机视图上的最小投影误差,并返回R和T的结果,从而得到双目立体视觉系统的旋转矩阵R、平移矩阵T和左右摄像机的相对基线参数。

子步骤A2:

基于双目立体视觉系统的旋转矩阵R,平移矩阵T,左右相机的内参数以及畸变参数矩阵,得到左校正矩阵和右校正矩阵。

由于摄像头不能完全的有准确的共面行对准,所以对两台摄像机的图像平面进行重投影,使得它们精确落在同一个平面上,而且图像的行完全地对准到前向平行的结构上。这样的校正,可以简化搜索范围。经过校正后的左右图,使得左图的点与右图的相关的匹配点在同一条扫描线上。如果不进行极线校正,对于图像上的某一点,需要计算此点的在对应图像上的极线,并在这条极线上搜索对应的匹配点,这条线既不平行也不垂直,增大了计算的复杂度,也增加了搜索的范围。此处选用Bouguet算法进行立体校正,利用上述得到的左右相机的内参数矩阵,畸变参数矩阵以及双目相机间的旋转矩阵和平移矩阵,求解出左校正矩阵和右校正矩阵,使两图像中的每一幅重投影次数最小化,同时使得观测面积最小化。

步骤B:

对于左图像和右图像中的人脸区域,进行人脸关键点的定位和匹配。

利用搭建的双目立体视觉系统中的左右摄像头采集人脸图像,并使用人脸检测算法与关键点定位算法对两幅图像进行人脸检测与关键点定位。

子步骤B1:

运用Haar-Adaboost分类器检测左右图像上的人脸区域,结合回归树集合ERT算法定位出左图像和右图像的人脸关键点。

子步骤B2:

匹配左图像和右图像中相关的人脸关键点,获得人脸先验的稀疏拓扑信息-左图人脸形状SL和右边人脸形状SR,其中左图人脸形状SL包含左脸关键点坐标{(lxi,lyi),i∈[1,n]},右边人脸形状SR包含右脸关键点坐标{(rxi,ryi),i∈[1,n]},n代表关键点的总数。

步骤C:

利用匹配的人脸关键点进行脸部稠密视差初始化,得到初始化视差。

子步骤C1:

计算左图像和右图像中匹配的人脸关键点的视差:

由于左右图像是经过立体校正的,所以左右匹配的人脸关键点位于同一行。人脸关键点pi的视差D(pi)的计算如公式所示:

其中,lxi代表人脸关键点在左图像的所在的列,rxi代表在右图像中与其匹配的人脸关键点所在的列,视差D(pi)代表相对应的人脸关键点的列坐标差的绝对值。

但是对于人脸的结构来说,这样的视差太过稀疏,不能够很好的描述人脸的结构。

子步骤C2:

利用左图像和右图像中匹配的人脸关键点的视差,计算左图像和右图像中除匹配的人脸关键点之外的其他点的视差,实现人脸视差的稠密化,得到初始化视差。

子分步骤C2a:

利用脸部定位出的关键点对脸部进行Delaunay三角剖分,将脸部划分成n个三角形。

子分步骤C2b:

对于每一个三角形,通过三角形的三个顶点视差获得三角形内点的视差

此处假设,位于同一三角形内的点的视差与三角形三个顶点的视差成线性关系,从而通过一个三角形的三个顶点视差获得三角形内点的视差。如果三角形的三个顶点为p1,p2,p3。对于三角形内的任意点p,都存在一个u和v,使得p点与点p1,p2,p3存在关系如公式

p=(1-u-v)·p1+u·p2+v·p3

p点的坐标为(px,py),p1点的坐标为(p1x,p1y),p2点的坐标为(p2x,p2y),p3点的坐标为(p3x,p3y),它们满足公式的关系,此时就能解出u和v参数。

px=(1-u-v)·p1x+u·p2x+v·p3x

py=(1-u-v)·p1y+u·p2y+v·p3y

从而由公式进行插值运算得到对p点的视差D(P):

D(p)=(1-u-v)·D(p1)+u·D(pp2)+v·D(p3)

得到了整个脸部稠密的初始视差。

步骤D:

通过立体匹配算法平滑初始化视差。

传统的局部的立体算法以整数视差作为支持窗,并且假设同一支持窗内的像素点具有相同的视差,但是这个假设对于曲面或者倾斜的表面不成立,这样会导致前向平行的表面出现一定的偏差。基于视差平面的方法,如Patchmatch方法,对于图片上的像素(x0,y0),对应的视差为d,对应的视差平面f,af,bf,cf表示平面f,单位向量表示平面的法向量。如图2所示,立体匹配算法主要包含代价计算、代价聚合、视差计算和后处理四个步骤。

子步骤D1:

利用代价计算得到左右两图对应点的相似度,得到左右两图对应点的匹配代价。

匹配代价的计算直接影响算法精度和效率。经过选择,本专利采用census算法来计算对应点的相似度,这个算法具有灰度不变性,使得像素灰度值的具体大小和编码之间的相关性不强,只关注像素之间的大小关系,对噪声具有一定的鲁棒性。准则就是将邻域内的元素与中心元素作比较,具体的方法如下式所示:

以G点为中心点,将此点的亮度值I(G)与其邻域N(G)内的像素点的亮度值I(G”)进行比较。N(G)代表以G为中心,半径为d的方形邻域内,若邻域内的点的G′的亮度值小于G,则点G′的位置上的值记为1,反之则为0,即为ε(G,G·)。将邻域内的点的值串联起来,完成变换,值为Rτ(G)。对每一个点进行这样的变换后,左右两幅图点与点的相似性则为计算对应点的变换值的哈明距离片。距离越小,表示相似度越高。像素J,K之间的匹配代价ρ(J,K)=H(R(J),R(K))。

子步骤D2:

利用代价聚合计算,通过左右两图对应点匹配代价,得到所述对应点周围点的聚合代价。

对于某一个像素点J在视差平面f下与其WK范围下点K的聚合视差代价m,如公式所示:

其中WK代表像素K的方形窗口,dK=afKx+bfKy+cf代表像素K点的视差。平面参数af,bf,cf可通过公式转换成平面单位法向量

权重函数W(J,K)考虑到方形窗口内的边缘问题,利用两点的颜色相似度来定义权值函数,如果颜色相近则赋予高权重,反之,则赋予低权重,表示如公式所示:

其中,γ是定义的参数,||IJ-IK||表示J和K的RGB颜色空间的L1范数。

子步骤D3:

选用最小聚合匹配代价的平面作为最优平面,反求出像素点视差。

对于某个像素点J选用具有最小的聚合匹配代价m的平面fJ作为当前点的最优平面,如公式所示:

F代表所有的视差平面,所对应的解是无穷多的。通过下面的方式找到较优的平面参数。首先初始化平面参数和视差参数,将求得的稠密人脸视差用来初始化参数d,将人脸结构约束在视差中,其余参数随机初始化。通过迭代进行空间传播,视角传播和平面细化三个步骤来优化参数平面。

最后找到最优的参数平面,反求出像素点所具有的视差。

步骤E:

结合平滑后的初始化视差进行人脸三维重建。

结合得到的相机内参数,相机的相对基线参数,以及像素点所对应的平滑后的初始视差。经过校正后的双目相机根据三角测量原则,如图4所示,从下面公式,将任意一个二维点S,其坐标为(x,y),和相关联的视差d,将此点投影到三维中,三维坐标为(X/W,Y/W,Z/W)。

其中O为投影矩阵,

O中cx表示主点左图像的x坐标,cy表示主点左图像的y坐标,,Tx表示两个摄像头之间的基线长度,L代表相机的焦距,cx′表示主点右图像的x坐标,主点为主光线与图像平面相交的点。

这样通过以上的公式,可以得出像素点所对应的三维坐标,以此可以得到人脸的三维结构。

本发明针对人脸的曲面结构,采用视差平面的立体匹配算法,恢复更加平滑的人脸三维结构;采用人脸先验结构,以此为基础初始化视差平面,提高了人脸三维重建结果的准确度。

至此,本发明实施例介绍完毕。

至此,已经结合附图对本实施例进行了详细描述。依据以上描述,本领域技术人员应当对本发明基于双目立体视觉的人脸三维重建方法有了清楚的认识。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各方法的定义并不仅限于实施例中提到的各种具体方式,本领域普通技术人员可对其进行简单地更改或替换,

还需要说明的是,本文可提供包含特定值的参数的示范,但这些参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应值。实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本发明的保护范围。此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1