邹纪伟,刘德儿,杨 鹏,刘靖钰,李瑞雪,冀炜臻
(1.江西理工大学建筑与测绘工程学院,江西 赣州 341000;2.广州都市圈网络科技有限公司,广东 广州 510000)
在数字城市的建设中,建筑物的精细建模已成为研究热点,而激光点云的出现使其成为可能,而如何提取建筑立面的细节特征(如窗户、展台、墙体等)则是实现精细建模的前提。为此许多学者进行了大量研究,Yongzhi Wang等[1]人结合三维PCD和二维光学图像的优点,提取出连续的三维PCD建筑立面特征。Sung Chun Lee等[2]人利用窗口分类信息和图像线特征自动计算提取窗口的深度。Pascal Muller等[3]人从影像出发让计算机自动识别重复结构的区域,从而构建包含细节特征的立面三维模型。贾凯华等[4]首先将三维点云转换为二维图像,对二维图像进行处理找到窗户边界,再通过图像和点云的映射关系,求得窗户的外轮廓点云。在地面激光三维扫描数据中,建筑立面的几何特征包含墙面、门窗等几何轮廓信息,面轮廓的提取决定了建筑物三维立面三维重建的精度[5-8]。建筑物立面数据中包含有明显的深度信息,因此,不仅仅可以从影像角度寻找立面窗户,还可以通过几何信息从立面中提取门窗、展台等点云数据。王果等[9]利用α-shape算法对其进行建筑立面提取。林卉等[10]通过统计落在格网内的点数,生成二维直方图并转换为灰度图,然后对灰度图进行预处理后采用连通区域标记方法提取建筑立面数据。Sander Oude Elberink等[11]人根据目标物之间的拓扑关系,采用区域增长算法对点云数据进行面片分割,分析面片的大小、位置、方向等特征自动识别出场景中的立面、包括立面中的门窗、突起等细节。Schmittwilken,J等[12]人从语义知识库中获取立面细节特征的先验知识,应用决策树方法对特征明显的区域进行特征提取,进而提取出明显聚类的特征的点云子集。Pu & Vosselman等[13]首先利用区域生长的方法对地面点云数据进行面片分割,然后采用基于孔洞的特征提取方法,提取更细节的窗户结构。
本文通过对建筑立面点云的细节分析,提出了根据点云对偶深度图像的窗户边界提取方法,而对于窗户上不包含点云的情况,采用构建TIN的方式进行边界提取,最后通过实验验证了该算法的准确性与可行性。
建筑物立面中包含有丰富的细节信息,如墙面、窗户、展台、门洞等,这些细节结构的几何特征主要包括方向、位置、大小、拓扑、深度,不同的细节结构几何特征如表1所示。
表1 建筑立面细节特征分析
通过分析可以看出,窗户通常低于墙面,位于墙面内部,而展台阳台等突出物位于墙面外部,对于生成的建筑物立面点云数据,可基于墙面点拟合出一个平面,将点集分为三部分,即阳台等突出物点云、墙面点云、窗户点云。利用不同点到墙面平面的深度信息,生成立面对偶深度图像,从而将窗户提取转换到二维平面,降低操作难度,提高窗户提取的准确性。
由于窗户处于不同状态时,采集到的数据也会不同,如图1所示,当窗户玻璃张开时,点云透过窗户打在室内,在窗户上形成空洞,当窗户闭合且有窗帘遮挡时,点云落在窗户上。为了降低无效点对对偶深度图像生成的影响,本文采用统计滤波对其进行去除,去噪前后如图2所示。
图1 不同状态下窗户点云图
图2 去噪图
对于建筑立面的点云数据Pi(x,y,z),为了方便后续操作,对生成的对偶深度图像进行阈值分割,首先将其转换到与XOY平面平行,即建筑立面的法向量方向为Z值指向,生成新的点云数据Pi(x′,y′,z′)。具体操作步骤如下:
1)根据墙面三点P1(X1,Y1,Z1),P2(X2,Y2,Z2),P3(X3,Y3,Z3),求出该平面的法向量n。
=ai+bj+ck=(a,b,c)
(1)
2)分别绕X轴和Y轴旋转α和β角,其旋转矩阵分别为公式(2)和(3),通过旋转最终将其转换到XOY平面。
(2)
(3)
由于点云数据量巨大,如果直接根据几何信息及深度信息对点云数据进行特征提取,则会出现大量冗余计算,并且耗时较长。因此本文结合文献[14]的思想,采用距离加权倒数IDW内插方法生成建筑面片的对偶深度图像,然后对其进行阈值分割、中值平滑滤波及形态学滤波等方法,确定窗户的边界。
该算法首先将点云数据投影到XOY平面,确定采样间隔后得出二维影像的宽度和高度,然后根据落在每个格网内的点云确定像元灰度值,最后得到整个建筑立面的二维深度图像,具体原理如下:
1)确定二维影像的宽和高。
如公式(4)所示,宽(Width)与高(Height)的确定与采样间隔密切相关。
(4)
其中,Xmax,Xmin,Ymax,Ymin分别为X和Y坐标的最大值和最小值;GSD为采样间隔。
2)确定每个格网的特征值
单元格网的特征值主要受点云的空间分布和高程值两部分影响,因此设定距离格网中心点越近,则权值越大,高程值越大,则权值越大。这两部分权可用公式(5)表示。
(5)
由平面坐标与高程坐标的重要性可设定不同的α和β值,采用距离加权倒数IDW内插方法(如:公式(6)),最后将特征值归化到0~255灰度空间,即得到每个单元格的像素值,生成建筑面片的对偶深度图像。
(6)
其中,Zijk为格网(I,j)中第k个点的高程。
为了适应图像处理的要求,降低图像数字化时所混入的噪声,同时抽出对象的特征作为图像识别的特征模式,本文采用中值滤波对生成的对偶深度图像进行平滑处理。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节,这些优良特性是线性滤波所不具备的。
由地面激光三维扫描数据格式可知,建筑物立面包含了明显的深度信息,即投影到XOY平面上时,窗户上的点通常低于墙面上的点,为了图像的生成及窗户的阈值分割,本文首先按照公式(7)计算所有点到墙面的距离,将得到的欧式距离di替换经坐标转换后的数据点Pi′(X′,Y′,Z′)中的Z′值,即得到目标点云数据集Oi,点云坐标为Oi(X′,Y′,di)。
(7)
根据坐标旋转后建筑立面的法向量指向为由里向外,由于数据处理时是以墙面为参考面进行的距离计算,因此落在墙面及墙面外的点(如展台,凸边)距离大于等于零,而落在窗户上或窗户内的点距离为负数,基于此可选择合适的阈值对生成的图像进行分割,实现对窗户的有效提取。由于提取的窗户包含空洞及其他噪声,因此进行形态学滤波处理,使空洞被填充及噪点被去除,提取出窗户的边界后,然后根据二维图像与三维点云的映射关系,确定窗户内的点云。
上述基于对偶深度图像的窗户提取方法对窗户上附有点云信息的效果显著,而对窗户无点云覆盖,为空洞的情况,本文采用构建TIN的方式对含有空洞的窗户进行边界提取。TIN是基于的数字高程模型,由结点(Node)、边(Edge)、三角形(Triangle)、包面(Hull)和拓扑(Topology)组成。它是基于矢量的数字地理数据的一种形式,通过将一系列折点(点)组成三角形来构建。由于空洞的存在,对于构建的TIN结构,空洞周边生成的三角形的边长远远大于其他点密集的区域,可基于此特点,提取空洞即窗户构成的三角网,然后通过TIN中结点与边长对应的索引关系,找到窗户边界点,再进行矩形拟合,提取边界。提取的主要步骤如下:
1)构建TIN。对包含空洞的建筑物立面构建TIN。
2)提取空洞处三角形的边。 对TIN中三角形边长值作频率分布图,通过该图可以看出边长值的分布状况,基于窗户空洞的情况下,较长边长一定在空洞或墙的边界原则,选择合适的边长阈值即可提取所需的边。
3)提取边界点。根据TIN中结点与边对应的关系,提取构成三角形边所对应的结点。
4)窗户矩形拟合。对所提取出来的窗户边界点通过OpenGL进行矩形拟合,以构建窗户线框模型,从而反映窗户的形状和大小。
本文采用RANSAC分割算法实现从TLS数据中提取的建筑物立面点云数据,数据点个数为95021。实验软硬件环境为Intel(R)Xeon(R)CPU E3-1231 v3 @3.40GHz、内存为8GB;本研究的实验算法是在MATLAB R2017和Microsoft Visual Studio 2017编译环境下,结合PCL方法库编程实现。
按照上述步骤,首先对原始点云数据进行坐标变换,变换后的点云数据如图3所示。
图3 点云数据
经过坐标变换后,求得每个点到墙面的距离,将得到的欧式距离di替换经坐标转换后的数据点Pi′(X′,Y′,Z′)中的Z′值,得到新的点云坐标为Oi(X′,Y′,di),对生成的新的点云数据,采用距离加权倒数IDW内插方法生成建筑面片的对偶深度图像。接着对生成的图像进行预处理后,按照上述方法,对其进行阈值分割,可提取出窗户的像素点,如图4所示。
图4 窗户提取结果
从图4中可以看出,提取出的窗户包含有其他噪声点且部分窗户还存在空洞,因此对其进行形态学滤波,然后根据图斑的面积,搜索符合窗户大小的连通性图斑,根据图斑的重心替代窗户的形心,从而确定窗户的外边界,结果如图5所示。
(a)提取效果
通过上述方法所求出的重心点与实际拍摄采集的影像叠加图可看出,重心点都落在45个窗户内,由于设站点位于建筑物右侧,因此靠近设站点的点云分布密集,而左侧离设站点较远,因此点比较稀疏。通过图5(a)可以看出,左侧上方窗户由于缺少点集,根据图斑拟合出来的重心会不同程度发生偏移,而右方窗户点云较为完整,因此窗户重心基本落在实际重心上。为了定量说明与实际的偏差情况,将提取的重心坐标与实际作距离差(如图6),由偏移量分布图可以看出,大部分点都集中分布在0~0.1之间,最大值为0.377,最小值为0.001,平均值为0.055,精度较高,且分布比较集中。
图6 重心点距离偏移量分布
对于包含空洞的情况,本文对上述原数据进行了预处理,以进行后续操作,采用构建TIN的方式对含有空洞的窗户进行边界提取,结果如图7和图8所示。
图8 边界提取图
图7 TIN结果图
从原始影像图可以看出,建筑物立面共有45个窗户,通过构建TIN的方式能将这45个窗户准确的识别出来。由于建筑立面的公开点云数据集较少,对窗户的边界提取精度缺少统一的衡量准则,因此本文通过手动选取7个窗户边界特征点和自动提取的对应特征点作对比,如图9所示,分析其坐标距离差,定量分析其提取的精度。通过数据分析可以看出,窗户特征点距离差多集中在0.02~0.06 m之间,平均值为0.048 m,精度分布较高且较集中,结果验证了提取的窗户边界准确性较高。
图9 距离差偏移分布图
TLS能快速获取建筑物立面点云数据,对智慧城市的创建及三维模型的构建具有较大优势,而建筑物立面的细节提取对精细建模显得尤为重要。本文针对窗户不同情况,提出了通过生成点云对偶深度图像和构建TIN的方式进行边界提取。其中将三维点云转换为二维图像,避免了大量的几何运算,降低了三维的提取难度,而通过构建TIN进行边界提取,则弥补了窗户上点云缺失的情况。
实验结果表明,本文研究能对建筑物窗户进行有效提取,当窗户上点云密集且空洞较少时,效果显著,而当窗户上无点云数据时,通过构建TIN进行提取,能有效弥补基于对偶深度图提取方法的不足。该方法目前能对包含点云及空洞的窗户进行有效提取,在未来的研究中,我们将针对同一建筑物下存在不同语义的窗户,实现对偶深度图与TIN的融合,同时考虑借助深度学习自动判别不同语义特征的窗户。