一种外存三维模型的处理方法

文档序号:6377926阅读:386来源:国知局
专利名称:一种外存三维模型的处理方法
技术领域
本发明涉及计算机图形学和计算机视觉技术领域,特别涉及一种外存三维模型的处理方法。
背景技术
从点云重建出三维网格模型可以被分为两大类基于隐式曲面的方法和基于计算几何的方法。基于计算几何的方法可以保证初始点云中点的位置信息在重建结果中作为网格模型的顶点得到保留。该类方法基本思想是对初始点云进行狄洛尼三角化或者构建维诺图(Voronoi Diagram),然后根据一定规则删除和保留三角形,最后得到流形网格曲面。有学者提出了名为Power Crust的重建方法,该方法首先建立点云数据的维诺图,然后计算每一个点的极点(Pole),即维诺单元(Voronoi Cell)中距该点最远的点。Poles按照一定规则被标记为内部或者外部,连接内部Poles的三角面片即组成重建出的网格模型。基于计算几何的方法可以根据原始数据的采样率给予重建结果一定程度上的理论保证,但是该方法对噪声的鲁棒性不强,对于实际点云数据应用价值稍低。因此在实际中应用更广泛的是基于隐式曲面的方法。该类方法首先根据点云位置拟合出光滑的隐式函数,然后用Marching Cube—类的方法从等值面构建出网格模型。基于以上思想,有学者将隐式曲面的求解转化为一个泊松方程问题。该方法对点云空间进行层级划分,并根据划分结构定义指示函数,指示函数满足在点云表面附近的梯度方向与该处的点云法向量一致,最后通过求解线性稀疏方程获得隐式曲面的定义。基于泊松方程的重建方法对噪声和数据缺失鲁棒性强,对于实际物体的点云扫描数据重建效果良好,具有良好的应用价值。近年来,三维激光扫描仪的价格不断下降,在各种领域得到极快的普及,而且扫描仪的扫描精度也显著提高。因此在许多应用领域如古文物的数字化保存、城市数字化等方面获得的三维点云数据的规模十分庞大,往往具有千万级乃至亿级的顶点个数,存储容量也达到几个甚至几十个G字节。如果利用已有的方法对如此庞大的数据进行信息的提取及重建,一方面所需时间无法承受,对千万级的点云进行一个简单的操作可能就需要几十分钟,难以满足实际需求;另一方面,传统的基于内存的方法也无法适用,由于数据十分庞大,不可能一次性读入内存然后再进行处理。因此需要新的外存三维模型的处理方法。

发明内容
(一 )要解决的技术问题本发明提供了一种外存三维模型的处理方法,该方法在对点云数据米样的基础上实现与原始数据拓扑结构一致的网格化,解决了现有技术中操作时间长、不能一次性读入内容进行处理等问题。( 二 )技术方案为解决上述技术问题,本发明提供了一种外存三维模型的处理方法,该方法包括如下步骤
步骤I :获取点云数据;步骤2 :由所述点云数据计算出每一个点的交叉排列值;步骤3 :根据所述点云数据每一个点的交叉排列值对所述点云数据进行排序;步骤4 :根据所述点云数据的排序,对所述点云数据进行重采样;步骤5 :根据所述点云数据的采样结果,建立与所述点云数据形状一致的三角形网格,所述三角形网格为原始网格模型;步骤6 :在所述步骤4中使用不同个数的采样点来代表模型点云,再根据所述步骤5建立第一三角形网格,所述第一三角形网格是所述原始网格模型的直接压缩形式;步骤7 :在所述步骤4中将多个采样点的位置求平均值作为一个采样点,再根据所述步骤5建立第二三角形网格,该第二三角形网格是所述原始网格模型的抽象形式;步骤8 :对所述三角形网格、所述第一三角形网格、所述第二三角形网格进行分析。优选地,所述步骤I包括采用三维激光扫描所述点云数据;按照坐标值得到所述点云数据中的单个点;将深度数据作为第三维数据,将像素或已有的二维点转化为三维点;把表面体素的代表点作为所述点云数据中的单个点;并且把三角形网格的顶点作为点云数据中的单个点。优选地,所述步骤2包括将所述每一个点的三维坐标分别按照二进制形式表示,并将每个坐标的二进制表现形式进行交叉排列得到新的二进制表现形式。优选地,所述步骤3是指根据所述步骤2中所求得的每一个点的交叉排列值大小,将所述点云数据中的点按照交叉排列值的顺序从小到大进行排列。优选地,所述步骤4是指按照步骤3排列后的顺序,对所述点云数据进行顺序采样。优选地,所述步骤5包括如下步骤步骤5-1 :建立采样点集合的狄洛尼三角化,对于所述狄洛尼三角化中的每一个三角面片,判断在原始点云集合中是否存在一个点,该点到所述三角面片的三个顶点的距离属于该点到采样点集合中点的距离里最小的η个之一,若存在这样的点,则将所述三角面片保留,否则从所述狄洛尼三角化中删除,其中η自然数;步骤5-2 :在所述狄洛尼三角化的基础上删除细长三角形生成第一三角形集合,对于所述第一三角形集合中每一个三角形,计算其外接圆半径与其最短边的比例,若该值小于设定阈值,则从所述第一三角形集合中删除该三角形,最终得到第二三角形集合;步骤5-3 :建立一个用来存储边的空的栈,并且将所述第二三角形集合中所有的边都加入所述栈,当所述栈不为空的时候,取出栈顶的边,如果该条边属于尖锐边,则在所述第二三角形集合中去除所有与该边相邻的三角形,并且把除了该条边的所有去除三角形的边再次加入所述栈中,最终第二三角形集合转化为第三三角形集合;步骤5-4 :通过深度优先算法遍历所述第三三角形集合,提取所述第三三角形集合的外部边界。优选地,所述直接压缩形式是指通过多种不同的采样率来直接得到所述原始网格模型不同程度简化模型的序列。优选地,所述抽象形式是指压缩模型的顶点是所述原始网格模型顶点的索引,采样过程中的每一个点对应着排序顺序中与其相邻的若干点。(三)有益效果本发明所提供的方法能够对大规模点云数据进行采样及压缩,采样结果具有良好的空间均匀性,同时在重建的时候依然利用到原始数据的约束,能够生成与原始点云数据拓扑结构一致的三角形流形网格。


图I为根据本发明的一种外存三维模型的处理方法的流程图;图2a为tanglecube原始点云数据的示意图;图2b为图2a中点云数据排序后结果的示意图;图3a,图3b,图3c,图3d分别为典型的非流形模型树木模型,在各种采样率下的采样结果的示意图;图4为根据本发明的一种外存三维模型的处理方法中流形网格提取的流程图;图5a为tanglecube模型的原始点云数据及采样结果的示意图,其中浅色点为原始点z ,深色点为米样结果;图5b为tanglecube模型在采样结果狄洛尼三角化的基础上删除不符合要求的三角形及删除细长三角形后的结果的示意图;图5c为在图5b结果接触上删除尖锐边后的结果的示意图;图5d为根据本发明所提供的方法在anglecube模型提取得到的流形网格结果的示意图;图6a为2000万点规模的neptune点云数据的示意图;图6b为根据本发明所提供的方法在2000万点规模的η印tune点云数据上的重建结果的不意图;图7a为130万点规模的ramess点云数据的示意图;图7b为根据本发明所提供的方法在130万点规模的ramess点云数据上的重建结果的不意图;图8a为dragon模型的原始点云数据及采样结果的示意图;图8b为dragon模型用泊松重建方法得到的网格化结果的示意图;图8c为Ball Pivoting方法得到的网格化结果的示意图;图8d为根据本发明方法得到的三角网格结果的示意图;图9为Armadillo点云数据的压缩模型序列的示意图;图10为Armadillo压缩模型序列上主曲率几何特征分析结果的示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。图I为本发明提供的一种外存三维模型的处理方法的流程图。如图I所示,该方法包括如下步骤步骤I:获取点云数据;
步骤2 由所述点云数据计算出每一个点的交叉排列值(Z值);步骤3 :根据所述点云数据每一个点的交叉排列值对所述点云数据进行排序;步骤4 :根据所述点云数据的排序,对所述点云数据进行重采样;步骤5 :根据所述点云数据的采样结果,建立与所述点云数据形状一致的三角形网格,所述三角形网格为原始网格模型;步骤6 :在所述步骤4中使用变化的采样率(即使用不同个数的采样点来代表模型点云),再根据所述步骤5建立第一三角形网格,所述第一三角形网格是所述原始网格模型的直接压缩形式,从而免除模型简化的递进计算;步骤7 :在所述步骤4中使用一个采样点代表若干个采样点的方式(即将多个采样点的位置求平均值作为一个采样点),再根据所述步骤5建立第二三角形网格,该第二三角形网格是所述原始网格模型的抽象形式;步骤8 :对所述三角形网格、所述第一三角形网格、所述第二三角形网格进行分析。下面结合附图对上述步骤进行详细阐述。所述步骤I用于从各种数据源获取三维点云数据。所述点云数据获取途径包括三维激光扫描所述点云数据,记录扫描数据点的X,Y,Z坐标,每一组X, Y, Z坐标对应于点云数据中的一个点;将深度数据作为第三维数据,把像素或者已有二维点加上一个维度,转化为三维点;把表面体素的中心位置的X,Y,Z坐标作为点云中的单个点的坐标;把三角形网格模型的顶点的坐标值作为点云中的单个点坐标值,去掉已知的网格的拓扑关系。所述步骤2用于对点云中的每一个点计算相对应的交叉排列值,作为下一步排序的基础,其包括将每一个点的三维坐标分别按照二进制形式表示;并将每个坐标的二进制表现形式进行交叉排列得到新的二进制表现形式,即该点的交叉排列值(Z值)。为了将原始点云按照交叉排列值顺序进行排序,首先计算每一个点的Z值。对于所述点云数据的每一个点P,设其三维坐标的二进制表现形式为(PiiPi2···P1WP21P22···PwPsiPy Pa*)将各个维度的二进制表现形式从最高位到最低位交叉排列可得到一个新的二进制式表现形式为(PllP2lP3lPl2P22P32***PlwP2wP3w),该表现形式对应的数值即为点P的交叉排列值。所述步骤3用于根据点云数据的交叉排列值的大小将点云数据进行排序,其根据上述步骤中所求得的每一个点的交叉排列值大小,将点云数据按照每一个点的交叉排列值的顺序从小到大进行排列。点云中每个点在排序中的先后顺序按照其对应的Z值的相对大小来决定。当原始点云数据规模较为庞大的时候,需要利用外部排序的方法。外部排序在对大文件进行排序的时候,将待排序的记录存储在譬如磁盘等外部存储器当中。排序进行时,待排序的文件并不是一次装入内存,而是在内存和外部存储器之间进行多次数据交换,从而达到最终对整个文件都进行排序的目的。在本发明的具体实施例中采用多路归并外排算法,即将原始的点云数据分解为多个能够一次性装入内存的部分并对每一部分进行内排序,然后对所有已经排序完的子文件进行归并排序。所述步骤4用于在点云数据的排序基础上根据用户的指定采样率进行采样,以减小点云数据的规模。其按照上述步骤排列后的顺序,对点云数据进行顺序采样,即根据用户指定的米样率,在排序后的序列中每隔k个点选择个保留为米样点。在对原始点z 排序之后,在排序后的点云数据上进行顺序采样,根据实际需求的采样率大小,每隔k个点取一个保留作为采样点,可得到从原始点云数据中采样后的结果。图2为在tanglecube点云数据上进行Z值排序的结果示意图,图2a为原始数据,图2b为原始数据按照排序后的顺序用线段依次连接起来的结果。图3为在树木模型上各种采样率下的采样结果,灰色点为原始点云数据,黑色点为采样点。所述步骤5用于结合点云数据的原始信息在采样点上进行处理重建出流形网格。如图4所示,步骤5包括如下步骤步骤5-1 :建立采样点集合L的狄洛尼三角化D0,对于DO中的每一个三角面片t,判断在原始点云集合W中是否存在一个点,该点到t的三个顶点的距离属于该点到L中点的距离里最小的η个之一,若W中存在这样的点,则将t保留,否则从DO中删除掉t。优选地,所述第一步包括对于DO中的每一个三角形,若原始点云数据中存在一个点q,该点到这个三角形三个顶点的距离小于该点到L中其他所有点的距离,则将该三角形保留,否则在DO中将该三角形删除。其中η为自然数,优选为6。 步骤5-2 :在DO的基础上删除细长三角形生成三角形集合Dl。对于Dl中每一个三角形,计算其外接圆半径与其最短边的比例,若该值小于阈值I. 04则从Dl中删除该三角形,最终得到三角形集合D2。优选地,所述第二步中,细长三角形指外接圆半径与其最短边的比例小于给定阈值的三角形,将Dl中的细长三角形删除后得到的三角形集合为D2。优选阈值为I. 04。步骤5-3 :删除尖锐边。首先建立一个用来存储边的空栈Edges,并且将D2中所有的边都加入Edges。当栈Edges不为空的时候,取出栈顶的边e,如果该条边属于尖锐边,则在D2中去除所有与该边相邻的三角形,并且把除了 e的所有去除三角形的边再次加入栈中,这是因为由于这些三角形的删除,组成该三角形的边有可能再次成为尖锐边。最终D2转化为三角形集合D3。具体地,所述步骤5-3包括如下步骤步骤5-3-1 :建立用来存储边的空栈Edges,并将三角形集合D2中所有边加入Edges ;步骤5-3-2 :若Edges为空,则步骤5-3结束,三角形集合D2转化成三角形集合D3 ;否则取栈顶的边e,判断e是否为尖锐边。其中,若只有一个三角形与边e相邻或者所有与e相邻的三角形形成的夹角小于η /2,则边e为尖锐边;步骤5-3-3 :若e不为尖锐边,则转入步骤5_3_2,否则在D2中去除所有与e相邻的三角形,并将这些相邻三角形的除了 e之外的边加入栈Edges中,转入步骤5-3-2。步骤5-4 :通过深度优先算法遍历D3,提取三角形集合D3的外部边界。即从D3中提取最终需要的流形网格。通过在流形网格集合中连续加入带有方向性的三角面片来实现上述目的。首先将网格曲面集合Surface初始化为空,然后我们从D3中任意选取一个三角面片,赋予其一个方向并加入到Surface集合中。接下来从这个初始三角形出发不断加入其相邻三角形从而最终得到流形网格模型。具体的,初始化用于存放带方向信息的边的栈Triangles,并将选取的初始三角面片的边加入Triangles。当Triangles不为空的时候,取出栈顶的边,如果该边未被处理过,则将其标记为已处理,同时将D3中与取出边相邻的三角形t’加入曲面集合Surface中,并将t’的边加入Triangles中,最终得到流形网格Surface。图4列出了以上四个步骤在tanglecube数据上的分步结果。图5a为采样示意图,图5b为经过第一步及狭长三角形删除后的结果,图5c为删除尖锐边后的结果,图5d为最后提取出的二维流形曲面。图5b和图5c中深色的三角形为非流形三角形。具体地,所述步骤5-4包括如下步骤步骤5-4-1 :建立网格曲面集合Surface,并初始化为空;

步骤5-4-2 :从步骤5-3所得的D3中任取一个三角面片,加入Surface中;步骤5-4-3 :初始化用于存放带方向信息的边的栈Triangles,并将上述步骤中所取的三角形的边加入Triangles中;步骤5-4-4 :若Triangles为空,则步骤5-4结束;否则,取出栈顶的边e,若e没有被标记为处理,则将e标记为处理过,同时将D3中与取出边相邻的三角形t加入曲面集合Surface中,并将t的边加入Triangles中,若e已经被标记为处理,则继续步骤5_4_4。所述步骤6中外存模型的压缩是指可以通过不同的采样率来直接得到原始模型不同程度简化模型的序列。所述步骤7中外存模型的抽象是指压缩模型的顶点是原始模型顶点的索引,即采样过程中的每一个点对应着排序顺序中与其相邻的若干点。本发明的方法具体运行的硬件和编程语言并不限制,用任何语言编写都可以完成。本发明具体实施方式
中采用C++语言实现了上述方法,并且在几个不同的数据集上做了实验,所有的实验都是在一台计算机上完成的,显示部分使用了标准的OpenGL图形函数库。图6、图7分别给出了根据本发明所提供的方法在大规模点云数据上采样以及重建的结果,从实验结果可以看出本发明所提供的方法采样效率较为高效,而且能生成高质量的网格模型。图6中由于原始点云数据庞大,基于内存的重建方法无法进行,本发明基于外存的处理方法可以得到良好的结果。图8展示了根据本发明所提供的方法的三角形网格化结果与其他网格重建方法的结果对比。图8a为原始点云数据及采样点。图Sb为泊松重建方法结果(参考=MichaelKazhdan, Matthew Bolitho, and Hugues Hoppe. Poisson surface reconstruction.InProceedings of the fourth Eurographics symposium on Geometry processing,SGP’06,pages 61-70,2006)。图 8c 为 Ball Pivoting 方法结果(参考Fausto Bernardini,JoshuaMittlemaniHolly RushmeienClr audio Silva,and Gabriel Taubin. The ball-pivotingalgorithm for surface reconstruction. IEEE Transactions on Visualization andComputer Graphics,5 :349_359,1999)。图8d为本发明方法得到的三角网格结果。可以看出,本方法由于在重建过程中仍然利用到了原始数据的信息,因此能够保证重建结果拓扑连接关系的正确性,而泊松重建的方法和Ball Pivoting的方法则在局部地区产生了错误的连接关系。图9展示了在Armadillo模型上利用不同的釆样率得到的釆样点上进行重建的结果。图9a到图9d展示了得到的Armadillo模型的压缩序列。图10展示了在上述压缩模型序列上主曲率几何特征分析结果。表I为各种模型的相关数据统计结果
权利要求
1.一种外存三维模型的处理方法,该方法包括如下步骤步骤I:获取点云数据;步骤2 :由所述点云数据计算出每一个点的交叉排列值;步骤3 :根据所述点云数据每一个点的交叉排列值对所述点云数据进行排序;步骤4 :根据所述点云数据的排序,对所述点云数据进行重采样;步骤5 :根据所述点云数据的采样结果,建立与所述点云数据形状一致的三角形网格,所述三角形网格为原始网格模型;步骤6 :在所述步骤4中使用不同个数的采样点来代表模型点云,根据所述步骤5建立第一三角形网格,所述第一三角形网格是所述原始网格模型的直接压缩形式;步骤7 :在所述步骤4中将多个采样点的位置求平均值作为一个采样点,根据所述步骤5建立第二三角形网格,所述第二三角形网格是所述原始网格模型的抽象形式;步骤8 :对所述三角形网格、所述第一三角形网格、所述第二三角形网格进行分析。
2.如权利要求I所述的方法,其特征在于,所述步骤I包括采用三维激光扫描所述点云数据;按照坐标值得到所述点云数据中的单个点;将深度数据作为第三维数据,将像素或已有的二维点转化为三维点;把表面体素的代表点作为所述点云数据中的单个点;并把所述三角形网格的顶点作为点云数据中的单个点。
3.如权利要求I所述的方法,其特征在于,所述步骤2包括将所述每一个点的三维坐标分别按照二进制形式表示,并将每个坐标的二进制表现形式进行交叉排列得到新的二进制表现形式。
4.如权利要求I所述的方法,其特征在于,所述步骤3是指根据所述步骤2中所求得的每一个点的交叉排列值大小,将所述点云数据中的点按照交叉排列值的顺序从小到大进行排列。
5.如权利要求I所述的方法,其特征在于,所述步骤4是指按照步骤3排列后的顺序,对所述点云数据进行顺序采样。
6.如权利要求I所述的方法,其特征在于,所述步骤5包括如下步骤步骤5-1 :建立采样点集合的狄洛尼三角化,对于所述狄洛尼三角化中的每一个三角面片,判断在原始点云集合中是否存在一个点,该点到所述三角面片的三个顶点的距离属于该点到采样点集合中点的距离里最小的η个之一,若存在这样的点,则将所述三角面片保留,否则从所述狄洛尼三角化中删除,其中η自然数;步骤5-2 :在所述狄洛尼三角化的基础上删除细长三角形生成第一三角形集合,对于所述第一三角形集合中每一个三角形,计算其外接圆半径与其最短边的比例,若该值小于设定阈值,则从所述第一三角形集合中删除该三角形,最终得到第二三角形集合;步骤5-3 :建立一个用来存储边的空的栈,并且将所述第二三角形集合中所有的边都加入所述栈,当所述栈不为空的时候,取出栈顶的边,如果该条边属于尖锐边,则在所述第二三角形集合中去除所有与该边相邻的三角形,并且把除了该条边的所有去除三角形的边再次加入所述栈中,最终第二三角形集合转化为第三三角形集合;步骤5-4 :通过深度优先算法遍历所述第三三角形集合,提取所述第三三角形集合的外部边界。
7.如权利要求I所述的方法,其特征在于,所述直接压缩形式是指通过多种不同的采样率来直接得到所述原始网格模型不同程度简化模型的序列。
8.如权利要求I所述的方法,其特征在于,所述抽象形式是指将压缩模型的顶点作为所述原始网格模型顶点的索引,采样过程中的每一个点对应着排序顺序中与其相邻的若干
9.如权利要求6所述的方法,其特征在于,η为6。
10.如权利要求6所述的方法,其特征在于,所述设定阈值为1.04。
全文摘要
本发明公开了一种外存三维模型的处理方法,该方法基于空间曲线排序,可进行外存三维模型的点重采样、外存点云的网格化重建、三维模型的压缩,进而用于外存模型分析。本发明所提供的方法能对大规模点云数据进行采样,采样结果具有良好的空间均匀性,同时在重建的时候依然利用到原始数据的约束,能生成与原始点云数据拓扑结构一致的三角形流形网格。
文档编号G06T17/00GK102930597SQ201210366868
公开日2013年2月13日 申请日期2012年9月28日 优先权日2012年9月28日
发明者张晓鹏, 李尔, 孟维亮 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1