CN109035405B - 一种基于预测-校正模型的网格简化方法 - Google Patents

一种基于预测-校正模型的网格简化方法 Download PDF

Info

Publication number
CN109035405B
CN109035405B CN201810654773.XA CN201810654773A CN109035405B CN 109035405 B CN109035405 B CN 109035405B CN 201810654773 A CN201810654773 A CN 201810654773A CN 109035405 B CN109035405 B CN 109035405B
Authority
CN
China
Prior art keywords
vertex
folding
matrix
quadratic
new
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
Application number
CN201810654773.XA
Other languages
English (en)
Other versions
CN109035405A (zh
Inventor
王慧青
焦越
吴煜豪
杨哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN201810654773.XA priority Critical patent/CN109035405B/zh
Publication of CN109035405A publication Critical patent/CN109035405A/zh
Application granted granted Critical
Publication of CN109035405B publication Critical patent/CN109035405B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种基于预测‑校正模型的网格简化方法,包括:读取三维网格中所有的顶点和面,计算其基础二次方矩阵和二次误差矩阵;计算出所有边的初始折叠误差和对应的新顶点的位置,将初始折叠误差插入优先队列中;从优先队列中选择折叠误差最小的一条边,进行一次折叠操作,并更新相关的顶点和面;根据新顶点的位置,重新计算相邻面的基础二次方矩阵和新顶点的二次误差矩阵;重新计算与折叠点相邻的边的折叠误差和对应的新顶点的位置,更新优先队列;判断满足设定的简化条件为止。本发明能够在快速高效的精简网格的同时,有效的控制边折叠过程中的累积误差,改善简化模型的质量,提升整体的简化效果。

Description

一种基于预测-校正模型的网格简化方法
技术领域
本发明属于计算机图形学领域,涉及三维网格简化技术,特别是涉及一种基于预测-校正模型的网格简化方法。
背景技术
在计算机中,三维模型通常表示为面模型或者体模型;其中,使用多边形网格尤其是三角网格的面模型最为常用,这种模型的通用性和灵活性比较好,而且数学表示简单。随着人们对于图像质量要求的提高,网格模型复杂度也随之提高,即便是一个非常简单的模型,可能也需要上万个三角面来描述,因此网格模型简化算法的研究显得尤为重要。
目前基于三角网格的简化方法有许多种,根据原理的不同大致可以分为顶点删除法、顶点聚类法、边折叠法和面折叠法等。其中,边折叠法使用最为广泛。Garland等提出基于QEM(Quadric Error Metrics,二次误差测度)的简化算法,其误差测度为顶点到平面的距离平方和,优点为计算速度快,生成网格较为平均,是一种非常有效的化简算法。但此方法会在边折叠过程中引入折叠误差,并造成误差的累积。
发明内容
为解决上述问题,本发明公开了一种基于预测-校正模型的网格简化方法,通过校正边折叠过程中新顶点的二次误差矩阵,能够有效的控制简化过程中的累积误差。
为了达到上述目的,本发明提供如下技术方案:
一种基于预测-校正模型的网格简化方法,包括如下步骤:
第一步,读取三维网格中所有的顶点和面,计算其基础二次方矩阵和二次误差矩阵;
第二步,计算出所有边的初始折叠误差和对应的新顶点的位置,并将初始折叠误差插入优先队列中;
第三步,从优先队列中选择折叠误差最小的一条边,进行一次折叠操作,并更新相关的顶点和面;
第四步,根据新顶点的位置,重新计算相邻面的基础二次方矩阵和新顶点的二次误差矩阵;
第五步,重新计算与折叠点相邻的边的折叠误差和对应的新顶点的位置,更新优先队列;
第六步,判断是否满足简化条件,若不满足,则返回第三步;若满足,则过程结束。
进一步的,第一步包括如下过程:
通过下式计算每个面的基础二次方矩阵Kp,存入对象的属性中:
Figure BDA0001705298790000021
其中,p=[a b c d]T代表了平面:
ax+by+cz+d=0(a2+b2+c2=1)
a、b、c由面的单位法向量得到,d=-(ax+by+cz);
将计算获得的矩阵Kp保存在顶点的属性中;
通过下式计算所有顶点的二次误差矩阵Q:
Figure BDA0001705298790000022
其中planes(v)代表了与顶点v相邻的所有面,最终将计算获得的Q保存在顶点的属性中。
进一步的,第二步中新顶点位置和折叠误差的计算方法如下:
通过下式计算新顶点的二次误差矩阵的估计值
Figure BDA0001705298790000023
Figure BDA0001705298790000024
判断矩阵
Figure BDA0001705298790000025
是否可逆,其中,qij是矩阵
Figure BDA0001705298790000026
中的项;
如果矩阵不可逆,则从折叠边的两个端点v1、v2或中点(v1+v2)/2中选择折叠代价最小的作为折叠新顶点;如果矩阵可逆,则计算出该新顶点
Figure BDA0001705298790000027
的位置为:
Figure BDA0001705298790000028
通过下式计算折叠误差:
Figure BDA0001705298790000029
进一步的,所述第三步更新相关顶点和面的过程中包括以下过程:
获取顶点v1,v2所有相邻的面,删除共有的面,将其他面中的顶点v1,v2替换为新顶点
Figure BDA0001705298790000031
获取顶点v1,v2所有相邻的顶点,更新这些顶点的相邻顶点列表,用新顶点
Figure BDA0001705298790000032
代替v1,v2,并同时更新新顶点的相邻顶点列表。
进一步的,所述第三步中使用costHeap的delMin()方法获得折叠代价最小的一条边。
进一步的,所述第四步包括以下过程:
针对折叠后的新顶点
Figure BDA0001705298790000033
重新计算与其相邻的面的基础二次方矩阵:
Figure BDA0001705298790000034
重新计算顶点
Figure BDA0001705298790000035
的二次误差矩阵:
Figure BDA0001705298790000036
使用上式中的
Figure BDA0001705298790000037
取代第二步中二次误差矩阵的预测值
Figure BDA0001705298790000038
进一步的,所述第五步使用与第二步相同的方法重新计算与新顶点
Figure BDA0001705298790000039
相邻的边的折叠误差和对应的折叠点的位置。
进一步的,所述第六步中的简化条件为顶点数或简化比例。
与现有技术相比,本发明具有如下优点和有益效果:
本发明采用预测-校正的思想进行边折叠,与原有方法相比,新顶点的二次误差矩阵由更新后的邻接面计算而来,而不是直接由两个端点的二次误差矩阵相加得到。基于此,本发明能够在快速高效的精简网格的同时,有效的控制边折叠过程中的累积误差,改善简化模型的质量,尤其是对于细节的保留效果突出,有较强的通用性,相较于传统方法能够取得更为突出的简化效果,从而提升整体的简化效果。
附图说明
图1为本发明提供的一种基于预测-校正模型的网格简化方法的流程图。
图2为采用QEM算法和本发明方法对dinosaur模型进行简化的效果对比图;其中(a)为原模型;(b)为采用QEM算法对原模型简化后效果图,简化比例50%;(c)为采用QEM算法对原模型简化后效果图,简化比例10%;(d)为采用本发明方法对原模型简化后效果图,简化比例50%;(e)为采用本发明方法对原模型简化后效果图,简化比例10%。
图3为图2中QEM算法和本发明方法在简化比例α=0.1时局部细节放大比较图,其中(a)为QEM算法细节放大图,(b)为本发明方法放大图。
图4为采用QEM算法和本发明方法对castle模型进行简化的效果对比图;其中(a)为原模型;(b)为采用QEM算法对原模型简化后效果图,简化比例10%;(c)为采用本发明方法对原模型简化后效果图,简化比例10%。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
本实施例采用Java作为编程语言,如图1所示,本实施例采用如下步骤:
步骤1,读取三维网格中所有的顶点和面计算基础二次方矩阵Kp和二次误差矩阵Q。
定义p=[a b c d]T代表了平面:
ax+by+cz+d=0(a2+b2+c2=1)
a、b、c可以由面的单位法向量得到;d=-(ax+by+cz),通过代入面的一个顶点坐标,可以获得d的值。
使用距离的平方作为误差的度量,折叠点v的误差可以写作:
Figure BDA0001705298790000041
其中planes(v)代表了与顶点v相邻的所有面,将其写成二次型的形式:
Figure BDA0001705298790000042
其中,Kp是平面p的基础二次方矩阵:
Figure BDA0001705298790000043
建立两个类Vertex和Face,用来对应模型中的顶点和面。对三维obj文件进行解析,读取网格三维网格中所有的顶点和面,分别建立两个ArrayList:VertexList用于保存顶点,FaceList用于保存面。在解析的同时,保存与顶点相邻的顶点和面的信息,存入Vertex属性中的顶点邻接表和面邻接表中。
首先遍历FaceList,对其中的每一个Face对象(即所有面)计算基础二次方矩阵Kp,存入对象的属性中,将计算获得的矩阵Kp保存在顶点的属性中。
接着遍历顶点的列表VertexList,计算所有顶点的二次误差矩阵Q,某一顶点v的初始二次误差矩阵定义为相邻面基础二次方矩阵乘以面积约束因子的和,即初始二次误差矩阵为:
Figure BDA0001705298790000051
最终将计算获得的Q保存在顶点的属性中。
步骤2,在顶点的数据结构中包括与其相邻的待折叠的边的另一个顶点,最小的折叠代价以及新顶点的位置,这样就可以将所有边的折叠代价作为顶点的属性保存在顶点的数据结构中。本步骤对于列表VertexList中的每个顶点Vertex,遍历与其相邻的所有顶点,从而遍历两个顶点之间构成的与顶点Vertex相邻的边,计算边的折叠代价。计算方法为:
在计算每条边的初始折叠误差时,使用边的两个顶点的二次误差矩阵之和作为新顶点的二次误差矩阵的估计值,并以此计算新顶点的位置。即对于边两个顶点v1,v2,在步骤1中已经计算出了其二次误差矩阵Q(v1)和Q(v2),计算
Figure BDA0001705298790000052
判断矩阵
Figure BDA0001705298790000053
是否可逆。其中,qij是矩阵
Figure BDA0001705298790000054
中的项。如果矩阵不可逆,则从折叠边的两个端点v1、v2或中点(v1+v2)/2中选择折叠代价最小的作为折叠新顶点。如果矩阵可逆,则可以计算出该新顶点
Figure BDA0001705298790000055
的位置为:
Figure BDA0001705298790000056
则折叠所产生的误差(即折叠代价)为:
Figure BDA0001705298790000057
将该误差插入到优先队列中,同时记录相应的顶点索引,以便后续步骤引用。
步骤3,使用costHeap的delMin()方法获得折叠代价最小的一条边,对其进行折叠操作,并更新相关顶点和面的属性。对于一次折叠操作
Figure BDA0001705298790000058
其新顶点的坐标由上一步计算得到。在一次边折叠后,要更新与该边关联的所有顶点和面的拓扑关系,进行局部网格重构,具体如下:
分别使用两个列表记录与原顶点v1,v2相邻的所有的面和所有的顶点。删除与原顶点v1,v2所有相邻的面,重新建立新顶点
Figure BDA0001705298790000059
到所有相邻顶点的连接。更新相关顶点的顶点邻接表(保存相邻顶点信息)和面邻接表(保存相邻面信息)。
步骤4,查询新顶点
Figure BDA0001705298790000061
的面邻接表,计算所有面的基础二次方矩阵Kp
Figure BDA0001705298790000062
再计算顶点
Figure BDA0001705298790000063
的二次误差矩阵:
Figure BDA0001705298790000064
使用计算出的二次误差矩阵Q取代之前的预测值
Figure BDA0001705298790000065
将其存入顶点的属性中。
步骤5,查询新顶点
Figure BDA0001705298790000066
的顶点邻接表,重新计算与
Figure BDA0001705298790000067
相邻的所有边的折叠误差以及对应的新顶点的位置。计算方法与步骤2中所述方法相同。将计算后的结果重新插入优先队列中。
步骤6,判断是否满足设定的简化条件,本例中简化条件设置为判断网格当前的顶点数是否小于设定的顶点数N。若顶点数大于N,则返回步骤3;若顶点数小于等于N,则算法结束。简化条件可以为其他条件,如简化比例等。
为了说明本发明中算法的有效性,我们分别对多个模型使用QEM算法和本发明方法进行简化,对比简化后的结果。
图2是dinosaur模型的简化效果对比。图2(a)是原始模型,包含了约2000个顶点和3000个面。图(b)和图(c)分别是使用QEM算法将模型的顶点数简化至原来的50%和10%的效果,图(d)和图(e)则是使用本发明方法将模型的顶点数简化至原来的50%和10%的效果。
从图中可以看出,当简化的比例较小(50%)的时候,两种算法都能得到非常好的简化效果,细节特征都得到了很好的保留,几乎无法看出它们与原模型的区别。但是当简化的比例较大(10%)的时候,两种算法还是显示出了区别。QEM算法生成的网格较为平均,保证了模型的整体效果,但是这也导致了其在平坦的区域使用了较多的三角形(背部和腹部),从而使一些明显的特征保留不够,如恐龙模型的眼睛区域;而改进后的方法在恐龙面部和腿部使用了更多的三角形,因此对细节特征的保留更好,如图3所示。
图4是castle模型的简化效果对比。图4(a)是原始模型,包含约3000个顶点和6000个面。图4(b)和图4(c)分别是使用QEM算法和本文的算法对原模型简化到顶点数的10%的效果图。此模型与dinosaur模型相比,存在许多曲率剧烈变化的表面,因此特征更为突出。可以发现,在图(c)中,城堡的角旗部分使用了更多的三角形,因此特征保留更为完整;而在原本相对平整的城墙部分使用的三角形更少,整体的简化效果也更好。
本方案在算法复杂度上,由于三角面的面积可以非常容易的获得,计算新顶点的二次误差矩阵也可以在常数时间内完成,所以时间复杂度与QEM算法相同,均为O(nlogn),并不会显著增加运行时间。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (7)

1.一种基于预测-校正模型的网格简化方法,其特征在于,包括如下步骤:
第一步,读取三维网格中所有的顶点和面,计算其基础二次方矩阵和二次误差矩阵;
第二步,计算出所有边的初始折叠误差和对应的新顶点的位置,并将初始折叠误差插入优先队列中;
第三步,从优先队列中选择折叠误差最小的一条边,进行一次折叠操作,并更新相关的顶点和面;
第四步,根据新顶点的位置,重新计算相邻面的基础二次方矩阵和新顶点的二次误差矩阵;包括以下过程:
针对折叠后的新顶点
Figure FDA0004130604820000011
重新计算与其相邻的面的基础二次方矩阵:
Figure FDA0004130604820000012
重新计算顶点
Figure FDA0004130604820000013
的二次误差矩阵:
Figure FDA0004130604820000014
使用上式中的
Figure FDA0004130604820000015
取代第二步中二次误差矩阵的预测值
Figure FDA0004130604820000016
第五步,重新计算与折叠点相邻的边的折叠误差和对应的新顶点的位置,更新优先队列;
第六步,判断是否满足简化条件,若不满足,则返回第三步;若满足,则过程结束。
2.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,第一步包括如下过程:
通过下式计算每个面的基础二次方矩阵Kp,存入对象的属性中:
Figure FDA0004130604820000017
其中,p=[a b c d]T代表了平面:
ax+by+cz+d=0
a、b、c由面的单位法向量得到,a2+b2+c2=1,d=-(ax+by+cz);
将计算获得的矩阵Kp保存在顶点的属性中;
通过下式计算所有顶点的二次误差矩阵Q:
Figure FDA0004130604820000018
其中planes(v)代表了与顶点v相邻的所有面,将计算获得的Q保存在顶点的属性中。
3.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,第二步中新顶点位置和折叠误差的计算方法如下:
通过下式计算新顶点的二次误差矩阵的估计值
Figure FDA0004130604820000021
Figure FDA0004130604820000022
判断矩阵
Figure FDA0004130604820000023
是否可逆,其中,qij是矩阵
Figure FDA0004130604820000024
中的项,Q(v1)和Q(v2)为顶点v1,v2的二次误差矩阵;
如果矩阵不可逆,则从折叠边的两个端点v1、v2或中点(v1+v2)/2中选择折叠代价最小的作为折叠新顶点;如果矩阵可逆,则计算出该新顶点
Figure FDA0004130604820000025
的位置为:
Figure FDA0004130604820000026
通过下式计算折叠误差:
Figure FDA0004130604820000027
4.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,所述第三步更新相关顶点和面的过程中包括以下过程:
获取顶点v1,v2所有相邻的面,删除共有的面,将其他面中的顶点v1,v2替换为新顶点
Figure FDA0004130604820000028
获取顶点v1,v2所有相邻的顶点,更新这些顶点的相邻顶点列表,用新顶点
Figure FDA0004130604820000029
代替v1,v2,并同时更新新顶点的相邻顶点列表。
5.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,所述第三步中使用costHeap的delMin()方法获得折叠代价最小的一条边。
6.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,所述第五步使用与第二步相同的方法重新计算与新顶点
Figure FDA00041306048200000210
相邻的边的折叠误差和对应的折叠点的位置。
7.根据权利要求1所述的基于预测-校正模型的网格简化方法,其特征在于,所述第六步中的简化条件为顶点数或简化比例。
CN201810654773.XA 2018-06-22 2018-06-22 一种基于预测-校正模型的网格简化方法 Active CN109035405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810654773.XA CN109035405B (zh) 2018-06-22 2018-06-22 一种基于预测-校正模型的网格简化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810654773.XA CN109035405B (zh) 2018-06-22 2018-06-22 一种基于预测-校正模型的网格简化方法

Publications (2)

Publication Number Publication Date
CN109035405A CN109035405A (zh) 2018-12-18
CN109035405B true CN109035405B (zh) 2023-04-18

Family

ID=64610850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810654773.XA Active CN109035405B (zh) 2018-06-22 2018-06-22 一种基于预测-校正模型的网格简化方法

Country Status (1)

Country Link
CN (1) CN109035405B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112465985B (zh) * 2020-11-24 2023-09-05 中国银联股份有限公司 网格模型简化方法以及装置
CN114741750A (zh) * 2022-03-21 2022-07-12 清华大学 模型简化方法、装置、电子设备及存储设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102546647A (zh) * 2012-01-17 2012-07-04 西北大学 一种网格模型简化方法和基于该方法的网格模型传输方法
CN107564105B (zh) * 2017-08-29 2021-01-12 东南大学 一种针对不光滑表面考虑面积和法向量的网格简化方法

Also Published As

Publication number Publication date
CN109035405A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
Freitag et al. Local optimization‐based simplicial mesh untangling and improvement
US7737969B2 (en) System and program product for re-meshing of a three-dimensional input model using progressive implicit approximating levels
CN109584357B (zh) 基于多轮廓线的三维建模方法、装置、系统及存储介质
CN113781667B (zh) 三维结构简化重建方法、装置、计算机设备和存储介质
US8174525B2 (en) Tetrahedral mesh generating method for finite-element analysis and finite-element analyzing system using its method
US9922458B2 (en) Methods and systems for generating polycube segmentations from input meshes of objects
US7876322B2 (en) Method and apparatus for fast and efficient mesh simplification
CN109035405B (zh) 一种基于预测-校正模型的网格简化方法
EP2817783A1 (en) Method and apparatus for mesh simplification
US20120029882A1 (en) System and method for generating quadrangulations
CN112687002B (zh) 一种三维地质模型网格优化方法
CN116580048A (zh) 一种提取房屋倾斜模型上直角房屋的轮廓线的方法及系统
CN115345988A (zh) 基于顶点重要度的二次误差度量边折叠bim轻量化方法
Zhou et al. Improvement of normal estimation for point clouds via simplifying surface fitting
US7843467B2 (en) Shape deformation
Greß et al. Efficient representation and extraction of 2-manifold isosurfaces using kd-trees
US7733338B2 (en) Reduction of a mesh with preservation of flow lines
Dyn et al. Meshfree thinning of 3D point clouds
CN107564105B (zh) 一种针对不光滑表面考虑面积和法向量的网格简化方法
CN110275895B (zh) 一种缺失交通数据的填充设备、装置及方法
CN108876922B (zh) 一种基于内二面角补角正则化的网格修补方法
CN111275805A (zh) 一种基于3d模型纹理的模型网格优化方法和装置
CN115033972A (zh) 一种建筑主体结构批量单体化方法、系统及可读存储介质
CN110599597B (zh) 基于高斯曲率滤波的三维网格处理方法、装置及存储介质
CN114092666A (zh) 一种移动ar辅助建筑施工app的模型网格简化改进算法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant