本发明属于点云数据的曲面重建技术领域,具体涉及一种基于自适应滚球算法的曲面重建方法和系统。
背景技术:
近年来,随着计算机在各领域中的深度应用及三维建模技术的快速发展,基于散乱点云的曲面重建技术在逆向工程、文物保护、工业制造、计算机辅助设计与制造、虚拟现实和科学计算可视化等领域得到了广泛的应用。目前,曲面重建方法主要分为三类:基于delaunay三角化曲面重建,隐式曲面重建,区域生长法曲面重建,其中区域生长法曲面重建以一个种子三角形为初始网格,根据一定的拓扑准则获取第三点以延伸三角形网格,直至遍历所有点,得到重建表面。该曲面重建方法具有思路简单、时间复杂度低、能够处理较大规模点云等优点,常用算法有滚球算法、内在属性驱动算法、包围球算法、流行网格生长算法等。
滚球算法自1999年诞生以来,因其方法易实现、过程较直观,而备受国内外学者关注,但该算法要求:
1、点云附有准确、一致性的法向信息;
对于该要求,现已有较为成熟的点云法向估计及一致性调整算法;
2、点云足够均匀;
为了满足该要求,在对点云数据进行处理时,尽可能保证点云数据足够均匀。
当点云均匀时,采用滚球算法能够得到较好的重建图像,如图1(a)所示;当点云不均匀,则在采样点间距大于2r(r为滚球半径)的区域会产生孔洞,二维空间情形如图1(b)所示。
由图1a和图1b可知,当点云数据均匀时,应用滚球算法可以很好地重建出点云表面模型;但当点云数据不均匀时,难以确定一个合适的滚球半径来重建出高质量的三维模型;由此可见在采用现有技术中滚球算法进行曲面重建时,存在适用性差的问题。
技术实现要素:
本发明的目的在于提供一种基于自适应滚球算法的曲面重建方法和系统,用于解决现有技术中滚球算法对点云数据进行重建时适用性差的问题。
为实现上述目的,本发明提供的技术方案是:
一种基于自适应滚球算法的曲面重建方法,该曲面重建方法包括如下步骤:
(1)获取待处理的点云数据;
(2)采用滚球算法对待处理的点云数据进行曲面重建;
在采用滚球算法对待处理的点云数据进行曲面重建时,根据可拓展边的长度、可拓展边参与构网的网格中各边长度与可拓展边长度的比值的平均值和标准差计算滚球半径。
本发明所提供的技术方案,在用滚球算法对待处理的点云数据进行曲面重建时,根据可拓展边参与构网的网格中各边长度与可拓展边之间的关系得到滚球半径,从而提高滚球算法的适用性,解决现有技术中滚球算法进行曲面重建时适用性差的问题。
进一步的,设可拓展边的长度为l,可拓展边参与构网的网格中各边长度与可拓展边长度的比值的平均值为μ,标准差为σ,滚球半径为r,则:
r=l·(μ+k·σ)
其中k为比例系数。
进一步的,所述k的取值范围为[-1,1.5]。
比例系数k在[-1,1.5]之间取值所得到的滚球半径更加准确。
进一步的,所述k的取值1.5。
将比例系数k值设为固定值,能够减少计算量,增加计算效率。
一种基于自适应滚球算法的曲面重建系统,包括处理器和存储器,所述存储器上存储有用于在处理器上执行的计算机程序,所述处理器执行所述计算机程序时,实现如下步骤:
(1)获取待处理的点云数据;
(2)采用滚球算法对待处理的点云数据进行曲面重建;
在采用滚球算法对待处理的点云数据进行曲面重建时,根据可拓展边的长度、可拓展边参与构网的网格中各边长度与可拓展边长度的比值的平均值和标准差计算滚球半径。
本发明所提供的技术方案,在用滚球算法对待处理的点云数据进行曲面重建时,根据可拓展边参与构网的网格中各边长度与可拓展边之间的关系得到滚球半径,从而提高滚球算法的适用性,解决现有技术中滚球算法进行曲面重建时适用性差的问题。
进一步的,设可拓展边的长度为l,可拓展边参与构网的网格中各边长度与可拓展边长度的比值的平均值为μ,标准差为σ,滚球半径为r,则:
r=l·(μ+k·σ)
其中k为比例系数。
进一步的,所述k的取值范围为[-1,1.5]。
比例系数k在[-1,1.5]之间取值所得到的滚球半径更加准确。
进一步的,所述k的取值1.5。
将比例系数k值设为固定值,能够减少计算量,增加计算效率。
附图说明
图1a为现有技术中滚球算法对均匀点云处理结果的示意图;
图1b为现有技术中滚球算法对不均匀点云处理结果的示意图;
图2为本发明方法实施例中自适应滚球算法的曲面重建方法的流程;
图3为本发明方法实施例中点云内在属性的统计结果直方图;
图4为本发明方法实施例中点云内在属性的统计结果符合正态分布的示意图;
图5a为本发明方法实施例中第一种算法对dragon的重建结果的示意图;
图5b为本发明方法实施例中第二种算法对dragon的重建结果的示意图;
图5c为本发明方法实施例中第三种算法对dragon的重建结果的示意图;
图5d为本发明方法实施例中第一种算法对bunny的重建结果的示意图;
图5e为本发明方法实施例中第二种算法对bunny的重建结果的示意图;
图5f为本发明方法实施例中第三种算法对bunny的重建结果的示意图;
图6a为本发明方法实施例中dragon原始点云的示意图;
图6b为本发明方法实施例中bunny原始点云的示意图;
图6c为本发明方法实施例中经降采样后dragon的点云示意图;
图6d为本发明方法实施例中经降采样后bunny的点云示意图;
图7a为本发明方法实施例中滚球半径为0.1时采用第一种算法对dragon的重建结果示意图;
图7b为本发明方法实施例中滚球半径为0.2时采用第一种算法对dragon的重建结果示意图;
图7c为本发明方法实施例中滚球半径为0.3时采用第一种算法对dragon的重建结果示意图;
图7d为本发明方法实施例中滚球半径为0.2时采用第一种算法对bunny的重建结果示意图;
图7e为本发明方法实施例中滚球半径为0.4时采用第一种算法对bunny的重建结果示意图;
图7f为本发明方法实施例中滚球半径为0.7时采用第一种算法对bunny的重建结果示意图;
图8a为本发明方法实施例中当滚球半径为0.1、0.2、0.3时采用第二种算法对dragon的曲面重建结果示意图;
图8b为本发明方法实施例中当滚球半径为0.1、0.2、0.3时采用第二种算法对bunny的曲面重建结果示意图;
图9a为本发明方法实施例中第三种算法对dragon曲面重建结果的示意图;
图9b为本发明方法实施例中第三种算法对bunny曲面重建结果的示意图。
具体实施方式
下面结合附图对本发明的实施方式作进一步说明。
方法实施例:
本实施例提供一种基于自适应滚球算法的曲面重建方法,在对三角形中可拓展的边进行拓展时,根据拓展边的点云内在属性得到滚球半径,然后根据滚球半径确定候选点,从而提高滚球算法的适用性。
本实施例所提供的基于自适应滚球算法的曲面重建方法,其流程如图2所示,包括如下步骤:
(1)获取待处理的点云数据;
(2)采用滚球算法对待处理的点云数据进行曲面重建,具体为:
从待处理的点云数据中选取一个点p,并从点p的邻域中再选取两个点pa和pb,点p、pa、pb构成原始三角形δppapb;
待处理的点云数据为带有一致性法向的点云数据,得到原始三角形后对点p、pa、pb的相容性进行检测;
如果点p、pa、pb不相容,则重新选取点p、pa、pb;
如果相容,则判断当滚球球心位于原始三角形所在平面外侧且球面与三个顶点接触时,滚球内是否含有其他点;
若没有,则将原始三角形作为种子三角形;
若有,则重新选取点p、pa、pb。
判断点p、pa、pb的相容性的方法为:
获取原始三角形所在平面的法向量,将其点p、pa、pb三个点中任意一点的法向点乘,得到所有点乘值;判断各点乘值是否均为正;如果点乘值均为正,则判断为点p、pa、pb相容,否则判断为点p、pa、pb不相容。
(3)判断种子三角形的各边是否可拓展;如果种子三角形的边为可拓展边,则对该边进行拓展,得到候选三角形。
判断三角形中边是否可拓展的方法为:
判断三角形的边是否为未完成构网且只有一个邻接三角形的边;
如果是,则判断为三角形该边为可拓展边;
如果不,则判断为三角形该边为不可拓展边。
对三角形中可拓展边进行拓展时,拓展的方法为:
根据滚球半径,从待处理的点云数据中确定可拓展边的候选点;
将可拓展边与其中一个候选点所构成的三角形作为候选三角形。
为了提高滚球算法的适用性,本实施例中滚球半径根据可拓展边的点云内在属性得到,具体为:
设可拓展边为e,其长度为l,该拓展边参与构网的网格中第i条边为ei,边ei的长度为li,则
μi=li/l
计算μi的平均值μ和标准差σ,并根据如下公式计算出滚球半径:
r=l·(μ+k·σ)
以待处理的点云数据是均匀点云时为例,应用数理统计方法对其内在属性进行统计分析。共获得数据14,551组,其中最大值为3.80,最小值为0.09,平均值为1.06;将其做成直方图形式,其中组数为25,组距为0.19,统计结果如图3所示。从图3可观察出,统计结果在中心轴(比值=1.06)左右两侧频数总和基本相等,且分布形式近似于正态分布。对图3所示直方图作正态分布分析,其中,中心值为1.06,标准差为0.58,分析结果如图3所示。从图4可知,获得的点云内在属性的直方图与根据其数据拟合的正态曲线具有较好的吻合性,所以可以近似地认为点云内在属性服从正态分布。
因此,为了简化计算过程,在计算滚球半径时,μi的均值μ取相应可拓展边点云内在属性正态分布的中心值,标准差σ取相应可拓展边点云内在属性正态分布的标准差。
上述计算公式中的k为比例系数,其理论取值范围为[-2,2];通过多次实验分析,k的有效取值范围为[-1,1.5],所以上式中比例系数k可以为一个在区间[-1,1.5]中不断改变的量,也可以是该区间内的一个定值;本实施例中为减少计算量,将k设为定值,取k=1.5。
(4)判断候选三角形的各边是否可拓展,如果可拓展则对其进行拓展,得到新的候选三角形,直到遍历待重建图像点云数据中的所有点。
(5)修补三角形孔洞,得到三角形网格。
进一步的,为了保证曲面重建的效率,在上述步骤中,得到候选三角形后,判断其三个顶点是否相容,判断方法与上述判断点p、pa、pb是否相容的方法相同;如果判断出候选三角形的三个顶点不相容,则将该候选三角形删除。
下面对本实施例所提供的基于自适应滚球算法的曲面重建方法进行验证:
为测试本实施例所提供基于自适应滚球算法的曲面重建方法的效果,下面在windows7系统intel(r)core(tm)i7-4790mcpu3.60ghzram(8.0gb)硬件环境下,结合vs2013、geomagicstudio软件对曲面重建质量和效率进行测试分析。首先,对均匀点云进行重建,并将其结果作为基准;然后,对均匀点云进行非均匀降采样,并对得到的非均匀点云分别应用滚球算法、通过由小到大输入多个滚球半径来改进的滚球算法和本实施例所提供基于自适应滚球算法的曲面重建方法进行曲面重建,将重建结果与基准作对比,以分析各个算法的优劣以及对非均匀点云曲面重建的适用性。
设滚球算法为第一种算法,由小到大输入多个滚球半径来改进的滚球算法为第二种算法,本实施例所提供基于自适应滚球算法为第三种算法。
现阶段,对于点云曲面重建质量的评价方法主要是视觉法,即通过人眼观察重建曲面的好坏,鲜有定量的评价方法。本实施例依据重建曲面的表面积提出一种定量的评价方法。
首先,根据海伦公式计算出每个重建三角形的面积si;然后,计算重建曲面的表面积s'=∑si;最后,通过计算重建表面积s'与点云理论表面积s之间的差值,即δs=s'-s,评价曲面重建质量的好坏。
式中,ai、bi、ci为第i个重建三角形的三个边长值,pi为该三角形的半周长,即:
pi=(ai+bi+ci)/2。
当δs值为正时,代表重建曲面表面积大于理论值,重建结果中可能含有冗余三角形;当δs值为负时,代表重建曲面表面积小于理论值,重建结果中可能含有孔洞。所以可根据δs值对曲面重建质量进行评价,δs值越接近0,代表重建结果越好。
对于均匀点云:
分别应用第一种算法、第二种算法和第三种算法对均匀点云dragon、bunny进行曲面重建,其中第一种算法和第二种算法通过人工多次试选滚球半径,选取其中重建结果最好的进行试验。三种算法对dragon的重建结果分别如图5a、图5b和图5c所示,对bunny重建的结果如图5d、图5e和图5f所示,滚球半径选取方式及耗时统计如表1所示,其中第一种算法及第二种算法耗时不包含人工选取滚球半径的时间,仅是选定滚球半径之后的算法运行时间。
表1
对于均匀点云,从图5c和图5f可知,第三种算法能重建出高质量的点云表面;从图5a、图5d、图5b和图5e可知,当滚球半径选取合适时,第一种算法和第二种算法也能重建出良好的结果。
此外,从表1还可以看出,当点云数据量较大时,例如dragon点云,重建时需要消耗大量时间,为了提高重建效率,一种行之有效的方式是对海量点云进行特征保留的降采样,然后重建。
对于不均匀点云:
首先对原始点云dragon、bunny进行非均匀降采样,降采样后点云个数分别为69,465个和8,584个,dragon、bunny的原始点云分别如图6a、图6b所示,经降采样后dragon、bunny的点云分别如图6c和图6d所示;然后,分别应用第一种算法、第二种算法和第三种算法对所得到的非均匀点云进行曲面重建,重建结果分别如图7a-图7f、图8a、图8b、图9a、图9b所示,滚球半径选取方式及耗时统计如表2所示。
图7a、图7b、图7c分别滚球半径为0.1、0.2、0.3时采用第一种算法dragon的曲面重建结果,图7d、图7e、图7f分别是滚球半径为0.2、0.4和0.7时采用第一种算dragon的曲面重建结果。
图8a为滚球半径为0.1、0.2、0.3时采用第二种算法dragon曲面重建结果的示意图,图8b为滚球半径为0.1、0.2、0.3时采用第二种算法bunny曲面重建结果的示意图。
图9a为第三种算法对dragon曲面重建结果的示意图,图9b为第二种算法对bunny曲面重建结果的示意图。
表2
从图6a可知,原始点云比较均匀且密集。经非均匀降采样之后,如图6b所示,在特征区域(如dragon的龙头、龙爪以及bunny的兔耳、兔尾),点云较密集,而在非特征区域(如dragon的龙身以及bunny的兔身),较稀疏,使得整体点云均匀性较差。
从图7a-图7f可知,应用第一种算法对非均匀点云进行曲面重建,当滚球半径选取较小时,如图7a、图7d所示,会导致重建失败,其原因是在点云稀疏区域拓展三角形网格时,在其滚球范围内不包含第三点,无法进行三角形延伸,导致重建失败;当滚球半径选取较大时,如图7c、图7f所示,会导致重建结果中含有大量冗余三角形,其原因是在点云密集区域拓展三角形网格时,在其滚球范围内会包含较多不应与当前点构成拓扑关系且满足三角形网格拓展准则的点,使得重建结果中含有冗余三角形;当滚球半径选取中间值时,如图7b、图7e所示,重建结果在点云密集区域会有少量冗余三角形,在点云稀疏区域会出现孔洞。
从图8a和图8b可知,第二种算法对非均匀点云进行曲面重建,当选取多个较合适的滚球半径进行重建时,会使得重建结果逼近相应均匀点云的重建结果,如图5b所示,但滚球半径的选取需要经过人工进行多次尝试,针对不同点云,其最适取值范围不同,不具有自适应性,在实际应用中其选取过程较为耗时。
从图9a和图9b可知,第三种算法对非均匀点云进行曲面重建,可得到良好的重建结果,非常逼近相应均匀点云的重建结果,如图5c所示,且无需人工干预,针对不同点云,能根据点云的内在属性相对合理地自适应确定滚球半径,既不会使第三点搜索范围过小而出现孔洞,也不会使搜索范围过大而产生冗余三角形。
对比表1、表2可知,相对于降采样之前的重建效率,第二种算法和第三种算法均有较大程度提高,且没有损害重建质量。但对于滚球半径的确定,第二种算法仍需要人工试选,而第三种算法是自适应确定,所以在重建过程整体耗时上,第三种算法远远小于第二种算法。分别统计其重建曲面的表面积,并将均匀点云重建结果作为基准,以此来分析各算法对于非均匀点云曲面重建的质量。统计结果如表3所示。
表3
从表3可知,对于均匀点云,应用三种算法重建出的曲面表面积值基本相同;并且由图5可知,重建出的均匀点云曲面都比较平滑,几乎不含孔洞和冗余三角形。所以以三者重建出的均匀点云曲面的表面积为基准,即sdragon=710.4cm2,sbunny=571.6cm2,然后计算非均匀点云重建曲面表面积与基准间的差值,以分析三种算法对于非均匀点云曲面重建的适用性。统计结果如表4所示。
表4
从表4和图7可知,在第一种算法中,在dragon点云r=0.2cm和bunny点云r=0.4cm时,表4中重建曲面表面积比基准值分别少了81.2cm2和30.6cm2,对应图7b、图7e中重建曲面也出现了较多孔洞;在dragon点云r=0.3cm和bunny点云r=0.7cm时,表4中重建曲面表面积比基准值分别多了20.4cm2和11.4cm2,对应图7c、图7f中重建曲面也出现了较多冗余三角形。所以在评价曲面重建质量时,可以通过重建曲面表面积与基准间的差值进行定量评价,且评价结果与视觉法具有较好的一致性。
综合两种评价方法可知,在重建结果中孔洞和/或冗余三角形越少,则重建结果越好;重建曲面表面积越接近基准值,则重建结果越好。从表4可知,对于非均匀点云曲面重建,第三种算法和第二种算法重建的曲面表面积更接近基准值,且第三种算法要优于第二种算法;对比图7、图8、图9也可发现,视觉效果上也是图8和图9中重建结果较光滑,孔洞和冗余三角形较少,其中图9重建结果要好于图8。
系统实施例:
本实施例提供一种基于自适应滚球算法的曲面重建系统,包括处理器和存储器,存储器上存储有用于在处理器上执行的计算机程序,处理器执行该计算机程序时,实现如上述方法实施例中提供的一种基于自适应滚球算法的曲面重建系统。
以上给出了本发明涉及的具体实施方式,但本发明不局限于所描述的实施方式。在本发明给出的思路下,采用对本领域技术人员而言容易想到的方式对上述实施例中的技术手段进行变换、替换、修改,并且起到的作用与本发明中的相应技术手段基本相同、实现的发明目的也基本相同,这样形成的技术方案是对上述实施例进行微调形成的,这种技术方案仍落入本发明的保护范围内。