发明内容
本发明要解决的技术问题是为了克服现有技术中被动双目相机运算时占用系统资源多,给出的深度值精度低,甚至给不出深度值的缺陷,提供一种够使双目相机能够快速生成模型,且所述模型的精度高,降低3D建模的成本,为3D建模应用到更多领域提供条件的基于双目相机的3D建模方法及拍摄终端。
本发明是通过下述技术方案来解决上述技术问题:
一种基于双目相机的3D建模方法,其特点在于,所述3D建模方法包括:
利用双目相机拍摄一目标以获取所述目标在同一时刻的两张影像,所述两张影像分别为双目相机的两个摄像头拍摄;
获取一张所述影像上的特征点;
对于每一特征点,对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息;
获取全部特征点的所述深度信息作为所求模型的特征向量;
在一预设的3D初始模型库上每个模型获取与全部特征点一一对应的目标点作为模型库中每一模型的特征向量;
调节模型库中模型的特征向量线性组合,逼近拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型;或,通过机器学习的方法学习模型库中全部模型的特征向量,在人脸结构的限制条件下推断拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型。
较佳地,所述利用双目相机拍摄一目标以获取所述目标在同一时刻的两张影像,包括:
对所述双目相机的两个摄像头做相机标定以获取两个摄像头的内外参数;
利用双目相机拍摄一目标以获取所述目标同一时刻的两张影像;
对所述目标同一时刻的两张影像做图像校正。
较佳地,所述对于每一特征点,对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息,包括:
以所述特征点的位置为中心获取一图像区域作为卷积核;
对卷积核和另一张所述影像做互相关分析以获取互相关图与相似性最大值的像素点;
对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息,其中所述特征点的相似性最大值的像素点为所述特征点的对应点。
较佳地,所述图像区域的尺寸为n*n,所述互相关图的尺寸为n*m,其中互相关图的行数与图像区域的行数相对应;或,
在另一张所述影像上获取与所述特征点对应的目标特征点,所述图像区域的尺寸为n*n,在所述目标特征点的位置获取尺寸为n*m的图像区域作为互相关图,其中m大于n。
较佳地,所述对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息,包括:
以相似性最大值的像素点为中心获取一目标图像区域;
获取所述目标图像区域中互相关中心以获取亚像素点;
对两张影像的亚像素点做三角定位以获取像素点对应所述特征点的深度信息。
较佳地,所述两个摄像头均为RGB镜头或灰度镜头,互相关处理时将图像区域和互相关图的像素点的红、绿、蓝数值作为一个三维向量值。
较佳地,所述在一预设的3D初始模型库上每个模型获取与全部特征点一一对应的目标点作为模型库中每一模型的特征向量,包括:
在一预设模型库中的每一个模型上获取与每一特征点对应的目标点;
对所述预设模型库中的每一个模型的全部目标点进行训练以获取所述3D初始模型。
较佳地,所述调节模型库中模型的特征向量线性组合,逼近拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型,包括:
调节模型库中3D初始模型的特征向量线性组合逼近拍摄计算所得的影像的特征向量以获取所述目标的3D高精模型;
将完成所述线性叠加的3D初始模型作为拍摄目标的3D高精模型。
较佳地,所述目标为人体面部,所述3D初始模型的获取方法包括:
获取一三维模型数据库,所述三维模型数据库包括原始三维影像;
对每一原始三维影像做标准化处理获取标准三维影像;
对于每一标准三维模型,获取所述标准三维模型数据特征表达,并对所述数据特征表达进行统计以得到数据特征表达的平均数据还有均方差数据;
利用全部所述标准三维模型的所述平均数据和所述均方差数据做人工智能学习获取3D初始模型,所述3D初始模型通过控制参数以重建出不同面部模型。
本发明还提供一种拍摄终端,所述拍摄终端包括双目相机,其特点在于,所述拍摄终端用于实现如上所述的3D建模方法。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本申请的基于双目相机的3D建模方法及拍摄终端能够使双目相机能够快速生成模型,且所述模型的精度高,降低3D建模的成本,为3D建模应用到更多领域提供条件。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供一种拍摄终端,所述拍摄终端包括双目相机。所述双目相机可以是双RGB镜头或灰度镜头,也可以是RGB与灰度镜头搭配。
所述拍摄终端包括一获取模块、一识别模块、一计算模块以及一生成模块。
所述获取模块用于利用双目相机拍摄一目标以获取所述目标在同一时刻的两张影像,所述两张影像分别为双目相机的两个摄像头拍摄;
所述识别模块获取一张所述影像上的特征点;使用算法(深度学习,传统算法)在得出的影像上寻找物体的特征点(只在一张图中,或在两张图中都寻找皆可)。
对于每一特征点,所述计算模块用于对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息;
所述计算模块还用于获取全部特征点的所述深度信息作为所求模型的特征向量;
所述计算模块还用于在一预设的3D初始模型库上每个模型获取与全部特征点一一对应的目标点作为模型库中每一模型的特征向量;
所述生成模块用于调节模型库中模型的特征向量线性组合,逼近拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型;
在其它实施例中,所述生成模块用于通过机器学习的方法学习模型库中全部模型的特征向量,在人脸结构的限制条件下推断拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型。
本实施例给出一种针对特定类物体(如人脸)的被动双目深度相机算法。在该类物体已经有一个可以大致覆盖该类物体各种特征的模型数据库(3D初始模型)时,可以给出任意单个物体的高精度的深度信息。
对于有已知3D结构信息,已有模型数据库的一类物体,只需要知道有限个特征点的3D信息,就可以重建出整个物体的3D模型。特征点一般都为feature丰富的点。
进一步地,所述拍摄终端包括一标定模块以及一校正模块。
所述标定模块用于对所述双目相机的两个摄像头做相机标定以获取两个摄像头的内外参数;
所述获取模块用于利用双目相机拍摄一目标以获取所述目标同一时刻的两张影像;
所述校正模块用于对所述目标同一时刻的两张影像做图像校正(rectification)。
进一步地,所述拍摄终端包括一截取模块以及一关联模块。
所述截取模块用于以所述特征点的位置为中心获取一图像区域作为卷积核;
所述关联模块用于对卷积核和另一张所述影像做互相关分析以获取互相关图与相似性最大值的像素点;
所述计算模块用于对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息,其中所述特征点的相似性最大值的像素点为所述特征点的对应点。
具体地,所述图像区域的尺寸为n*n,所述互相关图的尺寸为n*m,其中互相关图的行数与图像区域的行数相对应。
如,在双目其中一张图(通常为左图)中,在找到的每个特征点的位置截取周围一小块图像(如15*15)作为kernel(核心),在另一张图(通常为右图)做互相关(crosscorrelation),得出相关图(correlation map)。
上述已经做了图像校正rectification,则左右图对应的点是等高的,既行数是相同的,可以截取另一张图(通常为右图)的对应行(如15×n,n为列数),在这上面做crosscorrelation。得出的correlation function结果为一维的。
相关图或相关函数(correlation function)的最大值的位置即为对应点的位置,其在左右图中列数的相差值即为视差(disparity)。
在另一种实施方式中,如果在两张图中都找了特征点,在另一张所述影像上获取与所述特征点对应的目标特征点,所述图像区域的尺寸为n*n,在所述目标特征点的位置获取尺寸为n*m的图像区域作为互相关图,其中m大于n。
如,可以在另一张图(通常为右图)对应的特征点周围截取一块图像(必须比kernel大)。可以截取一块正方形图像,或对应行的一块矩形图像(如15×k,k>15)。在截取的图像上面做cross correlation,得出correlation map或一维的correlationfunction。用最大值点的位置对另一张图(通常为右图)对应的特征点的位置做修正,即为特征点的位置。
到目前为止,特征点的disparity的精度只达到像素级。
进一步地,所述获取模块用于以相似性最大值的像素点为中心获取一目标图像区域;
所述获取模块还用于获取所述目标图像区域中互相关中心以获取亚像素点;
所述计算模块用于对两张影像的亚像素点做三角定位以获取像素点对应所述特征点的深度信息。
利用上述拍摄终端中寻找到的correlation map或一维的correlationfunction,先截取最大值点周围的一小块(如5×5,对correlation function则是5×1)。找出这一小块区域的correlation map或correlation function的中心,可以得到亚像素精度的disparity。找correlation map或correlation function的中心有很多算法,典型的如通过函数拟合(如高斯函数拟合,包括二维斜高斯函数或一维高斯函数)。
对找到的特征点的亚像素disparity,所述计算模块用于通过标定的双目的空间关系参数做三角定位,即可重建出高精度的三维坐标,包括深度值。
对已知物体(如人脸)的模型库中的每个模型,提取出对应特征点的坐标,作为该模型的特征向量。
所述生成模块用于对所述3D初始模型的目标点做线性叠加使得全部目标点的深度数据逼近所述特征点的深度信息,并将完成所述线性叠加的3D初始模型作为所述3D高精模型。
利用上述得到的所有特征点的高精度坐标,使用优化的方法,找出最逼近所求得的各点数值的各模型特征向量的线性叠加。
对模型库中的模型求得的线性叠加,所得模型即为该物体的高精度3D模型(3D高精模型)。物体在非特征点处的精度,由该类物体的数据库质量决定。
其中,互相关处理时将图像区域和互相关图的像素点的红、绿、蓝数值作为一个三维向量值。
Cross correlation的经典算法需要先将RGB图转化为灰度图,因为只能处理单值函数。但是,可以将每个点的RGB数值视为一个3维向量,将单值函数的cross correlation算法拓展到向量函数,可以得出更robust更高精度的结果。
进一步地,本实施例拍摄终端的3D初始模型的获取方式为:
获取一三维模型数据库,所述三维模型数据库包括原始三维影像;
对每一原始三维影像做标准化处理获取标准三维影像;
对于每一标准三维模型,获取所述标准三维模型数据特征表达,并对所述数据特征表达进行统计以得到数据特征表达的平均数据还有均方差数据;
利用全部所述标准三维模型的所述平均数据和所述均方差数据做人工智能学习获取3D初始模型,所述3D初始模型通过控制参数以重建出不同面部模型。
对于预设模型库中的模型,所述拍摄终端前期在一预设模型库中的每一个模型上获取与每一特征点对应的目标点;然后,对所述预设模型库中的每一个模型的全部目标点进行训练以获取所述3D初始模型。
具体地,所述生成模块用于:
调节模型库中3D初始模型的特征向量线性组合逼近拍摄计算所得的影像的特征向量以获取所述目标的3D高精模型;
将完成所述线性叠加的3D初始模型作为拍摄目标的3D高精模型。
参见图1,利用上述拍摄终端,本实施例还提供一种3D建模方法,包括:
步骤100、利用双目相机拍摄一目标以获取所述目标在同一时刻的两张影像,所述两张影像分别为双目相机的两个摄像头拍摄;
步骤101、获取一张所述影像上的特征点;
步骤102、对于每一特征点,对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息;
步骤103、获取全部特征点的所述深度信息作为所求模型的特征向量;
步骤104、在一预设的3D初始模型库上每个模型获取与全部特征点一一对应的目标点作为模型库中每一模型的特征向量;
步骤105、调节模型库中模型的特征向量线性组合,逼近拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型。
另外,步骤105还可以为通过机器学习的方法学习模型库中全部模型的特征向量,在人脸结构的限制条件下推断拍摄计算拍摄目标的特征向量以获取所述目标的3D高精模型。
参见图2,具体地,步骤100包括:
步骤1001、对所述双目相机的两个摄像头做相机标定以获取两个摄像头的内外参数;
步骤1002、利用双目相机拍摄一目标以获取所述目标同一时刻的两张影像;
步骤1003、对所述目标同一时刻的两张影像做图像校正。
参见图3,步骤102包括:
步骤1021、以所述特征点的位置为中心获取一图像区域作为卷积核;
步骤1022、对卷积核和另一张所述影像做互相关分析以获取互相关图与相似性最大值的像素点;
步骤1023、对所述特征点以及每一特征点在另一张所述影像上的对应点做三角定位以获取所述特征点的深度信息,其中所述特征点的相似性最大值的像素点为所述特征点的对应点。
具体地,所述图像区域的尺寸为n*n,所述互相关图的尺寸为n*m,其中互相关图的行数与第一区域的行数相对应;
如,在双目其中一张图(通常为左图)中,在找到的每个特征点的位置截取周围一小块图像(如15*15)作为kernel(核心),在另一张图(通常为右图)做互相关(crosscorrelation),得出相关图(correlation map)。
上述已经做了图像校正rectification,则左右图对应的点是等高的,既行数是相同的,可以截取另一张图(通常为右图)的对应行(如15×n,n为列数),在这上面做crosscorrelation。得出的correlation function结果为一维的。
相关图或相关函数(correlation function)的最大值的位置即为对应点的位置,其在左右图中列数的相差值即为视差(disparity)。
在另一种实施方式中,如果在两张图中都找了特征点,在另一张所述影像上获取与所述特征点对应的目标特征点,所述图像区域的尺寸为n*n,在所述目标特征点的位置获取尺寸为n*m的图像区域作为互相关图,其中m大于n。
如,可以在另一张图(通常为右图)对应的特征点周围截取一块图像(必须比kernel大)。可以截取一块正方形图像,或对应行的一块矩形图像(如15×k,k>15)。在截取的图像上面做cross correlation,得出correlation map或一维的correlationfunction。用最大值点的位置对另一张图(通常为右图)对应的特征点的位置做修正,即为特征点的位置。
参见图4,步骤1023包括:
步骤10231、以相似性最大值的像素点为中心获取一目标图像区域;
步骤10232、获取所述目标图像区域中互相关中心以获取亚像素点;
步骤10233、对两张影像的亚像素点做三角定位以获取像素点对应所述特征点的深度信息。
利用上述拍摄终端中寻找到的correlation map或一维的correlationfunction,先截取最大值点周围的一小块(如5×5,对correlation function则是5×1)。找出这一小块区域的correlation map或correlation function的中心,可以得到亚像素精度的disparity。找correlation map或correlation function的中心有很多算法,典型的如通过函数拟合(如高斯函数拟合,包括二维斜高斯函数或一维高斯函数)。
所述两个摄像头均为RGB镜头,所述互相关处理时将图像区域和互相关图的像素点的红、绿、蓝数值作为一个三维向量值。
Cross correlation的经典算法需要先将RGB图转化为灰度图,因为只能处理单值函数。但是,可以将每个点的RGB数值视为一个3维向量,将单值函数的cross correlation算法拓展到向量函数,可以得出更robust更高精度的结果。
参见图5,步骤104包括:
步骤1041、在一预设模型库中的每一个模型上获取与每一特征点对应的目标点;
步骤1042、对所述预设模型库中的每一个模型的全部目标点进行训练以获取所述3D初始模型。
参见图6,步骤105包括:
步骤1051、调节模型库中3D初始模型的特征向量线性组合逼近拍摄计算所得的影像的特征向量以获取所述目标的3D高精模型;
步骤1052、将完成所述线性叠加的3D初始模型作为拍摄目标的3D高精模型。
参见图7,所述目标为人体面部,在步骤100前还包括:
步骤200、获取一三维模型数据库,所述三维模型数据库包括原始三维影像;
步骤201、对每一原始三维影像做标准化处理获取标准三维影像;
步骤202、对于每一标准三维模型,获取所述标准三维模型数据特征表达,并对所述数据特征表达进行统计以得到数据特征表达的平均数据还有均方差数据;
步骤203、利用全部所述标准三维模型的所述平均数据和所述均方差数据做人工智能学习获取3D初始模型,所述3D初始模型通过控制参数以重建出不同面部模型。
本实施例的基于双目相机的3D建模方法及拍摄终端能够使双目相机能够快速生成模型,且所述模型的精度高,降低3D建模的成本,为3D建模应用到更多领域提供条件。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。