专利名称:一种加快三维图形显示的方法
技术领域:
本发明涉及一种加快三维图形显示的方法,属于三维图形可视化领域。
背景技术:
点云(Point Cloud)是在同一空间参考坐标系下可以表达目标空间分布的XYZ坐标的集合,还可以包括如激光反射强度或RGB真彩色等其他信息(Barber D. Μ.,MillsJ.P. and Bryan P.G,2003)。随着三维激光扫描技术在中国的逐步深入的应用,特别是在古建筑领域,应用地面三维激光扫描仪获取古建筑的三维点云,用于古建筑的数据存档、分析以及显示,已经成为越来越普及的测量手段。目前测绘领域所常提到的点云数据主要通过两种方式获取第一种通过激光测量技术获取,包括主要地面激光雷达,机载Lidar和车载激光雷达获取的点云数据;第二种是通过摄影测量的方法从航空遥感影像中获得。图I为利用地面激光雷达扫描获取的太和门内部建筑物构件的点云数据显示效果,各个点云反映了 X、Y、Z坐标和反射强度。距离影像(Range Images)是数字图像的一种特殊形式。距离影像每一个象素值代表了场景中可见点到某已知参考框架的距离。因此距离影像可以生成场景的三维结构信息。距离影像也被称为深度图像(depth images)、深度图(depth maps), xyz图(xyz maps),表面轮廓(surface profiles)或者2· 5维图像(2. 5D images)。距离影像可以以图像x,y轴作为坐标轴,用点的深度值矩阵来表达距离影像,距离值矩阵中的元素值反应了点的空间组织信息。深度图像并不仅仅局限于以平面作为参考框架,还可以以空间点、线、面作为参考框架。深度图像按照参考基准的不同可以分为三类,即以点、线、面为参考框架的深度图像。点可以理解为三维空间中的一点;线基准可以包含指点基准和曲线基准等;面可以有很多种,其中规则的面包括平面,柱面、球面、圆锥面、圆台面,圆环面等。在以点作为参考框架时,由于深度图像记录点到基准面的距离,当球面、圆柱面、弯管面半径为O时,这些面分别表现为三维空间中的点、直线和曲线。也就是说,点云是深度图像的一种间接表达形式,它是将深度图像的深度值换算到三维坐标系得到的三维坐标点。从参考体系来看,点云是以大地坐标系或局部坐标系作为参考框架的,点的XYZ坐标是相对于坐标系原点计算得到,而从深度图像的分类可知,深度图像的参考基准则更加广泛,可以是空间中的点、线或面。激光扫描获取的点云数据是三维的散乱无序的点的集合,而深度图像则是有序的
2.5维数据集合,其降低了数据的维数,因此其相比点云来说数据量要小很多。在二维可视化中,对于空间几何对象最常用的方法是采用最小外包矩形(MinimumBounding Rectangle,简称MBR)进行管理,而在三维可视化中,采用三维空间网格来管理深度图像,空间网格由对象的最小外包盒(Minimum Bounding Box,简称MBB)构成,MBB的8个顶点为网格顶点,一个MBB为一个网格单位。MBB只存储其左后下角和右前上角两点的三维坐标,如图2所示。点云数据的可视化过程可以用图3的过程来表示具体过程描述如下首先进行点云特征分割的预处理工作,根据物体构件的特征将点云数据分为多个类别,所述构件特征可以是柱子、梁、瓦等构件;然后导入点云数据,根据点云形状判断点云所参考的基准面;然后对基准面拟合分别生成平面基准面、柱面基准面或球面基准面;接着指定内插格网大小,根据生成的基准面类型分别生成平面深度图像、柱面深度图像或球面深度图像;最后计算点云的最小包围盒(MBB),建立MBB和深度图像之间对应关系,并将MBB和深度图像对象模型一并存入数据库,可视化时,从数据库中调取相应的深度图像进行绘制。上述过程中重要的一个步骤是加快深度图像的显示和检索。为了实现对深度图像的快速显示和检索,关键是要建立深度图像与包含它的MBB的关系和MBB相互之间的关系。可以根据原始点云拟合所建立的不同基准面的几何参数,确定深度图像相对于MBB的旋转平移矩阵,建立有效的三维空间索引。最小外包盒实体表达深度图像所在的最小外包盒(MBB),包括左下后点、右上前点、平移旋转矩阵,深度图像对象指针等属性。其中左下后点和右上前点确定最小外包盒的 空间位置,平移旋转矩阵记录深度图像的参考基准面的原点相对于最小外包盒的几何变换关系,深度图像指针指向深度图像数据库对象。深度图像实体包括的属性有基准面类型,坐标单位、行数、列数、X方向格网间距、Y方向格网间距、距离缩放比例尺、距离最大值、距离最小值、反射强度最大值、反射强度最小值,距离和反射强度值集合。对于大量的三维点云数据,一次性把点云数据所对应的深度图像都装载到计算机内存后再进行显示,这既导致计算机内存和CPU计算与图形资源的严重不足。三维可视化过程只是采用二维的屏幕来显示三维空间,传统方法是通过Z-缓冲算法来进行可见性判另IJ,由于该方法必须考察输入场景中所有图形,没有性能良好的软硬件体系结构,Z-缓冲将占据图形处理的大部分时间,也需要消耗大量的内存。
发明内容
本发明要解决的技术问题是提供一种加快三维点云数据现实的方法,不必将所有的深度图像一次性调入内存,节约计算机内存,同时可以快速查找出三维场景中所需要的深度图像,保证三维显示的速度。另一方面,因为屏幕前的用户看到的实际上只是某一个角度三维空间,因此只需要将用户当前观看的角度所能够看到的三维对象在屏幕上绘制即可,因此本发明进行了遮挡处理,不绘制被遮挡的物体,从而加快了显示的速度
为此,本发明采用了如下技术方案
一种加快三维图形显示的方法,其特征在于,包含如下步骤
第一步骤,对场景进行空间划分,得到包含不同对象子空间;
第二步骤,根据对以步骤对场景空间进行划分的结果,生成一个深度图像树;
第三步骤,从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像,在三维场景中显示。上述加快三维图形显示的方法,进一步包括
对场景进行划分是按照各深度图像所表示出的对象的空间位置的关系来进行,并且各子空间不相交,最终划分的结果是同一个对象只处于一个子空间中。上述加快三维图形显示的方法中对场景空间进行划分的步骤包括(O与场景中某一对象对应的最小外包盒的距离小于阈值THl的对象被划分为一个子空间,
(2)对步骤(I)划分得到的子空间再进行划分,与场景中某一对象对应的最小外包盒的距离大于阈值TH2,小于阈值THl对象被划分为另一个子空间;
(3)对步骤(2)划分得到的空间再采用阈值进行划分,一直到各个子空间中只包含唯一的对象。上述加快三维图形显示的方法的生成深度图像树的步骤包括
A.建立一个根节点root,表示整个三维场景;
B.逐个判断每个子空间是否包含多于一个对象,如果包含多个对象,则在深度图像树的根节点root下建立一个与该子空间对应的一个中间节点,如果只包含一个对象,则在在深度图像树的根节点root下建立一个与该子空间对应一个叶节点leaf ;
C.对步骤B中所建立的节点node进行判断,如果该中间节点node所对应的空间中的某个子空间仍然包含多个对象,则在该中间节点node下建立一个儿子中间节点,如果该中间节点node所对应的空间中的某个子空间只包含一个对象,则在该中间节点node下建立一个叶子节点;一直到每个子空间都只包含一个对象,即每个对象对应于树中的一个叶子节点。上述加快三维图形显示的方法,还包括深度图像树中的每一个节点都是包含索引信息,用于索引其儿子节点所包含的信息;从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像树的步骤包括从根结点开始,递归地遍历所有索引空间与查找区域相交的子树,通过根节点的索引信息确定的儿子节点中是否包含索引了所需要查找的对象所对应的深度图像的儿子节点,如果包含,则根据该儿子节点的索引信息继续从该儿子节点的下层节点,直到查找到包含索引了所需要查找的对象所对应的深度图像的叶节点。上述第三步骤中包括裁剪处理,所述处理为采用空间对象的最小包围盒(MBB)信息进行视锥裁剪的计算判断,判断包含许多顶点数据的对象的最小包围盒与金字塔形状的视景体(view frustum)是否相交,如果相交则从外存中调度对象模型数据,并送进绘制通道;所述裁剪处理包括视锥裁剪、背面裁剪和遮挡裁剪。视锥裁剪的过程为将数据域与金字塔形状的视景体相交,顶点数据送入绘制通道中,经过模型、视图和投影变换后,裁剪掉位于绘制窗口以外的部分顶点;
背面裁剪过程为根据表面法线和视线的夹角关系来判断对象是否被背面裁剪,当视线方向和法线方向的夹角a小于90度时,该对象被裁减掉;
遮挡裁剪的过程为判断MBB之间遮挡关系,根据可见的MBB调出与之对应的深度图像,而对于被完全遮挡了的MBB,则不调取与之相应的深度图像进行绘制,所述遮挡裁剪包括视锥裁剪、背面裁剪和遮挡裁剪。
图I为利用地面激光雷达扫描获取的太和门内部建筑物构件的点云数据显示效果;图2为二维坐标中的最小外包盒的不意 图3为点云数据的可视化过程;
图4为三维场景中的一组对象的示意 图5为空间划分的结果;
图6为建立的深度图像树;
图7为视锥裁剪、背面裁剪和遮挡裁剪的示意 图8为以太和门屋顶及大木结构粗层次细节显示效果 图9为太和门屋顶及大木结构较细层次细节显示效果图。
具体实施例方式以附图4中所示出的场景为例说明本发明。附图4示出了一个场景,其包含以下对象一个桌子和一个凳子,桌面上放有一个圆形盘子,盘子中方有一个三角形饼干;和一个方形盒子,盒子中方有一个苹果。第一步骤,对场景进行空间划分,得到包含不同对象子空间。因为场景中的每个对象的几何表示是一个最小外包盒,而一个最小外包盒对应一个深度图像,因此也就是对深度图像进行区域的划分,对场景进行划分的原则按照各深度图像所表示出的对象的空间位置的关系来进行。例如以桌子为中心,与桌子对应的最小外包盒的距离小于某一阈值THl的对象被划分为一个子空间,对划分得到的子空间再进行划分,与场景中某一对象对应的最小外包盒的距离大于阈值TH2,小于阈值THl对象被划分为另一个子空间;划分得到的空间再采用阈值进行划分,一直到各个子空间中只包含唯一的对象。例如可以将附图4所示的桌子,桌子上的盘子和盒子,以及饼干和苹果所在的空间区域划分为一个空间SI,凳子划分为另一个空间S2 ;对空间SI可以进一步划分为桌子所在的空间S3、盘子和饼干所在的空间S4,盒子和苹果所在的空间S5 ;进一步可以对空间S4和S5进行进一步划分,一直到各个子空间中只包含唯一的对象。为了减小冗余,各子空间不相交,同一个对象只能处于一个子空间中。最终得到如图5所示的空间结构。第二步骤,根据对以步骤对场景空间进行划分的结果,生成一个深度图像树; 生成深度图像树的步骤包括
A.建立一个根节点root,表示整个三维场景;
B.逐个判断每个子空间是否包含多于一个对象,如果包含多个对象,则在深度图像树的根节点root下建立一个与该子空间对应的一个中间节点,如果只包含一个对象,则在在深度图像树的根节点root下建立一个与该子空间对应一个叶节点leaf ;
C.对步骤B中所建立的节点node进行判断,如果该中间节点node所对应的空间中的某个子空间仍然包含多个对象,则在该中间节点node下建立一个儿子中间节点,如果该中间节点node所对应的空间中的某个子空间只包含一个对象,则在该中间节点node下建立一个叶子节点;一直到每个子空间都只包含一个对象,即每个对象对应于树中的一个叶子节点。上述过程也可以描述为插入一个空间目标,从根结点开始,检查所有的中间节点,按照“最小覆盖体积”的优化原则找出一索引项(I)包围新增目标后,中间节点的“体积”增量最小的索引项。(2)如果增量相同,中间节点的“体积”最小的索引项。然后对选中的索引项对应的子树按照“最小覆盖体积”的优化原则进行递归搜索,直至叶子结点。如果叶子结点未“满”,直接在该叶子结点插入新增目标的索引信息,然后向上依次调整其父结点对应索引项的矩形体直至根结点;如果叶子结点已经“满”,插入新增目录将导致叶子结点溢出,故需要分裂该叶子结点(即新增一个叶子结点),并在其父结点中增加一索引项。可以理解,上述“最小覆盖体积”的优化原则是使得每个子空间只包含一个对象的原则。如附图6所示。首先建立一个根节点root,表示整个三维场景,然后对三维场景进行空间划分,得到包含不同对象子空间,逐个判断每个子空间是否包含多于一个对象,如果包含多个对象,则该子空间对应与树中的一个中间节点node,如果只包含一个对象,则该子空间对应树中的一个叶节点leaf。接着对每个中间节点node进行判断,如果该中间节点node所对应的空间中的某个子空间仍然包含多个对象,则在该中间节点node下建立一个儿子中间节点node,如果该中间节点node所对应的空间中的某个子空间只包含一个对象,则在该中间节点node下建立一个叶子节点leaf。一直到每个子空间都只包含一个对象,每个对象对应于树中的一个叶子节点。上述每个叶子节点对应一个深度图像,生成了一个深度图像树。该根据附图4的场景所建立的深度图像树如图6所示。第三步骤,从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像树,在三维场景中显示。深度图像树中的每一个节点都是包含索引信息,用于索引其儿子节点所包含的信息;
从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像树的步骤包
括
从根结点开始,递归地遍历所有索引空间与查找区域相交的子树,通过根节点的索引信息确定的儿子节点中是否包含索引了所需要查找的对象所对应的深度图像的儿子节点,如果包含,则根据该儿子节点的索引信息继续从该儿子节点的下层节点,直到查找到包含索引了所需要查找的对象所对应的深度图像的叶节点。在建立了深度图像树的基础上,可以快速地查找场景中需要显示的深度图像,因为每一个中间节点都包含了其儿子节点的索引。例如要查找对象“饼干”所对应的深度图像,从根结点开始,递归地遍历所有索引空间与查找区域相交的子树,通过根节点的索引信息可以确定的儿子节点nodel中包含索引了“饼干”所对应的深度图像的儿子节点node2,找到node2,根据其索引信息可以确定表示“饼干”所对应的深度图像的叶子节点leaf4。以Oralce数据库为例,说明上述过程的实现方式。可以采用Oracle数据库中的ODCIIndexCreate函数来创建和索引表数据的插入操作;创建的索引组织表结构设计如下表权利要求
1.一种加快三维图形显示的方法,包括将用户当前观看的角度所能够看到的三维对象在屏幕上绘制,其特征在于,包含如下步骤 第一步骤,对场景进行空间划分,得到包含不同对象子空间; 第二步骤,根据对以步骤对场景空间进行划分的结果,生成一个深度图像树; 第三步骤,从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像,在三维场景中显示。
2.如权利要求I所述的加快三维图形显示的方法,其特征在于 对场景进行划分是按照各深度图像所表示出的对象的空间位置的关系来进行,并且各子空间不相交,最终划分的结果是同一个对象只处于一个子空间中。
3.如权利要求I所述的加快三维图形显示的方法,其特征在于 对场景空间进行划分的步骤包括 (1)与场景中某一对象对应的最小外包盒的距离小于阈值THl的对象被划分为一个子空间, (2)对步骤(I)划分得到的子空间再进行划分,与场景中某一对象对应的最小外包盒的距离大于阈值TH2,小于阈值THl对象被划分为另一个子空间; (3)对步骤(2)划分得到的空间再采用阈值进行划分,一直到各个子空间中只包含唯一的对象。
4.如权利要求I所述的加快三维图形显示的方法,其特征在于 生成深度图像树的步骤包括 A.建立一个根节点root,表示整个三维场景; B.逐个判断每个子空间是否包含多于一个对象,如果包含多个对象,则在深度图像树的根节点root下建立一个与该子空间对应的一个中间节点,如果只包含一个对象,则在在深度图像树的根节点root下建立一个与该子空间对应一个叶节点leaf ; C.对步骤B中所建立的节点node进行判断,如果该中间节点node所对应的空间中的某个子空间仍然包含多个对象,则在该中间节点node下建立一个儿子中间节点,如果该中间节点node所对应的空间中的某个子空间只包含一个对象,则在该中间节点node下建立一个叶子节点;一直到每个子空间都只包含一个对象,即每个对象对应于树中的一个叶子节点。
5.如权利要求I所述的加快三维图形显示的方法,其特征在于 深度图像树中的每一个节点都是包含索引信息,用于索引其儿子节点所包含的信息; 从第二步骤中生成的深度图像树中查找相应的节点所对应的深度图像树的步骤包括 从根结点开始,递归地遍历所有索引空间与查找区域相交的子树,通过根节点的索引信息确定的儿子节点中是否包含索引了所需要查找的对象所对应的深度图像的儿子节点,如果包含,则根据该儿子节点的索引信息继续从该儿子节点的下层节点,直到查找到包含索引了所需要查找的对象所对应的深度图像的叶节点。
6.如权利要求I所述的加快三维图形显示的方法,其特征在于 上述第三步骤中包括裁剪处理,所述处理为采用空间对象的最小包围盒(MBB)信息进行视锥裁剪的计算判断,判断包含许多顶点数据的对象的最小包围盒与金字塔形状的视景体(view frustum)是否相交,如果相交则从外存中调度对象模型数据,并送进绘制通道;所述裁剪处理包括视锥裁剪、背面裁剪和遮挡裁剪。
7.如权利要求6所述的加快三维图形显示的方法,其特征在于 视锥裁剪的过程为将数据域与金字塔形状的视景体相交,顶点数据送入绘制通道中,经过模型、视图和投影变换后,裁剪掉位于绘制窗口以外 的部分顶点。
8.如权利要求6所述的加快三维图形显示的方法,其特征在于 背面裁剪过程为根据表面法线和视线的夹角关系来判断对象是否被背面裁剪,当视线方向和法线方向的夹角a小于90度时,该对象被裁减掉。
9.如权利要求6所述的加快三维图形显示的方法,其特征在于 遮挡裁剪的过程为判断MBB之间遮挡关系,根据可见的MBB调出与之对应的深度图像,而对于被完全遮挡了的MBB,则不调取与之相应的深度图像进行绘制,所述遮挡裁剪包括视锥裁剪、背面裁剪和遮挡裁剪。
全文摘要
本发明提供一种加快三维图形显示的方法,首先,对场景进行空间划分,得到包含不同对象子空间;其次,根据以上步骤对场景空间进行划分的结果,生成一个深度图像树;第三,从生成的深度图像树中查找相应的节点所对应的深度图像,在三维场景中显示。利用本发明的技术方案能够节约计算机内存,同时可以快速查找出三维场景中所需要的深度图像,保证三维显示的速度。
文档编号G06T7/00GK102722885SQ20121016107
公开日2012年10月10日 申请日期2012年5月23日 优先权日2012年5月23日
发明者危双丰, 王晏民 申请人:北京建筑工程学院