CN102945571B - 基于面数据的空洞填补方法及系统 - Google Patents
基于面数据的空洞填补方法及系统 Download PDFInfo
- Publication number
- CN102945571B CN102945571B CN201210420673.3A CN201210420673A CN102945571B CN 102945571 B CN102945571 B CN 102945571B CN 201210420673 A CN201210420673 A CN 201210420673A CN 102945571 B CN102945571 B CN 102945571B
- Authority
- CN
- China
- Prior art keywords
- edge
- cavity
- point
- marginal
- tri patch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
Abstract
本发明适用于图像处理技术领域,提供了一种基于面数据的空洞填补方法,所述方法包括:识别并提取三维数据模型的空洞边缘;单独提取每个空洞边缘;将所述每个空洞边缘进行三角化填补。优选的,本发明还可以删除所述空洞异常的边缘边。此外,本发明还相应的提供一种基于面数据的空洞填补系统。借此,本发明能够针对任意多个空洞,及具有任何复杂空洞边缘的空洞进行填补。
Description
技术领域
本发明涉及图像处理技术领域,尤其涉及一种基于面数据的空洞填补方法及系统。
背景技术
面重建技术被广泛应用于三维数字影像分析处理、CAD建模、电影动画制作、游戏开发等方面。但是,在成像过程中或者物体点云扫描过程中,可能造成数据的缺失,又或者是因为面重建技术本身的缺陷,从而产生带有空洞的不完整的面数据,这种带空洞的数据不仅可能不符合实际中的物体几何特征,更可能对以后面数据的处理(平滑,细化等)产生不良影响。
现有的一些商用软件如Maya、3dMax等都集成有三维模型空洞填补功能,能够自动识别空洞并进行空洞填补。但是在三维空间中空洞的边缘过于复杂,可能存在多个空洞边缘共用一个点的情况,并且对于很多面数据,因为原来的数据质量问题或者是本身面重建技术的缺陷问题,很可能有异常的片元。现有的空洞填补方案或者不能排除掉异常片元,或者不能从多个空洞边缘中单独提取每个空洞,最终导致空洞填补出错;在三维空间中,空洞的边缘可能呈现复杂的拓扑结构,空洞的边缘可能并非处于一个相对平坦的曲面上,现有的空洞填补方案对于这种复杂的边缘填补可能产生异常的填补面,填补面会可能自相交甚至导致执行程序崩溃。
综上可知,现有的空洞填补方法,在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种基于面数据的空洞填补方法及系统,能有效的填补三维数据模型的空洞。
为了实现上述目的,本发明提供一种基于面数据的空洞填补方法,所述方法包括:
识别并提取三维数据模型的空洞边缘;
单独提取每个空洞边缘;
将所述每个空洞边缘进行三角化填补。
根据本发明的基于面数据的空洞填补方法,所述识别并提取三维数据模型的空洞边缘步骤包括:
扫描三维数据模型的面数据的点及其片元数据,获取所述空洞边缘的点和边数据。
根据本发明的基于面数据的空洞填补方法,所述方法还包括:
删除所述空洞异常的边缘边。
根据本发明的基于面数据的空洞填补方法,所述删除所述空洞异常的边缘边步骤包括:
搜索空洞的边缘点;
删除只被一条边缘边使用的边缘点,同时将使用所述边缘点的边缘边删除。
根据本发明的基于面数据的空洞填补方法,所述将所述每个空洞边缘进行三角化填补的步骤包括:
设置权重函数,并根据所述权重函数连接所述空洞的边缘点产生三角面片。
根据本发明的基于面数据的空洞填补方法,所述权重函数的权重为:
三角面片的面积大小;或者
所述三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小;或者
所述三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小再加上所形成的三角面片的最大的最小内角。
本发明还提供一种基于面数据的空洞填补系统,包括:
识别模块,用于识别并提取三维数据模型的空洞边缘;
提取模块,用于单独提取每个空洞边缘;
填补模块,用于将所述每个空洞边缘进行三角化填补。
本发明还提供一种基于面数据的空洞填补系统,所述识别模块包括扫描子模块,用于扫描三维数据模型的面数据的点及其片元数据,获取所述空洞边缘的点和边数据。
本发明还提供一种基于面数据的空洞填补系统,所述系统还包括:
删除模块,用于删除所述空洞异常的边缘边。
本发明还提供一种基于面数据的空洞填补系统,所述删除模块包括:
搜索子模块,用于搜索空洞的边缘点;
删除子模块,用于删除只被一条边缘边使用的边缘点,同时将使用所述边缘点的边缘边删除。
本发明通过扫描三维数据模型的面数据的点及其片元数据,获取所述空洞边缘的点和边数据,识别和提取到空洞边缘,然后单独提取出每个空洞边缘,对每个所述每个空洞边缘进行三角化填补,使之成为封闭的面数据模型。更好的是,本发明还可以删除空洞异常的边缘边。借此,本发明能够针对任意多个空洞,及具有任何复杂空洞边缘的空洞进行填补。
附图说明
图1是本发明一实施例的空洞填补系统的结构示意图;
图2是本发明另一实施例的空洞填补系统的结构示意图;
图3A是本发明一实施例的具有空洞的三维数据模型的结构示意图;
图3B是本发明另一实施例的具有空洞的三维数据模型的结构示意图;
图4是本发明边缘边提取后的结构示意图;
图5是本发明单独提取边缘边后的结构示意图;
图6A是图3A所示实施例的三维数据模型填补后的结构示意图;
图6B是图3B所示实施例的三维数据模型填补后的结构示意图;
图7是本发明一实施例的空洞填补方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为便于理解本发明,在此将部分术语作如下说明。一个面数据是由一系列的三维顶点和由这些点构成的一系列片元所组成,片元是指一个小的三角形或四边形等多边形,这些片元是按一定顺序的边连接面数据中的某三个或四个或者多个顶点所组成的。共用一条边的两个片元成为相邻片元,而在面数据中,如果一条边只被一个片元所使用,那么这种边称为边缘边,边缘点就是指构成边缘边的两个端点。面数据中,空洞是由一系列的边缘边首尾相连构成的一个封闭的圈,这种封闭的圈在三维空间中可能任意的复杂。
参见图1和图2,本发明提供了一种基于面数据的空洞填补系统,其可以对三维数据模块的空洞进行填补。该空洞填补系统100包括识别模块10、提取模块20、填补模块30及删除模块40,具体的:
识别模块10用于识别并提取三维数据模型的空洞边缘。实际应用中的三维数据模型可能包括有若干空洞,识别模块10具有一扫描子模块11。结合图3A~图4,识别模块10通过其扫描子模块11扫描三维数据模型的面数据点和其片元数据,获取到边缘边的点数据和边数据,借此将所有的空洞边缘都提取出来。
提取模块20用于单独提取每个空洞边缘。具体的,识别模块10获取的面数据空洞有任意多个,处理时还需要分别提取构造一个独立空洞的边缘边。另外,在面重建过程中,可能产生一些异常的片元,这些片元的边也产生边缘边。故在该处理过程中,本发明通过删除模块40消除异常边缘边,并通过提取模块20单独提取每个空洞边缘信息,如图5所示。
前述已经说明,空洞是由一系列的边缘边首尾相连构成的一个封闭的圈。在一个封闭的圈中,任意一个边缘点都被两个以上的边缘边使用,也即是说在前述提取的边缘边中,边缘点只被一条边缘边使用的点为异常的边缘边,需要被删除。
本发明实施例中具体的删除过程如下:搜索子模块41搜索提取出的边缘点;删除子模块42删除只被一条边缘边使用的边缘点,并且将该边缘边也删除。然后搜索子模块41继续在剩余的边缘点和边缘边中搜索,删除只被一条边缘边使用的边缘点和使用该点的边缘边,重复以上操作,直到所有的边缘点都被两条及两条以上的边缘边使用。借此使剩下的边缘边都构成了一个或多个空洞边缘(首尾相连的封闭圈)。
实际应用中,面数据的空洞边缘可能相互连接,一个空洞的边缘可能与另外一个甚至多个空洞边缘共用一个边缘点,从而两个甚至多个空洞边缘相交在一起,因此,本发明在空洞填补前将每个空洞边缘分离提取出来,单独处理。
具体的,在经删除模块40处理后获得的空洞边缘边和点数据中,从任意一个边缘点作为起始点开始,沿其中一条使用该边缘点的边缘边往下搜索下一个边缘点,在记录中顺次记录搜索过的边缘点,并且标记搜索过的边缘边,一直搜索到一个边缘点,如果该边缘点已经被记录搜索过,则在记录中从该边缘点开始到记录末尾,中间被记录的点构成一个空洞边缘(依次首尾相接形成一个封闭的圈)。将以上获取到的空洞边缘点记录信息从记录中删除,如果以上获取空洞边缘时搜索到的边缘点还有相连的边缘边未被标记过,则将该点重新记录在记录中。如果记录中还有记录的点则从记录中的最后一个点开始继续搜索,如果记录中没有被记录的点,则从剩下的其他点任意一个开始重新下一轮的搜索,直到全部点被搜索完毕。借此可使全部空洞边缘都被分别提取出来,这些边缘点依次首尾相接,构成边缘边。
填补模块30,用于将提取的每个空洞边缘进行三角化填补。对于每个空洞边缘,本发明的填补模块30根据一定的权重函数连接边缘点产生三角面片,借此形成三角网格填补空洞边缘。本发明利用空洞边缘上的边缘点构造三角面片,进而产生三角网格填补空洞。需要说明的,选择不同的边缘点可以产生不同的三角面片,具体应用中需要设计权重函数来产生质量最好的三角面片。
本发明实施例中的权重函数定义了在构造空洞边缘三角网格过程中可能出现的三角面片的权重大小,权重可以是三角面片的面积大小,也可以是三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小,也可以三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小加上所形成的三角面片的最大的最小内角。实际应用中的每个权重值最多可能是三元组,假设M为所求三角形最大的最小内角,D为所求三角形与已构造的相邻三角形的最大二面角,S为所求三角形的面积,则所求三个标准的权重(M,D,S)的大小关系为:(M1,D1,S1)<(M2,D2,S2)当且仅当(M1>M2)或者(M1=M2且D1<D2)或者(M1=M2且D1=D2且S1<S2),权重(M,D,S)的和计算为:(M1,D1,S1)+(M2,D2,S2)=(min(M1,M2),max(D1,D2),S1+S2)。权重可以依次只选取D和S,或者只选取S作为标准,从而权重可以是二元组或者一元组,它们的大小关系和和计算方式只需要根据三元组的计算方式去掉相应的项即可,最后选取权重最小的三角形构造三角网格填补空洞。
对于任一空洞边缘的所有边缘点,首先从第一点开始到倒数第二个点,赋值任意两个点形成的边(可看做是一个特殊的三角形)权重为0;再从第一个点开始到倒数第三个点,根据选取的权重标准计算赋值任意三个相邻的边缘点构成的三角形。此后继续增量式计算在构造空洞边缘点三角形过程中可能出现的所有三角形的权值大小。最后根据计算出的权重值用递归构建的方法,选择最小权重值的三角形构建三角网格填补空洞。本实施例中,一开始便赋值了空洞边缘的边权值为0,所以本发明在最后构建三角网格时保留了空洞边缘,借此能够很好地填补空洞,如图6A和6B,并且根据权重值能够构建有效的三角网格。
参见图7,本发明还提供了一种基于面数据的空洞填补方法,其可以通过如图1或图2所示的系统100实现,具体的,该方法包括:
步骤S701,识别模块10识别并提取三维数据模型的空洞边缘。
具体的,其通过扫描三维数据模型的面数据的点及其片元数据,获取所述空洞边缘的点和边数据。
步骤S702,删除模块40删除空洞异常的边缘边。
具体应用中,删除模块40通过搜索子模块41搜索提取出的边缘点;通过删除子模块42删除只被一条边缘边使用的边缘点,并且将该边缘边也删除。然后搜索子模块41继续在剩余的边缘点和边缘边中搜索,删除只被一条边缘边使用的边缘点和使用该点的边缘边,重复以上操作,直到所有的边缘点都被两条及两条以上的边缘边使用。
步骤S703,提取模块20单独提取每个空洞边缘。
经删除模块40处理后获得的空洞边缘边和点数据中,从任意一个边缘点作为起始点开始,沿其中一条使用该边缘点的边缘边往下搜索下一个边缘点,在记录中顺次记录搜索过的边缘点,并且标记搜索过的边缘边,一直搜索到一个边缘点,如果该边缘点已经被记录搜索过,则在记录中从该边缘点开始到记录末尾,中间被记录的点构成一个空洞边缘(依次首尾相接形成一个封闭的圈)。将以上获取到的空洞边缘点记录信息从记录中删除,如果以上获取空洞边缘时搜索到的边缘点还有相连的边缘边未被标记过,则将该点重新记录在记录中。如果记录中还有记录的点则从记录中的最后一个点开始继续搜索,如果记录中没有被记录的点,则从剩下的其他点任意一个开始重新下一轮的搜索,直到全部点被搜索完毕。借此可使全部空洞边缘都被分别提取出来,这些边缘点依次首尾相接,构成边缘边。
步骤S704,填补模块30将每个空洞边缘进行三角化填补。
本实施例中,通过系统100预设权重函数,并根据权重函数连接空洞的边缘点产生三角面片。具体的,权重函数的权重可以为:三角面片的面积大小;或者所述三角面片的面积大小加上三角面片的与其它所构造的三角面片的二面角大小;或者所述三角面片的面积大小加上三角面片的与其它所构造的三角面片的二面角大小再加上所形成的三角面片的最大的最小内角。
实际应用中的每个权重值最多可能是三元组,假设M为所求三角形最大的最小内角,D为所求三角形与已构造的相邻三角形的最大二面角,S为所求三角形的面积,则所求三个标准的权重(M,D,S)的大小关系为:(M1,D1,S1)<(M2,D2,S2)当且仅当(M1>M2)或者(M1=M2且D1<D2)或者(M1=M2且D1=D2且S1<S2),权重(M,D,S)的和计算为:(M1,D1,S1)+(M2,D2,S2)=(min(M1,M2),max(D1,D2),S1+S2)。权重可以依次只选取D和S,或者只选取S作为标准,从而权重可以是二元组或者一元组,它们的大小关系和和计算方式只需要根据三元组的计算方式去除相应的项即可,最后选取权重最小的三角形构造三角网格填补空洞。
对于任一空洞边缘的所有边缘点,首先从第一点开始到倒数第二个点,赋值任意两个点形成的边(可看做是一个特殊的三角形)权重为0;再从第一个点开始到倒数第三个点,根据选取的权重标准计算赋值任意三个相邻的边缘点构成的三角形。此后继续增量式计算在构造空洞边缘点三角形过程中可能出现的所有三角形的权值大小。最后根据计算出的权重值用递归构建的方法,选择最小权重值的三角形构建三角网格填补空洞。本实施例中,一开始便赋值了空洞边缘的边权值为0,所以本发明在最后构建三角网格时保留了空洞边缘,借此能够很好地填补空洞,并且根据权重值能够构建有效的三角网格。
综上所述,本发明通过扫描三维数据模型的面数据的点及其片元数据,获取所述空洞边缘的点和边数据,识别和提取到空洞边缘,然后单独提取出每个空洞边缘,对每个所述每个空洞边缘进行三角化填补,使之成为封闭的面数据模型。更好的是,本发明还可以删除空洞异常的边缘边。借此,本发明能够针对任意多个空洞,及具有任何复杂空洞边缘的空洞进行填补。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (4)
1.一种基于面数据的空洞填补方法,其特征在于,所述方法包括:
识别并提取三维数据模型的空洞边缘,获取所述空洞边缘的点和边数据;
单独提取每个空洞边缘;
将所述每个空洞边缘进行三角化填补;
所述将所述每个空洞边缘进行三角化填补的步骤包括:
设置权重函数,所述权重函数为:
三角面片的面积大小;或者
所述三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小;或者
所述三角面片的面积大小加上三角面片与其它所构造的三角面片的二面角大小再加上所形成的三角面片的最大最小内角;
根据所述权重函数连接所述空洞的边缘点产生三角面片:
对于任一所述空洞边缘的所有边缘点,首先从第一点开始到倒数第二个点,赋值任意两个点形成的边权重为0;再从第一个点开始到倒数第三个点,根据选取的权重函数计算任意三个相邻的边缘点构成的三角面片的权重;此后继续增量式计算在利用所述空洞边缘的边缘点构造三角面片过程中可能出现的所有三角面片的权重大小;最后根据计算出的权重值用递归构建的方法,选择最小权重值的三角面片用于填补所述空洞。
2.根据权利要求1所述的基于面数据的空洞填补方法,其特征在于,所述识别并提取三维数据模型的空洞边缘,获取所述空洞边缘的点和边数据步骤进一步包括:
扫描三维数据模型的面数据的点及其片元数据;
所述片元是一个小的多边形,所述片元按一定顺序的边连接面数据中的至少三个顶点所组成。
3.根据权利要求2所述的基于面数据的空洞填补方法,其特征在于,所述方法还包括:
删除所述空洞异常的边缘边。
4.根据权利要求3所述的基于面数据的空洞填补方法,其特征在于,所述删除所述空洞异常的边缘边步骤包括:
搜索空洞的边缘点;
删除只被一条边缘边使用的边缘点,同时将使用所述边缘点的边缘边删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210420673.3A CN102945571B (zh) | 2012-10-29 | 2012-10-29 | 基于面数据的空洞填补方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210420673.3A CN102945571B (zh) | 2012-10-29 | 2012-10-29 | 基于面数据的空洞填补方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102945571A CN102945571A (zh) | 2013-02-27 |
CN102945571B true CN102945571B (zh) | 2016-07-06 |
Family
ID=47728509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210420673.3A Active CN102945571B (zh) | 2012-10-29 | 2012-10-29 | 基于面数据的空洞填补方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102945571B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631937B (zh) * | 2015-12-28 | 2019-06-28 | 苏州佳世达光电有限公司 | 扫描方法及扫描装置 |
CN107610071A (zh) * | 2017-09-29 | 2018-01-19 | 浙江科澜信息技术有限公司 | 修复倾斜摄影数据空洞的方法、装置以及设备 |
CN112882666A (zh) * | 2021-03-15 | 2021-06-01 | 上海电力大学 | 一种基于三维建模与模型填补的3d打印系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102074052A (zh) * | 2011-01-20 | 2011-05-25 | 山东理工大学 | 基于样点拓扑近邻的散乱点云曲面拓扑重建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272264B2 (en) * | 2003-09-11 | 2007-09-18 | International Business Machines Corporation | System and method for hole filling in 3D models |
-
2012
- 2012-10-29 CN CN201210420673.3A patent/CN102945571B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102074052A (zh) * | 2011-01-20 | 2011-05-25 | 山东理工大学 | 基于样点拓扑近邻的散乱点云曲面拓扑重建方法 |
Non-Patent Citations (3)
Title |
---|
Filling Holes in Triangular Meshes by Curve Unfolding;Alan Brunton等;《IEEE International Conference on Shape Modeling and Applications (SMI) 2009》;20090628;第66-72页 * |
三角网格大面积孔洞光顺修补算法的研究;韦争亮等;《中国机械工程》;20080430;第19卷(第8期);第949-954页 * |
三角网格模型的补洞算法研究;田建磊等;《计算机应用》;20090831;第29卷(第8期);第2035-2037,2059页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102945571A (zh) | 2013-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111008422B (zh) | 一种建筑物实景地图制作方法及系统 | |
Malinverni et al. | Deep learning for semantic segmentation of 3D point cloud | |
Xiong et al. | A graph edit dictionary for correcting errors in roof topology graphs reconstructed from point clouds | |
Kumar et al. | Monocular dense 3d reconstruction of a complex dynamic scene from two perspective frames | |
CN106570468A (zh) | 一种重建LiDAR原始点云建筑物轮廓线的方法 | |
CN101944239B (zh) | 三维模型分割方法、装置以及包含该装置的图像处理系统 | |
CN109598290A (zh) | 一种基于两级检测相结合的图像小目标检测方法 | |
Fang et al. | Floorplan generation from 3D point clouds: A space partitioning approach | |
CN103413297A (zh) | 基于一体化三维gis模型的切割方法 | |
CN101958008B (zh) | 序列图像三维重建中的自动纹理映射方法 | |
CN110084304A (zh) | 一种基于合成数据集的目标检测方法 | |
CN105913372B (zh) | 二维房型平面图转换为三维空间图的方法及其系统 | |
Fang et al. | Connect-and-slice: an hybrid approach for reconstructing 3d objects | |
F Laefer et al. | Processing of terrestrial laser scanning point cloud data for computational modelling of building facades | |
CN105022865A (zh) | 一种基于stl模型布尔运算的飞机油箱内表面模型提取方法 | |
CN114066718A (zh) | 一种图像风格迁移方法、装置、存储介质及终端 | |
CN113192200B (zh) | 一种基于空三并行计算算法的城市实景三维模型的构建方法 | |
CN104462163A (zh) | 一种三维模型表征方法、检索方法及检索系统 | |
CN102945571B (zh) | 基于面数据的空洞填补方法及系统 | |
Abou Diakité et al. | Topological reconstruction of complex 3D buildings and automatic extraction of levels of detail | |
CN109636913A (zh) | 基于Delaunay剖分的三角网格增量拓扑拼接方法 | |
CN105279794A (zh) | 基于Micro-CT技术的储层岩心多组织模型构建方法 | |
CN113971718B (zh) | 一种对三维点云模型进行布尔运算的方法 | |
CN110363848A (zh) | 一种基于数字岩心的孔隙网络模型的可视化方法及装置 | |
Zhao et al. | A 3D modeling method for buildings based on LiDAR point cloud and DLG |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |