基于点云数据的三维物体表面三角网格构建-构建算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于点云数据的三维物体表面三角网格

构建算法

电子工程与信息科学系杨祎

摘要

基于点云数据构造三角网格mesh是三维物体表面重建中的一个重要问题,本文在基于实际点云数据获取方式的基础上提出了一种分步生长的三角形网格构建算法,该方法具有对计算机硬件要求低、可处理大量数据,构网精度可控且生成网格质量高等优点,并且对实际中可能遇到的各种点云分部情况都作了考虑,设计了相应的解决措施,因而具有较好的普适性和健壮性。文章还对算法中一些阈值的选取提出了程序自适应计算的方法和思路。并对未来的进一步工作作出了展望。

一、 问题分析

现代三维图形技术的很多方面,特别是反向工程中对于三维物体的重建都是采用三维扫描仪对对象物体表面进行采样,然后通过计算机处理得到物体的三维模型。直接得到的点云数据包含了物体表面的拓扑结构,但点云本身并不能表示。因而我们需要对点云数据进行分析,构建网格来反映物体表面的拓扑结构。现在常用的网格构建方法有:基于多项式拟合的NURBS模型、三角形网格模型和四边形网格模型等。

其中三角形作为三维建模的基本表示元素,不仅性质简单,而且可以有效表示物体表面复杂的几何属性,并且在计算机硬件的发展中得到了硬件的直接支持,使得基于三角形的三维图形运算变得便捷,速度大大提高。

建立三角网格算法的关键在于三角形的选取原则、数据预处理以及防止坏三角形和空洞产生的方法。本文将要讨论的问题包括了以上几个方面的问题。

二、 实际中可能遇到的问题

实际中物体表面情况是多种多样的,反映到点云数据上,点的分部情况是比较负责的,这也是目前基于点云数据构建三角网格的难点所在。本文所提出的算法充分考虑了这些可能的情况,并且设计了相应的解决措施。下面详细说明:

1.物体表面有错位或某些地方曲面斜率有急剧的变化,比如断层(如图

示)。如果采用从空间任意点向周围发展的构网方法则可能带来的问题

是会无法识别到这些断面而造成网格发生间断,产生对物体表面的错误

描述。而采取本文的分层处理,判断物体表面曲率变化趋势的方法,并

且可以识别到这些断层面,对它进行准确描述。

2.对物体采样得到的数据点分部不均匀,有的地方过于密集而有的地方过

于稀疏,这可能会造成构网时产生空洞,点过于稀疏的地方无法被三角形覆盖,而点过于密集地方又会有些点被忽略,无法准确反映物体表面的几何特征。本文的算法首先通过对数据进行预处理,使得点在每个集合分布尽量均匀,其次,对于三角形的选择原则也是具有弹性的,可根据点分布密集程度作出一定调整,使得不会有点被漏掉也不会被重复使用,再次,由于每次需要处理的点和三角形相对来说数量不大,因而对构成的三角形网进行遍历是可行的,通过这种方法可以发现空洞并进行弥补。

3.噪声点的影响,可能使得构网走样,产生“毛刺”或是“罅缝”,与实

际表面有较大偏差。本文算法中采取了一系列措施来识别噪声点,并减小它们的影响,使构建的网格尽量精确反映实际表面的几何特征。

4.物体表面发生扭曲或打结,比如表面特征类似麻花,这时物体表面间距

变近,可能会使程序发生误判将两个面用三角形连接起来,发生三角形穿越物体内部的现象,错误构网。而本文算法通过建立层间点的优先级机制则可避免发生三角形穿越物体的现象,使得准确识别两个距离很近的表面,而不会发生把它们连接起来的错误。

5.采样数据点是一小块一小块聚集的,比如对一匹马的模型从其脚底向上

平行扫描时,在马腿部分得到的点就是分成四个小圈,可能产生的问题是由于圈与圈之间间隔太大,超越了三角形边长阈值,因而有些圈的点会因距离已有网格太远而被忽略。本文算法通过对点赋三种不同的访问属性,使得那些距离很远的点也不会被忽略。在马的例子中能顺利的将四条马腿与马腹准确相连。

断面

图1

这些纠错的具体措施在下面的算法细节中将详细描述。

三、 算法的主要思想

现实中采用三维扫描仪对物体表面进行采样的时候都是按照一定的方向逐行采样的,例如按照Z 轴方向对物体表面进行逐圈扫描,从而得到物体表面采样点的坐标,或者三个坐标轴方向结合起来进行。本文所要描述的算法的主要思想便是结合实际中点云的获取方式,将点云数据按照扫描方式排序成若干个集合,然后从位于最底层(或最上层)的集合开始对每两个相邻集合进行三角形建网,这样逐层生长最终得到完整的三角网格结构。这种算法的好处在于结合了实际情况,使得处理相对简化,噪声的影响小,并且每次处理的数据量不大,节省存储空间,虽然时间度上会有所增加,但是对于硬件的要求低,适合台式PC 运行,并且对于大数据量的点云集合是有意义的。

四、 算法流程及具体实现

算法主要分为两个部分,数据预处理和三角网格的建立,而后者建立在构建相邻两个点集合所组成的三角网格带的基础上。在数据预处理和三角形构建原则上都是具有开放性的,用户可以根据实际情况调整其中的限制参数来控制构网的精度。

下面将分步介绍算法的具体内容。

1. 用户设定参数的定义:

z L 三角形片面边长的最大允许值。

z 0θ 三角形内角的最小允许值。

上述参数的说明和具体选择方法:

1) 三角形面片的边长上界值。这个值主要是用来控制生成的三角形的

大小,从而控制网格对实际物体表面的拟合精度,它的选择可以由用户根据实际情况自己给定,也可以由一种自适应算法,由程序根据点云的分布情况给出,具体算法将在文章的最后一个环节中作出讨论。

2) 三角形内角的最小值。这个量用来控制生成三角形的形状,防止细长的三角形生成,使三角形尽量均匀,因为细长的三角形往往不能很好贴合实际物体的表面。一般来说,取比较合适,当然也可以根据实际需要进行调整。

012θ°=2. 三角形的构成原则(原则1)

z 三角形的每条边长都不能大于L 。

z 三角形的每个内角都要大于0θ。

z 三角形的任一边最多只能被两个三角形共用。

z

新的顶点只能与已生成的网格的边界上的边相连构成新的三角形。 z

新生成的三角形的边不能与已有三角形的边相交。

相关文档
最新文档