《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 快速Delaunay三角剖分及其在地震层位建模中的应用

快速Delaunay三角剖分及其在地震层位建模中的应用

2009-08-05
作者:马建国,吴继伟,萧蕴诗

    摘  要: 在常规逐点插入算法的基础上,提出了一种改进的逐点插入构建Delaunay三角网的算法。引入散乱点集有序化、三角形单元分类的方法快速生成Delaunay三角网。
    关键词: Delaunay三角网  逐点插入  地震层位模型  OpenGL

 

    在三维地理信息系统中,地震层位模型的可视化研究有着广泛的应用[1]。如在油藏勘探领域,通过重构地表特征层位、判断其走向可预测储层的位置。地震层位模型是构建地表层位表面空间位置与其相关属性信息的数字化表示,它是对地表层位在地震波采样数据基础上的表面重构[2]
    由地震波采样得到并经过速度场解释之后的地震数据表现为三维空间的散乱数据点集。针对该类数据的特点,普遍采用基于三角网的建模方法构造层位模型。其中,Delaunay三角网具有良好的形态,在表达地质形态方面表现较为出色。
    如何快速、高效地构建Delaunay三角网一直是众多学者研究和关注的焦点。迄今为止出现了不少成熟的算法,基本算法为逐点插入法、分割-合并法及三角网生长法等[3]。其中三角网生长算法由于算法效率低,目前较少采用;分割-合并算法最为高效,但相对复杂,且深度递归,对内存要求高;逐点插入法实现简单、占用内存小,但其时间复杂度较高,效率低于分割-合并算法。
    在油藏勘探过程中,有时须补测部分数据,这会引起地震数据的动态变化。因此需要对已存在的Delaunay三角网进行局部更新,按需插入和删除某些点。这就要求有一种能够快速构建三角网的方法。
    考虑到工程应用的需要,本文在常规逐点插入算法的基础上,引入散乱点集有序化、三角形单元分类的方法快速构建Delaunay三角网,有效地解决了地震层位建模的工程问题。实测结果表明,改进后算法的时间复杂度大为降低,从而提高了算法的效率。
1  逐点插入算法流程
    假设给定散乱数据点集P={Vi|i=1,……,n},其中Vi的三维坐标为(xi,yi,zi),n为点的个数。经过Delaunay三角化之后,输出Delaunay三角网D={Tj|j=1,……,m},其中Tj表示第j个三角形,m为三角形的个数。逐点插入法的基本思想为:在某一已存在的三角网中插入一点,遍历所有三角形,查找外接圆包含该点的三角形集合,然后用LOP(Local Optimization Procedure)法则优化[4],确保所建三角网符合Delaunay法则。以下用伪码描述逐点插入算法的流程。
SUBROUTINE:Delaunay Triangulate
输入:散乱数据点集P={Vi|i=1,……,n}
输出:Delaunay三角网D={Tj|j=1,……,m}
    初始化三角形数组
    确定包围三角形,把包围三角形的顶点添加到顶点数组的末尾
    把包围三角形添加到三角形数组
    FOR i=1 to n DO
        对于顶点数组中的顶点Vi,初始化边缓冲区
        FOR j=1 to m DO
           对于三角形数组中的三角形Tj,计算其外接圆圆心和半径
           IF Vi位于外接圆内 THEN
              把Tj的三条边添加到边缓冲区,从三角形数组中删除Tj
           ENDIF
        ENDFOR
        删除边缓冲区中所有重复指定的边,只保留闭合多边形的边
        把由Vi和闭合多边形的边形成的所有新三角形添加到三角形数组
    ENDFOR
    从三角形数组中删除所有包含包围三角形顶点的三角形
    从三角形数组中删除包围三角形
END
2  算法改进
2.1 自定义数据结构

    合理的数据结构可以提高算法的执行效率。本文设计了点、边和三角形三种数据类型来存储空间数据点集,表达三类元素之间的拓扑关系。
    (1)点数据类型用来存储三角网中所有的数据点坐标。
    typedef struct
    {
        float x,y,z;  //空间散乱点坐标
    } POINT3D;
    (2)边数据类型存储组成边的二个顶点的索引号,记录三角网中的边与点之间的拓扑关系。
    typedef struct
    {
        long p1,p2;  //两个顶点的索引号
    } EDGE;
    (3)三角形数据类型存储组成三角形的三个顶点的索引号,记录三角网中三角形与点、边之间的拓扑关系。
    typedef struct
    {
        long p1,p2,p3; //三个顶点的索引号
    } TRIANGLE;
    可见,空间数据点集坐标存储在顶点数组中,边缓冲区和三角形数组存储对应点的索引号,这样既节省存储空间,又便于数据的直接访问。而且由于数组元素的随机访问速度最快,可提高搜索效率。
2.2 散乱点集有序化
    常规逐点插入算法依次从存储散乱数据点集的数组中提取一点,然后遍历当前三角形数组中所有的三角形,判断其外接圆是否包含当前待插入点。这一步是点插入过程中最费时的一步,其计算效率取决于三角网的数据结构和搜索方法。本文在对散乱数据点集进行Delaunay三角化之前,首先对其预处理,使散乱点集有序化。具体处理过程如下:(1)遍历原始散乱数据点集,计算其X轴坐标范围(Xmin,Xmax)和Y轴坐标范围(Ymin,Ymax),通过比较得出坐标分量变化较大的坐标轴;(2)以此坐标轴的坐标分量为比较依据,按照从小到大的顺序对散乱数据点集进行排序,得到有序的空间数据点集;(3)将排序之后的点集投影在XOY平面上,删除X、Y坐标分量相等的重复点,去除奇异性,保证惟一性。
2.3 三角形单元分类
    每次在已生成的三角网中插入一点之后,一些不符合Delaunay准则的三角形被删除,同时又生成一批新的三角形。常规逐点插入算法对这些三角形不加以区分,每次插入操作都必须遍历所有三角形,计算其外接圆圆心和半径,判断插入点是否位于其外接圆内。而实际上,大部分三角形是不需要进行查找、判断的,这些冗余操作大大降低了算法执行效率,也是导致常规逐点插入算法时间复杂度高的主要原因。本文针对这一瓶颈,对逐点插入过程中生成的三角形单元分类为已完成三角化和未完成三角化二类并加以标识,从而只需要对那些标识为未完成的三角形进行操作,算法效率大为提高。
    详细的优化步骤:(1)每产生一个新三角形,初始化为未完成三角化并赋以标识;(2)在已形成的三角网中插入一点时,循环判断当前三角形数组中的所有三角形的分类标识。若标识为已完成则跳过该三角形继续判断下一个三角形;否则进一步计算其外接圆圆心与半径,运用LOP法则进行优化,同时根据三角形单元分类规则更新该三角形的分类标识。
    三角形单元分类规则是建立在散乱点集有序化基础上的。假设散乱点集有序化过程中以X轴的坐标分量为比较依据,则定义分类规则如下:
    定义 已知插入点Vi(xi,yi,zi)(i=1,2,3,……,n,n为点的个数)和待分类三角形Tj(p1j,p2j,p3j)(j=1,2,3,……,m,m为三角形的个数),其中Tj的外接圆圆心为Cj(cxj,cyj,czj)、半径为rj。若xi-cxj≥rj,则三角形Tj标识为已完成三角化,否则标识为未完成三角化。
    分类规则的直观解释如图1所示。若Tj外接圆圆心Cj到经过插入点Vi且垂直于X轴的直线MN的距离大于其半径rj的长度,则可保证所有X坐标分量不小于插入点Vi的点都位于Tj外接圆外。又因为散乱点集有序化之后按照X坐标分量以升序排列,故对于点Vi之后的插入点Vk(k> i)而言,永远都不会位于三角形Tj的外接圆内,从而Tj可标识为已完成三角化。

 


3  算法比较与分析
    算法用ANSI C++语言进行了编程实现,微机环境为Pentium(R)4,CPU主频2.4GHz,内存512MB,实验数据为程序随机生成的单精度型点集,实验结果如表1所示。

 


    由实验结果可以看出,改进后的算法比原算法在速度上有数倍增长,特别是当点数增加时速度增长的幅度也增大,而占用的内存空间只有少量增长。这充分体现了算法的稳定性。在实际运行时对时间和空间的合理综合运用提高了算法的效率和性能。
4  工程应用
    地震层位模型的可视化已成为油藏勘探领域研究的热点。将Delaunay三角网建模方法与OpenGL图形可视化技术相结合,即可快速构建地震层位模型,实现地表特征层表面三维显示,直观地表达特征层的空间分布与形态。
    OpenGL是当今工业界最先进最开放的图形API,它提供了强大的绘制二维和三维图形的能力。如提供了大量的图形变换函数,可以方便地将三维图形显示在屏幕窗口进行放大、缩小、旋转等操作;OpenGL还提供了线面消隐、着色关照、纹理映射和反走样等技术的一系列函数,可以方便地对地层表面进行处理,增强图形的真实感。
    本文基于上述方法,以地震波采样解释之后的地震数据为数据源,重构了胜利油田某地区的层位模型如图2、图3所示。模型显示结果验证了本文的算法是行之有效的。

 


5  结  论
    本文在仔细研究常规逐点插入算法的基础上,对其进行了优化,使得改进之后的算法不但继承了原算法流程清晰、实现简单、占用内存较小、可局部动态更新三角网的优点,而且提高了执行效率。该算法运用于实际工程中构建地震层位模型,取得了良好的效果。
    当前,包括地震层位建模在内的三维地理信息系统正处于从研究走向实用的过渡阶段。在实际应用中,有时还存在着约束三角剖分,也就是部分散乱点之间常常存在着某种约束关系,如地表模型中的断裂线等。在对此种数据集进行三角网生成时,生成的三角网应保持其原有的约束关系,即约束数据集下的三角剖分。因此,如何在约束条件下快速准确地生成Delaunay三角网,是下一步研究工作的重点。
参考文献
1   包世泰,夏斌,崔学军等.地质信息模型研究及其应用.大地构造与成矿学,2004;28(4)
2   胡金星,潘懋,马照亭等.高效构建Delaunay三角网数字地形模型算法研究.北京大学学报(自学科学版),2003;39(5)
3   武晓波,王世新,肖春生.Delaunay三角网的生成算法研究.测绘学报,1999;28(1)
4   Lee D T,Schachter B J.Two Algorithms for Constructing a Delaunay Triangulation.Int J.of Computer and Information Sciences,1980;9(3)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。