三维网络破洞修饰系统及三维网络破洞修饰方法与流程

文档序号:15804601发布日期:2018-11-02 21:42阅读:255来源:国知局
三维网络破洞修饰系统及三维网络破洞修饰方法与流程

本发明涉及三维网格破洞修饰系统及方法,尤其是涉及以原始网格数据的边界作为依据逐步向内通过添加顶点进行构面的三维网格破洞修饰系统及三维网格破洞修饰方法。

背景技术

随着摄影测量技术的发展,现在可以很方便地通过航拍数据对于大范围的地形地物进行自动化三维建模。然而,由于精度、遮挡等原因,得到的三维模型在细节上或多或少有些缺陷,例如路面不平整,建筑细节特征错乱等。因此,对于这些三维模型,往往需要进行后期网格修饰,以纠正、优化模型。

对于破洞的情况,先通过拟合到平面的方式整平破洞边缘,然后通过三角化方法以边界点作为顶点进行三角化,以此达到补洞的效果。但是,对于比较大的破洞,三角化的方式生成的面一方面大小并不均匀,与周围三角形有明显区别;另一方面,可能会出现面与面交叠的问题,尤其是在边界形状很不规则的情况下,并且在三角形较大时特别明显。

对于需要局部修饰的情况,直接将需要修饰的部分的网格点的坐标拟合到某一平面(例如地面),然后在此基础上针对修饰部分使用建模软件进行人工重新建模,接着将建好的模型置于平面之上进行替换。但是,这种方法是通过视觉的遮挡来修饰缺陷,并未删除原始网格数据,随着修饰的进行,数据会变得越来越大。同时,大块区域的平面拟合会产生重叠面,在显示时可能具有闪烁的问题;而且一些小细节的优化不太方便,会导致整个建筑的修改,耗时费力。



技术实现要素:

本发明的目的在于,提供一种三维网络破洞修饰系统及三维网格破洞修饰方法,能够更好地适应不规则边界形状,并且所添加的三角网格比较均匀,与原始网格的差距小。

本发明的三维网格破洞修饰系统包括:获取破洞边界信息模块,获取整个网格的拓扑结构,根据拓扑关系去除所有的交叠边并得到破洞边界,获取所述破洞边界上所有顶点及各顶点的两个相邻边长构成的夹角;补洞模块,在所述破洞边界内,根据所述所有顶点以及各顶点的两个相邻边长构成的夹角形成不重叠的多个三角形。

根据本发明的一实施例,所述补洞模块包括:原有顶点三角形形成模块,从所述各顶点中选取所述夹角为第一阈值以下、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交的顶点,将该顶点及其两个邻接顶点连接形成三角形;添加新顶点形成三角形模块,对于通过所述原有顶点三角形形成模块处理后没有形成三角形的顶点,若所述夹角为所述第一阈值以上且180度以下,则添加新顶点来由所述顶点及所述新顶点分别与所述顶点的两个邻接顶点形成三角形;以及循环判断模块,判断通过原有顶点三角形形成模块和添加新顶点形成三角形模块处理之后是否还存在剩余破洞,如果存在剩余破洞且剩余破洞上的顶点为三个,则直接将该剩余破洞上的三个顶点相连构成三角形,并结束工作,如果存在剩余破洞且剩余破洞上的顶点大于三个,则重新获取所述剩余破洞上的各顶点的两个相邻边长构成的夹角,并通过所述补洞模块对所述剩余破洞进行处理。

根据本发明的一实施例,在所述补洞模块中,还包括将各顶点的两个相邻边长构成的夹角按照从小到大的顺序排列的顶点排序模块,并且,从所述夹角最小的顶点开始依次通过所述原有顶点三角形形成模块处理。

根据本发明的一实施例,在所述原有顶点三角形形成模块中,首先,判断所述顶点的夹角是否大于180度,如果大于180度,则跳过该点不处理;之后,判断所述顶点及其两个邻接顶点一同构成的三角形是否与由其他顶点及其两个邻接顶点构成的三角形相交,如果相交,则跳过该顶点不处理,最后,判断所述夹角是否为第一阈值以下,如果是第一阈值以下,则将该顶点及其两个邻接顶点连接形成三角形。

根据本发明的一实施例,在所述添加新顶点形成三角形模块中,如果所述夹角为所述第一阈值以上、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交,则所述新顶点与所述顶点的连线经过所述顶点的两个邻接顶点之间的连线的中点。

根据本发明的一实施例,所述新顶点与所述顶点的连线的长度为所述顶点和所述中点之间的距离的1.2倍或所述破洞边界的各边长的平均边长。

根据本发明的一实施例,在所述添加新顶点形成三角形模块中,若所述顶点与非邻接的其他顶点之间的距离小于等于所述顶点和所述新顶点之间的距离,将所述新顶点合并到所述非邻接的顶点,且所述顶点和所述非邻接的顶点分别与所述顶点的两个邻接顶点形成三角形。

根据本发明的一实施例,在所述添加新顶点形成三角形模块中,若所述顶点的两个邻接顶点之间的连线的长度大于所述平均边长的1.5倍,则直接在该连线上添加新顶点。

本发明的三维网格破洞修饰方法包括:获取破洞边界信息步骤,获取整个网格的拓扑结构,根据拓扑关系去除所有的交叠边并得到破洞边界,获取所述破洞边界上所有顶点及各顶点的两个相邻边长构成的夹角;补洞步骤,在所述破洞边界内,根据所述所有顶点以及各顶点的两个相邻边长构成的夹角形成不重叠的多个三角形。

根据本发明的一实施例,所述补洞步骤包括如下步骤:原有顶点三角形形成步骤,从所述各顶点中选取所述夹角为第一阈值以下、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交的顶点,将该顶点及其两个邻接顶点连接形成三角形;添加新顶点形成三角形步骤,对于经过所述原有顶点三角形形成步骤没有形成三角形的顶点,若所述夹角为所述第一阈值以上、且180度以下,则添加新顶点来由所述顶点及所述新顶点分别与所述顶点的两个邻接顶点形成三角形;以及循环判断步骤,判断经过原有顶点三角形形成步骤和添加新顶点形成三角形步骤之后是否还存在剩余破洞,如果存在剩余破洞且剩余破洞上的顶点为三个,则直接将该剩余破洞上的三个顶点相连构成三角形,并结束补洞步骤,如果存在剩余破洞且剩余破洞上的顶点大于三个,则重新获取所述剩余破洞上的各顶点的两个相邻边长构成的夹角,并再次对所述剩余破洞进行所述补洞步骤。

根据本发明的一实施例,在所述补洞步骤,还包括将各顶点的两个相邻边长构成的夹角按照从小到大的顺序排列的顶点排序步骤,并且,从所述夹角最小的顶点开始依次进行所述原有顶点三角形形成步骤。

根据本发明的一实施例,在所述原有顶点三角形形成步骤,首先,判断所述顶点的夹角是否大于180度,如果大于180度,则跳过该顶点不处理;之后,判断所述顶点及其两个邻接顶点一同构成的三角形是否与由其他顶点及其两个邻接顶点构成的三角形相交,如果相交,则跳过该顶点不处理,最后,判断所述夹角是否为第一阈值以下,如果是第一阈值以下,则将该顶点及其两个邻接顶点连接形成三角形。

根据本发明的一实施例,在所述添加新顶点形成三角形步骤,如果所述夹角为所述第一阈值以上、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交,则所述新顶点与所述顶点的连线经过所述顶点的两个邻接顶点之间的连线的中点。

根据本发明的一实施例,所述新顶点与所述顶点的连线的长度为所述顶点和所述中点之间的距离的1.2倍或所述破洞边界的各边长的平均边长。

根据本发明的一实施例,在所述添加新顶点形成三角形步骤,若所述顶点与非邻接的其他顶点之间的距离小于等于所述顶点和所述新顶点之间的距离,将所述新顶点合并到所述非邻接的顶点,且所述顶点和所述非邻接的顶点分别与所述顶点的两个邻接顶点形成三角形。

根据本发明的一实施例,在所述添加新顶点形成三角形步骤,若所述顶点的两个邻接顶点之间的连线的长度大于所述平均边长的1.5倍,则直接在该连线上添加新顶点。

根据本发明,以原始网格数据的边界作为依据,逐步向内通过添加顶点进行构面,所以基本上符合原网格的形状趋势,逐步添加面,可以更好的适应不规则边界形状。另外,由于以边界的平均边长为基础构面,不会出现与原始网格差距很大的问题,方便后续工作的进行。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面对具体实施方式部分中所需要使用的附图做简单介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是一实施方式的三维网格破洞修饰系统的框图。

图2是另一实施方式的三维网格破洞修饰系统的框图。

图3是本发明的三维网格破洞修饰方法的流程图。

图4是本发明的三维网格破洞修饰方法的补洞步骤的流程图。

具体实施方式

下面,参考附图更详细地说明本发明的实施例。本发明的实施例可以变形为各种方式,本发明的范围不应解释为限定于下面说明的实施例。

下面,参照图1详细说明本发明的第一实施方式的三维网格破洞修饰系统。图1是本发明的一实施方式的三维网格破洞修饰系统100的框图。如图1所示,本发明的三维网格破洞修饰系统100主要包括:破洞边界信息获取模块110和补洞模块120。

所述破洞边界信息获取模块110用于获取整个网格的拓扑结构,根据拓扑关系去除所有的交叠边并得到破洞边界,获取所述破洞边界上所有顶点及各顶点的两个相邻边长构成的夹角。

所述补洞模块120用于进行补洞处理,在所述破洞边界内,根据所述所有顶点以及各顶点的两个相邻边长构成的夹角形成不重叠的多个三角形。补洞模块120主要包括:原有顶点三角形形成模块121、添加新顶点三角形形成模块122及循环判断模块123。

原有顶点三角形形成模块121从所述各顶点中选取所述夹角为第一阈值以下、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交的顶点,将该顶点及其两个邻接顶点连接形成三角形。所述第一阈值可优选75度。

添加新顶点三角形形成模块122对于通过所述原有顶点三角形形成模块处理后没有形成三角形的顶点,若所述夹角为所述第一阈值以上且180度以下,则添加新顶点来由所述顶点及所述新顶点分别与所述顶点的两个邻接顶点形成三角形。

循环判断模块123判断通过原有顶点三角形形成模块和添加新顶点形成三角形模块处理之后是否还存在剩余破洞,如果存在剩余破洞且剩余破洞上的顶点为三个,则直接将该剩余破洞上的三个顶点相连构成三角形,并结束工作,如果存在剩余破洞且剩余破洞上的顶点大于三个,则重新获取所述剩余破洞上的各顶点的两个相邻边长构成的夹角,并通过所述补洞模块对所述剩余破洞进行处理。

另外,图2是本发明的另一实施方式的三维网格破洞修饰系统的框图。图2所示,所述补洞模块120还可以包括将各顶点的两个相邻边长构成的夹角按照从小到大的顺序排列的顶点排序模块124。

下面,参照图3及图4具体说明本发明的三维网格破洞修饰系统的工作过程。图3是本发明的三维网格破洞修饰方法的流程图;图4是本发明的三维网格破洞修饰方法的补洞步骤的流程图。

如图3所示,首先,在获取破洞边界信息步骤s100,获取整个网格的拓扑结构,主要包括三角形每条边的邻接三角形neighborf[i](i=0,1,2)以及三角形每条边在邻接三角形中的序号neighbore[i](i=0,1,2)等信息。并且,根据拓扑关系去除所有的交叠边并得到破洞边界,获取所述破洞边界上所有顶点及各顶点的两个相邻边长构成的夹角。接着,在补洞步骤s200,在所述破洞边界内,根据所述所有顶点以及各顶点的两个相邻边长构成的夹角形成不重叠的多个三角形。

如图4所示,补洞步骤s200可以分为如下三个步骤:原有顶点三角形形成步骤s210、添加新顶点形成三角形步骤s220及循环判断步骤s230。

首先,在所述原有顶点三角形形成步骤s210中,从所述各顶点中选取所述夹角为第一阈值以下、且该顶点及其两个邻接顶点一同构成的三角形不与由其他顶点及其两个邻接顶点构成的三角形相交的顶点,将该顶点及其两个邻接顶点连接形成三角形。具体实现时,可如下实现:首先,如果所述顶点的夹角大于180度,或者所述顶点及其两个邻接顶点一同构成的三角形是否与由其他顶点及其两个邻接顶点构成的三角形相交(这两个判断的顺序不限定),则跳过该顶点不处理,即不能形成三角形。若判断为可以形成三角形,则进一步判断所述夹角是否为第一阈值以下,如果是第一阈值以下,则将该顶点及其两个邻接顶点连接形成三角形。其中,第一阈值优选为75度。

接着,在添加新顶点形成三角形步骤s220中,对于经过所述原有顶点三角形形成步骤s210没有形成三角形的顶点,若所述夹角为所述第一阈值以上且180度以下,则添加新顶点来由所述顶点及所述新顶点分别与所述顶点的两个邻接顶点形成三角形。

而且,在所述添加新顶点形成三角形步骤s220,优选所述新顶点与所述顶点的连线经过所述顶点的两个邻接顶点之间的连线的中点。其中,进一步优选所述新顶点与所述顶点的连线的长度为所述顶点和所述中点之间的距离的1.2倍或所述破洞边界的各边长的平均边长。另外,优选在所述添加新顶点形成三角形步骤s220,若所述顶点与非邻接的其他顶点之间的距离小于等于所述顶点和所述新顶点之间的距离,将所述新顶点合并到所述非邻接的顶点,且所述顶点和所述非邻接的顶点分别与所述顶点的两个邻接顶点形成三角形。

接着,在循环判断步骤s230,判断经过所述原有顶点三角形形成步骤s210和所述添加新顶点形成三角形步骤s220之后是否还存在剩余破洞。在此,如果存在剩余破洞且剩余破洞上的顶点为三个,则直接将该剩余破洞上的三个顶点相连构成三角形,并结束补洞步骤。如果存在剩余破洞且剩余破洞上的顶点大于三个,则重新获取所述剩余破洞上的各顶点的两个相邻边长构成的夹角,并再次对所述剩余破洞进行如上所述的补洞步骤s200。

在所述补洞步骤s200,还可以包括将各顶点的两个相邻边长构成的夹角按照从小到大的顺序排列的顶点排序步骤(未图示),并且,从所述夹角最小的顶点开始依次进行所述原有顶点三角形形成步骤s210。

需要说明的是,在所述补洞步骤s200循环第二次以后的运行时,在所述添加新顶点形成三角形步骤s220不再根据夹角的大小来判断是否添加新顶点,而且根据所述顶点的两个邻接顶点之间的连线长度来判断。若所述顶点的两个邻接顶点之间的连线的长度大于所述平均边长的1.5倍,则直接在该连线上添加新顶点。

在本发明的三维网格破洞修饰方法,对所有添加的三角形进行优化。

具体的优化过程如下:

首先,获取顶点vi的所有邻接顶点信息(k1,k2,…kn),

根据获得的信息构建方程:

将边界顶点的坐标作为已知值,带入上述方程,解算出所有添加点的坐标。

具体说明如下:

以第一行为例

当i=1时,表示第一个点的坐标,k1j表示第j个点是否是第一个点的邻接顶点。如果是邻接顶点,则取值为1,如果不是邻接顶点,则取值为0。例如,k11中j为1,代表的是第一个点本身。

这一行表示:

1*v1+k12*v2+k13*v3+...+k1n*vn=0

解算出来v1就是其邻接顶点的坐标平均值。

另外,补面的步骤可以采用将边界点映射到平面然后使用delaunay方法构网(对于映射之后边界有相交的问题需要特殊处理)。

此外,补面完成之后的优化可以使用其他的方法或多个优化步骤,比如拉普拉斯网格优化,径向基函数(rbf)隐式曲面等。

根据本发明的三维网格破洞修饰方法,以原始网格数据的边界作为依据,逐步向内通过添加顶点进行构面,所以基本上符合原网格的形状趋势,逐步添加面,可以更好的适应不规则边界形状。另外,由于以边界的平均边长为基础构面,并且最后进行优化处理,使得补洞添加的三角网格比较均匀,不会出现与原始网格差距很大的问题,方便后续工作的进行。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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