CN1967596A - 三维扫描系统中三维散乱点集的三角剖分构造方法 - Google Patents
三维扫描系统中三维散乱点集的三角剖分构造方法 Download PDFInfo
- Publication number
- CN1967596A CN1967596A CN 200610041319 CN200610041319A CN1967596A CN 1967596 A CN1967596 A CN 1967596A CN 200610041319 CN200610041319 CN 200610041319 CN 200610041319 A CN200610041319 A CN 200610041319A CN 1967596 A CN1967596 A CN 1967596A
- Authority
- CN
- China
- Prior art keywords
- point
- triangle
- initial
- chained list
- tblist
- 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.)
- Pending
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明提出了一种用于图像三维重构的三维散乱点集的曲面三角剖分构造方法,针对快速测量系统获取海量数据点云,对经过过滤处理和拼接后的点云进行三角剖分,三角剖分步骤:首先对三维散乱点进行预处理采用将散乱点集P中所有点排序,形成一个初始三角剖分,再此基础上逐点加入新点,形成新剖分,至散乱点集处理完毕,生成基本三角形网格。上述对基本网格运用曲率最小优化准则优化采用如下方法:先在初始内边链表m_ElistInner中找出产生凸四边形的网格内边,对该内边的优化处理采用最小权优化准则和最小内角最大化优化准则相结合;再用曲率最小优化准则优化初始边链表m_EdgeList中三角形边。
Description
技术领域
本发明涉及一种用于图像三维重构的三维扫描系统中三维散乱点集的三角剖分。
背景技术
逆向工程(Reverse Engineering,RE)技术是20世纪80年代后期出现在先进制造领域里的新技术,其一般包括四个基本环节:三维形体检测与转换(物理数据的获得)、数据预处理(点云处理、识别、多视拼接),CAD模型的建立(曲面重构)、CAM制件成型,其基本流程图如图2所示。在三维形体检测与转换的过程中,通过三维数字化扫描仪对实物模型表面进行三维快速扫描测量,在满足离散采样速度和数据质量的前提下,获取产品的三维离散数据,对数据进行三角剖分是逆向工程中曲面重建中的非常关键的承上启下的一环,直接影响重构成功与否和CAD模型的质量,对其后续环节起着非常关键的制约作用。
CAD/CAGD等工程应用中要处理的曲面大多为单值曲面,本发明主要针对这种曲面提出曲率最小三角剖分算法。曲面三角剖分算法中重要的是数据结构和优化准则,剖分的具体实现依赖于一定的数据结构,合理的数据结构可以减少时空复杂度。本发明从曲面曲率估计入手,提出曲率最小优化准则,整个算法耗时主要是优化过程的时间,因此本发明主要改进优化过程的时间复杂度。
发明内容
本发明提供一种能够降低了优化过程的时间复杂度并能提高了网格的生成速度的三维散乱点集的曲面三角剖分构造方法。
本发明主要是涉及到逆向工程(图1)中,用三维扫描系统(图2)对产品建立点云模型过程中由离散点重构曲面的一种方法。(对三维扫描系统中散乱点集的三角剖分,它主要涉及计算机图形学、空间视觉、数学、计算机辅助设计以及计算几何等多个领域,由于散乱点集的不规则性和复杂性,三角剖分一直是逆向工程中的难点问题。本发明涉及对“基于一种曲率最小优化准则的散乱点三角剖分。张永春,达飞鹏,宋文忠。东南大学学报(自然科学版),2004,34(6):851-856”的改进,并在VC++6.0开发平台上,以OpenGL作为图形绘制接口实现的空间散乱点的三角剖分,试验结果验证了本发明的优越性。本发明的出发点是完全不考虑三角形的优化性,只考虑连接而成的三角网的所有三角形的合理性,然后对形成的基本网格进行优化。降低了Choi的算法时间复杂度,极大的提高了网格的生成速度和三角剖分的质量。
首先简要的说明一下本发明算法涉及的一些基本定义:
定义1 对于空间3点Vi(xi,yi,zi)(i=1,2,3)记它们在X-Y平面形成的三角形的带符号面积为det(V1,V2,V3)即:
定义2 点集中的每一点称为顶点;若从Z轴正向向原点看去,三个邻接的按逆时针顺序连接的顶点V1,V2,V3满足det(V1,V2,V3)≠0,则形成三角形ΔV1V2V3;一个三角形的任两点形成的线段为一条边,每一条边均为由起点和终点决定的有向边;每一个三角形由右手规则决定其单位法矢。如图3所示。
定义3 对于有向边AB和空间一点P,如果满足关系det(A,B,P)<0,则认为P点对于有向边AB时可见的,此时P在有向边AB的右侧;反之,则点P在有向边AB的左侧;若det(A,B,P)=0,则点P在有向边AB所在的直线上。
定义4 将有向边与前进方向左侧的点构成的三角形称为左三角形;将有向边与前进方向右侧的点构成的三角形称为右三角形;左右三角形都存在的边称为内边;只有左三角形或右三角形存在的边称为边界边。
定义5 一列空间点构成的多边形,每一多边形的边都以逆时针顺序相连,若邻接的3点P、Q、R满足det(Q,R,P)≥0,则称点Q为一个凸的顶点;如果上述多边形上所有顶点都是凸的,则称该多边形为一个凸多边形;这个凸多边形边界边组成的封闭环称为这个点集的临时边界环,凸多边形的边界边称为临时边界边,并且规定组成临时边界环的所有有向边必须是首尾相连的,本发明讨论的临时边界环有都是逆时针的。
定义6 设V1、V2、V3、及V4是按逆时针方向排列的4个顶点,如果det(V1,V3,V2)*det(V1,V3,V4)<0与det(V2,V4,V1)*det(V2,V4,V3)<0同时成立,则称此四边形为凸四边形。如果任意三点在一个平面上且剩下的一点在前面三点所成的平面上,则称该四点共面。
定义7对于凸四边形,同时使用最小内角最大优化准则和最小权优化准则。如果一个凸四边的四点共圆,则对其采用最小权优化准则优化,否则采用最小内角最大化优化准则。
本发明采用如下技术方案:
一种用于图像三维重构的三维散乱点集的曲面三角剖分构造方法,
第一步:点云预处理:
对三维散乱点进行预处理采用将散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)的投影点,以各投影点的X坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上X坐标值,以各投影点的Y坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上Y坐标值,在根据散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的远近,对散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m)以升序方式进行重新排序,存储在链表m_TaxisDotList中,
第二步:生成基本三角形网格:
a)从m_TaxisDotList中取出第1、第2个点,作为头和尾,存入链表m_TBList,再从m_TaxisDotList中按序逐一取点,直至所取点位于第1、第2个点的连线之外。
b)比较第一个与作为原始头、原始尾的第1、第2个点共线的点至原始头、原始尾的距离,将至原始头较原始尾距离小的第一个共线点作为链表m_TBList的新头,排列在原始头之前,或者将至原始尾较原始头距离小的第一个共线点作为链表m_TBList的新尾,排列在原始尾之后,依此步骤,对后续共线点进行排列。
c)根据位于第1、第2个点的连线之外的点与第1、第2个点的连线的左、右关系,当该点在第1、第2个点的连线右侧时,将链表m_TBList进行逆向排列,并以该点作为新头排列在链表m_TBList最前位置;当该点在第1、第2个点的连线左侧时,以该点作为新头排列在链表m_TBList最前位置,由此得到初始链表m_TBList。
d)根据初始链表m_TBList,得到初始三角网格,将三角形信息放入初始三角形数组m_TriArray,将三角形边的信息放入初始边链表m_EdgeList,并将作为网格内边的三角形边的信息放入初始内边链表m_ElistInner,再将初始边链表m_EdgeList中三角形边的编号存至链表m_TBList的相应位置。
第三步:在基本三角形网格基础上,扩充三角形网格,直至散乱点处理完毕。
第四步:优化基本网格:
先在初始内边链表m_ElistInner中找出产生凸四边形的网格内边,对该内边进行如下优化处理:对于凸四边形,同时使用最小内角最大优化准则和最小权优化准则。如果一个凸四边的四点共圆,则对其采用最小权优化准则优化,否则采用最小内角最大化优化准则;再用曲率最小优化准则优化初始边链表m_EdgeList中三角形边。
为更真实地反映三维物体的表面信息,本发明还采用了以下技术措施:
从由初始边链表m_EdgeList内的边组成的三角形中,选择出其中至少有一条边为三角形网格的边界边且其任一内角大于120°的三角形,删除作为三角形网格边界边的边,并将初始边链表m_EdgeList中的作为三角形网格边界边的相关边信息予以删除。
由于空间曲率最小优化准则是针对凸四边形,因此散乱点集的数量很大时,无疑增大了优化过程的时间复杂度。本发明的设计方案是:先优化狭长三角形的边,根据定义7进行优化(从图形的边界向中心优化),最后用曲率最小进行优化(按内边的生成顺序进行优化)。优化是在三维空间中完成的。改进的算法只需要较少的优化次数就可完成对基本三角网格的优化,加快了三角形网格的构建速度,提高了剖分质量。总体算法流程见图4。
本发明主要涉及到三方面的内容:
1)数据结构
本算法充分利用VC++6.0这种开发工具中MFC的丰富资源,能够方便地实现数据的连接。MFC提供的CObList类和CObArray类,可以直接调用其成员函数来管理和处理数据,简化了程序的复杂性,实现了数据管理的高效性,加快了三角形和边的搜寻速度,可以缩短编程时间,减少错误,提高网格生成效率。
为便于对剖分的点集和形成的三角形的管理,本发明设计了5个类:点类(CDot),点云类(CCloud),临时边界表类(CNodeTBL,其成员变量为有向边的起点及该边的索引值),边类(CNodeEL,其成员变量有该边的起点、始点、左右三角形及索引值),三角形类(CNodeTL,其成员变量为其按逆时针方向存储的三个顶点);7条指针链表:排序前点云链表m_DotList,排序后点云链表m_TaxisDotList,m_DotList和m_TaxisDotList中的元素均为指向CDot类的指针;临时边界环的边的链表m_TBList(其元素为指向CNodeTBL的指针);暂存边链表m_EdgeListTmp(每次插入不同顶点形成的边之前,将该链表清空),基本网格中凹多边形的边界边及其内边的链表m_EListInner,边链表m_EdgeList,边界边链表m_EdgeBorder,m_EdgeListTmp、m_EListInner、m_EdgeList和m_EdgeBorder中的元素均为指向CNodeEL的指针;1个指针数组:三角形数组(m_TriArray,其元素为指向CNodeTL的指针)。
2)改进了最小曲率优化准则的算法时间复杂度
先形成点集的基本网格,即优化前的三角剖分,对形成的基本三角形网格先根据定义7优化m_EListInner中的边,然后用最小曲率优化准则:对于基本网格中四个顶点不共面的凸四边形(A,B,C,D),分别进行凸四边形(A,B,C,D)所存在的两种三角形剖分T1、T2,根据公式
(位于一曲面∑上的凸四边形Q=(V1,V2,V3,V4),对角线为V2V4,(V2,V3,V4)和(V1,V2,V4)的重心C1、C2及法矢n1、n2),进行曲率κ1、κ2的估算,当
时,则以该三角形剖分Ti作为该四边形的最优剖分;对于基本网格中四个顶点共面的凸四边形(A,B,C,D),按Lawson边交换准则来确定该四边形的最优剖分。(04年发表的文献)优化m_EdgeList中的边(优化过程是在三维空间中进行的),最后修正(删除锐角三角形)三角网边界,从而得到了三维散乱点集的最终三角剖分。
3)改进了边界三角形的修正方法
在优化后的网格的边界处可能还存在狭长三角形,这些三角形并不能真实地反映三维物体的形状,因此必须对优化后的三角网的边界进行修正,即删除不必要的狭长三角形,以保证三角剖分所形成的每个三角形都尽量合理均匀,形成更理想的三角剖分。本发明采用了直接删除边界上狭长(钝角)三角形方法,减少了计算机时间,从而降低了三角网格形成的时间复杂度。
与现有技术相比,本发明具有如下优点:
本发明主要用于三维扫描系统中的单值开曲面的曲面重建。利用本发明的算法,能极大的提高三角网格的质量和构网速度。该方法具体有以下优点:
(1)数据结构是曲面三角剖分中的重要方而之一,本发明改进和修改了部分数据结构,降低了算法空间复杂度。
(2)算法具有较好的时空复杂度:与Choi算法相比,本算法改剖分的数据结构LTL为TL,将其由六维变成了三维,大大降低了空间复杂度。同时修改了TBL,得以方便地在剖分中即时更新TL和EL,简化了剖分过程的搜索。采用这种数据结构降低了算法的时间复杂度
(3)“基于一种曲率最小优化准则的散乱点三角剖分。张永春,达飞鹏,宋文忠。东南大学学报(自然科学版),2004,34(6):851-856”虽提供了更好的数据结构和优化准则,但为了减少算法的时间复杂度,还可以对其再做一些简化。因为该文献的优化过程是影响程序运行的重要因素,在优化时是按内边的顺序优化网格的,对曲率变化剧烈的曲面优化多次才能完成。当边的数量很大时,优化过程非常耗时,因此本发明改进其优化准则,降低了优化过程的时间复杂度,提高了网格的生成速度;在优化时同时使用最小内角最大化方法和最小权方法,比单独使用最大内角最小优化准则更合理,提高了三角剖分的网格质量。同时对改进算法的时间复杂度做了简单分析。最后通过举例验证了本算法。
(4)剖分结果较好:由于采用了曲率最小优化准则,其出发点是曲面的内在特性即曲率,因而得到的3D曲面上散乱点集的三角剖分保形性好,可以满足重构的要求。剖分中凸四边形的曲率最小保证原曲面光顺处有很好的光顺度。
(5)适用面广:本算法点集预处理简单可靠,对任意的单值曲面部可实施。虽然预处理是投影到二维平面上进行的,但优化是直接在3D空间进行的,故本算法依然是一种直接剖分算法。
(6)本算法充分利用VC++6.0这种开发工具中MFC的丰富资源,能够方便地实现数据的连接。充分利用了MFC中CObList类和CObArray类,可以直接调用其成员函数来管理和处理数据,简化了程序的复杂性,加快了计算速度,实现了数据管理的高效性,可以极大的缩短编程时间,减少错误,提高网格生成效率。
附图说明
图1是逆向工程流程图。
图2是光栅式三维扫描系统组成图。
图3是顶点、边、三角形及其法矢、点与边的关系图。
图4本发明算法总的流程图。
图5加入Ps后临时边界环。
图6对三维散乱点集三角剖分投影到平面形成的基本三角形网格(曲率变化均匀,采样与球面部分的53个点)。
图7改进前算法对图6改进优化准则前的优化结果。
图8本发明对图6的优化结果。
图9对三维散乱点集三角剖分投影到平面形成的基本三角形网格(曲率变化比较均匀,采样与球面部分的165个点)。
图10改进算法前对图9的优化结果。
图11本发明对图9的优化结果。
图12对三维散乱点集三角剖分投影到平面形成的基本三角形网格(曲率变化叫剧烈,采样与球面部分的549个点)。
图13改进算法前对图11的优化结果。
图14本发明对曲率变化剧烈点集的基本三角网格优化结果。
具体实施方式
一种三维扫描系统中三维散乱点集的曲面三角剖分构造方法,用三维扫描系统获取海量数据点云,然后对这些点云数据进行过滤处理和无缝拼接,并对拼接后的点云进行三角剖分,上述对拼接后的点云进行三角剖分的步骤如下:
a)点云预处理
对三维散乱点进行预处理采用将散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)的投影点,以各投影点的X坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上X坐标值,以各投影点的Y坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上Y坐标值,在根据散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的远近,对散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m)从近到远排序(排序),存储在链表m_TaxisDotList中,以后的处理都是对排序后的链表m_TaxisDotList进行的。
b)生成基本三角形网格
setp1初始临时(三角网格)边界环
从m_TaxisDotList中取出前2个点(第1、第2个点),存入m_TBList。当m_TBList中增加一点(从m_TaxisDotList中按序逐一取点),判断该点与前两点所成边的关系。若三点共线,则:距m_TBList的首点较近,插入头部,否则插入尾部;若该点在前两点所成边的右侧,则将m_TBList逆向排列,再将该点插入m_TBList头部;若该点在前两点所成边的左侧,则直接将该点插入m_TBList头部。若三点共线,再取m_TaxisDotList的下一点加入m_TBList中,否则就形成了初始m_TBList。
由初始m_TBList可以确定初始m_TriArray和m_EdgeList。将各三角形的顶点存入指向CNodeTL的指针中,然后将该指针依次存入m_TriArray;同时将所有有向边存入指向CNodeEL的指针中,将该指针依序存入m_EdgeList。如果m_TBList中的元素个数大于3,则依序将有向边存入m_EdgeListTmp,然后同时取出m_EdgeListTmp的首、尾两个元素,依次存入m_EListInner尾部,再将m_EdgeListTmp的首、尾元素分别向前向后迭代各取出其下一个元素,将这两个元素插入m_EListInner上次新增的两个元素前,重复上述过程,直到遍历m_EdgeListTmp,即完成了m_EListInner的更新。最后再结合m_TBList中点的顺序将边界边的索引值填入相应节点。
通过上述步骤形成了初始临时边界环m_TBList。
Setp2扩展临时边界环
从初始临时边界环开始,不断插入预处理后的点到已形成的三角剖分中,不断形成新的三角剖分,直至点集处理完毕,这个过程称为三角剖分,经过三角剖分处理得到的点集的剖分即是优化前的剖分。次步骤的关键是三角网边的增长(即点是如何插入)。
当把新点PS加入到已形成的三角剖分时,首先从m_TBList中找到PS的最左可视点PL和最右可视点PR,然后更新所有的数据结构。一般地,由s-1个点所形成的三角剖分中有k个三角形,有1条边,假设已形成的临时边界环有12个顶点(m_TBList的表头为外环起点P1,表尾为终点P12,如图5)。加入第s个点PS(xs,ys,zs)的方法是:
首先寻找PL和PR。取出m_TBList中的相邻3个点Pm-1、Pm、Pm+1,若Pj(j=m,m-1,m+1)是m_TBList的最后一个元素,则Pj+1从m_TBList的表头开始向表尾取值。如果det(Pm-1,Pm,Pi)>0且det(Pm,Pm+1,Pi)<0,则Pm是PS的PL,如果det(Pm-1,Pm,Pi)<0且det(Pm,Pm+1、Pi)>0,则Pm是PS的PR。找到PL和PR后即停止搜索。图5中PS为PL,P11为PR。
然后更新所有的数据结构。附图5中PL和PR之间有2个点,由于新点的插入,将生成3个三角形,4条边,产生2条新的临时边界边(介于PL与PR之间的临时边界边从m_TBList中删除,从而被删除的临时边界边成为内边),更新m_TriArray、m_EdgeList、m_ELisInner以及m_TBList。下面是加入第s个点Ps(xs,ys,zs),图5中增加的三角形和边:
m_TriArray m_EdgeList
索引号 三角形 索引号 边
s+1 [P8,Ps,P9] l+1 [P8,Ps,s+1,0]
l+2 [Ps,P9,s+1,s+2]
s+2 [P9,Ps,P10] l+3 [Ps,P10,s+2,s+3]
s+3 [P10,Ps,P11] l+4 [Ps,P11,s+3,s+4]
首先将新增的三角形和新增边依序分别存入m_TriArray和m_EdgeList,若PL的下一个点不是PR,则按Step1中更新m_EListInner的方法更新该链表。然后删除m_TBList中介于PL与PR之间的点,将Ps插入到PL之后,同时将m_TBList中的分别以PL与Ps为起点的相应边的索引值分别更新为l+1和l+4,则完成了对m_TBList的更新。
重复上述插入新点的过程,直到全部点集处理完毕,就形成了基本三角形网格,即优化前的三角网格。见图6。
c)用改进的最小曲率优化准则优化基本网格
(1)上述已生成的基本网格中,还存在狭长三角形,狭长三角形在三角参数曲面片插值时会引起较大的误差,这将影响到插值曲面的品质,因此对局部狭长三角形的改善是非常重要的[7]。从三角形优化的总体概念出发,要求形成的三角形尽量均匀,避免狭长三角形出现,以减小误差。对于三角剖分中,如某三角单元的一条边是边界边,则认为该边是局部优化的;如共享该边的两个三角形不是凸的,则认为该边是局部优化的;对于凸多边形,除了保证其在二维剖分中最优之外,还要讨论它的三维优化标准;因此需要对形成的网格中的凸多边形的边进行空间优化。由于实际中很难直接实现三维三角网格的全局优化,因此本发明采用改进的曲率最小优化标准实施局部优化。当边的数量很大时,优化过程非常费时,因此本发明先优化m_EListInner中的边,然后优化m_EdgeList中的边,改进优化准则前后的优化结果如图7和图8。
(2)对m_EListInner中的边的优化顺序是采取与每次插入新点相反的顺序进行的,即从基本网格的边界向中心开始,完成三角网格中的狭长三角形的优化;然后对m_EgdeList中的边优化。具体的优化算法实现如下:
1)优化m_EListInner
I)取出m_EListInner尾部的元素,向其头部优化。若为边界边,然后将其向前迭代一个元素,直到其不为边界边,则转II)。
II)根据待优化边左右三角形的索引值,找到左右三角形的不在待优化边上的另一顶点。如果为凸四边形,则根据定义7来优化,若要交换对角线,则相应地更新对角线、对角线的左右三角形以及相关的4条边,更新完后转I),否则直接转I);若不是凸四边形,转I)。
2)优化m_EgdeList
按“基于一种曲率最小优化准则的散乱点三角剖分。张永春,达飞鹏,宋文忠。东南大学学报(自然科学版),2004,34(6):851-856”中的曲率最小优化准则:对于基本网格中四个顶点不共面的凸四边形(A,B,C,D),分别进行凸四边形(A,B,C,D)所存在的两种三角形剖分T1、T2,根据公式
(位于一曲面∑上的凸四边形Q=(V1,V2,V3,V4),对角线为V2V4,(V2,V3,V4)和(V1,V2,V4)的重心C1、C2及法矢n1、n2),进行曲率κ1、κ2的估算,当
时,则以该三角形剖分Ti作为该四边形的最优剖分;对于基本网格中四个顶点共面的凸四边形(A,B,C,D),按Lawson边交换准则来确定该四边形的最优剖分。优化m_EgdeList中的边,在使用最小内角最大化优化准则的地方改为根据定义7来优化,遍历m_EgdeList中的边,即完成该三角网格的优化过程。
d)三角网的边界修正
以上讨论的三角剖分的全过程是围绕着凸的临时边界环完成的,在优化过程中,边界边不参与,因此在优化后三角网格的边界之外,也不可避免的形成了一些不合法的三角形,这些三角形并不能真实地反映三维物体的形状,因此必须对优化后的三角网的边界进行修正,即删除不合法的三角形,以保证三角剖分所形成的每个三角形都尽量合理均匀,形成更理想的三角剖分。为了减少计算量,本发明采用了直接删除边界上狭长三角形的方法。具体实现如下:首先将m_EgdeList中的边界边存入m_EdgeBorder;然后取出m_EdgeBorder的第一个元素,如其索引值不为0的三角形的最小内角小于一定角度(即形成的是狭长三角形),就删除该边,同时其三角形的索引值置为0,并更新该三角形的另外两条边,如果更新后的两条边其左右三角形的索引值均为0,则删除该边,否则存入m_EdgeBorder尾部。遍历m_EdgeBorder中的所有元素后,就消除了边界处的狭长三角形,从而得到了三维散乱点集的最终三角剖分。
e)改进的时间复杂度分析
我们以图5为例,先作一个具体的分析。此图中m_TBList中有12个元素,我们以最先插入的Ps点为例说明改进曲率最小前的优化情况。优化时是按内边的顺序优化的,所以在第一次优化时,先优化S+1,而S+2,S+3在本次中不能优化,最后优化S+4,这样对加入的Ps点形成的新边要进行两次优化才能完成;当此种情况的多边形很多时,无疑会增大优化过程中的时间复杂度。因此本发明改进优化准则,使其对m_EgdeList中的边进行一次优化就能完成优化过程,改进算法后,对插入Ps点形成的新边,则从最外两条边逐步向最内的边优化,即优化S+1,再优化S+4,边S+2,S+3的优化就能在本次优化中完成。
由于在改进最小曲率优化准则的前后,每次边的交换复杂度和需要交换边的次数是基本上是相同的,所以我们只需要考虑减少对边的循环次数即可。设m_EdgeList中的边有n条,要完成基本网格中边的全部优化,改进前至少要遍历m_EdgeList两次以上;而改进后只需要遍历m_EListInner和m_EdgeList各一次,m_ElistInner的元素比m_EdgeList少很多,最坏的情况就是不改进优化的时间复杂度。但是当点集的数量很大,曲率变化剧烈时,改进的曲率优化方法能明显的提高三角形网格的构建速度和剖分质量。
用改进前的曲率最小优化准则,对于图9曲率变化不是很剧烈,经过几次优化就完成优化过程,在曲率变化不均匀的地方,图10中优化明显不如图11。而对于图12存在曲率变化剧烈的地方,图13经过则经过多次优化,还没有完成优化过程,尤其时曲率变化剧烈的地方,还要优化多次才能完成对点集的优化,优化过程很耗时;而改进后的算法最多经过较少次数的优化即可完成优化过程,优化结果如图14,在左半部分曲率变化剧烈的地方可以在重新采样,以保证得到更理想的三角剖分。试验结果表明了对于点集比较多且曲率变化剧烈的,本发明的优越性更为明显,其优化结果分别是图12和图14。
试验表明,采用本发明改进的优化准则提高了网格的构建速度,同时保证了生成的三角形网格的合理性,降低了曲率最小优化准则算法的时间复杂度,尤其是对曲率变化剧烈的点了点集时,效果更为明显。
Claims (2)
1、一种用于图像三维重构的三维散乱点集的曲面三角剖分构造方法,
第一步:点云预处理:
对三维散乱点进行预处理采用将散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)投影到X-Y平面上,得到散乱点集P中所有点Pi(xi,yi,zi)(i=1,2,...,m)的投影点,以各投影点的X坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上X坐标值,以各投影点的Y坐标值的平均值作为X-Y平面上的中心Pc在X-Y平面上Y坐标值,在根据散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m)至中心Pc的远近,对散乱点集P中所有各点Pi(xi,yi,zi)(i=1,2,...,m),按从近到远排序,存储在链表m_TaxisDotList中。
第二步:生成基本三角形网格:
a)从m_TaxisDotList中取出第1、第2个点,作为头和尾,存入链表m_TBList,再从m_TaxisDotList中按序逐一取点,直至所取点位于第1、第2个点的连线之外。
b)比较第一个与作为原始头、原始尾的第1、第2个点共线的点至原始头、原始尾的距离,将至原始头较原始尾距离小的第一个共线点作为链表m_TBList的新头,排列在原始头之前,或者将至原始尾较原始头距离小的第一个共线点作为链表m_TBList的新尾,排列在原始尾之后,依此步骤,对后续共线点进行排列。
c)根据位于第1、第2个点的连线之外的点与第1、第2个点的连线的左、右关系,当该点在第1、第2个点的连线右侧时,将链表m_TBList进行逆向排列,并以该点作为新头排列在链表m_TBList最前位置;当该点在第1、第2个点的连线左侧时,以该点作为新头排列在链表m_TBList最前位置,由此得到初始链表m_TBList。
d)根据初始链表m_TBList,得到初始三角网格,将三角形信息放入初始三角形数组m_TriArray,将三角形边的信息放入初始边链表m_EdgeList,并将作为网格内边的三角形边的信息放入初始内边链表m_ElistInner,再将初始边链表m_EdgeList-中三角形边的编号存至链表m_TBList的相应位置。
第三步:在基本三角形网格基础上,扩充三角形网格,直至散乱点处理完毕。
其特征在于:
第四步:优化基本网格:
先在初始内边链表m_ElistInner中找出产生凸四边形的网格内边,对该内边进行如下优化处理:对于凸四边形,同时使用最小内角最大优化准则和最小权优化准则,如果一个凸四边的四点共圆,则对其采用最小权优化准则优化,否则采用最小内角最大化优化准则;再用曲率最小优化准则优化初始边链表m_EdgeList中三角形边。
2、根据权利要求1所述的三维散乱点集的曲面三角剖分构造方法,其特征在于从由初始边链表m_EdgeList内的边组成的三角形中,选择出其中至少有一条边为三角形网格的边界边且其任一内角大于120°的三角形,删除作为三角形网格边界边的边,并将初始边链表m_EdgeList中的作为三角形网格边界边的相关边信息予以删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610041319 CN1967596A (zh) | 2006-08-14 | 2006-08-14 | 三维扫描系统中三维散乱点集的三角剖分构造方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610041319 CN1967596A (zh) | 2006-08-14 | 2006-08-14 | 三维扫描系统中三维散乱点集的三角剖分构造方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1967596A true CN1967596A (zh) | 2007-05-23 |
Family
ID=38076349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610041319 Pending CN1967596A (zh) | 2006-08-14 | 2006-08-14 | 三维扫描系统中三维散乱点集的三角剖分构造方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1967596A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101799938A (zh) * | 2010-04-28 | 2010-08-11 | 福州大学 | 一种实物模拟电脑图像的制造方法 |
CN102044076A (zh) * | 2010-10-29 | 2011-05-04 | 中国科学院地理科学与资源研究所 | 正八面体距离测量方法 |
CN101872373B (zh) * | 2010-05-14 | 2012-02-08 | 南京航空航天大学 | 三维机翼结冰后翼稍网格重构方法 |
CN101404061B (zh) * | 2008-11-12 | 2012-04-25 | 山东理工大学 | 三维散乱点云拓扑近邻数据查询方法 |
CN101635051B (zh) * | 2008-07-25 | 2012-08-29 | 鸿富锦精密工业(深圳)有限公司 | 边界元素提取方法及其计算机系统 |
CN102930597A (zh) * | 2012-09-28 | 2013-02-13 | 中国科学院自动化研究所 | 一种外存三维模型的处理方法 |
CN103279989A (zh) * | 2013-05-30 | 2013-09-04 | 北京航天控制仪器研究所 | 一种三维激光成像系统平面点云数据三角化处理方法 |
CN103440683A (zh) * | 2013-04-28 | 2013-12-11 | 大连大学 | 一种基于三维散乱稠密点云的三角网格重构方法 |
CN103679807A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种带边界约束的散乱点云重构方法 |
CN101599183B (zh) * | 2008-06-06 | 2015-09-16 | 吴立新 | 一种实现地球空间三维网格剖分的方法 |
CN106408514A (zh) * | 2016-08-30 | 2017-02-15 | 中国航天空气动力技术研究院 | 用于从三维多块网格中自动检索拼接边界面对应关系的方法 |
CN107633555A (zh) * | 2017-09-15 | 2018-01-26 | 中国地质大学(武汉) | 基于空间扫描的曲面集相互切割方法及系统 |
CN108765572A (zh) * | 2018-05-31 | 2018-11-06 | 中南大学 | 三维扫描中平面点集的三角剖分方法及系统 |
CN108898659A (zh) * | 2018-05-31 | 2018-11-27 | 中南大学 | 一种用于三维重构的三角剖分方法及系统 |
CN110675502A (zh) * | 2019-11-26 | 2020-01-10 | 北京唯智佳辰科技发展有限责任公司 | 多层集成电路版图多边形对齐和简化处理方法及装置 |
CN110807801A (zh) * | 2019-11-04 | 2020-02-18 | 广东博智林机器人有限公司 | 一种光条中心亚像素的提取方法及装置 |
CN110968040A (zh) * | 2019-12-18 | 2020-04-07 | 湖南戈人自动化科技有限公司 | 一种机械数控用加工轨迹的程序生成方法 |
CN110992483A (zh) * | 2019-11-19 | 2020-04-10 | 中国石油大学(华东) | 基于逆向建模打印真实三维缝洞型油藏物理模型的方法 |
CN113255021A (zh) * | 2021-05-31 | 2021-08-13 | 中国科学院长春光学精密机械与物理研究所 | 3d打印支撑结构的生成方法 |
CN117197395A (zh) * | 2023-11-02 | 2023-12-08 | 广州中望龙腾软件股份有限公司 | 一种曲面三角剖分方法、装置、存储介质及计算机设备 |
-
2006
- 2006-08-14 CN CN 200610041319 patent/CN1967596A/zh active Pending
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599183B (zh) * | 2008-06-06 | 2015-09-16 | 吴立新 | 一种实现地球空间三维网格剖分的方法 |
CN101635051B (zh) * | 2008-07-25 | 2012-08-29 | 鸿富锦精密工业(深圳)有限公司 | 边界元素提取方法及其计算机系统 |
CN101404061B (zh) * | 2008-11-12 | 2012-04-25 | 山东理工大学 | 三维散乱点云拓扑近邻数据查询方法 |
CN101799938B (zh) * | 2010-04-28 | 2012-04-25 | 福州大学 | 一种实物模拟电脑图像的制造方法 |
CN101799938A (zh) * | 2010-04-28 | 2010-08-11 | 福州大学 | 一种实物模拟电脑图像的制造方法 |
CN101872373B (zh) * | 2010-05-14 | 2012-02-08 | 南京航空航天大学 | 三维机翼结冰后翼稍网格重构方法 |
CN102044076A (zh) * | 2010-10-29 | 2011-05-04 | 中国科学院地理科学与资源研究所 | 正八面体距离测量方法 |
CN102930597A (zh) * | 2012-09-28 | 2013-02-13 | 中国科学院自动化研究所 | 一种外存三维模型的处理方法 |
CN102930597B (zh) * | 2012-09-28 | 2015-04-22 | 中国科学院自动化研究所 | 一种外存三维模型的处理方法 |
CN103440683A (zh) * | 2013-04-28 | 2013-12-11 | 大连大学 | 一种基于三维散乱稠密点云的三角网格重构方法 |
CN103440683B (zh) * | 2013-04-28 | 2016-03-09 | 大连大学 | 一种基于三维散乱稠密点云的三角网格重构方法 |
CN103279989A (zh) * | 2013-05-30 | 2013-09-04 | 北京航天控制仪器研究所 | 一种三维激光成像系统平面点云数据三角化处理方法 |
CN103679807A (zh) * | 2013-12-24 | 2014-03-26 | 焦点科技股份有限公司 | 一种带边界约束的散乱点云重构方法 |
CN103679807B (zh) * | 2013-12-24 | 2016-08-24 | 焦点科技股份有限公司 | 一种带边界约束的散乱点云重构方法 |
CN106408514A (zh) * | 2016-08-30 | 2017-02-15 | 中国航天空气动力技术研究院 | 用于从三维多块网格中自动检索拼接边界面对应关系的方法 |
CN106408514B (zh) * | 2016-08-30 | 2019-07-02 | 中国航天空气动力技术研究院 | 用于从三维多块网格中自动检索拼接边界面对应关系的方法 |
CN107633555A (zh) * | 2017-09-15 | 2018-01-26 | 中国地质大学(武汉) | 基于空间扫描的曲面集相互切割方法及系统 |
CN107633555B (zh) * | 2017-09-15 | 2019-12-17 | 中国地质大学(武汉) | 基于空间扫描的曲面集相互切割方法及系统 |
CN108765572A (zh) * | 2018-05-31 | 2018-11-06 | 中南大学 | 三维扫描中平面点集的三角剖分方法及系统 |
CN108898659A (zh) * | 2018-05-31 | 2018-11-27 | 中南大学 | 一种用于三维重构的三角剖分方法及系统 |
CN108765572B (zh) * | 2018-05-31 | 2022-05-10 | 中南大学 | 三维扫描中平面点集的三角剖分方法及系统 |
CN108898659B (zh) * | 2018-05-31 | 2022-04-22 | 中南大学 | 一种用于三维重构的三角剖分方法及系统 |
CN110807801A (zh) * | 2019-11-04 | 2020-02-18 | 广东博智林机器人有限公司 | 一种光条中心亚像素的提取方法及装置 |
CN110992483A (zh) * | 2019-11-19 | 2020-04-10 | 中国石油大学(华东) | 基于逆向建模打印真实三维缝洞型油藏物理模型的方法 |
CN110992483B (zh) * | 2019-11-19 | 2024-04-09 | 中国石油大学(华东) | 基于逆向建模打印真实三维缝洞型油藏物理模型的方法 |
CN110675502A (zh) * | 2019-11-26 | 2020-01-10 | 北京唯智佳辰科技发展有限责任公司 | 多层集成电路版图多边形对齐和简化处理方法及装置 |
CN110968040A (zh) * | 2019-12-18 | 2020-04-07 | 湖南戈人自动化科技有限公司 | 一种机械数控用加工轨迹的程序生成方法 |
CN113255021A (zh) * | 2021-05-31 | 2021-08-13 | 中国科学院长春光学精密机械与物理研究所 | 3d打印支撑结构的生成方法 |
CN113255021B (zh) * | 2021-05-31 | 2023-03-31 | 中国科学院长春光学精密机械与物理研究所 | 3d打印支撑结构的生成方法 |
CN117197395A (zh) * | 2023-11-02 | 2023-12-08 | 广州中望龙腾软件股份有限公司 | 一种曲面三角剖分方法、装置、存储介质及计算机设备 |
CN117197395B (zh) * | 2023-11-02 | 2024-03-01 | 广州中望龙腾软件股份有限公司 | 一种曲面三角剖分方法、装置、存储介质及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1967596A (zh) | 三维扫描系统中三维散乱点集的三角剖分构造方法 | |
CN108595858B (zh) | 基于bim的轻量化深度处理工作方法 | |
Rong et al. | GPU-assisted computation of centroidal Voronoi tessellation | |
US6825839B2 (en) | Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications | |
CN102509357B (zh) | 基于笔触的铅笔素描模拟和绘制系统 | |
CN1734503A (zh) | 使用光谱分析的伸展驱动的网格参数化 | |
CN102306180A (zh) | 一种基于海量激光雷达栅格点云数据的建模方法 | |
CN1295659C (zh) | 利用半边数据结构实现三维网格模型的简化方法 | |
CN101051395A (zh) | 一种基于地球物理场数据的地质体三维可视化方法 | |
CN102903139B (zh) | 一种等值线加速渲染方法 | |
CN1885349A (zh) | 三维扫描的点云孔洞填补方法 | |
CN1866299A (zh) | 基于视觉特征度量的三维模型简化方法 | |
CN1858801A (zh) | 三维扫描的点云孔洞填补方法 | |
CN102831283B (zh) | 一种基于曲面特征的复杂产品模型构建方法 | |
CN105844067A (zh) | 一种船体曲板焊接变坡口自动加工数据的获取方法 | |
Su et al. | An automatic grid generation approach over free-form surface for architectural design | |
Manahl et al. | Ornamental discretisation of free-form surfaces: Developing digital tools to integrate design rationalisation with the form finding process | |
Alliez et al. | CGAL: the computational geometry algorithms library | |
CN1311390C (zh) | 三维形状数据向单元内部数据的变换方法 | |
Wang | Whole aero-engine meshing and CFD simulation | |
Becher et al. | Feature-based volumetric terrain generation and decoration | |
CN1643526A (zh) | 边界数据的内外判定方法及其程序 | |
CN115366568B (zh) | 一种自适应橄榄核随形雕刻方法与系统 | |
CN1956011A (zh) | 不规则三维地质几何体的自动建模方法 | |
CN107633555B (zh) | 基于空间扫描的曲面集相互切割方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |