留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

一种古建筑点云数据的语义分割算法

张瑞菊 周欣 赵江洪 曹闵

张瑞菊, 周欣, 赵江洪, 曹闵. 一种古建筑点云数据的语义分割算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
引用本文: 张瑞菊, 周欣, 赵江洪, 曹闵. 一种古建筑点云数据的语义分割算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
ZHANG Ruiju, ZHOU Xin, ZHAO Jianghong, CAO Min. A Semantic Segmentation Algorithm of Ancient Building's Point Cloud Data[J]. Geomatics and Information Science of Wuhan University, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
Citation: ZHANG Ruiju, ZHOU Xin, ZHAO Jianghong, CAO Min. A Semantic Segmentation Algorithm of Ancient Building's Point Cloud Data[J]. Geomatics and Information Science of Wuhan University, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428

一种古建筑点云数据的语义分割算法

doi: 10.13203/j.whugis20180428
基金项目: 

国家自然科学基金 41501495

国家自然科学基金 41601409

北京建筑大学市属高校基本科研业务费专项资金 X18228

北京建筑大学市属高校基本科研业务费专项资金 X18290

精密工程与工业测量国家测绘地理信息局重点实验室开放研究基金 PF2013‐1

北京市自然科学基金 8172016

城市空间信息工程北京市重点实验室开发研究基金 2018210

详细信息

A Semantic Segmentation Algorithm of Ancient Building's Point Cloud Data

Funds: 

The National Natural Science Foundation of China 41501495

The National Natural Science Foundation of China 41601409

the Fundamental Research Funds for the Municipal Universities of Beijing University of Civil Engineering and Architecture X18228

the Fundamental Research Funds for the Municipal Universities of Beijing University of Civil Engineering and Architecture X18290

the Open Foundation of Key Labora‐ tory of Precise Engineering and Industry Surveying of National Administration of Surveying, Mapping and Geoinformation PF2013‐1

Bei‐ jing Municipal Natural Science Foundation 8172016

the Open Foundation of Beijing Key Laboratory of Urban Spatial Information Engi‐ neering 2018210

More Information
    Author Bio:

    ZHANG Ruiju, PhD, lecturer, specializes in 3D laser scanning point cloud data processing. E‐mail: zhangruiju@bucea.edu.cn

图(9)
计量
  • 文章访问数:  773
  • HTML全文浏览量:  150
  • PDF下载量:  83
  • 被引次数: 0
出版历程
  • 收稿日期:  2019-09-28
  • 刊出日期:  2020-05-05

一种古建筑点云数据的语义分割算法

doi: 10.13203/j.whugis20180428
    基金项目:

    国家自然科学基金 41501495

    国家自然科学基金 41601409

    北京建筑大学市属高校基本科研业务费专项资金 X18228

    北京建筑大学市属高校基本科研业务费专项资金 X18290

    精密工程与工业测量国家测绘地理信息局重点实验室开放研究基金 PF2013‐1

    北京市自然科学基金 8172016

    城市空间信息工程北京市重点实验室开发研究基金 2018210

    作者简介:

    张瑞菊, 博士, 讲师, 主要从事三维激光点云数据处理研究。zhangruiju@bucea.edu.cn

    通讯作者: ZHOU Xin, master. E‐mail: bingchengguyan@foxmail.com
  • 中图分类号: P237

摘要: 针对目前从三维激光扫描点云中进行古建筑木构件分割较难的现状,提出一种对古建筑点云数据进行精确、快速语义分割的新算法。该算法首先对点云进行去噪处理;然后利用古建筑结构特性定义与柱构件相交且垂直于坐标系竖轴的一个截面并提取截面点云;接着利用点云欧氏聚类的方法从截面点云数据中提取对应于柱构件的点云并估计柱构件参数,进而基于罗德里格旋转矩阵将古建筑点云数据自动转正,使点云三维坐标系的竖轴严格垂直于地面;最后基于模型拟合的方法分割出柱构件点云,并利用古建筑几何结构、尺寸等信息采用基于包围盒的方法对其他木构件(如梁、枋等)进行分割。为了验证算法的稳健性与可行性,选取亭子类古建筑点云数据进行实验与分析。结果表明,该算法具有一定的可行性与稳健性,为古建筑点云的自动语义分割提供了思路与方法。

English Abstract

张瑞菊, 周欣, 赵江洪, 曹闵. 一种古建筑点云数据的语义分割算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
引用本文: 张瑞菊, 周欣, 赵江洪, 曹闵. 一种古建筑点云数据的语义分割算法[J]. 武汉大学学报 ● 信息科学版, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
ZHANG Ruiju, ZHOU Xin, ZHAO Jianghong, CAO Min. A Semantic Segmentation Algorithm of Ancient Building's Point Cloud Data[J]. Geomatics and Information Science of Wuhan University, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
Citation: ZHANG Ruiju, ZHOU Xin, ZHAO Jianghong, CAO Min. A Semantic Segmentation Algorithm of Ancient Building's Point Cloud Data[J]. Geomatics and Information Science of Wuhan University, 2020, 45(5): 753-759. doi: 10.13203/j.whugis20180428
  • 三维激光扫描测量具有快速、准确、非接触等特性,可直接获取物体表面三维密集的点云,在古建筑数字化保护方面起着非常重要的作用[1]。目前,随着相关技术的发展,三维激光扫描测量在硬件装备、三维点云数据处理及应用等方面取得了巨大进步,同时也面临新的挑战[2]。由于古建筑结构复杂,场景规模宏大,获取的三维激光点云往往具有数据量大、离散性、噪声和漏洞严重等问题,因此,如何快速、高效地处理古建筑点云数据是当前需要解决的难题。

    木构件作为古建筑的基本组成部分,一般结构较复杂,而古建筑数字化保护的诸多应用需要从古建筑点云中分割出木构件点云,如古建筑的建筑信息模型、形变监测、数字化存档等[3-5]。目前,分割木构件点云的方法主要是利用第三方软件平台手动对古建筑点云数据进行分割,其效率低下,成为制约该技术深入推广的主要瓶颈。古建筑和现代建筑完全不同,它是由成千上万的柱、础、枓、栱、梁、瓦等木构件按照一定的拼接顺序组装成高大宏伟的建筑物,建筑过程不用一钉一铆,全靠枓栱和柱梁镶嵌穿插相连。如何精准、高效地从古建筑点云数据中分割出木构件是当前研究的热点,也是本文研究的重点。

    点云数据的分割作为三维特征提取、目标识别、定位和建模等应用的一个重要步骤,一直是一个十分活跃的研究领域,国内外许多学者对此进行了大量研究[6-14]。Grilli等[6]和Nguyen等[7]分别对点云分割算法进行了详细的总结及优缺点分析。现有的点云数据分割算法主要有基于边缘的方法[8]、基于区域增长的方法[9-10]、基于混合的方法[11]、基于模型拟合的方法[12-13]和基于机器学习的方法等[14]。每种方法都有它的优缺点及适用性,如基于边缘的方法检测边缘困难且存在间隙,基于区域增长的方法受限于种子点的选择且对噪声敏感,基于模型拟合的方法只能分割平面、柱面、球面等基本模型,基于混合的方法比较耗时,基于无监督分类的机器学习方法对噪声比较敏感等。早期的点云分割算法只是将具有某种共性的点集分为一类,如分为平面点集、球面点集、柱面点集等,缺乏高层语义信息。

    常用的点云语义分割算法主要有基于层次提取的语义分割算法[15-16]和基于深度学习的语义分割算法[17-19]。前者是基于分割对象的特性进行多层次提取,后者需要大量的实验数据进行机器学习,而现在还没有大量已标注的古建筑点云数据用于训练。目前广泛使用的标准数据集(如Semantic3D. net[20]、Stanford Large-scale 3D In‐ door Spaces Dataset(S3DIS)[15]等)与本文研究的古建筑类型不同,结构也不同,相应的语义分割算法也存在局限性。

    综上所述,针对中国古建筑的特性,需要研究相应的点云语义分割算法。针对此问题,本文充分利用古建筑结构布局的特点,基于古建筑点云数据提取的竖直轴向、柱列轴线及构件尺寸等信息自动分割出木构件对应的点云数据,提出了一种古建筑点云的语义分割算法。经实验数据验证,本文算法的分割效果较好,提高了古建筑点云数据分割的自动化程度。

    • 考虑到每栋单体古建筑在空间上的独立性及效率问题,先手工从古建筑场景点云数据中选取单体古建筑点云,并检查点云数据的三维坐标系的竖轴是否大致竖直,如果不满足要求,需作人工目视转正处理。

      为了给分割算法提供精确可靠的点云数据,首先对点云数据进行自动去噪处理;然后自动计算与柱构件相交且垂直于点云三维坐标系竖轴的一个截面并提取出截面点云数据;接着利用点云欧氏聚类的方法从截面点云中提取对应于柱构件的点云数据并估计柱构件参数;进而基于罗德里格旋转矩阵将古建筑点云数据自动转正,使点云三维坐标系的竖轴Z严格垂直于地面,从而使算法在Z维度上的处理更为简单、高效,此时对于部分构件分割的难题便可以由三维向二维过渡,较大程度上提升算法的效率,降低算法的复杂程度;最后基于模型拟合的方法分割出柱构件点云,并利用古建筑几何结构、尺寸等信息采用基于包围盒的方法对其他木构件(如梁、枋等)进行分割。木构件分割算法流程图如图 1所示。

      图  1  木构件分割流程图

      Figure 1.  Flowchart of Wooden Elements Segmentation

    • 由于点云数据处理算法对噪声极为敏感,所以本算法首先自动对点云数据进行去噪处理。由于从古建筑场景点云数据中准备单体古建筑点云数据时,已将环境噪声去除,此处主要处理的是目标噪声。处理的方法为:先构建kd-tree,以便对每个采样点的邻近域进行获取;设定阈值r为kd-tree的搜索半径,然后通过kd-tree对每个采样点以r为半径进行邻域搜索,获取半径为r内的所有采样点;如果该邻域内的采样点个数k小于指定阈值k0,即认为该采样点为噪声点。阈值一般根据点云密度设置。噪点去除示意图如图 2所示。

      图  2  噪点去除示意图

      Figure 2.  Diagram of Noise Removal

    • 点云数据去噪处理后,求解点云在三维坐标系竖轴Z上的最小值和最大值,分别设为ZminZmax。根据目标古建筑的几何结构,分析柱构件高度在Z轴中的长度占比s(0 < s < 1),计算与柱构件相交且垂直于Z轴的截面高度Z0,其计算公式为:

      $$ {Z_0} = {Z_{ {\rm{min}} }} + \frac{s}{3} \cdot ({Z_{ {\rm{max}} }} - {Z_{ {\rm{min }}}}) $$ (1)

      对每个采样点P i (x iyizi)提取满足条件Z0 - 0.3 ≤ ziZ0 + 0.3的采样点作为截面点云数据。提取的截面点云数据属于若干个柱构件对应的点云数据,根据欧氏聚类方法[21]对其进行聚类,得到n个柱构件对应的部分点云数据。

    • 利用§1.2分割出的柱构件部分点云数据,分别估计其对应的柱构件几何参数[1],采用的数学模型为:

      $$ \begin{array}{l} {({x_j} - {x_0})^2} + {({y_j} - {y_0})^2} + {({z_j} - {z_0})^2} - ({n_x}({x_j} - \\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_0}) + {n_y}({y_j} - {y_0}) + {n_z}({z_j} - {z_0}){)^2} - {R^2} = 0 \end{array} $$ (2)

      式中,(x jyjzj)为圆柱面上一采样点的三维坐标;(x0y0z0)为圆柱轴线上一点的三维坐标;(nxnynz)为圆柱单位轴向量;R为圆柱半径。目标柱构件对应的截面点云坐标的重心坐标作为(x0y0z0)的初始值,(0,0,1)作为(nxnynz)的初始值,目标柱构件对应的截面点云到(x0y0z0)的欧氏距离平均值作为R的初始值,利用Leven‐ berg-Marquardt方法计算出参数(x0y0z0)、(nxnynz)和R

    • 当估算出柱构件的轴向量后,还需要确保轴向量的方向一致。假定N i(nixniyniz)为第i个柱构件的单位轴向量,N0 (0,0,1)为Z轴的单位向量,如果满足下式:

      $$ {\mathit{\boldsymbol{N}}_0} \cdot {\mathit{\boldsymbol{N}}_i} < 0 $$ (3)

      则对N i进行处理,得到N i (-nix,- niy,- niz);否则不作处理。将处理后的n个柱构件轴向量相加取平均值,再进行单位化处理,设得到的单位向量为N (nx ',ny ',nz '),建立以该向量为Z轴的转正之后的三维坐标系。依据罗德里格矩阵方法,计算从点云所在的三维坐标系到转正之后的三维坐标系的旋转矩阵R(θ),具体方法如下:

      依据余弦定理,计算向量NN0之间的夹角θ

      $$ \theta = {\rm{arccos}} (\frac{{\mathit{\boldsymbol{\bar N}} \cdot {\mathit{\boldsymbol{N}}_0}}}{{|\mathit{\boldsymbol{\bar N}}||{\mathit{\boldsymbol{N}}_0}|}}) $$ (4)

      由空间几何的基本原理易知,同时垂直于NN 0的向量为N × N 0,将其设为N r (nrxnrynrz),为方便后续处理,此处设其为单位向量。则R(θ)满足如下关系:

      $$ \mathit{\boldsymbol{R}}(\theta ) = \mathit{\boldsymbol{E}} + \mathit{\boldsymbol{\bar w}} {\rm{sin}} \theta + {{\mathit{\boldsymbol{\bar w}}}^2}(1 - {\rm{cos}} \theta ) $$ (5)

      式中,E为3阶单位矩阵;wN r的反对称矩阵,具体的表达式为:

      $$ \mathit{\boldsymbol{\bar w}} = \left[ {\begin{array}{*{20}{c}} 0&{ - {n_{rz}}}&{{n_{ry}}}\\ {{n_{rz}}}&0&{ - {n_{rx}}}\\ { - {n_{ry}}}&{{n_{rx}}}&0 \end{array}} \right] $$ (6)

      利用该旋转矩阵对点云数据进行空间变换,找出坐标变换之后点云数据中最小的Z轴坐标,记作Zmin ',旋转之后的点云数据与地面垂直。为确保点云数据在Z维度上均大于等于0,还需对点云数据在Z方向上进行平移,平移量为-Zmin '。

    • 利用§1.4构建的旋转矩阵,分别计算出柱构件在§1.3中估算的单位轴向量和轴线上一点的三维坐标在转正之后的三维坐标系中对应的向量和坐标,分别记作N i '(nix ',niy ',niz ')和O i'(xi0 ',yi0 ',zi0 ')。

      对于任意一个采样点P i '(x i ',yi ',zi '),令该采样点到第i个柱构件轴线的距离为d i,根据空间几何理论知识,有:

      $$ \begin{array}{l} d_i^2 = {(x_i^\prime - x_{i0}^\prime )^2} + {(y_i^\prime - y_{i0}^\prime )^2} + {(z_i^\prime - z_{i0}^\prime )^2} - \\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} (n_{ix}^\prime (x_i^\prime - x_{i0}^\prime ) + n_{iy}^\prime (y_i^\prime - y_{i0}^\prime ) + \\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} n_{iz}^\prime (z_i^\prime - z_{i0}^\prime ){)^2} \end{array} $$ (7)

      为避免对柱构件的分割造成欠分割,对柱子的半径设定一个阈值Rth。如果d i满足如下关系:

      $$ {({R_i} - {R_{{\rm{th}}}})^2} \le d_i^2 \le {({R_i} + {R_{{\rm{th}}}})^2} $$ (8)

      那么认为该采样点为第i个柱构件上的一点。其中,R i表示第i个柱构件的半径。考虑到实际的柱子并不是严格的圆柱,经过大量的实验发现,Rth一般取0.02为宜,这样既能避免欠分割,也能避免过分割现象。

    • 对柱构件进行点云分割后,还需对梁、枋等木构件点云进行分割。考虑到古建筑柱列轴线是每个木构件的定位依据,可以基于柱构件参数提取柱列轴线信息,并基于柱列轴线信息构建待分割木构件的包围盒,实现基于包围盒的木构件点云分割。

      假设古建筑柱构件轴线在三维坐标系的XOY平面内的投影点分别为P1P2P2m,为了体现算法对各种亭子类型的古建筑点云数据的适用性,也为了方便计算,不妨令m=3。如图 3(a)所示,对于6个投影点P1 ~P6,求解出投影点所构成的矩形的4个顶点,即P1P2P3P4,这4个点依次连接构成矩形V1234。假设P1'P2'为某一木构件长度方向上几何中心轴线在XOY平面内投影的两个端点,根据空间几何理论知识,同时考虑构件尺寸信息,外插求出P1'P2'两点在XOY平面上的坐标,如图 3(b)所示。同理可求出图 3(c)Pv1Pv2Pv3Pv4XOY平面上的坐标,进而基于Pv1Pv2Pv3Pv4构建待分割木构件的包围盒,如图 3(d)所示。Pv5Pv6Pv7Pv8XOY平面内的投影点分别与Pv1Pv2Pv3Pv4对应。依据待分割木构件的位置信息,分别对Pv1Pv2Pv3Pv4Pv5Pv6Pv7Pv8Z维度上赋值。

      图  3  基于柱轴线构建构件包围盒

      Figure 3.  Creating Wooden Element Boundary Box Based on Wooden Column Axis

      基于包围盒分割木构件点云的关键是判定采样点与包围盒之间的空间位置关系,此处可以根据采样点到包围盒的6个平面欧氏距离的正负号进行判断,最终实现基于包围盒的木构件点云分割。

    • 为了充分验证本文算法的可行性及稳健性,采用北京建筑大学测绘楼5层楼台的一个亭子风格的古建筑作为实验对象(图 4)。图 4(a)为现场采集的古建筑场景点云数据配准之后的结果图,图 4(b)是其顶视图。因为单体建筑在空间上具有独立性,人工交互可以快速提取单体建筑点云数据。提取的单体建筑点云通过去除环境噪声、人工目视转正及点云数据去噪处理后,结果如图 4(c)所示。

      图  4  实验数据

      Figure 4.  Experimental Data

      为获取柱构件参数,首先构建高度为1.1 m的水平截面,获取Z轴坐标介于0.8~1.4 m之间的采样点,如图 5(a)所示;然后对截面点云数据进行欧氏聚类,利用模型拟合方法求解柱构件参数,进而可求出柱构件的平均单位轴向量为(0.002 077,− 0.013 917,− 0.999 901)。依照§1.4,对点云数据进行坐标转正的问题可以转换为求向量(0.002 077,− 0.013 917,− 0.999 901)与向量(0,0,1)之间的空间变换矩阵,如图 5(b)所示,依据罗德里格矩阵方法解得该变换矩阵为:

      图  5  点云转正示意图

      Figure 5.  Diagram of Point Cloud's Space Transformation

      $$ \left[ {\begin{array}{*{20}{r}} {1.489030}&{ - 0.072999}&{ - 0.147607}\\ { - 0.072998}&{1.010800}&{ - 0.989046}\\ {0.147607}&{0.989046}&{0.999901} \end{array}} \right] $$

      点云数据转正处理后,还需使转正后的点云数据的Z轴坐标均大于等于0。对转正之后的点云数据利用§1.5的方法提取柱构件点云,如图 6所示。接下来基于计算出的柱列轴线信息构建构件包围盒,提取梁、枋等木构件点云数据。分割梁、枋需要的尺寸和位置信息如图 7所示。本实验中,基本参数设置为:梁距离地面的高度为2.2 m,长为2.5 m,宽为0.23 m;枋距离地面的高度为1.9 m。

      图  6  柱构件分割结果

      Figure 6.  Segmentation Result of Wooden Columns

      图  7  梁、枋的尺寸和位置参数

      Figure 7.  Size and Position Parameters of Beams and Tiebeams

      由于古建筑木构件之间是通过榫卯结构镶嵌穿插相连在一起的,所以在执行分割处理时,分层次提取木构件是比较优化的分割策略。图 8(a)为梁、枋整体从古建筑点云中分割出的结果,图 8(b)为梁、枋基于柱列轴线进一步分割的结果,图 8(c)为分离的梁、枋构件结果。实验数据最终的分割结果如图 9所示。

      图  8  分层次分割木构件

      Figure 8.  Hierarchical Segmentations of Wooden Elements

      图  9  实验数据最终分割结果

      Figure 9.  Final Segmentation Result of the Experimental Data

    • 针对目前古建筑点云数据自动语义分割较难的现状,为了最大限度地减少人工干预,本文采用尽可能少的参数对古建筑点云数据进行分割。为了提升算法效率,本文根据古建筑的特性提出了一种古建筑点云数据自动转正的方法,通过对古建筑点云数据转正,使其严格垂直于地面,这样在Z维度上的处理变得相对简单,从而对木构件点云的分割可以由三维过渡到二维,极大提升了算法效率。通过圆柱数学模型估算出柱构件参数,利用古建筑的几何结构、尺寸等信息采用基于包围盒的方法对其他木构件(如梁、枋等)进行分割。选取亭子类古建筑点云数据进行语义分割实验,结果表明本文算法具有一定的可行性与稳健性。

      由于不同古建筑的建造手段及复杂度不同,本文仅采用亭子类古建筑点云数据作为实验数据,且需要古建筑一些已知的参数信息作为起算条件。下一步将实现对各种类型的古建筑点云自动分割,初始参数将通过特征检测自动获取。

参考文献 (21)

目录

    /

    返回文章
    返回