发明内容
本申请实施例提供一种三维建模的方法及装置,用以解决现有技术中三维建模计算量大、不易在手机等移动设备上实现的问题。
本申请实施例提供的一种三维建模的方法,包括:
分别捕捉对象在第一方向上的第一图像和在第二方向上的第二图像;
获取所述第一图像上的多个特征点;
确定所述第二图像上与所述多个特征点对应的匹配特征点;
计算所述多个特征点与对应的所述匹配特征点之间的相似度、以及所述多个特征点的深度值;
根据所述多个特征点与对应的匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
本申请又一实施例提供的一种三维建模的方法,包括:
捕捉对象在多个方向上的图像;
获取所述多个图像其中之一上的多个特征点;
分别确定剩余所述图像上与所述多个特征点对应的匹配特征点;
分别计算所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度、以及所述匹配特征点的深度值;
根据所述多个图像的方向信息、以及所述匹配特征点的深度值,计算所述多个特征点的深度值;
根据所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
本申请实施例提供的一种三维建模的装置,包括:
图像捕捉模块,用于分别捕捉对象在第一方向上的第一图像和在第二方向上的第二图像;
特征检测模块,用于获取所述第一图像上的多个特征点;
匹配模块,用于确定所述第二图像上与所述多个特征点对应的匹配特征点;
计算模块,用于计算所述多个特征点与对应的所述匹配特征点之间的相似度、所述多个特征点的深度值、以及根据所述多个特征点与对应的匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
模型生成模块,用于基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
本申请又一实施例提供的一种三维建模的装置,包括:
图像捕捉模块,用于捕捉对象在多个方向上的图像;
特征检测模块,用于获取所述多个图像其中之一上的多个特征点;
匹配模块,用于分别确定剩余所述图像上与所述多个特征点对应的匹配特征点;
计算模块,用于分别计算所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度、以及所述匹配特征点的深度值,根据所述多个图像的方向信息、以及所述匹配特征点的深度值,计算所述多个特征点的深度值,并根据所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
模型生成模块,用于基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
本申请实施例提供一种三维建模的方法及装置,该方法捕捉对象在至少两个不同方向的图像,获取其中一图像上的特征点,并在剩余方向的图像上确定对应的匹配特征点,从而计算出各个特征点的深度值,并且通过特征点与匹配特征点之间的相似度,对各个特征点的深度值进行加权计算,利用加权计算后的各个特征点的深度值对对象进行三维建模,从而有效地减少了三维建模的计算量,易于在手机等移动设备上实现,且准确度较高。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的三维建模的过程,具体包括以下步骤:
S11:分别捕捉对象在第一方向上的第一图像和在第二方向上的第二图像。
在本申请实施例中,所述的对象包括各种具有三维构造的物体,例如人脸。所述的第一图像和第二图像可以是彼此具体仰角、偏转角、和旋转角上的差异。第一图像和第二图像都包含有RGB通道(即第一图像和第二图像为彩色图像),且图像的像素在392x440以上。当然,在替换的实施例中,第一图像和第二图像也可以是为灰度图。
配合参图5至图7,以人脸为例,解释本申请所说的仰角、偏转角、和旋转角。以人脸正脸图像为基准,定义X轴为人脸正面的横轴,Y轴为人脸正面的竖轴,Z轴与X轴以及Y轴垂直,该Z轴标示了人脸上特征的深度。其中,如图5所示,仰角α为人脸在YZ平面上从Y轴向Z轴顺时针旋转的角度,如图6所示,偏转角β为人脸在XZ平面上从X轴向Z轴逆时针旋转的角度,如图7所示,旋转角γ为人脸在XY平面上从X轴向Y轴逆时针旋转的角度。
S12:获取第一图像上的多个特征点。
在本申请实施例中,特征点的获取可以采用边缘检测的方式,以获取第一图像中亮度变化明显的点。同时,图像边缘检测可以大幅减少数据的处理量,而保留图像重要的结构属性,例如:深度上的不连续、表面方向不连续、物质属性变化和场景照明变化等。
参图2,介绍步骤S12中获取第一图像上多个特征点的具体步骤,包括:
S121:获取第一图像上的若干初始特征点。
参图8,这里初始特征点(图8中叉号所标示的点)的获取采用边缘检测的方式,这些初始特征点反映了人脸的边缘、五官等的特征轮廓。
S122:将第一图像与预设的第一网格相匹配。
参图9,本申请实施例中,第一网格的网格单元被定义为正方形,当然该第一网格的网格单元还可以根据需要被预定义为三角形、正六边形等多种形状。通过此步骤,第一图像上的若干初始特征点会分别落入该第一网格的各个网格单元中。需要说明的是,在实际的应用场景,例如手机中,第一图像与第一网格的匹配是由手机内的数据处理器运算处理完成,而并非需要在视觉上进行反馈。
S123:筛选该若干初始特征点,直至第一网格的网格单元中保留的初始特征点的数量均等,并确定为特征点。
还是以人脸为例,由于其上的特征分布并不均匀,故在利用边缘检测获取初始特征点时,第一图像上一些区域的初始特征点的分布会明显相对于其它的区域更加密集。而在例如手机等移动设备的应用中,对这些获取的初始特征点全部进行深度计算显然是难以实现且没有必要的。利用第一网格对这些初始特征点进行筛选,可以保证筛选后的初始特征点仍然可以反映人脸的基本形态,且大大降低了数据的计算量。
需要说明的是,虽然在本实施例中是以保证第一网格的网格单元中保留的初始特征点的数量均等为标准,对该若干初始特征点进行筛选。但在一些替换的实施例中,也可以是采用其它的筛选标准,例如:设定各个网格单元中的初始特征点的数量差异不超过一预定的阈值等。
参图9,在本申请实施例中,对初始特征点的具体筛选过程:首先计算该若干初始特征点到所在的第一网格的网格单元中心的距离,再将第一网格的网格单元中,距离所在的网格单元中心最近的初始特征点确定为所述的特征点即可。在此过程中,可能会出现第一网格的某些网格单元中不存在初始特征点,此种情况下,将该些网格单元的中心(图9中空心圆所标示的点)确定为其内的特征点。
当然,在一些替换的实施例中,还可以是将各个网格单元中初始特征点的坐标求均值,并将所得的平均坐标值所对应的点作为第一网格中对应网格单元中保留的特征点。
S13:确定第二图像上与多个特征点对应的匹配特征点。
配合参图9和图10,还是人脸为例,假设在第一图像上获取到鼻尖处的一特征点A,则步骤S13的目的就是在第二图像上搜寻该鼻尖处所在的位置(即匹配特征点A’的坐标),并依此方式建立第一图像和第二图像上多个特征点与匹配特征点之间的对应关系。
参图3,介绍步骤S13中确定匹配特征点的具体步骤,包括:
S131:根据第一图像和第二图像的方向信息,确定第二图像上与多个特征点对应的预匹配特征点。
第一图像和第二图像的方向信息可以由多种方式被确定。以手机对人脸拍摄为例:
一实施例中,若利用摄像头连续捕捉第一图像和第二图像,可以通过手机内置的运动传感器(例如陀螺仪、罗盘仪、加速计等)直接确定该第一图像和第二图像的方向信息。
继续参图5至图7,又一实施例中,若利用摄像头分别地捕捉第一图像和第二图像,可以例如通过姿势测定算法确定该第一图像和第二图像的方向信息。具体地,设定人脸的旋转是基于一假设的旋转中心C而确定,通过现有的生物解剖学知识,该旋转中心C的坐标CX、CY、CZ可以被粗略地估计,而该旋转中心C到人脸两眼中心的距离r,可以用于测定上述的仰角α、偏转角β、旋转角γ。同时,基于以下可以被粗略估计的值:人脸两眼中心的位置在第一图像的坐标(UX,UY)和在第二图像的坐标(VX,VY)、人脸为正脸图像时,两眼中心位置的深度EZ,可以得到仰角α、偏转角β和旋转角γ的计算公式为:
仰角
其中,
偏转角
其中,
旋转角
S132:将第二图像与预设的第二网格相匹配。
参图10,与第一网格类似地,在本申请实施例中,第二网格的网格单元采用正方形。并且,第二网格的网格单元的面积被设置为小于第一网格的网格单元的面积(也即:同样面积的第一网格和第二网格中,第二网格划分了相对于第一网格更多的网格单元),以提高下述步骤中,确定的匹配特征点的准确度。
S133:将预匹配特征点所在的第二网格的网格单元的中心,确定为对应的匹配特征点。
S14:计算该多个特征点与对应的匹配特征点之间的相似度、以及该多个特征点的深度值。
参图4,介绍步骤S14中计算特征点与匹配特征点之间相似度的具体步骤,包括:
S141:获取多个特征点所在的第一网格的网格单元内所有像素的颜色值。
S142:获取多个匹配特征点所在的第二网格的网格单元内所有像素的颜色值。
步骤S141和步骤S142中所述的“颜色值”是指像素在R、G、B三个通道上的颜色值。
S143:分别计算该多个特征点所在的第一网格的网格单元,与对应的匹配特征点所在的第二网格的网格单元内所有像素的平均颜色值误差,并根据该平均颜色值误差确定该多个特征点与对应的匹配特征点之间的相似度。其中,平均颜色值误差S的计算公式为:
其中,i,j为第一网格的网格单元内像素的坐标值,Fij为像素在(i,j)位置时的特征点,Sij为像素在(i,j)位置时的匹配特征点,R(Fij,Sij)为点Fij和Sij在R通道上差值的绝对值,G(Fij,Sij)为点Fij和Sij在G通道上差值的绝对值,B(Fij,Sij)为点Fij和Sij在B通道上差值的绝对值,‖F‖为第一网格的网格单元的面积(即:第一网格的网格单元内包含的像素值),λ为一常量,其计算公式为:
其中,maxX和maxY为第一网格的一个网格单元内,远离对应的特征点最远的距离值(以像素为单位);fp.x和fp.y为特征点的坐标值,sp.x和sp.y为匹配特征点的坐标值。
特征点与匹配特征点之间的相似度根据计算得的平均颜色值误差的值确定,平均颜色值误差越大,则特征点与匹配特征点之间的相似度也就越低。利用特征点与匹配特征点之间的相似度,可以对特征点进行筛选。具体地:
首先根据该多个特征点与对应的匹配特征点之间的相似度,确定丢弃阈值,再将该多个特征点中,与对应的匹配特征点之间的相似度小于丢弃阈值的特征点筛除。当特征点与对应的匹配特征点之间的相似度小于丢弃阈值时,表明此时匹配特征点并非第二图像上实际与特征点所对应的点,并判定此时特征点匹配失败,而这些匹配失败的特征点并不参与后续的三维建模计算。
继续参图5至图7,特征点的深度值是综合匹配特征点在仰角、偏转角和旋转角下的深度而得,结合这些不同角度下的深度值进行计算,可以使得角度具有更大的影响力,提高深度值计算结果的准确度。具体地,
特征点在仰角下的深度值
特征点在偏转角下的深度值
特征点在旋转角下的深度值Zγ=UYcosγ-UXsinγ;
综合Zα、Zβ、Zγ得到深度值Z的计算公式为:
S15:根据多个特征点与对应的匹配特征点之间的相似度,对多个特征点的深度值进行加权计算。
具体地,对特征点的深度值进行加权计算的公式为:
加权深度值=深度值Z×(除待加权计算的特征点之外所有特征点的平均颜色值误差之和/所有特征点的平均颜色值误差值之和)。
S16:基于加权计算后的多个特征点的深度值对对象进行三维建模。
在本申请实施例中,该三维建模采用三角形网格的形式,三角形网格的顶点为各个的特征点。当然,在其它替换的实施例中也可以是采用例如多边形建模的方式。
图11为本申请又一实施例提供的三维建模的过程,具体包括以下步骤:
S21:捕捉对象在多个方向上的图像。
S22:获取所述多个图像其中之一上的多个特征点。
S23:分别确定剩余图像上与多个特征点对应的匹配特征点。
S24:分别计算多个特征点与剩余图像上对应的匹配特征点之间的相似度、以及该些匹配特征点的深度值。
S25:根据该多个图像的方向信息、以及匹配特征点的深度值,计算该多个特征点的深度值。
S26:根据该多个特征点与剩余图像上对应的匹配特征点之间的相似度,对该多个特征点的深度值进行加权计算。
S27:基于加权计算后的该多个特征点的深度值对所述对象进行三维建模。
参图12,还是以手机对人脸进行三维建模为例,捕捉人脸在基准方向上的第一图像和在三个偏离基准方向上的第二图像、第三图像和第四图像。且第一图像、第二图像、第三图像和第四图像分别为人脸的正脸图像、正脸仰角图像、正脸偏左方向图像和正脸偏右方向图像。如此,人脸正脸图像上捕捉到的特征点基本都可以在正脸仰角图像、正脸偏左方向图像和正脸偏右方向图像中的至少一个上找到对应的匹配特征点,故人脸正脸图像上每个特征点的深度值计算过程中都综合了角度的因素,保证了计算所得的深度值更高的准确度。
本实施例中,以捕捉四张图像为例,对本申请的三维建模方法做说明,但这并非是限制,根据应用的具体的环境和精度需求的差异,捕捉的图像的数量也可以作适应性的调整。并且,由于本实施例中并不涉及对上一实施例其它步骤的改进,故在此不作其它赘述,上一实施例中所详述的方法和装置可以以全部引入的方式应用到本实施例中。
图13为本申请实施例提供的三维建模的装置的模块示意图,具体包括:
图像捕捉模块31,用于分别捕捉对象在第一方向上的第一图像和在第二方向上的第二图像;
特征检测模块32,用于获取所述第一图像上的多个特征点;
匹配模块33,用于确定所述第二图像上与所述多个特征点对应的匹配特征点;
计算模块34,用于计算所述多个特征点与对应的所述匹配特征点之间的相似度、所述多个特征点的深度值、以及根据所述多个特征点与对应的匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
模型生成模块36,用于基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
在本申请实施例中,所述特征检测模块32具体用于:获取所述第一图像上的若干初始特征点,将所述第一图像与预设的第一网格相匹配,筛选所述若干初始特征点,直至所述第一网格的网格单元中保留的所述初始特征点的数量均等,并确定为所述特征点。
在本申请实施例中,所述特征检测模块32包括计算单元321,所述计算单元321具体用于:计算所述若干初始特征点到所在的第一网格的网格单元中心的距离;所述特征检测模块32具体用于,将所述第一网格的网格单元中,距离所在的网格单元中心最近的初始特征点确定为所述特征点。
在本申请实施例中,所述特征检测模块32还用于:在所述第一网格的网格单元内不存在所述初始特征点时,将所述网格单元的中心确定为所述网格单元内的特征点。
在本申请实施例中,所述匹配模块33具体用于:根据所述第一图像和第二图像的方向信息,确定所述第二图像上与所述多个特征点对应的预匹配特征点,将所述第二图像与预设的第二网格相匹配,将所述预匹配特征点所在的第二网格的网格单元的中心,确定为所述对应的匹配特征点。
在本申请实施例中,所述计算模块34具体用于:获取所述多个特征点所在的第一网格的网格单元内所有像素的颜色值,获取所述多个匹配特征点所在的第二网格的网格单元内所有像素的颜色值,分别计算所述多个特征点所在的第一网格的网格单元,与对应的所述匹配特征点所在的第二网格的网格单元内所有像素的平均颜色值误差,并根据所述平均颜色值误差确定所述多个特征点与对应的所述匹配特征点之间的相似度。
在本申请实施例中,根据所述多个特征点与对应的匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算的公式为:
加权深度值=深度值Z×(除待加权计算的特征点之外所有特征点的平均颜色值误差之和/所有特征点的平均颜色值误差值之和)。
在本申请实施例中,所述第二网格的网格单元的面积小于所述第一网格的网格单元的面积。
在本申请实施例中,所述装置还包括筛选模块35,用于在对所述多个特征点的深度值进行加权计算前,根据所述多个特征点与对应的匹配特征点之间的相似度,对所述多个特征点进行筛选。
在本申请实施例中,所述筛选模块35具体用于:根据所述多个特征点与对应的匹配特征点之间的相似度,确定丢弃阈值,并将所述多个特征点中,与对应的匹配特征点之间的相似度大于所述丢弃阈值的特征点筛除。
在本申请实施例中,所述模型生成模块36采用三角形网格的形式对所述对象进行三维建模。
继续参图13,在本申请三维建模的装置的又一实施例中,其包括:
图像捕捉模块31,用于捕捉对象在多个方向上的图像;
特征检测模块32,用于获取所述多个图像其中之一上的多个特征点;
匹配模块33,用于分别确定剩余所述图像上与所述多个特征点对应的匹配特征点;
计算模块34,用于分别计算所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度、以及所述匹配特征点的深度值,根据所述多个图像的方向信息、以及所述匹配特征点的深度值,计算所述多个特征点的深度值,并根据所述多个特征点与剩余所述图像上对应的所述匹配特征点之间的相似度,对所述多个特征点的深度值进行加权计算;
模型生成模块36,用于基于加权计算后的所述多个特征点的深度值对所述对象进行三维建模。
在本申请实施例中,所述图像捕捉模块31具体用于:捕捉对象在基准方向的第一图像以及三个偏离所述基准方向的第二图像、第三图像和第四图像。
在本申请实施例中,所述对象包括:人脸。
在本申请实施例中,所述第一图像、第二图像、第三图像和第四图像分别为人脸的正脸图像、正脸仰角图像、正脸偏左方向图像和正脸偏右方向图像。
本申请实施例提供了三维建模的方法及装置,该方法捕捉对象在至少两个不同方向的图像,获取其中一图像上的特征点,并在剩余方向的图像上确定对应的匹配特征点,从而计算出各个特征点的深度值,并且通过特征点与匹配特征点之间的相似度,对各个特征点的深度值进行加权计算,利用加权计算后的各个特征点的深度值对对象进行三维建模,从而有效地减少了三维建模的计算量,易于在手机等移动设备上实现,且准确度较高。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。