首页> 中国专利> 序列图像三维重建中的自动纹理映射方法

序列图像三维重建中的自动纹理映射方法

摘要

一种计算机应用技术领域的序列图像三维重建中的自动纹理映射方法,首先通过相机拍摄某物体的序列图像后采用三维重建算法重建出三维模型和相机参数;再运用遮挡原理进行基于投影的快速片元可见性测试;最后依次确定片元的法向量和片元的顶点法向量,然后根据顶点法向量与顶点到相机中心的向量的夹角确定此相机中对应像素颜色相对此顶点颜色的权值,实现自动纹理映射。本发明采用GPU并行计算进行加速,能将速度提高几十至上百倍,使得现有三维重建系统能够在普通机器上运行。

著录项

  • 公开/公告号CN101958008A

    专利类型发明专利

  • 公开/公告日2011-01-26

    原文格式PDF

  • 申请/专利权人 上海交通大学;

    申请/专利号CN201010503004.3

  • 发明设计人 王宁;杨杰;

    申请日2010-10-12

  • 分类号G06T17/20(20060101);G01C3/00(20060101);

  • 代理机构31201 上海交达专利事务所;

  • 代理人王锡麟;王桂忠

  • 地址 200240 上海市闵行区东川路800号

  • 入库时间 2023-12-18 01:35:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-09

    未缴年费专利权终止 IPC(主分类):G06T17/20 授权公告日:20120425 终止日期:20171012 申请日:20101012

    专利权的终止

  • 2012-04-25

    授权

    授权

  • 2011-03-23

    实质审查的生效 IPC(主分类):G06T17/20 申请日:20101012

    实质审查的生效

  • 2011-01-26

    公开

    公开

说明书

技术领域

本发明涉及的是一种计算机应用技术领域的方法,具体是一种基于投影的序列图像三维重建中的自动纹理映射方法。

背景技术

序列图像三维重建是当前计算机模式识别领域的研究热点。它的目标是通过一个物体(例如家具)的从不同角度拍摄的图像,自动恢复出现此物体的三维模型。现有的系统中,比较有名的如GOOGLE MAP的街道浏览系统,以及华盛顿大学计算机科学与工程学院所完成的城市三维重建系统等。

当前三维重建领域的研究重点都放在怎样重建出此三维模型,则很少关注怎样给三维模型贴上真实的纹理。因为三维模型的纹理映射一直是视为计算机图形学的研究内容,所以之前对纹理映射的研究都是怎样给三维模型的材质。这样映射出来的三维模型不够真实。随着序列图像三维重建的逐步研究,计算机视觉与计算机图形学的结合越来越紧密。经国内外专利和论文的检索发现,具有照片质量的真实纹理映射方法主要有两类方法,一类是交互实现,另一类是自动实现。

交互纹理映射主要用于对建筑物的重建。刘培珺于2003年在其博士论文《基于图像序列的建筑物模型重建技术研究与实现》、Sudipta N.Sinha等人在文章Interactive 3D Architectural Modeling from Unordered Photo Collections(从无序照片集交互重建建筑物三维模型)以及其它一些重建建筑物三维模型的文章中,都重建出了建筑物的具有真实纹理的三维模型。但是他们的主要工作都是重建出三维模型,然后手动地为模型的各个平面选取纹理图形。这样做有两个缺点,首先操作比较费时,因为对于一个平面,可能同时有多幅图像都可以看到此图像,所以对于每个平面需要浏览所有的图像以选择合适的,整个过程比较费人力;其次,交互的方法适用性低,因为它要为每个片元手动指定纹理,当模型片元比较多时(比如曲面),交互地完成此工作将是非常费时的,因此交互方法只适于像建筑物这样的具有大平面的三维模型的纹理映射。

自动纹理映射近来逐渐受到重视。Nobuyuki Bannai等人于2007在Automatic texture mapping on real 3D model(对三维模型自动映射真实纹理)、张强于2009年在其硕士论文《三维重建中纹理映射的研究》中都使用的基于图像与三维模型配准的纹理映射方法。但是此方法没有很好地利用三维重建过程中得到的相机矩阵参数。它还需要对不同图像进行匹配(通过轮廓或其它特征点),再做二维到三维的配准。这些工作是多余的。T.Hanusch于2008年A NewTexture Mapping Algorithm For Photorealistic Reconstruction Of 3d Objects(一种新的适用于真实纹理三维模型的纹理映射方法),提出了基于投影的三维模型纹理映射方法。其基本思想是将三维模型的顶点投影到纹理图像中,然后确定点的颜色或面的纹理。由于此模型是由多幅图像重建出来的,纹理映射需要投影到所有的图像中,在每幅图像中都取颜色,然后不同视图中的纹理加权得到最后的纹理。自动纹理映射的核心在于权值的分配。一般情况下,重建出来的三维模型是封闭的,因此对于某一视角,模型的片元之间存在遮挡,即对于此观察视角,模型分为可见部分和不可见部分。不可见部分在此视图中的纹理权值应为0。此方法充分地利用了三维模型重建能得出的信息,但是这种方法仍然比较耗时,当模型片元数较多时(如10^6或更多),测试所有片元对于一个视角的可见性,需要几十分钟的时间。另外,文中只考虑三维模型片元为三角形的情况,但是实际情况下三维模型片元可以用任意多边形表示。

发明内容

本发明针对现有技术存在的上述不足,提供一种序列图像三维重建中的自动纹理映射方法,采用GPU并行计算进行加速,能将速度提高几十至上百倍,使得现有三维重建系统能够在普通机器上运行。

本发明是通过以下技术方案实现的,本发明包括以下步骤:

第一步、通过相机拍摄某物体的序列图像后采用三维重建算法重建出三维模型和相机参数。

所述的三维模型采用顶点加片元的片元模型,其中的片元的各个点存储顶点的索引。

所述的相机参数为3行4列的矩阵,该矩阵中包括物体的成像参数,如焦距、图像尺寸、扭曲度,每一个相机参数对应于序列图像中的一个成像。

所述的三维重建算法是指:PMVS运动信息结构化算法或从物体的剪影重建物体的大致轮廓算法。

第二步、运用遮挡原理进行基于投影的快速片元可见性测试,具体步骤为:

2.1)配置GPU:设片元数为NF,一个网格中的块数为NB,一个块内线程数为NT,一个块负责测试一个片元是否被其它片元遮挡;块内的一条线程计算两个三角形是否重叠,将NF分为多个网格依次计算,块内也让一条线程依次测试多组三角形的重叠性,将NF扩大至NB的整数倍,NF扩大后为NF′,再将NF扩大为块内线程数的整数倍,NF扩大后为NF″;

2.2)进行片元遮挡性判断:两个三角形的遮挡判断包括:投影、三角形重叠性判断和遮挡判断三个步骤,其中:

所述的投影是指:给定相机矩阵Pi,三维模型上的点Vj投影到图像上的点vij,它们的关系如下:vij=PiVj

所述的三角形重叠性判断是指:两个三角形片元Fj,Fk,分别投影到图像Ii中,得到两个三角形Tij,Tik,需要判定这两个三角形是否相互重叠,即它们公共部分的面积不为0,具体判断步骤为:首先判断两个三角形是否隔得足够近,当相隔很远则不会有公共区域;然后做边的交叉性测试,当处于不同三角形中的边有交叉则这两个三角形存在重叠,当所有的边两两都没有交叉,则还有一种情况会出现重叠,即是其中一个三角形被另一个三角形包含,包括两个三角形完全重合的情况;其它情况下这两个三角形不存在公共区域,通过包含测试可以测定更小的那个三角形的三条边的中点及中心是否在另一个三角形内部。

所述的包含测试是指:当待测点p在三角形(A,B,C)内部,则∠ApB<180°,∠BpC<180°,∠CpA<180°且∠ApB+∠BpC+∠CpA=360°。

所述的遮挡性判断是指:当两个片元存在遮挡,则离相机的距离更远的片元被遮挡。

所述的离相机的距离通过以下步骤获得:在片元上以片元重心确定为测距点,然后求取测距点到相机中心的距离。

第三步、依次确定片元的法向量和片元的顶点法向量,然后根据顶点法向量与顶点到相机中心的向量的夹角确定此相机中对应像素颜色相对此顶点颜色的权值,实现自动纹理映射。

所述的法向量通过以下方式获得:由片元的任意两边叉乘得到,只要片元对其中一个相机可见,就可以确定它的法向;当片元对所有相机均不可见,则法向置0。

所述的顶点法向量通过以下方式获得:将本片元相邻的所有片元的法向量求和后归一化处理得到。

所述的权值具体为顶点法向量与顶点到相机中心的向量的夹角的余弦,且当夹角大于或等于90°时,权值取为0。

本发明与现有技术相比的显著效果在于:提出了基于三角形重叠的三维模型片元遮挡测试方法和利用GPU进行片元可见性测试的加速方法,实现了在普通电脑上对序列图像三维重建出来的模型进行自动纹理映射的目标。与交互纹理映射方法的比较,本发明方法可以替换交互纹理映射中的由人工在图像上画多边形的步骤。与基于配准的自动纹理映射方法比较,本发明充分利用了三维重建得到的信息,不用再做配准,所以更快。与基于投影的同类方法相比,由于本发明改进了三角形的遮挡测试算法,并且利用GPU进行并行运算,计算速度也显著提高。本发明方法适合于任意多边形片元描述的三维模型的纹理映射。总之,本发明适应性广,完全自动完成,使用简单,对硬件要求低,对于序列图像三维重建的产品化具有重要的推动作用。

附图说明

图1为本发明流程示意图。

图2为实施例应用示意图。

图3为实施例中两个三角形的重叠性测试示意图。

图4为实施例序列图像三维重建的输入和输出示意图。

图5为实施例可见性测试结果示意图。

具体实施方式

下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

如图1所示,本实施例包括以下步骤:

第一步、通过相机拍摄某物体的序列图像后采用三维重建算法重建出三维模型和相机参数。

所述的三维模型采用顶点加片元的片元模型,其中的片元的各个点存储顶点的索引。

所述的相机参数为3行4列的矩阵,该矩阵中包括物体的成像参数,如焦距、图像尺寸、扭曲度,每一个相机参数对应于序列图像中的一个成像。

所述的三维重建算法是指:PMVS运动信息结构化算法或从物体的剪影重建物体的大致轮廓算法。

第二步、运用遮挡原理进行基于投影的快速片元可见性测试,具体步骤为:

2.1)配置GPU:设片元数为NF,一个网格中的块数为NB,一个块内线程数为NT,一个块负责测试一个片元是否被其它片元遮挡;块内的一条线程计算两个三角形是否重叠,将NF分为多个网格依次计算,块内也让一条线程依次测试多组三角形的重叠性,将NF扩大至NB的整数倍,NF扩大后为NF′,再将NF扩大为块内线程数的整数倍,NF扩大后为NF″;

2.2)进行片元遮挡性判断:两个三角形的遮挡判断包括:投影、三角形重叠性判断和遮挡判断三个步骤,其中:

所述的投影是指:给定相机矩阵Pi,三维模型上的点Vj投影到图像上的点vij,它们的关系如下:vij=PiVj

所述的三角形重叠性判断是指:两个三角形片元Fj,Fk,分别投影到图像Ii中,得到两个三角形Tij,Tik,需要判定这两个三角形是否相互重叠,即它们公共部分的面积不为0,具体判断步骤为:首先判断两个三角形是否隔得足够近,当相隔很远则不会有公共区域;然后做边的交叉性测试,当处于不同三角形中的边有交叉则这两个三角形存在重叠,当所有的边两两都没有交叉,则还有一种情况会出现重叠,即是其中一个三角形被另一个三角形包含,包括两个三角形完全重合的情况;其它情况下这两个三角形不存在公共区域,通过包含测试可以测定更小的那个三角形的三条边的中点及中心是否在另一个三角形内部。

所述的包含测试是指:当待测点p在三角形(A,B,C)内部,则∠ApB<180°,∠BpC<180°,∠CpA<180°且∠ApB+∠BpC+∠CpA=360°。

所述的遮挡性判断是指:当两个片元存在遮挡,则离相机的距离更远的片元被遮挡。

所述的离相机的距离通过以下步骤获得:在片元上以片元重心确定为测距点,然后求取测距点到相机中心的距离。

第三步、依次确定片元的法向量和片元的顶点法向量,然后根据顶点法向量与顶点到相机中心的向量的夹角确定此相机中对应像素颜色相对此顶点颜色的权值,实现自动纹理映射。

所述的法向量通过以下方式获得:由片元的任意两边叉乘得到,只要片元对其中一个相机可见,就可以确定它的法向;当片元对所有相机均不可见,则法向置0。

所述的顶点法向量通过以下方式获得:将本片元相邻的所有片元的法向量求和后归一化处理得到。

所述的权值具体为顶点法向量与顶点到相机中心的向量的夹角的余弦,且当夹角大于或等于90°时,权值取为0。

本实施例选用Keith Forbes提出的Creating Visual Hull Models Using Only Two Mirrors and an Uncalibrated Perspective Camera(使用两片镜子及未标定的相机重建视觉外形)一文中的三维模型重建方法。按照文中的要求,在拍摄物体时,将两片镜子放在旁边,使得对这个物体进行拍摄得到的图像中,每幅图像中至少有此物体的5个成像,且这5个成像之间没有重叠。可以选取不同角度多次拍摄,拍摄次数越多,则重建出来的三维模型越精确,但是拍摄过程中不能改变物体及镜子。一般情况下,拍摄2~3次即可以得到比较精确的三维模型。序列图像三维重建的输入和输出见附图4。其次,分配GPU资源。由于整个运算过程在GPU中运行,所以把运算过程中需要使用的数据拷贝到显存中。再次,利用GPU两两计算片元遮挡性。最后,确定顶点颜色。在GPU中并行计算三角形的重叠性,最终确定片元的可见性。测试环境为:CPU:Intel i5 2.53GHz,显卡Nvidia NVS 3100M。

由于本实施例方法与T.Hanusch文中算法的基本原理相同,所以对它们进行了比较,见表1和表2。由于算法的关键在于片元可见性的计算,所以本实施方案只比较了它们对片元可见性测试的差异。

表1运行时间及加速比

  观测相机  T.Hanusch(s) 本实施例方法(s)  加速比  0  63.03  2.78  22.6727  1  76.44  2.77  27.5957  2  100.47  2.65  37.9132  3  71.59  2.72  26.3199  4  45.71  2.66  17.1842  5  91.88  2.67  34.4120  6  74.42  2.72  27.3603  7  88.69  2.67  33.2172  8  71.51  2.77  25.8159  9  47.59  2.72  17.4963

表中的运行时间是指总的运行时间,除了调用时间,还包括资源分配及回收的时间。

由表1可见,本实施例方法运行效率有显著的提升。在本实施设备中,高性能CPU与低端GPU的比较中,本实施例方法与T.Hanusch中方法的加速比也能达到40倍左右。可以预期,如果使用高端显卡,加速比可以进一步提高至上百倍。从运行稳定性来看,使用本实施例方法比T.Hanusch运行时间稳定。本实施例方法每次所需要的时间都差不多,而使用T.Hanusch运行过程则是时快时慢。从判断误差来看,本实施例方法与T.Hanusch计算得到的结果存在一些差异。二者的相对误差为见表2.

表2本实施例方法与T.Hanusch运行结果差异

  观测相机  差异  0  184  1  201  2  195  3  157  4  88  5  162  6  178  7  131  8  143  9  117

由此表,本实施例方法与T.Hanusch运行结果差异的最大差异209/12924*100%=1.6%。可见性测试结果见附图5。图5中,第一列为T.Hanusch可见性测试结果,第二列为本实施例方法可见性测试结果。由图可见,某些本该可见的片元测试结果为不可见,某些不可见的片元测试结果却为可见。出现这样的错误结果,主要原因分别是:

·本不可见而测试结果为可见,这是因为本实施例在判断两个三角形是否重叠时,只使用了边交叉约束,而没有使用其中一个被另一个包含的约束。

·本来可见而测试结果为不可见,这是因为本实施例没有考虑片元被部分遮挡的情况。仔细观察三维模型,可以发现某些片元在某些观察角度下只是部分可见。本实施例将这种情况下的片元视为不可见。

然而,这样的误差对于纹理映射效果的影响不是很大。一方面,因为纹理映射需要考虑片元对所有相机的可见性,如果片元法向与此片元中心到相机中心向量的夹角接近于90度(这种情况下误差极大),将它划分为不可见对结果无太大影响。另一方面,即使某一片元本来不可见,而测试结果将其划分为可见,那么它在所有观测相机中的权值也是很小的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号