一种基于准共形映射的三维模型变形算法的制作方法

文档序号:18548150发布日期:2019-08-27 21:53阅读:459来源:国知局
一种基于准共形映射的三维模型变形算法的制作方法

本发明属于计算机视觉技术领域,具体涉及一种基于准共形映射的三维模型变形算法。



背景技术:

视觉是人类感知和认识世界的重要手段。计算机视觉技术通过模拟人类的视觉让计算机对图像进行获取、处理、分析和识别以实现对现实世界的认识。三维模型的变形一直是计算机视觉领域的研究热点之一,可广泛应用于影视、动画、虚拟试衣、虚拟现实、电子游戏、医学以及三维模型的快速构建等领域。通过三维模型变形可以得到目标图像的三维模型,其次还可以对模型进行编辑得到其他的效果,快速构建完整的三维模型,使其可以更有效,应用于更广泛的领域。

目前,三维模型的变形方法主要有自由曲面变形技术、基于骨架的变形技术和基于微分坐标的变形技术。基于自由曲面变形技术需要将变形部分嵌入到一个平行六面体中,通过大量的移动控制点来实现变形,现在的模型通常有几百甚至几万个顶点,通过移动顶点即耗时又耗力且效果不好。基于骨架的变形技术需设置骨架模型并且需要选择相应的带势函数,这两点就是困难的,生活中像人脸这些模型不明显的模型,此方法效率更低。基于微分坐标的变形技术可以保持模型的局部特征,但是微分坐标对旋转敏感,使得网格的局部信息会发生旋转扭曲,特别是对于大尺度变形时,其扭曲更为严重。利用现有的算法很难既保持模型的局部特征又使得模型失真扭曲达到最小且效率高。



技术实现要素:

针对上述现有三维模型变形算法存在的问题,以及为了解决现有模型利用率,现有变形算法需要操作更多的控制点、对于骨骼不明显的模型处理效果差以及微分坐标变形技术对旋转敏感,以及直接在三维模型上变形较难的问题,本发明提出一种基于准共形映射的三维模型变形算法,本发明适用于基于单幅图像的三维模型变形,适用于具有任何边界的模型的变形。

为解决上述技术问题,本发明采用了以下技术方案:

一种基于拟共形映射的三维模型变形算法,其包括以下步骤:

步骤1,对输入的目标二维图像进行预处理,提取图像中物体的轮廓线以及特征点点集{t:};

步骤2,在三维模型库中检索到与目标图像上物体相似度最高的模型作为变形的三维源模型,获取三维源模型的顶点数与面片数信息,提取其特征点点集{t1:};

步骤3,对所述提取了轮廓线和特征点点集的目标二维图像进行网格化,得到与所述源模型具有相同顶点数和面片数的目标二维网格模型,并提取其特征点点集{t2:};

步骤4,将所述三维源模型和三角网格化的目标二维网格模型通过准共形映射参数化到二维平面圆盘中,作为二维变形的依据;

步骤5,对所述源模型的特征点点集{t1:}和目标二维网格模型的特征点点集{t2:}建立映射关系;

步骤6,在所述源模型中选取部分特征点作为变形的控制点,控制点的集合表示为{s:},利用准共形迭代算法计算在控制点集合作为约束的条件下其余顶点所做的变化,即得到在控制点集合作为约束的条件下所有顶点的坐标,得到与目标模型误差最小的变形后的二维模型;

步骤7,对所述变形后的二维模型,求其对应的余切拉普拉斯矩阵,选取部分控制点集合{s1:}作为恢复三维曲面的已知点,并将这些已知点作为线性系统中的约束条件,通过最小二乘法来得到满足约束条件的三维模型顶点的信息,完成对三维模型变形,得到变形后的三维模型。

进一步地,所述步骤2中的三维源模型是利用三维模型检索方法在meshdgp三维模型库中检索得到,所述三维源模型的顶点数和面片数信息分别记为vn={v1,v2,v3,...,vn}和fm={f1,f2,f3,...,fm}。

再进一步地,所述步骤3的网格化为三角网格化,是根据步骤2中三维源模型的顶点数与面片数信息,将提取了轮廓和特征点的二维图像三角网格化,将二维图像三角网格化为和三维模型具有相同顶点数与面片数的二维网格模型,并获取其特征点点集{t2:}。

更进一步地,所述步骤4将所述三维源模型和三角网格化的目标二维网格模型通过准共形映射参数化到二维平面圆盘中,其参数化的原则为:

首先,需要确定模型的边界和到平面上的边界的映射,即找到模型的边界点,计算边界点所在边的长度,计算边界边在其所属三角形中边对应的角度,用边的长度将模型的边界参数化到二维平面圆盘;

其次,在边界顶点位置固定的约束下,确定除边界点之外的其余点在平面圆盘中的位置,即根据模型点与面的信息计算模型的余切拉普拉斯矩阵,将其参数化到二维平面圆盘中。

更进一步地,所述步骤4中准共形映射的参数化过程包括如下步骤:

步骤4.1,根据源模型面片的信息计算每个面的边的信息,即halfedge信息,以halfedge信息记录边的顶点和方向的信息,内部边缘边halfedge信息将出现两次,边界边缘边halfedge信息将出现一次,将halfedge信息出现一次的边的两个顶点信息存储,将此记录为边界顶点bd;

步骤4.2,计算边界顶点所在边的长度,记为b1,根据b1在总长度的比例来计算参数化到二维平面圆盘中各边界点所在的位置,即将边界点参数化到二维平面,得到边界点的二维坐标;

步骤4.3,根据需要参数化模型的面片的信息,计算得到每个三角形三个边的信息,edge中存储每条无向边得两个顶点信息,ef存储每条边所属的面片信息记录每个边所在的面索引值,边界边的另一面用∞,通过ef值计算出网格内部所有面片数所在三角形的角度值,计算出余切拉普拉斯矩阵(laplace-beltrami),使其在边界点固定的约束条件下,将内部所有顶点参数化到二维平面圆盘,得到最终所有顶点的二维坐标uv。

更进一步地,所述步骤5对源模型的特征点点集{t1:}和目标图像的特征点点集{t2:}建立映射关系;具体是指对步骤4中三维源模型参数化后得到的所有顶点的二维坐标uv和目标图像参数化后的所有顶点的二维坐标uv1建立映射关系。

更进一步地,所述步骤6中利用准共形迭代算法计算两个二维平面之间的映射关系,是使用贝尔特拉米系数bc代表一组微分同胚,并在目标平面中寻找最佳的贝尔特拉米系数bc系数,从最佳的贝尔特拉米系数bc中有效地重建关联的差分,最终利用线性beltrami求解器lbs从最优贝尔特拉米系数bc中计算相关联的准共形映射。

更进一步地,所述步骤6的准共形迭代算法的计算包括如下步骤:

步骤6.1,根据参数化后模型的面片信息和uv坐标计算得到广义拉普拉斯矩阵a,将控制点集合{s:}的坐标和其在目标二维模型中对应顶点的坐标建立稀疏矩阵,并将其加入到a中,得到在控制点作为约束的条件下,最初的映射函数f0和此时所有顶点的坐标uv_new;

步骤6.2,根据参数化后模型的面片信息、uv坐标以及步骤6.1中求出的uv_new坐标,计算得到在控制点作为约束条件的情况下,目标二维模型的贝尔特拉米系数bc,即根据源模型网格结构中顶点的信息vn计算μn+1,fn+1,vn+1;其中,μ表示贝尔特拉米系数,f表示每一次计算后的映射函数,v表示每次迭代后计算出的顶点坐标;

步骤6.3,当||vn+1-vn||≥ε时,重复步骤6.1和步骤6.2,否则,结束迭代算法的计算。

更进一步地,所述步骤6中的ε取值为:0<ε<0.01。

更进一步地,所述步骤7中,求变形后二维模型的余切拉普拉斯矩阵,选取部分控制点集合{s1:}作为恢复三维曲面的已知点,并将这些顶点作为线性系统中的约束条件,最终通过最小二乘法来得尽可能满足约束条件的三维模型顶点的信息,最终完成对三维模型变形,得到变形后的三维模型,即为目标二维图像的三维模型;具体为:

利用2d→3d模型恢复算法将变形后的二维模型恢复到三维,得到变形后的三维模型;所述2d→3d模型恢复算法包括如下步骤:

步骤7.1,对步骤6中求得的变形后的二维模型求其对应的余切拉普拉斯矩阵(laplace-beltrami)wij:

其中,αij,αji是两个与边(xi,xj)相对的角度;

步骤7.2,为x、y、z坐标分别构建如下线性系统:wx=0,wy=0,wz=0;

步骤7.3,选取控制点集合{s1:}中的m个顶点作为已知点:c={s1,s2,s3,s4,…,sm},其中每个顶点为vs=(xs,ys,zs),s∈c;

步骤7.4,将m个顶点加入步骤7.2构造的线性方程,形成一个长为(n+m)*n的系统,表示如下:

ax=bx,ay=by,az=bz

其中,

步骤7.5,通过最小二乘法求解此线性方程,求解未知数满足如下表达式的最小值;

步骤7.6,最小值为x=(ata)-1atbx,y=(ata)-1atby,z=(ata)-1atbz,最终所求的三维模型顶点坐标为v_new=(x,y,z)。

本发明采用以上技术方案,首先用现有的方法对目标图像的进行预处理,提取轮廓以及特征点信息,利用三维模型检索的方法检索出与目标图像相似度最高的三维模型作为变形的基础;其次,采用准共形映射的方法将检索到三维模型以及预处理过的二维图像进行参数化,分别将其参数化到二维平面圆盘中,得到变形的源模型以及变形的目标模型;接着,采用准共形迭代算法来计算两个平面之间的映射关系,使用贝尔特拉米系数(bc)代表一组微分同胚,并在目标平面中寻找最佳的bc系数,从最优bc中有效地重建关联的差分,最终利用线性beltrami求解器(lbs)从最优bc中计算相关联的准共形映射;最后,采用2d→3d模型恢复算法,通过网格的拓扑信息和一部分几何信息,来得到满足约束条件的三维模型几何信息,完成对三维模型的变形操作。

与现有技术相比,本发明具有以下有益效果:

本发明提出的基于准共形映射的三维模型变形算法相对现有的三维模型算法,具有以下有益效果:

首先,将检索出相似度最高的三维模型利用准共形映射的方法参数化到二维平面圆盘中,采用了保角映射(conformalmapping)也即准共形映射的方法,可以尽可能的保持模型的局部特征映射到二维平面圆盘,尽可能的减少了共形失真,使得共形失真达到了最小,比传统的映射方法简单而且保持了源模型的更多的局部细节。

其次,采用了准共性迭代的方法计算两平面之间的映射,使用贝尔特拉米系数(bc)代表一组微分同胚,它的优点在于使用bc来表示差异性保证了映射的不同性质,即使是非常大的变形,准共形迭代算法也能精确有效的找到两个平面之间的映射关系,另一方面,利用准共性迭代算法计算准共形映射时,对于某一局部只需要选取少量的控制点即可达到变形的效果,较少了用户的交互性,算法是线性的,效率更高,准确性强。

再次,采用2d→3d模型恢复算法,根据二维模型的拓扑信息和一部分已知的几何信息来尽可能的恢复满足约束条件的三维模型结构,其优势在于,采用的是余切拉普拉斯矩阵,不仅考虑了模型的拓扑信息,而且考虑了模型的几何信息,且该算法最后通过求解最小二乘法的方法来求解得到结果,其也是线性的,时间复杂度低、效率高。因此本发明相对现有的三维模型变形具有更好的鲁棒性。

最后,本发明提出的方法能够适用于具有任何边界的模型,在模型选取时要求较低,适用于三维模型的变形以及三维模型的快速构造中,可应用于动画娱乐、整容手术、医学以及几何建模等更广泛的领域。

附图说明

图1是本发明的系统流程图;

图2是实施例1的目标二维图像;

图3是实施例1的目标二维图像的轮廓线提取图;

图4是实施例1的目标二维图像的特征点提取图;

图5是实施例1的二维网格模型和三维源模型参数化的二维平面圆盘的效果图;

图6是实施例1的源模型二维变形前与后的对比图;

图7是实施例1的模型变形得到的最终三维模型结果图;

图8是实施例2的二维网格模型和三维源模型参数化的二维平面圆盘的效果图;

图9是实施例2的源模型二维变形前与后的对比图;

图10是实施例2的模型变形得到的最终三维模型结果图;

图11是实施例3的二维网格模型和三维源模型参数化的二维平面圆盘的效果图;

图12是实施例3的源模型二维变形前与后的对比图;

图13是实施例3的模型变形得到的最终三维模型结果图;

图14是实施例4的二维网格模型和三维源模型参数化的二维平面圆盘的效果图;

图15是实施例4的源模型二维变形前与后的对比图;

图16是实施例4的模型变形得到的最终三维模型结果图。

具体实施方式

下面结合附图和具体实施例进一步对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1:

如图1所示,一种基于准共形映射的三维模型变形算法,其包括如下步骤:

步骤1,如图2所示,对输入的二维人脸图像进行预处理,提取图像中物体的轮廓线以及特征点点集{t:},提取的轮廓线如图3所示;其中特征点点集{t:}是通过对目标图像进行预处理,提取轮廓以及特征点的信息得到,特征点的提取如图4所示。

步骤2,利用三维模型检索方法在meshdgp三维模型库中找到与目标图像人脸相似度最高的模型作为变形的三维源模型,获取检索出模型的顶点数与面片数信息,分别记为vn={v1,v2,v3,...,vn},fm={f1,f2,f3,...,fm},提取其特征点点集{t1:};

步骤3,对提取了轮廓线和特征点点集的目标二维图像进行三角网格化,得到与源模型(即检索出的三维模型)具有相同点数和面片数的目标二维网格模型,提取其特征点点集{t2:};

步骤4,对步骤3中所述网格化后的目标二维网格模型和三维源模型采用拟共形映射的方法将其参数化到二维平面圆盘,作为二维变形的依据。参数化的二维平面效果图如图5所示,其中图5(a)为人脸二维网格模型参数化到二维平面圆盘的效果图,图5(b)为人脸三维源模型参数化到二维平面圆盘的效果图。参数化原则为:

首先,确定模型的边界和到平面上的边界的映射,即找到模型的边界点,计算边界点所在边的长度,计算边界边在其所属三角形中边对应的角度,用边的长度将模型的边界参数化到二维平面圆盘;

其次,在边界顶点位置固定的约束下,确定除边界点之外的其余点在平面圆盘中的位置,即根据模型点与面的信息计算模型的余切拉普拉斯矩阵(laplace-beltrami),在此不仅考虑了模型的拓扑信息,而且考虑了模型的几何信息,将其参数化到二维平面圆盘中。

参数化的过程通过如下步骤4.1至步骤4.3来实现:

步骤4.1,根据模型面的信息计算每个面的边的信息,即halfedge信息,以halfedge信息记录边的顶点和方向的信息,内部边缘边halfedge信息将出现两次,边界边缘边halfedge信息将出现一次,我们将halfedge信息出现一次的边的两个顶点信息存储,将此记录为边界顶点bd;

步骤4.2,计算边界顶点所在边的长度记为b1,根据bl在总长度的比例来计算参数化到二维平面圆盘中各边界点所在的位置,即将边界点参数化到二维平面,得到边界点的二维坐标;

步骤4.3,根据面的信息计算得到每个三角形三个边的信息,edge中存储每条无向边得两个顶点信息,存储每条边所属的面片信息记录每个边所在的面索引值,边界边的另一面用∞,通过ef值计算出网格内部所有面片数所在三角形的角度值,计算出余切拉普拉斯矩阵(laplace-beltrami),使其在边界点固定的约束条件下,将内部所有顶点参数化到二维平面圆盘,得到最终所有顶点的二维坐标uv。

步骤5,对源模型的特征点点集{t1:}和二维网格模型的特征点点集{t2:}建立映射关系;具体是指对步骤4中三维源模型参数化后得到的所有顶点的二维坐标uv和目标图像参数化后的所有顶点的二维坐标uv1建立映射关系。

步骤6,使用准共形迭代算法计算两个二维平面之间的映射关系,是使用贝尔特拉米系数(bc)代表一组微分同胚,并在目标平面中寻找最佳的bc系数,从最优bc中有效地重建关联的差分,最终利用线性beltrami求解器(lbs)从最优bc中计算相关联的准共形映射。即对步骤5中建立的映射关系中选取一部分顶点作为控制点,控制点的集合为{s:},本实施例从二维人脸模型鼻子的两个点作为控制点,利用准共形迭代算法计算在控制点集合作为约束的条件下,其余点所做的变化,即得到所有顶点的坐标,得到与目标二维平面圆盘误差最小的变形后的二维模型,变形前后的二维源模型见图6所示,其中图6(a)为变形前的二维源模型,图6(b)为变形后的二维模型。

准共形迭代的过程通过如下步骤6.1至步骤6.3来实现:

步骤6.1,根据参数化后模型的面片信息和uv坐标计算得到广义拉普拉斯矩阵a,将控制点集合{s:}的坐标和其在目标二维网格中对应的点的坐标建立稀疏矩阵,并将其加入到a中,得到在控制点作为约束的条件下,最初的映射函数f0和此时所有顶点的坐标uv_new。

步骤6.2,根据参数化后模型的面片信息、uv坐标以及步骤6.1中求出的uv_new,计算得到在控制点作为约束条件的情况下,目标模型的贝尔特拉米系数bc,即根据源模型网格结构中顶点的信息vn计算μn+1,fn+1,vn+1,其中,μ表示贝尔特拉米系数,f表示每一次计算后的映射函数,v表示每次迭代后计算出的顶点坐标。

步骤6.3,当||vn+1-vn||≥ε,(ε=0.005)时,迭代步骤6.1和步骤6.2,否则,迭代算法结束。

步骤7,对步骤6中求得的变形后二维模型的余切拉普拉斯矩阵(laplace-beltrami),选取部分控制点集合{s1:}作为恢复三维曲面的已知点,并将这些顶点作为线性系统中的约束条件,最终通过最小二乘法来得到尽可能满足约束条件的三维模型顶点的信息,最终完成对三维模型变形,得到变形后的三维模型,即为人脸二维图像的三维模型。二维人脸图像的目标模型效果图如图7所示。

2d→3d模型恢复算法过程通过如下步骤7.1至步骤7.6来实现:

步骤7.1,对步骤6中求得的变形后的二维模型求其对应的余切拉普拉斯矩阵(laplace-beltrami)wij:

其中,αij,αji是两个与边(xi,xj)相对的角度;

步骤7.2,为x、y、z坐标分别构建如下线性系统:wx=0,wy=0,wz=0;

步骤7.3,选取200个顶点作为已知点:c={s1,s2,s3,s4,…,sm}其中每个顶点为vs=(xs,ys,zs),s∈c(m=200);

步骤7.4,将200个顶点加入第二步构造的线性方程,形成一个长为(n+m)*n的系统。如下:

ax=bx,ay=by,az=bz

其中,

步骤7.5,通过最小二乘法求解此线性方程,求解未知数满足如下表达式的最小值。

步骤7.6,最小值为x=(ata)-1atbx,y=(ata)-1atby,z=(ata)-1atbz,最终所求的三维模型顶点坐标为v_new=(x,y,z)。

实施例2:

实施例2与实施例1的区别在于:

目标二维图像为二维耳朵图像,检索到的三维源模型为耳朵模型,如图8所示为二维耳朵网格模型和三维源模型参数化的二维平面圆盘的效果图,其中左图为二维耳朵网格模型参数化到二维平面圆盘的效果图,右图为耳朵三维源模型参数化到二维平面圆盘的效果图。在耳坠部分选取3个顶点作为控制点,进行了拉伸、平移操作,变形前后的二维模型如图9所示,其中图9(a)为变形前的二维图,图9(b)为变形后的二维图,耳朵模型变形得到的最终三维模型结果图如图10所示。在步骤6.3中ε=0.001,步骤7.3中m=200。

实施例3:

实施例3与实施例1的区别在于:

目标二维图像为二维褶皱老人图像,检索到的三维源模型为褶皱老人模型,如图11所示为二维褶皱老人网格模型和三维源模型参数化的二维平面圆盘的效果图,其中图11(a)为二维褶皱老人网格模型参数化到二维平面圆盘的效果图,图11(b)为褶皱老人三维源模型参数化到二维平面圆盘的效果图。选取褶皱老人嘴唇中的1个顶点作为控制点,使模型嘴角张开,变形前后的二维模型如图12中所示,其中图12(a)为变形前的二维图,图12(b)为变形后的二维图,褶皱老人模型变形得到的最终三维模型结果图如图13所示。在步骤6.3中ε=0.006,步骤7.3中m=520。

实施例4:

实施例4与实施例1的区别在于:

目标二维图像为二维猪八戒图像,检索到的三维源模型为猪八戒模型,如图14所示为二维猪八戒网格模型和三维源模型参数化的二维平面圆盘的效果图,其中图14(a)为二维猪八戒网格模型参数化到二维平面圆盘的效果图,图14(b)为猪八戒三维源模型参数化到二维平面圆盘的效果图。选取选取猪八戒左耳朵中的2个顶点作为控制点,进行旋转操作,使猪八戒的左耳朵尽可能的靠近脸部,达到左耳朵消失的效果,变形前后的二维模型如图15所示,其中图15(a)为变形前的二维图,图15(b)为变形后的二维图,猪八戒模型变形得到的最终三维模型结果图如图16所示。步骤6.3中ε=0.01,步骤7.3中m=640。

表1中记录了实施例中的模型顶点数、面片数等参数以及使用本发明提出的变形算法的运行时间。从表中数据可以看出,准共形迭代算法所需时间会随着顶点数的增加而增加,对于顶点数为7千多的顶点所花时间也仅仅3s左右。总运行时间也是随着顶点数、面片数以及变形所取控制点的个数的增加而增加,顶点数和面片数相近的模型,运行时间会随着变形所需控制点的个数的增加而增加。通过表中的数据进一步说明本发明是一种高效的三维模型变形算法。

表1变形模型的参数和运行时间(s)

尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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