一种基于双目立体和光度立体的人脸三维重建方法及系统与流程

文档序号:16515059发布日期:2019-01-05 09:34阅读:304来源:国知局
一种基于双目立体和光度立体的人脸三维重建方法及系统与流程

本发明涉及计算机视觉技术领域,具体涉及一种基于双目立体和光度立体的人脸三维重建方法及系统。



背景技术:

目前,人脸的三维重建方法主要包括四种:参数模型,物理肌肉模型,多幅图像视觉模型和三维形变。人脸参数模型和物理肌肉模型表示复杂,计算量大,缺乏真实感;多幅图像视觉建模是利用多张人脸图像或者视频序列,通过一定的视觉算法恢复出人脸的三维信息,这里就包括单目视觉,双目视觉以及多目视觉。单目视觉一般是通过单张人脸照片获取特征点,再对通用的三维人脸网格模型进行全局以及局部精细变形;双目视觉一般是通过两张不同视角的人脸图像进行立体匹配求取视差图来获得人脸的三维模型;多目视觉往往是通过多张图像进行同名特征点匹配来确定三维结构。该类算法受图像质量的影响较大,所以鲁棒性都不是很高,且结果并不是很精确。目前,光度立体视觉用于三维重建能够得到精确地三维模型,但是至少需要三个光源,且由于光度立体无尺度特征,所以重建的三维模型会存在一定程度的形变。



技术实现要素:

有鉴于此,本申请提供一种将双目立体和采用两个光源的光度立体相结合,进行精确无变形的人脸三维重建的方法及系统,解决上述存在的问题。

为解决以上技术问题,本发明提供的技术方案是一种基于双目立体和光度立体的人脸三维重建方法,该方法使用第一光源、第二光源以及构成双目立体视觉系统的第一摄像装置和第二摄像装置,该方法包括:

通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像;

将所述第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像;

开启第一光源,通过第一摄像装置获取目标人脸的第三图像,通过第二摄像装置获取目标人脸的第四图像;

开启第二光源,通过第一摄像装置获取目标人脸的第五图像,通过第二摄像装置获取目标人脸的第六图像;

将所述第三图像、所述第四图像、所述第五图像和所述第六图像采用光度立体表示,获得第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式;

将所述第三图像光度立体式、所述第四图像光度立体式、所述第五图像光度立体式和所述第六图像光度立体式作为约束项,与所述初始深度图像结合,构造关于待求解深度图像的能量函数;

对所述能量函数进行最小化求解,获得优化后的深度图像;

将所述优化后的深度图像转换为三维点云形式,获得目标人脸的三维点云。

优选地,所述通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像的方法,包括:

开启第一光源和第二光源,通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像。

优选地,所述将所述第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像的方法,包括:

将所述第一图像设为基准图像;

采用局部立体匹配算法,将所述第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

优选地,所述将所述第三图像、所述第四图像、所述第五图像和所述第六图像采用光度立体表示,获得第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式的方法,包括:

其中i11i,i12i,i21i,i22i分别表示所述第三图像、所述第四图像、所述第五图像和所述第六图像中第i个像素的灰度值,ρ1i表示所述第三图像和所述第五图像中第i个像素对应点的反射率,ρ2i表示所述第四图像和所述第六图像中第i个像素对应点的反射率,表示所述第三图像和所述第五图像中第i个像素对应点的法向量方向,表示所述第四图像和所述第六图像中第i个像素对应点的法向量方向,表示第一光源的光照方向,表示第二光源的光照方向。

优选地,所述将所述第三图像光度立体式、所述第四图像光度立体式、所述第五图像光度立体式和所述第六图像光度立体式作为约束项,与所述初始深度图像结合,构造关于待求解深度图像的能量函数的方法,包括:

假设初始深度图像为y,待求解的深度图像为z,构造关于待求解深度图像z的能量函数为:

其中δz表示的是物体深度的拉普拉斯算子,其中深度图像与法向量为偏倒关系。

优选地,所述对所述能量函数进行最小化求解,获得优化后的深度图像的方法,包括:

s01:提取出所述第一图像的n个二维特征点,生成二维网格化目标人脸;

s02:根据所述初始深度图像,对所述二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像;

s03:判断所述优化后的深度图像是否达到预设图像标准,若是,则输出所述优化后的深度图像,若否,进入步骤s04;

s04:将所述二维网格化目标人脸的各个网格再划分为若干个网格,进入步骤s02。

优选地,所述步骤s02中,根据所述初始深度图像,对所述二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像的方法,包括:根据所述初始深度图像,采用spgd算法对所述二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像。

本发明还提供一种基于双目立体和光度立体的人脸三维重建系统,包括:

第一图像获取模块,用于通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像;

双目立体匹配模块,用于将所述第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像;

第二图像获取模块,用于开启第一光源,通过第一摄像装置获取目标人脸的第三图像,通过第二摄像装置获取目标人脸的第四图像;

第三图像获取模块,用于开启第二光源,通过第一摄像装置获取目标人脸的第五图像,通过第二摄像装置获取目标人脸的第六图像;

光度立体表示模块,用于将所述第三图像、所述第四图像、所述第五图像和所述第六图像采用光度立体表示,获得第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式;

能量函数构造模块,用于将所述第三图像光度立体式、所述第四图像光度立体式、所述第五图像光度立体式和所述第六图像光度立体式作为约束项,与所述初始深度图像结合,构造关于待求解深度图像的能量函数;

能量函数求解模块,用于对所述能量函数进行最小化求解,获得优化后的的深度图像;

三维点云转换模块,用于将所述优化后的深度图像转换为三维点云形式,获得目标人脸的三维点云。

优选地,所述双目立体匹配模块包括:

基准单元,用于将所述第一图像设为基准图像;

匹配单元,用于采用局部立体匹配算法,将所述第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

优选地,所述能量函数求解模块包括:

二维网格化目标人脸生成模块,用于提取出所述第一图像的n个二维特征点,生成二维网格化目标人脸;

网格深度值优化模块,用于根据所述初始深度图像,对所述二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像;

优化后深度图像判断模块,用于判断所述优化后的深度图像是否达到预设图像标准,若是,则输出优化后的深度图像,若否,则进入目标人脸网格再划分模块;

目标人脸网格再划分模块,用于将所述二维网格化目标人脸的各个网格再划分为若干个网格,划分完成后进入网格深度值优化模块。

本申请与现有技术相比,其有益效果详细说明如下:本发明实施例提供的基于双目立体和光度立体的人脸三维重建方法及系统,通过双目立体匹配获得目标人脸的初始深度图像;将两个光源与两个摄像装置配合采集的目标人脸的四张图像,通过光度立体表示后作为约束项,与初始深度图像结合,构造关于待求解深度图像的能量函数;对能量函数最小化求解获得优化后的深度图像,将优化后的深度图像转换为三维点云形式,获得目标人脸的三维点云。解决了现有光度立体视觉用于三维重建至少需要三个光源,且无尺度特征存在形变的问题,实现了精确无变形的人脸三维重建。

附图说明

图1为本发明实施例基于双目立体和光度立体的人脸三维重建方法流程示意图;

图2为本发明实施例获得目标人脸的初始深度图像的方法流程示意图;

图3为本发明实施例对能量函数进行最小化求解,获得优化后的深度图像的方法流程示意图;

图4为本发明实施例基于双目立体和光度立体的人脸三维重建系统的结构示意图。

具体实施方式

为了使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。

如图1所示,本发明实施例提供一种基于双目立体和光度立体的人脸三维重建方法,该方法使用第一光源、第二光源以及构成双目立体视觉系统的第一摄像装置和第二摄像装置,该方法包括:

s01:通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像;

s02:将第一图像和第二图像进行双目立体匹配,获得目标人脸的初始深度图像;

s03:开启第一光源,通过第一摄像装置获取目标人脸的第三图像,通过第二摄像装置获取目标人脸的第四图像;

s04:开启第二光源,通过第一摄像装置获取目标人脸的第五图像,通过第二摄像装置获取目标人脸的第六图像;

s05:将第三图像、第四图像、第五图像和第六图像采用光度立体表示,获得第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式;

s06:将第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式作为约束项,与初始深度图像结合,构造关于待求解深度图像的能量函数;

s07:对能量函数进行最小化求解,获得优化后的深度图像;

s08:将优化后的深度图像转换为三维点云形式,获得目标人脸的三维点云。

需要说明的是,步骤s01中,通过第一摄像装置拍摄目标人脸的第一图像,第一图像可以为目标人脸的双目二维图像左图;通过第二摄像装置拍摄目标人脸的第二图像,第二图像可以为目标人脸的双目二维图像右图。

作为优选,也可以在开启第一光源和第二光源的情况下,通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像。开启光源后再拍摄图像,可以获得更好的拍摄效果,为下一步双目立体匹配提供效果更好的双目二维图像。

步骤s02中,将第一图像和第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

这里,立体匹配有很多算法,一般分为全局立体算法和局部立体算法。局部立体匹配有sad(sumofabsolutedifferences),ssd(sumofsquaredifferences)等算法;全局立体匹配算法有图割算法(graphcut)、信念传播(beliefpropagation)、动态规划(dynamicprogramming)等算法。

优选的方法,如图2所示,将第一图像和第二图像进行双目立体匹配,获得目标人脸的初始深度图像的方法,包括:将第一图像设为基准图像;采用局部立体匹配算法,将第一图像和第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

这里,各种立体匹配算法各有各的优点,比如局部算法,速度快,但是精度不够。全局算法,精度高,但是速度比较慢。该实施例中考虑到后面会结合光度立体,所以这里的匹配结果精度差一点影响不是很大,速度是我们的主要考虑因素。所以我们可以选择局部算法,以sad为例,具体方法如下:(1)图像输入:两幅图像,一幅左图,一幅右图,对左图依次扫描,选定一个锚点;(2)构造一个小窗口,类似于卷积核;(3)用窗口覆盖左边的图像,选择出窗口覆盖区域内的所有像素点;(4)左边覆盖区域减去右边覆盖区域,并求出所有像素点灰度差的绝对值之和(注意,这里是利用灰度值绝对值之差,也可以利用色彩值);(5)移动右边图像的窗口,重复(3)-(4)的处理(这里有个搜索范围,超过这个范围跳出);(6)找到这个范围内sad值最小的窗口,即找到了左图锚点的最佳匹配的像素块。

步骤s03中,开启第一光源,通过第一摄像装置拍摄目标人脸的第三图像,第三图像可以为目标人脸的双目二维图像左图;通过第二摄像装置拍摄目标人脸的第四图像,第四图像可以为目标人脸的双目二维图像右图。

步骤s04中,开启第二光源,通过第一摄像装置拍摄目标人脸的第五图像,第五图像可以为目标人脸的双目二维图像左图;通过第二摄像装置拍摄目标人脸的第六图像,第六图像可以为目标人脸的双目二维图像右图。

步骤s05中,对第三图像、第四图像、第五图像和第六图像分别进行光度计算,根据光度立体的相关知识,分别用如下公式进行表示:

其中i11i,i12i,i21i,i22i分别表示第三图像、第四图像、第五图像和第六图像中第i个像素的灰度值,ρ1i表示第三图像和第五图像中第i个像素对应点的反射率,ρ2i表示第四图像和第六图像中第i个像素对应点的反射率,表示第三图像和第五图像中第i个像素对应点的法向量方向,表示第四图像和第六图像中第i个像素对应点的法向量方向,表示第一光源的光照方向,表示第二光源的光照方向。

其中,同一光源下光照方向是一致的,所以s方向只有1和2的区别,同一个摄像装置拍摄下,对应的图像中的点相对物体而言是一致的,反射率也是一样的;两个摄像装置拍摄的图像因为角度的差异,所以图像中的第i个像素对应到实际物体并非同一点,所以我们若以第一摄像装置拍摄的图像为基准,在进行后面的步骤时,需要利用第一摄像装置的参数将第二摄像装置拍摄的图像对应到第一摄像装置的图像下。

步骤s06中,将第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式作为约束项,与初始深度图像结合,构造关于待求解深度图像的能量函数的方法,包括:

假设初始深度图像为y,待求解的深度图像为z,构造关于待求解深度图像z的能量函数为:

其中δz表示的是物体深度的拉普拉斯算子,其中利用深度值与法向量为偏倒关系,可以直接对z进行求解,也就是我们待求解的深度图像。

步骤s07中,如图3所示,对能量函数进行最小化求解,获得优化后的深度图像的方法,包括:

s071:提取出第一图像的n个二维特征点,生成二维网格化目标人脸。

s072:根据初始深度图像,对二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像;

s073:判断优化后的深度图像是否达到预设图像标准,若是,则输出优化后的深度图像,若否,进入步骤s074;

s074:将二维网格化目标人脸的各个网格再划分为若干个网格,进入步骤s072。

需要说明的是,步骤s071中,从第一图像中提取出n个二维特征点的方法,可以采用asm算法或者深度学习算法。

asm算法是基于统计学习模型的特征点提取的一种方法。在深度学习没有普及的之前,asm应该是人脸特征点提取较好的解决方案。asm算法与普通的统计学习算法类似,需要先准备带标签的数据集,train训练(orbuild或者建立)模型,然后test测试(fit匹配)。

深度学习算法是目前人脸特征点提取的常用方法,根据进行训练得出来的模型提取特征点。选取特征点都是前期人工在很多用于训练的人脸图像上面进行标记,然后将标记好的标记图像输入深度学习网络里面进行训练,得到模型参数。最后当输入一张新的未标记图像,它可以利用前面的训练参数直接找出来特征点。

该实施例采用深度学习算法从第一图像中提取出第一图像的n个二维特征点。

这里提取的二维特征点的个数n,是根据我们的应用需要选择的。例如当我们做人脸对齐的时候,我们可能选择眼睛鼻子嘴巴五六个特征点就可以。这里我们用于提取第一图像的n个二维特征点的模型,可以采用其他数据库的现有模型。现有的人脸特征点提取模型有包括30多个人脸特征点的,也有包括68个人脸特征点的,也有包括78个人脸特征点,还有包括83个人脸特征点的。

该实施例中由于我们需要通过人脸特征点生成二维网格化目标人脸,所以可以选择人脸特征点个数稍多一些的模型。为了获得效果更好的人脸三维建模结果,该实施例可以采用包含68个人脸特征点的人脸特征点提取模型,从第一图像中提取出目标人脸图像的68个二维特征点。

这里,因为双目立体匹配得到的初始深度图像是以第一图像为基准的,因此这里也采用第一图像提取特征点生成二维网格化目标人脸。生成二维网格化目标人脸可以利用深度学习算法,也可以利用聚类算法。以这68个特征点为基准进行深度学习或者聚类,从而得到网格划分。

步骤s072-s074中,根据初始深度图像,对二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像的方法,优选地,根据初始深度图像,采用spgd算法(stochasticparallelgradientdescentalgorithm,随机并行梯度下降算法)对二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像。具体包括:

(1)依据目标人脸的初始深度图像,在每一个深度值的基础上,对每一个单独网格里面的点进行一致的随机波动,每一次随机波动之后都计算能量函数值,当能量函数值减小的话,我们就把深度值固定为当前随机波动后的深度值。

其中,计算方式就是:根据上面的分割或者聚类网格结果,首先进行随机数生成,生成的随机数个数同上面得到的网格数一样,可以为正也可以为负。每一个网格分配一个随机数,并根据这个随机数进行扰动,扰动的意思就是在原始的基础上加或者减,正数就加,负数就减,原始的数值是特征点的深度值。将扰动后的深度值带入上述能量函数e,求解出这时的能量函数值e1。如果e1<e,我们就采用这个扰动结果。

(2)步骤(1)过程一直迭代,直到在当前网格划分下,能量函数值变化在设定的阈值内。

其中,求解的过程是采用目前常用的优化算法,比如:梯度下降,牛顿迭代,lm算法等等。

(3)将最初的人脸简单网格进行更加细分的划分,在此新的划分基础上,同步骤(1)一样,继续进行随机值的波动,然后计算能量函数,一直迭代到能量函数满足我们设定的阈值。

(4)重复(3)过程,直到网格划分区域够小且能量函数求解值达到我们的要求,且深度图像达到预设图像标准,则停止迭代过程,最后一次的波动结果就是我们求解得到的优化后的深度图像。

这里,将spgd优化算法结合由粗到精的网格划分扰动计算,从运算速度上有很大的提高,能够满足更多应用场景的需求。

如图4所述,本发明实施例还提供一种基于双目立体和光度立体的人脸三维重建系统,包括:

第一图像获取模块,用于通过第一摄像装置获取目标人脸的第一图像,通过第二摄像装置获取目标人脸的第二图像。

双目立体匹配模块,用于将第一图像和所述第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

第二图像获取模块,用于开启第一光源,通过第一摄像装置获取目标人脸的第三图像,通过第二摄像装置获取目标人脸的第四图像。

第三图像获取模块,用于开启第二光源,通过第一摄像装置获取目标人脸的第五图像,通过第二摄像装置获取目标人脸的第六图像。

光度立体表示模块,用于将第三图像、第四图像、第五图像和第六图像采用光度立体表示,获得第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式。

能量函数构造模块,用于将第三图像光度立体式、第四图像光度立体式、第五图像光度立体式和第六图像光度立体式作为约束项,与初始深度图像结合,构造关于待求解深度图像的能量函数。

能量函数求解模块,用于对能量函数进行最小化求解,获得优化后的的深度图像。

三维点云转换模块,用于将优化后的深度图像转换为三维点云形式,获得目标人脸的三维点云。

其中,双目立体匹配模块包括:基准单元,用于将第一图像设为基准图像;匹配单元,用于采用局部立体匹配算法,将第一图像和第二图像进行双目立体匹配,获得目标人脸的初始深度图像。

其中,能量函数求解模块包括:

二维网格化目标人脸生成模块,用于提取出第一图像的n个二维特征点,生成二维网格化目标人脸。

网格深度值优化模块,用于根据初始深度图像,对二维网格化目标人脸的各个网格进行深度值优化,获得优化后的深度图像。

优化后深度图像判断模块,用于判断优化后的深度图像是否达到预设图像标准,若是,则输出优化后的深度图像,若否,则进入目标人脸网格再划分模块。

目标人脸网格再划分模块,用于将二维网格化目标人脸的各个网格再划分为若干个网格,划分完成后进入网格深度值优化模块。

以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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