一种三维人脸模型的对称性分析方法与流程

文档序号:11231976阅读:679来源:国知局
一种三维人脸模型的对称性分析方法与流程

本发明涉及三维模型处理领域,尤其涉及针对三维人脸模型的对称性分析方法。



背景技术:

自然界的许多生物和物体都存在着一定的对称性。这些对称性包括旋转对称,镜像对称以及分形等。绝对的对称十分罕见,但是在满足一定的前提条件时,我们可以有效地利用对称性来对现实世界中的实物建模进行改进。其中,人脸就是一个常见的、满足镜像对称的研究对象。近年来,随着诸如kinect等家用深度摄像机的出现和相关领域的研究,人们可以迅速、高效地采集和构建大量的人脸模型。但是,人脸本身也存在着轻微的不对称现象,采集设备和建模算法也会引入一些误差。而在一些研究中,又需要尽可能地降低这些不对称所带来的影响。



技术实现要素:

本发明的目的在于针对深度摄像机kinect采集并使用kinectfusion重建的人脸模型存在轻微不对称,并影响进一步处理的问题,提出了一种三维人脸模型的对称性分析方法。

本发明的目的是通过以下技术方案来实现的:一种基于特征聚类的人脸模型对称性分析方法,其特征在于,该方法包括如下步骤:

(1)模型的采样:获取顶点v的位置信息、顶点的法向n、顶点的主曲率单位向量c1和c2、顶点的主曲率单位向量长度k1和k2,以及曲率比r=min(k1/k2,k2/k1)。

其中,点v处主曲率单位向量通过计算得到,其公式如下:

式中,ev为点的邻接边集,ne,left和ne,right分别表示边e左右两侧的面法向量,e为边e的单位向量,表示张量积。eigenvectori函数表示求此矩阵特征值第i大的单位特征向量,其对应的特征值即为单位向量长度ki,i为1、2。

(2)采样结果的筛选:筛选的条件有如下两条。

(a)去掉k1和k2小于0.00001的采样点。

(b)去掉r<curvethres的采样点,curvethres为预设参数,用来约束k1和k2的比例关系。(3)模型特征的生成:

令p为采样点集,选择p的一个随机子集p',生成一个随机的平面d,把p'中所有顶点的位置、法向、曲率信息都以d为对称平面作镜像变换。

接着逐个把p和p'中的采样点进行配对,得到点对集s:

s={(vi,vj),vi∈pvj∈p′}

利用点的法向和曲率信息,对点对进行以下筛选:

(a)生成一个随机非零方向d,对每一个点对(vi,vj),如果(vi-vj)·d<0,那么就放弃这个点对。

(b)计算伸缩量sij=(ki,1/kj,1+ki,2/kj,2),用以估计点vi变换到点vj时局部形状的伸缩因子。maxscale为预设参数,当时,就认为缩放过大,从而放弃此点对。

(c)在对人脸模型的顶点坐标集进行pca分析之后,找出最大的单位主成分向量m。对每一个点对,如果则放弃此点对,maxdirthres为预设阈值。

筛选后,定义特征为如下的七维向量:

其中,sij为缩放因子,为旋转因子的欧拉角表示,为位移因子。点集中的所有点都是以为对称平面d作过一次镜像变换的,因此原始点集中的镜像对称在特征中就可以表示为沿某条轴作角度为π的旋转。

为了确定唯一的旋转关系,使用(vi-vj)×(ni×nj)作为旋转轴,将点对的两个局部坐标系法向进行对齐,再对齐其余两个轴。得到旋转变换欧拉角之后,就可以用旋转后vi与vj的坐标差来确定:

tij=vj-sijrijvi。

(4)模型特征的聚类分析:使用mean-shift算法对模型特征的聚类。具体如下:

(a)随机在样本空间确定一个区域ω,称为样本窗口。

(b)计算ω内所有样本的mean-shift向量mh,g。

(c)根据mean-shift向量mh,g移动样本窗口ω,重复上面的过程直到其收敛。

在mean-shift算法求解的过程中,需要对特征之间的距离进行定义。针对本文中的模型特征,规定特征之间的距离为:

其中,β1、β2、β3分别为伸缩因子、欧式距离和旋转距离的权重。

(5)特征-网格的重映射:对聚类中心附近的特征进行平均,就可以得到对称关系。通过在聚类过程中向特征中添加特征的源点对信息,可以得到每个对称关系所关联的点对列表。

(6)对称点对的延伸搜索:从起始点对出发,沿邻边逐步进行扩展搜索,如果新搜索到点对满足给定阈值下的对称性约束,则选出局部最优配对加入到待扩展队列准备进行下一次的扩展,直到可扩展的顶点都搜索完毕为止。

在搜索的过程中,点对之间的距离使用如下的公式计算:

其中为点v变换后的法向。为点v变换后的坐标。如果对于预设阈值ε满足dist>ε即放弃对此点对的延伸。

(7)网格匹配的修正:给定目标误差函数:

使用icp算法通过不断更新最近点对的匹配关系,结合最小二乘法解出更优的旋转参数r和位移参数t,使得总体误差隆到一个极小值。

利用icp得到的解替换掉之前使用的特征,重复迭代上节和本节的过程,直到模型中的所有能扩展到的点都匹配到为止。

(8)网格匹配迭代过程中的优化:在迭代过程中对阈值ε进行松弛操作,即每一轮结束后的误差阈值都乘以一个大于1的系数λ,得到εnew作为下一轮匹配时的ε:

εnew=λε。

(9)对称矩阵的提取:得到最终的匹配特征之后,将特征展开为4×4的仿射变换l:

l=s·mirror(d)trans(t)rot(r)。

其中,mirror(d)表示(3)中提到的以平面d为对称面的镜像变换矩阵,trans(t)表示位移t为的平移矩阵,rot(r)表示欧拉角为r的旋转矩阵。

本发明的有益效果是,本发明通过在特征提取时添加pca约束,在计算资源有限的情况下有效地提升了初始采样点的最大数量;通过改进对称特征的提取方法,提升了聚类结果的有效性;通过在特征-网格重匹配时添加松弛因子,在保证结果稳定性的同时将匹配延伸到了整个模型。在成功分析出人脸模型对称性之后,可以利用此对称性的数据来驱动对称性修复过程,使得人脸模型变得更加对称,并消除了部分噪声,易于进一步处理。

附图说明

图1是本发明的方法流程图;

图2是本发明提出的特征-网格匹配过程中松弛因子实施前的对称面图;

图3是本发明提出的特征-网格匹配过程中松弛因子实施前的网格匹配图;

图4是本发明提出的特征-网格匹配过程中松弛因子实施后的对称面图;

图5是本发明提出的特征-网格匹配过程中松弛因子实施后的网格匹配图。

具体实施方式

三维人脸的对称性分析通过对输入的三维人脸模型的点、线、面信息进行处理,得出输入模型的对称面以及对称面所对应的网格。其主要过程包含了模型采样、模型特征的生成、特征的聚类分析、特征-网格的重映射、对称点对的延伸搜索、网格匹配的迭代修正以及对称矩阵的提取这七个步骤。图1展示了分析过程的流程图。

其中,先对模型进行随机采样并计算每个采样点的局部信息,然后将所采集的顶点进行配对并生成模型特征。接下来对模型特征进行聚类,通过对聚类结果进行分析,将对称匹配关系重映射为模型网格间的匹配关系。然后沿着原模型网格的边进行对称点对的延伸搜索以生成更大的网格,延伸到一定规模之后,使用icp迭代方法对匹配进行修正,得到更准确的配对关系,如果已经满足收敛条件则方法结束。

具体阐述如下:

一、模型的采样

由于kinectfusion所得模型经重建后模型顶点分布较为均匀,因此可以直接使用随机采样模型顶点的办法来代替速度较慢的均匀采样。

除了要得到所采顶点v的位置信息以外,还需要得到一些与之相关的局部信息,这些信息包括:

1.顶点的法向n。

2.顶点的主曲率单位向量c1、c2,它们和法向n构成了一个三维直角坐标系。

3.顶点的主曲率单位向量长度k1和k2,以及曲率比r=min(k1/k2,k2/k1)。

其中点v处曲率需要通过计算得到,其公式如下:

在上面的公式中,ev为点的邻接边集,ne,left和ne,right分别表示边e左右两侧的面法向量,e为边e的单位向量,表示张量积,因此整个内部求和的结果是一个2阶张量,即3×3矩阵。eigenvectori函数表示求此矩阵特征值第i大的单位特征向量,同时其对应的特征值就是上面要求的单位向量长度ki。

二、采样结果的筛选

并不是每个采样结果都是有用的,有些“平坦”区域的采样结果太平凡,导致匹配时点对数量剧增,给后续工作造成不小的麻烦,因此需要对采样结果进行筛选。筛选的条件有如下两条:

1.去掉k1和k2都太小(接近于0)的采样点。

2.去掉r<curvethres的采样点。

curvethres是由用户指定的一个参数,用来约束k1和k2的比例关系。一般来说,k1和k2不能太接近,因为这意味着此点在沿曲面的各个方向上的曲率都相差无几。这种少了一个信息自由度的采样是病态的,它将会导致在后面步骤中无法根据这两个不同大小的曲率方向来确定对称矩阵。在这里需要提前去掉这些点。

三、模型特征的生成

模型特征即点对之间的对称关系。通过将模型特征进行聚类,就可以得到模型中最主要的对称关系,从而推导出整个模型正确的点对匹配。

令p为采样点集,选择p的一个随机子集p',生成一个随机的平面d,把p'中所有顶点的位置、法向、曲率信息都以d为对称平面作镜像变换。

接着逐个把p和p'中的采样点进行配对,得到点对集s:

s={(vi,vj),vi∈pvj∈p′}

点对集s中元素的数量是非常庞大的,而且绝大多数的配对都不会对应到一个合理的对称关系上。利用点的法向和曲率信息,发明人对点对进行一次筛选。

生成一个随机非零方向d,对每一个点对(vi,vj),如果(vi-vj)·d<0,那么就放弃这个点对。这是因为要找的镜像对称关系中vi和vj的位置是可交换的,(vi,vj)和(vj,vi)中仅保留一个即可。这次筛选可以删去一半的对偶点对。

计算伸缩量sij=(ki,1/kj,1+ki,2/kj,2),用以估计点vi变换到点vj时局部形状的伸缩因子。由于人脸左右对称几乎不存在缩放,所以这里引入一个用户给定的参数maxscale,当时,就认为缩放过大,从而放弃此点对。

在对人脸模型的顶点坐标集进行pca分析之后,找出最大的单位主成分向量m。由用户给定阈值maxdirthres,对每一个点对,如果则放弃此点对。这是因为人脸模型经过pca分析后,最大的主成分向量能近似表示头部的上下方向,因此与此方向的夹角越接近越有可能满足左右对称的关系;反之则应该放弃。

点对并不能直接用来聚类,需要生成与点对位置无关,仅与点对之间变换有换的多维特征,并用它来聚类。这个多维特征的向量定义如下:

其中sij为缩放因子,为旋转因子的欧拉角表示,为位移因子。点集中的所有点都是以为对称平面d作过一次镜像变换的,因此原始点集中的镜像对称在特征中就可以表示为沿某条轴作角度为π的旋转。

的计算单单依靠法向是不够的,还需要曲率信息。每个顶点的法向n,主曲率单位向量c1、c2构成了一个小的直角坐标系,那么如果想得到旋转变换,只需要让vi处的坐标系与vj处的坐标系重合即可。

首先把ni旋转对齐到nj,接着把对齐得到的的沿旋转对齐到ci,cj与cj,ci中旋转角较小的那一组。然后将两步变换叠加在一起,就可以得到旋转变换了。最后将旋转变换分解为欧拉角

不过这样做问题在于,第一步把ni对齐到nj的变换不像第二步那样是指定旋转轴的,因此这个变换并不是唯一的。理论上,只要在ninj所夹的平分面上任取一向量作为旋转轴,都可以找出一个唯一的旋转变换使得ni和nj对齐。

为了确定唯一的旋转关系,通常的办法是使用ni×nj作为旋转轴,因为它便于计算,且一定会位于所夹的平分面上。不过经过分析后可以发现,拥有同样对称关系的两处点对中,ni×nj的方向完全可以是任意的,这样取的旋转轴所计算出的旋转参数会分布在聚类空间中的一个椭球上而是不是聚在一点。旋转角越大,这个分布的范围也会越大。而要找的镜像对称在这里的等价于角度为π的旋转,这将极大地影响进一步的聚类。为了能够得出一致的旋转角,发明人使用(vi-vj)×(ni×nj)作为旋转轴,它可以强制对齐到时的转角为π。

得到之后,就可以简单地用旋转后vi与vj的坐标差来确定:

tij=vj-sijrijvi。

四、模型特征的聚类分析

发明人使用mean-shift算法对模型特征的聚类。这个算法的基本思路是:

1.随机在样本空间确定一个区域ω,称为样本窗口。

2.计算ω内所有样本的mean-shift向量mh,g。

3.根据mean-shift向量mh,g移动样本窗口ω,重复上面的过程直到其收敛。

在mean-shift算法求解的过程中,需要对特征之间的距离进行定义。针对本文中的模型特征,规定特征之间的距离为:

其中,β1、β2、β3分别为伸缩因子、欧式距离和旋转距离的权重。需要注意的是,旋转距离要考虑对超过2π和小于0的情况进行折回处理。

五、特征-网格的重映射

找到合适的聚类之后,发明人对聚类中心附近的特征进行平均,就可以得到对称关系。不过这里得到的对称关系仅仅只是一个变换,还需要得出原模型中的哪些网格经过这个变换对应到了另外一些网格。这个过程被称为特征-网格的重映射。

通过在聚类过程中向特征中添加特征的源点对信息,可以得到每个对称关系所关联的点对列表。这些点对在空间上可能不是相邻的,因此需要把这些点对当作起始点对,沿模型进行搜索,重建网格-网格间的对称关系。

六、对称点对的延伸搜索

点对延伸搜索可以使用bfs算法来完成,此算法的过程如下:

从起始点对出发,沿邻边逐步进行扩展搜索,如果新搜索到点对满足给定阈值下的对称性约束,则选出局部最优配对加入到待扩展队列准备进行下一次的扩展,直到可扩展的顶点都搜索完毕为止。

在搜索的过程中,点对之间的距离使用如下的公式计算:

其中为点v变换后的法向。为点v变换后的坐标。如果对于预设阈值ε满足dist>ε即放弃对此点对的延伸。

添加法向的约束可以使得在搜索过程的早期,搜索目标不至于陷入盲目的位置匹配中。因为在这时候所得到的变换矩阵不一定是精确的,如果只考虑位置因素,则可能会把一些本不属于此对称关系中的点包含进来。而为了速度考虑,本算法是不会从已经配对的集合中删除点对的。因此每一步的添加都需要有较强的依据,如果法向不匹配,就放弃加入。

七、网格匹配的修正

发明人根据聚类到特征对网格进行了匹配,但是聚类得到的特征本身是不准确的,因而匹配到的网格延伸会在扩展到一定半径后因超出阈值而停止,并未搜索到模型中所有应该属于此对称特征的点对。所以在这时,需要利用已经匹配到的网格去迭代修正对称特征。

icp算法能够有效地找到网格a和网格b之间的一个变换,使得网格a能够在此变换后与网格b尽量接近。这个算法是一个迭代的过程,迭代的初始输入即为找到的初始特征,这样可以保证icp搜索到的解在给定特征的附近。

给定目标误差函数:

icp算法通过不断更新最近点对的匹配关系,结合最小二乘法解出更优的旋转参数r和位移参数t,使得总体误差隆到一个极小值。

值得注意的是,icp算法可能会破坏点对之间一一对应的关系,从而生成一些未配对的点以及多对一的映射。在此需要删除未配对的点,并且在多对一的映射中只保留最优的那对。这样做的原因是,未配对的点有极大可能在调整了旋转和位移参数之后,就不再满足新的对称关系了;而多对一的映射会在后面步骤中重复迭代中引入不必要的复杂度。

利用icp得到的解替换掉之前使用的特征,重复迭代上节和本节的过程,直到模型中的所有能扩展到的点都匹配到为止。

八、网格匹配迭代过程中的优化

实际上,在整个网格匹配的过程中,匹配阈值∈是一个很难确定的量。其原因有两点:

1.如果这个值太大,那么前几轮的迭代匹配过程就会添加很多误差较大的点对,导致后面icp算法难以调头。

2.如果这个值太小,最终得到的已配对网格只有人脸模型的一小部分,有很大概率会丢掉头发,耳朵等位置的网格。

比较麻烦的是,这两方面的因素还是共存的,几乎很难找到一个对所有轮次都通用的值。

因此,发明人在这个迭代过程中对阈值进行松弛操作,即每一轮结束后的误差阈值都乘以一个大于1的系数λ:

εnew=λε

这样的好处在于,本算法可以选择一个非常小的初始ε。那么前几轮的匹配就是一种保守策略:首先要保持高质量的点对,然后依赖icp去修正对称关系,尽可能地先把对称关系的精确值固定下来;在接下来几轮的匹配中,策略逐渐转为开放,吸收了更多外群的点(在人脸模型上就是头发、耳朵等地方的点),而由于前面已经积累了大量优良的对称点对,因此这些外群的点不会再对icp算法造成干扰了。

虽然本发明主要的研究对象是人脸模型,理应得到的对称关系只有一个。但是在实际过程中,由于聚类空间是平直的欧氏空间,与欧拉角表示的旋转空间不同构,因此欧拉角在被强行放入聚类空间时会存在接近π的地方被拆成两段的情况。加上一些特殊阈值下产生的伪对称关系,实际得到的对称关系一般是多于一个的。

因此在每一次迭代的过程中,不可避免地会出现多个对称关系同时把某个结点纳入其网格配对的情况。这在最终的结果中或许是合理的,但是如果在迭代搜索的过程中这么做,则意味着每次迭代里每个对称关系几乎都要遍历整个模型。对于欧拉角被拆成两段的情况,一般会在结果中生成对偶的两个对称(一个左右,一个右左),这个实际上在同一次迭代只保留一个即可,而对于偶发的伪对称关系,由于其不会形成太大的匹配,因而可以不考虑它。

所以本文在人脸模型这个情形下,新增加了顶点归属唯一化的要求。即对每个新增加的顶点,在每一轮中只允许被至多一个对称关系收纳。

九、对称矩阵的提取

得到最终的匹配特征之后,发明人将特征展开为4×4的仿射变换l。注意在公式里要先乘上之前引入的镜像变换d的变换矩阵,以保证最终矩阵是针对于原始坐标数据而不是经过镜像变换d后的数据。

l=s·mirror(d)trans(t)rot(r)

其中,mirror(d)表示(3)中提到的以平面d为对称面的镜像变换矩阵,trans(t)表示位移t为的平移矩阵,rot(r)表示欧拉角为r的旋转矩阵。

通过上述步骤,发明人在一台配备了一个3.20ghz的4核inteli5cpu,16g内存的计算机上实现了本发明的若干实施实例。

实施例一、发明人测试了本发明提出的特征-网格匹配过程中松弛因子的有效性。图2和图3展示了使用统一∈作为阈值的情况,左侧对称平面在鼻子到嘴的地方已经可以明显看出向右侧偏(在观察者的角度),整个模型的匹配误差较大,而且点对的匹配中又少了头发的部分。图4和图5展示了使用带有松弛操作的∈作为阈值的情况,对称平面能够较好地平分整个人脸,整个模型的匹配误差较小,并且点对的匹配很完整,除了头发部分地方超出了最大误差阈值而未与匹配以外,绝大多数点都能得到正确收纳。

实施例二、发明人测试了本发明提出的特征提取过程中新的方法的有效性。如果使用原始的ni×nj来计算初次旋转轴,则欧拉角的分布明显过于分散,而由于位移向量是通过欧拉角算出来的,导致其分布也会过于分散,不利于接下来的聚类。而改进算法后欧拉角的分布有明显的三个集中区域。同时,位移向量也能得到很好的集中。

实施例三、发明人测试了本发明的方法流程在10个三维人脸模型上的效果。实验结果表明,本发明的方法可以正确高效地对人脸模型进行对称性分析。

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