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

文档序号:12787354阅读:来源:国知局

技术特征:

1.一种基于双目立体视觉的人脸三维重建方法,其特征在于,包括:

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

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

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

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

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

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

2.根据权利要求1所述的人脸三维重建方法,其特征在于,所述左摄像装置和右摄像装置为相同型号的相机或摄像头:

所述步骤A包括:

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

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

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

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

3.根据权利要求2所述的人脸三维重建方法,其特征在于,所述子步骤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)

T=Tr-RTl

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

4.根据权利要求2所述的人脸三维重建方法,其特征在于,所述子步骤A2中,利用Bouguet算法,左摄像装置的内参数和畸变参数、右摄像装置的内参数和畸变参数,以及求取的双目立体视觉系统的旋转矩阵R和平移矩阵T,得到左校正矩阵和右校正矩阵。

5.根据权利要求1所述的人脸三维重建方法,其特征在于,所述步骤B中运用Haar-Adaboost分类器检测左图像和右图像上的人脸区域。

6.根据权利要求1所述的人脸三维重建方法,其特征在于,所述步骤C包括:

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

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

7.根据权利要求6所述的人脸三维重建方法,其特征在于,所述子步骤C1中,结合回归树集合ERT算法定位左图像和右图像的人脸关键点。

8.根据权利要求6所述的人脸三维重建方法,其特征在于,所述步骤D包括:

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

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

9.根据权利要求8所述的人脸三维重建方法,其特征在于,所述子步骤D1中,依据下式计算左图像和右图像中匹配的人脸关键点的视差:

<mrow> <mi>D</mi> <mrow> <mo>(</mo> <msub> <mi>p</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msqrt> <msup> <mrow> <mo>(</mo> <msub> <mi>lx</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>rx</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> <mn>2</mn> </msup> </msqrt> <mo>=</mo> <mi>a</mi> <mi>b</mi> <mi>s</mi> <mrow> <mo>(</mo> <msub> <mi>lx</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>rx</mi> <mi>i</mi> </msub> <mo>)</mo> </mrow> </mrow>

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

10.根据权利要求8所述的人脸三维重建方法,其特征在于,所述子步骤D2包括:

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

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

11.根据权利要求10所述的人脸三维重建方法,其特征在于,所述子分步骤D2b中,通过三角形的三个顶点视差获得三角形内点的视差包括:

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

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

py=(l-u-v)·ply+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)。

12.根据权利要求1所述的人脸三维重建方法,其特征在于,所述步骤E包括:

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

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

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

13.根据权利要求12所述的人脸三维重建方法,其特征在于:

所述子步骤E1匹配代价的计算方法为:

<mrow> <mi>&epsiv;</mi> <mrow> <mo>(</mo> <mi>G</mi> <mo>,</mo> <msup> <mi>G</mi> <mo>&prime;</mo> </msup> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mi>i</mi> <mi>f</mi> <mi> </mi> <mi>I</mi> <mrow> <mo>(</mo> <msup> <mi>G</mi> <mo>&prime;</mo> </msup> <mo>)</mo> </mrow> <mo>&lt;</mo> <mi>I</mi> <mrow> <mo>(</mo> <mi>G</mi> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>s</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

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

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

<mrow> <msub> <mi>R</mi> <mi>&tau;</mi> </msub> <mrow> <mo>(</mo> <mi>G</mi> <mo>)</mo> </mrow> <mo>=</mo> <mo>&CircleTimes;</mo> <mi>&epsiv;</mi> <mrow> <mo>(</mo> <mi>G</mi> <mo>,</mo> <msup> <mi>G</mi> <mo>&prime;</mo> </msup> <mo>)</mo> </mrow> <mo>,</mo> <msup> <mi>G</mi> <mo>&prime;</mo> </msup> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>G</mi> <mo>)</mo> </mrow> </mrow>

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

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

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

<mrow> <mi>m</mi> <mrow> <mo>(</mo> <mi>J</mi> <mo>,</mo> <mi>f</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mo>&Sigma;</mo> <mrow> <mi>K</mi> <mo>&Element;</mo> <msub> <mi>W</mi> <mi>J</mi> </msub> </mrow> </munder> <mi>W</mi> <mrow> <mo>(</mo> <mi>J</mi> <mo>,</mo> <mi>K</mi> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mi>&rho;</mi> <mrow> <mo>(</mo> <mi>K</mi> <mo>,</mo> <mi>K</mi> <mo>-</mo> <msub> <mi>d</mi> <mi>K</mi> </msub> <mo>)</mo> </mrow> </mrow>

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

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

<mrow> <mi>W</mi> <mrow> <mo>(</mo> <mi>J</mi> <mo>,</mo> <mi>K</mi> <mo>)</mo> </mrow> <mo>=</mo> <msup> <mi>e</mi> <mfrac> <mrow> <mo>-</mo> <mo>|</mo> <mo>|</mo> <msub> <mi>I</mi> <mi>J</mi> </msub> <mo>-</mo> <msub> <mi>I</mi> <mi>K</mi> </msub> <mo>|</mo> <mo>|</mo> </mrow> <mi>&gamma;</mi> </mfrac> </msup> </mrow>

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

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

<mrow> <msub> <mi>f</mi> <mi>J</mi> </msub> <mo>=</mo> <munder> <mrow> <mi>arg</mi> <mi>min</mi> <mi>m</mi> <mrow> <mo>(</mo> <mi>J</mi> <mo>,</mo> <mi>f</mi> <mo>)</mo> </mrow> </mrow> <mrow> <mi>f</mi> <mo>&Element;</mo> <mi>F</mi> </mrow> </munder> </mrow>

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

14.根据权利要求13所述的人脸三维重建方法,其特征在于,所述步骤F包括:

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

<mrow> <mi>O</mi> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <mi>y</mi> </mtd> </mtr> <mtr> <mtd> <mi>d</mi> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> </mtr> </mtable> </mfenced> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mi>X</mi> </mtd> </mtr> <mtr> <mtd> <mi>Y</mi> </mtd> </mtr> <mtr> <mtd> <mi>Z</mi> </mtd> </mtr> <mtr> <mtd> <mi>W</mi> </mtd> </mtr> </mtable> </mfenced> </mrow>

其中,O为投影矩阵,

<mrow> <mi>O</mi> <mo>=</mo> <mfenced open = "[" close = "]"> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>c</mi> <mi>x</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <msub> <mi>c</mi> <mi>y</mi> </msub> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mi>f</mi> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>-</mo> <mn>1</mn> <mo>/</mo> <msub> <mi>Y</mi> <mi>x</mi> </msub> </mrow> </mtd> <mtd> <mrow> <mo>(</mo> <msub> <mi>c</mi> <mi>x</mi> </msub> <mo>-</mo> <msubsup> <mi>c</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> <msub> <mi>T</mi> <mi>x</mi> </msub> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>

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

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

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