- 单目视觉城市建筑物参数化三维建模
- 杨淼
- 2941字
- 2021-04-09 20:20:53
2.3 面向对象的城市建筑物建模
在三维数字城市中,建筑物的三维建模是一项非常重要的工作[49]。建筑物三维建模的实现会对webGIS、虚拟地理环境、数字地球等领域产生前所未有的巨大影响,比如三维虚拟城市、机器人智能导航、车辆辅助驾驶、建筑模拟展示、飞行模拟、交互式游戏、虚拟购物、医疗模拟、虚拟博物馆和虚拟艺术陈列馆等。
2.3.1 三维建筑物的空间数据模型
在确定了建筑物建模要表达的各参数的内容和表达的精细程度后,接下来就是三维表示方法。模型是用来表示实际的或抽象的实体或对象。数据模型是一组实体以及它们之间关系的一般性描述。而数据结构则是数据模型的表示,是建立在数据模型这个基础之上,是数据模型的细化。
目前建筑物的空间数据模型,根据三维数据结构的几何特征可大致分为两大类:基于面描述的模型和基于体元描述的模型。基于面表示的数据结构是利用微小的面单元或面元素来描述空间地物的几何形态,如格网结构(Grid)、不规则三角形网(TIN)、边界表示(BR,Boundary Representation)法等,它们主要用于表达地形。其中边界表示(BR)主要用于CAD中表示规则物体,其他结构则适合表示具有不规则形状的物体。基于面描述的数据结构一般用体表、面表、环表、边表和顶点表五层描述。其特点是强调物体外表的细节,详细记录构成物体的所有几何元素的几何信息及其相互的连接关系与拓扑信息;其缺点是数据量大,数据结构复杂。基于体表示的数据结构是根据三维物体的外部形态或内部结构来表达空间物体的几何形态,如3D栅格(array),八叉树(Octree)、结构实体几何法(CSG)、四面体格网(TEN,TetrahedralNetwork)等,这类数据结构侧重于3D空间体的表示。
我们采用的结构实体几何模型(CSG)是一种由简单的几何形体(通常称为体素,如长方体、球体、棱锥体等)通过正则布尔运算构造复杂三维物体的表示方法,如图2.4所示。每一体素在参与组合操作前必须经历某种变换,使它从被定义的状态变换到被组合的状态。组合而得到的中间实体在参与更高层组合之前也可能要经过类似的变换。用CSG方法表示一个复杂几何体可看作一棵有序的二叉树,称为CSG树,树的叶子结点可以是体素,也可以是实体运动的变换参数,非叶子节点可以是正则集合运算操作,也可以是实体的几何变换(平移、旋转或缩放)操作,所有操作只对其子树起作用。CSG树的具体定义如下。
(1)树中的叶子节点对应一个体素并记录体素的基本定义参数。
(2)树的根节点和中间节点对应于一个正则集合运算符。
(3)一棵树以根节点作为查询和操作的基本单元,它对应于一个具体目标。
由此可见,利用CSG树能够以简单明了的方式构造一个三维空间实体,特别适合表示较为规则的目标,构造过程也不复杂。而我们研究的城市建筑物正好满足这一点。
图2.4 CSG的基本体素及其组合形式
CSG表示的优点在于:①数据结构比较简单,数据量小,内部数据管理相对容易;②每个CSG表示都有一个实际的有效目标相对应;③比较容易修改CSG表示目标的形状。
CSG表示的缺点在于:①对CSG基本体素的操作种类有限,难以对复杂几何目标的局部进行构造;②CSG表示法隐含地表示了几何目标的边界几何要素(点、边、面),所以显示和绘制CSG表示的目标需要较长的时间。
2.3.2 建筑物的CSG建模
对建筑物进行三维建模时,第一步是抽象出建筑物的类型;第二步是按照一定规则对建筑物进行分解,由建筑物分解获得简单、基本的CSG体元。在分解建筑物的过程中,可以采用如下的分解规则:基于建筑物外部形状的分解;基于建筑物构件的分解和基于各种特殊轮廓线的分解。本文研究的城市建筑物中的规则目标,通过建筑物的外部形状和各个构成部分的形体就可以得到建筑物的CSG体元组合。利用得到的CSG体元,加上实体间的正则布尔运算和空间变换,就可以获得建筑物的实体模型。
图2.5 平顶建筑物CSG体元
对城市建筑物的分类共有如下三种。
(1)平顶建筑物,如图2.5所示。
(2)人字形屋顶建筑物,如图2.6所示。
图2.6 人字形屋顶建筑物CSG体元分解
(3)双面人字形屋顶建筑物,如图2.7所示。
图2.7 双面人字形屋顶建筑物CSG体元分解
2.3.3 面向对象的建筑物CSG分层建模流程
考虑到单独利用CSG进行建筑物三维建模很难完全表达出建筑物的每个平面细节,也不利于建筑物各种属性的赋值和查询。因此我们引入面向对象的方法,将每个CSG体元抽象成点对象、面对象和体对象。这里的CSG体元是对建筑物的初步划分,而点、面、体是对建筑物进一步细化,以便直接存取构成形体的各个面以及各个顶点的定义参数,有利于以点、面为基础的各种几何运算和操作。此外,面的构造方式还有利于三维模型的纹理贴图,更重要的是利用点、面、体的方式更细致地描述了建筑物的三维拓扑关系。城市建筑物的面向对象的分层建模过程如图2.8和图2.9所示,建模中的矢量数据由点、面组成,在此层面上用面去描述CSG各体元的各个表面,然后由这些规则几何体的正则布尔运算,用基于体元的模型描述法描述建筑物几何实体。这就是本文研究的在CSG建模的基础上结合面向对象思想的建筑物三维建模的CSG和点、面、体表达。
图2.8 城市建筑物的CSG分层描述思路
图2.9 城市建筑物CSG分层数据模型的具体描述
2.3.4 面向对象建筑物CSG建模的形式化描述
根据城市建筑物的参数模型可以为其设计相应的数据结构以用于三维表达和重建。形式化描述是基于提出的数学模型基础上一种抽象的数学描述形式,以建筑物为例,每个建筑物相应属性参数及详细划分的体、面、点对象的数据的形式化表示为。
2.3.5 面向对象建筑物CSG建模实例
假设有下面一幢人字形屋顶建筑物,根据上面提出的思路进行其三维建模描述,如图2.10所示。
图2.10 面向对象CSG人字形屋顶建筑物建模分层组合表达图
2.3.6 城市建筑物三维模型的数据获取
在以上描述的城市建筑物三维数据模型的基础上,完成城市建筑物的参数化三维建模,需要获取的数据主要有建筑物几何结构属性数据、建筑物纹理数据和建筑物信息属性数据三种。数据获取是三维城市建模中最为重要的工作,直接涉及到三维模型构建的成本及效果。
2.3.6.1 几何结构属性数据获取
本文研究的基于图像的城市建筑物的三维重建方法,与那些基于2DGIS、激光扫描仪或由遥感图像完成的重建不同,将以研究算法为主,从陆地拍摄的图像中直接提取建筑物模型的类型和几何结构信息。
2.3.6.2 建筑物纹理数据获取
由图像完成的建筑物模型的重建,得到的建筑物模型中的每个平面对应不同的纹理属性。我们将从图像中直接获取视角中各个可见面的纹理,首先确定纹理数据的大小为不超过20K,在粘贴纹理时主要用平铺的方法。其次,进行纹理处理,实际拍摄的图像由于受光线、角度、时间的限制,拍摄的照片大多是变形的,色彩与真实的物体也有所不同,而纹理库中的纹理应该是正射的。为使建筑物看起来真实、美观,制作出满足三维城市建模需要的纹理,还需要对原始纹理图像进行处理。具体处理过程包括:前期处理、透视纠正、旋转、扭曲、修补、裁剪、色彩调整、分辨率调整和其他特殊处理等,建立纹理模型库[47]。
2.3.6.3 建筑物信息属性数据获取
城市景观中的建筑物信息属性数据主要用来进行查询,其数据类型主要有两种:一种是用来描述建筑物实体的属性数据,如建筑物名称、建筑年代、建筑位置等;另一种是用来描述建筑物与社会相关的主观性属性数据,如建筑物的历史意义等。数据的描述一定程度上取决于人类主观性的判断,而又缺乏真实程度的衡量标准,这种抽象表达总是不可能完全达到“真实值”。因此,数据质量发生问题是不可避免的,我们可以采用元数据的方法控制属性数据的描述质量,为空间数据建立合适的数据字典,对各种原始数据进行文本说明。