首页> 中国专利> 一种基于机载LiDAR数据的建筑物屋顶重建方法

一种基于机载LiDAR数据的建筑物屋顶重建方法

摘要

本发明公开了一种基于机载LiDAR数据的建筑物屋顶重建方法,包括步骤:一、LiDAR点云数据获取;二、LiDAR点云数据处理,过程如下:201、建筑物屋顶面片分割,从建筑物屋顶分割出多个屋顶面片;202、建筑物屋面点云数据获取;203、建筑物屋面及各屋顶面片的外轮廓点提取,同时还需提取建筑物屋面的外边界线;204、屋顶面片矢量边界获取,过程如下:建立搜索信息集合、邻域搜索、外轮廓点类别确定和矢量边界确定;205、建筑物屋顶矢量模型获取:多个屋顶面片的矢量边界确定后,便获得建筑物屋顶的矢量模型。本发明方法步骤简单、设计合理且实现方便、使用效果好,能简便、快速且高质量完成建筑物屋顶的重建过程。

著录项

  • 公开/公告号CN104036544A

    专利类型发明专利

  • 公开/公告日2014-09-10

    原文格式PDF

  • 申请/专利权人 西安煤航信息产业有限公司;

    申请/专利号CN201410293086.1

  • 发明设计人 彭桂辉;段梦琦;杨培义;宋袁龙;

    申请日2014-06-25

  • 分类号G06T17/00(20060101);

  • 代理机构61213 西安创知专利事务所;

  • 代理人谭文琰

  • 地址 710054 陕西省西安市长胜街78号

  • 入库时间 2023-12-17 01:44:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-07-07

    未缴年费专利权终止 IPC(主分类):G06T17/00 专利号:ZL2014102930861 申请日:20140625 授权公告日:20160309

    专利权的终止

  • 2018-01-05

    专利权的转移 IPC(主分类):G06T17/00 登记生效日:20171215 变更前: 变更后: 申请日:20140625

    专利申请权、专利权的转移

  • 2016-03-09

    授权

    授权

  • 2014-10-15

    实质审查的生效 IPC(主分类):G06T17/00 申请日:20140625

    实质审查的生效

  • 2014-09-10

    公开

    公开

说明书

技术领域

本发明涉及一种建筑物屋顶建模方法,尤其是涉及一种基于机载LiDAR数据的建 筑物屋顶重建方法。

背景技术

三维建筑模型被广泛地应用在城市和区域规划、交通规划、人口估计和预测、污 染分析及能量预算等数字城市领域。传统的三维建模方法主要采用摄影测量等测绘手 段进行城市建模,需要在立体像对中进行量测,所提取的三维模型存在精度低、质量 差等问题,而且具有劳动强度大、成本高、周期长等缺点。

目前基于机载Lidar数据的建模技术已经有了长足的发展,通过数据滤波处理分 离地面点云,然后针对建筑物点云进行处理获得矢量模型,主要的方法包括模型驱动 法和数据驱动法两种。其中,模型驱动法通过对点云数据进行处理后,与事先建立的 建筑物模型库进行匹配,将匹配结果最好的模型单元作为建筑物形状进行重建。采用 模型驱动法生成的建筑物模型规则化程度较高,并且在数据获取当中由于局部遮挡造 成的部分信息损失也能够很好的弥补。例如Weiner利用数学形态学方法和数据本身 的集合特征从精细DEM模型中提取建筑物区域,然后通过模型单元实现对建筑物的重 建;Car Nardinocchi于2001年使用房屋结构重建分解了的建筑物形状,通过定义一 些常见的长方体、人字体等形状,每个结构的大小可以通过设置参数进行改变,通过 真实建筑物点云数据与模型库中形状的匹配重建建筑物模型。但现有模型驱动法的三 维重建方法都存在以下问题:

第一、模型库不完备:复杂建筑物的建筑物风格难以估计,很难利用模型库种的 简单集合模型组合成真正真实的建筑物模型;

第二、建筑物本身难以分解:算法针对点云数据类型,很难通过空间的集合分析 将复杂建筑物进行分解;

第三、模型单元在选择时,参数的匹配难以定性:不同点云数据密度不同,数据 库中间模型的形状也存在一定的重复,很难通过参数决定模型单元的选择。

数据驱动法是直接对数据进行处理,通过分析建筑物点云数据特征,唯一的确定 建筑物形状。数据的类型可能不单包括点云数据,也可能包括其他数据类型。2012年 06月27日公开的公开号为CN102521884A的发明专利申请文件中公开了一种基于 LiDAR数据与正射影像的3维屋顶重建方法,就是利用lidar数据与正射影像提取房 屋屋脊线从而重建模型的数据驱动法。这种方法一般需要通过分割的方法获取建筑物 各个屋顶的面片,并建立起拓扑关系,然后通过面片相交获得屋脊线,最后将建筑物 进行重建。例如,Rabbani等利用平面拟合残差近视平面曲率,将法向量和平面拟合 残差作为平滑约束条件进行区域生长;Palenichka等采用尺度自适应的区域增长算法 对Lidar距离影像进行多尺度分割。但上述数据驱动法的三维重建方法都存在以下问 题:

第一、对数据要求复杂:如公开号为CN102521884A的发明专利申请文件中所公 开的基于LiDAR数据与正射影像的3维屋顶重建方法,就需要lidar点云数据和相对 应的正射影像两种数据,这样就提高了建筑物重建的门坎,正射影像本身存在畸变且 不同的数据间匹配处理都会带来一定的误差;

第二、当点云密度低、噪声大甚至点云缺失的情况下,无法正确提取特征直线, 从而造成合并的错误;

第三、由于采用面面相交求交点的方法,所以当建筑物为多面(4个或以上)相 交于一点时,只能保证三个面的正确性,而其它面在相交点处形成阶跃;

第四、过于依赖分割的结果,在合并的过程中抛开了原始点云数据,无法判断错 误的分割结果;

第五、最终得到的是整个建筑的模型矢量,而不是各平面的模型矢量,因而当拓 扑关系出现错误时,矢量模型难以纠正。

发明内容

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于机载 LiDAR数据的建筑物屋顶重建方法,其方法步骤简单、设计合理且实现方便、使用效 果好,能简便、快速且高质量完成建筑物屋顶的重建过程。

为解决上述技术问题,本发明采用的技术方案是:一种基于机载LiDAR数据的建筑 物屋顶重建方法,其特征在于该方法包括以下步骤:

步骤一、LiDAR点云数据获取:采用机载LiDAR测量系统获取待测区域的点云数 据,并将所获取的点云数据传送至数据处理设备;所述点云数据中包括待测区域内多 个建筑物屋顶的点云数据,每个建筑物屋顶的点云数据均包括该建筑物屋顶的多个测 点及各测点的三维坐标;

步骤二、LiDAR点云数据处理:采用所述数据处理设备分别对多个建筑物的点云 数据进行处理,并获取各建筑物屋顶的矢量模型;多个建筑物的点云数据处理过程均 相同;对待测区域内的任一个建筑物的点云数据进行处理时,过程如下:

步骤201、建筑物屋顶面片分割:采用区域生长方法对当前所处理建筑物屋顶的 点云数据进行处理,从当前所处理建筑物屋顶分割出多个屋顶面片,并获得多个屋顶 面片的点云数据;之后,根据各屋顶面片的点云数据,且采用最小二乘法对各屋面面 片分别进行平面拟合,获得各屋顶面片所在平面的平面方程;同时,对多个屋顶面片 进行编号,并对多个屋顶面片的相邻关系分别进行记录,每个屋顶面片的相邻关系均 包括与该屋顶面片相邻的屋顶面片的数量以及各相邻屋顶面片的布设位置;

多个所述屋顶面片均为平面,每个屋顶面片的点云数据均包括位于该屋顶面片上 的多个测点及各测点的三维坐标;多个所述屋顶面片的数量为N'个,N'为正整数且N' ≥2;

步骤202、建筑物屋面点云数据获取:根据步骤201中所记录的多个屋顶面片的 相邻关系,将多个屋顶面片的点云数据组合形成当前所处理建筑物屋面的点云数据;

步骤203、建筑物屋面及各屋顶面片的外轮廓点提取:调用外轮廓点提取模块, 从步骤202中所获取的当前所处理建筑物屋面的点云数据中提取出当前所处理建筑物 屋面的多个外轮廓点,并获得当前所处理建筑物屋面的外轮廓点集合A';同时,分别 从步骤201中各屋顶面片的点云数据中提取出各屋顶面片的多个外轮廓点,并获得各 屋顶面片的外轮廓点集合;

步骤204、屋顶面片矢量边界获取:结合步骤201中多个屋顶面片的点云数据和 相邻关系以及步骤203中各屋顶面片的外轮廓点集合,获取多个屋顶面片的矢量边界; 多个屋顶面片的矢量边界获取方法均相同,对任一个屋顶面片Si的矢量边界进行获取 时,过程如下:

步骤2041、建立搜索信息集合:将多个所述屋顶面片中除屋顶面片S'i'之外的N'-1 个屋顶面片的点云数据,组合成搜索信息集合Ji';搜索信息集合Ji'中包括N'-1个子 集合,N'-1个子集合分别为N'-1个屋顶面片的点云数据;其中,i'为屋顶面片的编 号,i'为正整数且i'=1、2、…、N';

步骤2042、邻域搜索:对屋顶面片S'i'的外轮廓点集合中的各外轮廓点分别进行 邻域搜索,获得屋顶面片S'i'的邻域搜索信息,所述邻域搜索信息中包括屋顶面片S'i'的 所有外轮廓点的邻域搜索点及各邻域搜索点的三维坐标;

对屋顶面片S'i'的外轮廓点集合中任一个外轮廓点Ci'j'进行邻域搜索时,从步骤 201中所建立的搜索信息集合S'i中找出与外轮廓点Ci'j'距离最近的测点,所找出的测 点为外轮廓点Ci'j'的邻域搜索点,记作C'i'j'

其中,j'为正整数且j'=1、2、…、M',M'为屋顶面片S'i'的外轮廓点集合中外 轮廓点的总数量;

步骤2043、外轮廓点类别确定:先根据屋顶面片S'i'的外轮廓点集合中各外轮廓 点的三维坐标,沿逆时针方向或顺时针方向,由先至后对屋顶面片S'i'的外轮廓点集合 中的所有外轮廓点由先至后进行排序,再按照排序结果,由先至后对所述外轮廓点集 合中各外轮廓点的邻域搜索点进行处理,并得出各外轮廓点的类别,过程如下:

步骤Ⅰ、邻域搜索点所属屋顶面片编号确定:根据步骤2041中N'-1个所述子集 合,判断邻域搜索点C'i'j'所属的子集合;并根据所属的子集合,确定邻域搜索点C'i'j'所 属的屋顶面片,记录邻域搜索点C'i'j'所属屋顶面片的编号k',k'为正整数,k'=1、2、…、 N'且k'≠i';

步骤Ⅱ、外轮廓点类别确定:根据当前所处理建筑物屋面的外轮廓点集合A',判 断外轮廓点Ci'j'是否属于外轮廓点集合A':当外轮廓点Ci'j'属于外轮廓点集合A'时,外 轮廓点Ci'j'的类别为外边界线且其类别编号为U;否则,根据外轮廓点Ci'j'和邻域搜索 点C'i'j'的三维坐标,得出外轮廓点Ci'j'和邻域搜索点C'i'j'的高程差Δhij:当Δhij≤Δh0时, 外轮廓点Ci'j'的类别为屋脊线且其类别编号记作Tk';当Δhij>Δh0时,外轮廓点Ci'j'的 类别为阶跃线且其类别编号记作Wk';其中,Δh0=0.2m~0.4m;

步骤Ⅲ、按照步骤Ⅰ至步骤Ⅱ中所述的方法,对下一个外轮廓点的类别进行确定;

步骤Ⅳ、多次重复步骤Ⅲ,直至完成屋顶面片S'i'的外轮廓点集合中所有外轮廓点 的类别确定过程;

步骤2044、矢量边界确定:根据步骤2043中所确定屋顶面片Si的外轮廓点集合 中各外轮廓点的类别,并结合屋顶面片S'i'的外轮廓点集合中各外轮廓点的三维坐标和 步骤201中所记录的屋顶面片S'i'的相邻关系,对屋顶面片S'i'的矢量边界进行确定;

步骤2045、多次重复步骤2041至步骤2044,直至完成多个屋顶面片的矢量边界 确定过程;

步骤205、建筑物屋顶矢量模型获取:待步骤204中多个屋顶面片的矢量边界确 定后,便获得当前所处理建筑物屋顶的矢量模型。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤201中进 行建筑物屋顶面片分割时,先将当前所处理建筑物屋顶的点云数据构建kd树,再从 当前所处理建筑物屋顶的点云数据中随机选取一个测点作为种子点,并采用K邻近搜 索算法搜索出多个邻近点,搜索出的多个邻近点与所述种子点组成邻近点集;之后, 计算出所述邻近点集的法向量,并按照计算出的法向量进行区域生长,便分割出一个 屋顶面片,且将所分割出的屋顶面片中的所有测点均从当前所处理建筑物屋顶的点云 数据中删除;然后,按照对当前所处理建筑物屋顶的点云数据中剩余的点云数据再次 进行屋顶面片分割,直至分割出所有屋顶面片;

其中,对所述邻近点集的法向量进行计算时,先对所述邻近点集中所有测点的法 向量进行计算;之后,将所述邻近点集中所有测点的法向量叠加后,获得所述邻近点 集的法向量;

所述邻近点集中所包含测点的数量为D'个,D'个测点由先至后分别为Clj1、 Clj2、…、CljD',其中Clj1又记作Clj(D'+1);D'个测点中任一个测点Cljd'的法向量为 (Nd'.X,Nd'.Y,Nd'.Z),Nd'.X=(Cljd'.z+Clj(d'+1).z)×(Cljd'.y-Clj(d'+1).y), Nd'.Y=(Cljd'i.x+Clj(d'+1).x)×(Cljd'.z-Clj(d'+1).z),Nd'.Z=(Cljd'.y+Clj(d'+1).y)× (Cljd'.x-Clj(d'+1).x);其中,测点Cljd'的三维坐标为(Cljd'.x,Cljd'.y,Cljd'.z),测点Clj(d'+1)的三维坐标为(Clj(d'+1).x,Clj(d'+1).y,Clj(d'+1).z)。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤2042中 对外轮廓点Ci'j'进行邻域搜索时,以外轮廓点Ci'j'为中心且以0.5m~1.5m为搜索半径 进行搜索。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤204中进 行屋顶面片矢量边界获取之前,还需根据步骤203中所获取的当前所处理建筑物屋面 的外轮廓点集合,调用外边界线提取模块,提取出当前所处理建筑物屋面的外边界线。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤Ⅱ中当Δhij>Δh0时,还需对外轮廓点Ci'j'和邻域搜索点C'i'j'的高程进行比较,并建立阶跃线类别 集合Wk',且将外轮廓点Ci'j'和邻域搜索点C'i'j'中高程高的点放入阶跃线类别集合Wk'中;

步骤Ⅲ中对下一个外轮廓点的类别进行确定时,当当前所确定外轮廓点和其邻域 搜索点的高程差>Δh0时,还需对当前所确定外轮廓点和其邻域搜索点的高程进行比 较:当阶跃线类别集合Wm'已建立时,将当前所确定外轮廓点和其邻域搜索点中高程 高的点放入集合Wm'中;否则,需建立阶跃线类别集合Wm',并将当前所确定外轮廓点 和其邻域搜索点中高程高的点放入集合Wm'中;其中,m'为当前所确定外轮廓点的邻 域搜索点所属屋顶面片的编号,m'为正整数,m'=1、2、…、N'且m'≠i'。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤2044中 进行矢量边界确定之前,还需根据屋顶面片S'i'的外轮廓点集合中各外轮廓点的三维坐 标,沿逆时针方向或顺时针方向,由先至后对屋顶面片S'i'的外轮廓点集合中的所有外 轮廓点进行排序,并根据外轮廓点的排序结果,对步骤2043中得出的所有外轮廓点 的类别编号进行排序,获得屋顶面片S'i'的外轮廓点类别编号序列;

排序完成后,屋顶面片S'i'中相邻两个外轮廓点的类别编号相邻;所述外轮廓点类 别编号序列中,多个外轮廓点的类别编号由先至后分别记作Li'1、Li'2、…、Li'M'

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤Ⅱ中类别 编号Tk'中,T表示类别为屋脊线,k'表示在外轮廓点Ci'j'的位置处屋顶面片S'i'与编号 为k'的屋顶面片相交;

类别编号记作Wk'中,W表示类别为阶跃线,k'表示在外轮廓点Ci'j'的位置处屋顶 面片S'i'与编号为k'的屋顶面片之间形成高低面;

步骤2044中进行矢量边界确定时,由先至后对步骤2043中所述外轮廓点类别编 号序列中相邻两个类别编号分别进行矢量边界点提取处理,过程如下:

步骤ⅰ、对类别编号Li'1和Li'2进行矢量边界点提取处理:先判断Li1和Li2是否相同: 当Li1=Li2时,完成矢量边界点提取过程;否则,获取与类别编号Li'1和Li'2对应的矢量 边界点,过程如下:

当Li'1=Tg'且Li'2=Th'时,先计算出屋顶面片S'i'与编号为g'的屋顶面片之间的相交 直线段lg'和屋顶面片S'i'与编号为h'的屋顶面片之间的相交直线段lh',再计算出直线段 lg'和lh'的交点Cg'h',交点Cg'h'为与类别编号Li'1和Li'2对应的矢量边界点;

当Li'1和Li'2中一个编号为Ta'且另一编号为U时,先计算出屋顶面片S'i'与编号为a' 的屋顶面片之间的相交直线段la',再结合屋顶面片S'i'的相邻关系,计算出直线段la'与 当前所处理建筑物屋面的外边界线之间的交点Ca',Ca'为与类别编号Li'1和Li'2对应的 矢量边界点;

当Li'1和Li'2中一个编号为Wb'且另一编号为U时,先根据阶跃线类别集合Wb'中所 有点的三维坐标,采用最小二乘法拟合出集合Wk'中所有点所处的直线lb',再结合屋顶 面片S'i'的相邻关系,计算出直线lb'与当前所处理建筑物屋面的外边界线之间的交点 Cb',Cb'位于屋顶面片S'i'与编号为b'的屋顶面片的交界线上,Cb'为与类别编号Li'1和 Li'2对应的矢量边界点;

当Li'1和Li'2中一个编号为Te'且另一编号为Wf'时,先计算出屋顶面片S'i'与编号为 e'的屋顶面片之间的相交直线段le';同时,根据阶跃线类别集合Wf'中所有点的三维 坐标,采用最小二乘法拟合出集合Wf'中所有点所处的直线lf',再结合屋顶面片S'i'的 相邻关系,计算出直线段le'与直线lf'之间的交点Ce'f',Ce'f'为与类别编号Li'1和Li'2对 应的矢量边界点;

当Li'1=Wp'且Li'2=Wq'时,根据阶跃线类别集合Wp'中所有点的三维坐标,采用最小 二乘法拟合出集合Wp'中所有点所处的直线lp';同时,根据阶跃线类别集合Wq'中所有 点的三维坐标,采用最小二乘法拟合出集合Wq'中所有点所处的直线lq',再计算出直线 lp'和lq'的交点Cp'q',交点Cp'q'为与类别编号Li'1和Li'2对应的矢量边界点;

其中,g'、h'、a'、b'和e'均为屋顶面片的编号;

步骤ⅱ、对类别编号Li't'和Li'(t'+1)进行矢量边界点提取处理:按照步骤ⅰ中所述的 方法,对类别编号Li't'和Li'(t'+1)进行矢量边界点提取处理;其中,t'为正整数且t'=1、 2、…、M';其中,Li'1又记作Li'(M'+1)

步骤ⅲ、多次重复步骤ⅱ,直至完成所述外轮廓点类别编号序列中任意相邻两个 类别编号的矢量边界点提取处理过程;

步骤ⅳ、将步骤ⅰ至步骤ⅲ中所提取的所有矢量边界点,按照提取的先后顺序由 先至后连接,获得屋顶面片S'i'的矢量边界。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤203中所 述外轮廓点集合A'中包括当前所处理建筑物屋面的多个外轮廓点及各外轮廓点的三 维坐标,各屋顶面片的外轮廓点集合中包括该屋顶面片上的多个外轮廓点及各外轮廓 点的三维坐标;

步骤203中对当前所处理建筑物屋面的外轮廓点进行提取时,从当前所处理建筑 物屋面的二维数据集中,提取多个外轮廓点,并形成外轮廓点集合A″;所述外轮廓点 集合A″中外轮廓点的数量为N个,所述外轮廓点集合A″中包含N个外轮廓点的二维 数据,N个所述外轮廓点连接形成当前所处理建筑物屋面的外轮廓线;之后,根据步 骤202中当前所处理建筑物屋面的点云数据,获取外轮廓点集合A″中各外轮廓点的三 维坐标;

当前所处理建筑物屋面的二维数据集包括当前所处理建筑物的点云数据中多个 测点在X-Y平面直角坐标系上的二维坐标;

步骤203中对各屋顶面片的外轮廓点进行提取时,所有屋顶面片的外轮廓点提取 方法均与当前所处理建筑物屋面的外轮廓点的提取方法相同;其中,对屋顶面片S'i'的 外轮廓点进行提取时,从屋顶面片S'i'的二维数据集中,提取M'个外轮廓点,并形成 外轮廓点集合B″;所述外轮廓点集合B″中外轮廓点的数量为M'个,所述外轮廓点集 合B″中包含M'个外轮廓点的二维数据;之后,根据步骤201中屋顶面片S'i'的点云数 据,获取外轮廓点集合B″中各外轮廓点的三维坐标;

屋顶面片S'i'的二维数据集包括屋顶面片S'i'的点云数据中多个测点在X-Y平面直 角坐标系上的二维坐标;

对当前所处理建筑物屋面的外边界线进行提取时,过程如下:

步骤2031、特征点提取:采用道格拉斯-普扑克算法对所述外轮廓线进行特征点 提取,并从所述外轮廓点集合A″提取出S个特征点,S个特征点分别记作S1、S2、…、 SS

步骤2032、最小二乘法直线拟合及初始边界线获取:对S个特征点中相邻两个特 征点所在的直线分别进行拟合,并获得S条拟合直线;S条拟合直线相交形成的封闭 曲线为当前所处理建筑物的初始边界线,所述初始边界线由多个直线段连接而成;

对S个特征点中相邻两个特征点Sa和Sb进行直线拟合时,先将特征点Sa和Sb以 及步骤201中所述外轮廓点集合中特征点Sa和Sb之间的所有外轮廓点组成直线点集, 再利用最小二乘法对所述直线点集进行直线拟合,获得特征点Sa和Sb所在的拟合直 线;其中,a和b均为正整数且a≠b,a=1、2、…、S,b=1、2、…、S;

步骤2033、建筑物主方向及副方向确定:先对步骤2032中所述初始边界线中的 多个直线段的方向向量进行确定,再对多个直线段的方向向量的权重分别进行计算, 并将权重最大的直线段的方向向量作为当前所处理建筑物的主方向,将当前所处理建 筑物的主方向的正交向量作为当前所处理建筑物的副方向;

步骤2034、初始边界线规则化:对步骤2032中所述初始边界线中的多个直线段 分别进行规则化处理;

对所述初始边界线中任一个直线段进行规则化处理时,过程如下:

步骤2034-1、规则化方向确定:根据步骤2033中所确定的主方向和副方向以及 当前所处理直线段的方向向量,对当前所处理直线段的规则化方向进行确定:当当前 所处理直线段的方向向量更靠近主方向时,以主方向作为规则化方向;反之,当当前 所处理直线段的方向向量更靠近副方向时,以副方向作为规则化方向;

步骤2034-2、是否需进行规则化判断:计算当前所处理直线段在步骤2034-1中 所确定规则化方向上的投影长度L,并根据投影长度L对当前所处理直线段是否需进 行规则化进行判断:当投影长度L≤L0时,进入步骤2034-3;否则,无需进行规则化 处理,将当前所处理直线段所在的直线作为其规则化直线;其中,L0=50cm~1m。

步骤2034-3、规则化处理:以当前所处理直线段的中点为起点,且以步骤2034-1 中所确定的规则化方向为方向向量,生成当前所处理直线段的规则化直线;

步骤2035、规则化边界线获取:步骤2034中所述初始边界线中的多个直线段均 规则化处理完成后,多个直线段的规则化直线相交形成的封闭曲线为当前所处理建筑 物的规划化边界线。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:步骤2031中 采用道格拉斯-普扑克算法对所述外轮廓线进行特征点提取后,所提取的特征点数量 为M个,其中M为正整数且M≥S;M个特征点组成特征点集合,S个特征点分别记作S1、 S2、…、SM,特征点S1又记作特征点SM+1

特征点提取完成后,还需对所提取的M个特征点分别进行判定;其中,对M个特 征点中任一个特征点Sh进行判定时,判断特征点Sh与直线Sh-1Sh+1之间的距离dh是否大 于d0:当dh>d0时,在所述特征点集合中保留特征点Sh;否则,从所述特征点集合 中删除特征点Sh,并将特征点Sh标记为非特征点;

直线Sh-1Sh+1为特征点Sh-1和Sh+1所在的直线,特征点Sh-1和Sh+1为与特征点Sh相邻 的两个特征点;其中,h为正整数且h=1、2、…、M;

对M个特征点分别进行判定后,所述特征点集合中特征点的数量为S个。

上述一种基于机载LiDAR数据的建筑物屋顶重建方法,其特征是:所述外轮廓点 集合A''中的N个所述外轮廓点,分别记作A0、A1、A2、…、AN-1

步骤203中对当前所处理建筑物屋面的外轮廓点进行提取时,过程如下:

步骤2011、构建kd树:将当前所处理建筑物屋面的点云数据中,多个测点在X-Y 平面直角坐标系上的二维坐标构建kd树;

步骤2012、邻域搜索:利用步骤2011中所构建的kd树在X-Y平面上进行邻域搜 索,找出当前所处理建筑物屋面的所有外轮廓点,X-Y平面为X-Y平面直角坐标系所 在的水平面;邻域搜索过程如下:

步骤20121、第一次搜索:以极值点A0作为本次搜索的搜索点O1且以X坐标轴的 负半轴作为基准向量进行邻域搜索,并在当前搜索点O1的邻域内找出旋转角度最小的 测点,所找出的测点为第一次搜索出的外轮廓点A1

当前搜索点的邻域内任一测点Ci的旋转角度为由基准向量逆时针旋转至向量 的旋转角度;极值点A0为当前所处理建筑物的点云数据中X轴坐标值最大、X轴 坐标值最小、Y轴坐标值最大或Y轴坐标值最小的测点;

步骤20122、第j次搜索:以第j-1次搜索出的外轮廓点Aj-1作为本次搜索的搜索 点Oj且以向量为基准向量进行邻域搜索,并按照步骤20121中所述的方法, 在当前搜索点Oj的邻域内找出旋转角度最小的测点,所找出的测点为第j次搜索出的 外轮廓点Aj

其中,j为正整数且j≥2;当j=2时,Aj-2=A0;当j>2时,Aj-2为第j-2次搜 索出的外轮廓点;

步骤20123、多次重复步骤20122,直至搜索出的外轮廓点为A0时,完成邻域搜 索过程;

步骤2012中进行邻域搜索过程中,将极值点A0和各次搜索到的外轮廓点均标记 为已用点;

步骤20123中,多次重复步骤20122且完成第n次搜索后,获得第n次搜索出的 外轮廓点An,并将外轮廓点An标记为已用点;之后,按照步骤20122中所述的方法, 将An作为搜索点,进行第n+1次搜索,且当第n+1次搜索过程中搜索到的外轮廓点为 标记的已用点时,将外轮廓点An标记为不可用点;然后,按照An-1、An-2、…、A1顺 序,由先至后对标记为有用点的外轮廓点进行回滚搜索,过程如下:

步骤Ⅰ-1、第一次回滚搜索:对第(n-1)次搜索出的外轮廓点An-1进行回滚搜索, 过程如下:

步骤Ⅰ-11、第一次邻域搜索:按照步骤20121中所述的方法,以外轮廓点An-1作 为本次搜索的搜索点O11且以向量为基准向量进行邻域搜索;

步骤Ⅰ-12、第一次邻域搜索结果处理:步骤Ⅰ-11中搜索完成后,当在当前搜索 点O11的邻域测点集合S'(n-1)中不能找出旋转角度最小的测点时,将外轮廓点An-1标记 为不可用点,并进入步骤Ⅱ-1,进行下一次回滚搜索;

反之,当在邻域测点集合S'(n-1)中找出旋转角度最小的测点时,将所找出的测 点作为回滚搜索过程中第一次搜索出的外轮廓点A11,且将外轮廓点A11标记为已用点, 并判断外轮廓点A11是否为极值点A0:当外轮廓点A11为极值点A0时,完成回滚搜索过 程;否则,进入步骤Ⅰ-13,进行下一次邻域搜索;

步骤2012中进行邻域搜索过程中,第(n-1)次搜索时,当前搜索点On-1的邻域 内所有测点组成邻域测点集合S(n-1);所述邻域测点集合S(n-1)中的所有未标记的测 点组成邻域测点集合S'(n-1);

步骤Ⅰ-13、第k次邻域搜索:以回滚搜索过程中第(k-1)次搜索出的外轮廓点 A1(k-1)作为本次搜索的搜索点O1k且以向量为基准向量进行邻域搜索,并按 照步骤20121中所述的方法,在当前搜索点O1k的邻域内找出旋转角度最小的测点, 所找出的测点为回滚搜索过程中第k次搜索出的外轮廓点A1k

其中,k为正整数且k≥2;当k=2时,A1(k-2)=O11,A1(k-1)=A11;当j>2时,A1(k-2)为回滚搜索过程中第(k-2)次搜索出的外轮廓点;

步骤Ⅰ-14、第k次邻域搜索结果处理:步骤Ⅰ-13中搜索完成后,判断第k次搜 索出的外轮廓点A1k是否为极值点A0:当外轮廓点A1k为极值点A0时,完成回滚搜索过 程;否则,返回步骤Ⅰ-13,进行下一次邻域搜索;

步骤Ⅱ-1、第h次回滚搜索:按照步骤Ⅰ-1中所述的方法,对步骤2012中第 (n-h+1)次搜索出的外轮廓点An-h+1进行回滚搜索,直至完成回滚搜索过程;其中, h为正整数且h≥2;

步骤2012中完成回滚搜索过程后,当前状态下所有标记为已用点的测点组成步 骤201中所述外轮廓点集合,并且所有标记为已用点的测点总数量为N个。

本发明与现有技术相比具有以下优点:

1、方法步骤简单、设计合理且实现方便。

2、使用操作简便且易于掌握,具体过程如下:首先,对滤波处理后的建筑物屋 顶点云数据建立kd树,利用法向量将建筑物屋顶分割成多个屋顶面片,再根据屋顶 面片的点云集合最小二乘法计算各屋顶面片的平面方程;之后,再根据多个屋顶面片 的点云集合,用邻域搜索追踪的方法得到各屋顶面片的外轮廓点云及建筑物屋顶的外 轮廓点云,对建筑物屋顶的外轮廓点云采用最小二乘法拟合直线得出原始的外边界, 再通过确定建筑的主方向规则化建筑物屋顶的外边界线;随后,对各屋顶面片的外轮 廓点云进行建筑物内的拓扑搜索,并根据不同的搜索结果对各外轮廓点进行分类(屋 脊线、阶跃线和外边界线);随后,将连续的同一类型的搜索点归入一个集合中,面 片的外轮廓点云转化为连续的类别编号序列,再根据别编号序列的先后顺序做相应的 矢量边界点提取处理,便得到各屋顶面片的矢量边界,从而获得建筑物屋顶的矢量模 型。

3、建筑物屋面外边界线提取方法简单、设计合理且使用效果好,具体过程如下: 首先,对滤波处理后的建筑物点云数据建立kd树,利用邻域搜索加逆时针旋转查找 旋转角度最小的外部点,得到建筑物外轮廓点云;其次,根据外轮廓点云集合,用道 格拉斯-普克算法提取拐点点云,拐点通过二次判定去除误差点;之后,对连续拐点 间的点最小二乘拟合直线,连接相邻直线交点得到原始的外边界;然后,以外边界线 段的方向向量为基准,计算出所有外边界线段与基准方向基准的角度,角度小于阈值 时基准向量叠加外边界线段的方向向量,否则叠加外边界线段的方向向量的正交向 量,这样通过计算,权重向量长度最长的向量的方向为建筑物的主方向,垂直方向为 副方向;计算原始外边界与主方向或副方向的投影长度,小于长度阈值则按主方向或 副方向规则化外边界线。所采用的外边界线提取方法不借助传统遥感图像处理方法, 避免了从点云内插成二值图像过程中带来的误差。并且,在不构建三角网结构的基础 上,直接分析点云的三维空间信息,降低了计算过程的复杂度和占用的空间,计算过 程中只分析了一部分符合空间结构的点云,无需对所有点云数据进行分析、处理,因 而处理效率高、速度快。

边界点搜索过程(即建筑物外轮廓点提取过程)中加入了回滚搜索方式,当认为 某一外轮廓点提取错误时,会回滚到上一个外轮廓点重新搜索,增强了算法的鲁棒性。 与传统回滚方式不同,在回滚过程中会标记检测错误的点,在后面的分析中不再考虑, 这样保证了提取过程一定会得到唯一确定的结果。同时,改进了传统道格拉斯-普克 拐点提取的方法,在二次判断检查的过程中,剔除了错误的拐点。同时,利用最小二 乘法保证了拐点间的点也被考虑进边界提取的过程中,因而本发明为一种多种提取方 式组合的组合式外边界提取方法,这种组合式提取方法最大程度地保证了边界点云的 特征。在不构建三角网的基础上,直接分析点云空间坐标,提取建筑物外轮廓点云, 生成矢量边界线。另外,采用的主方向提取方法,利用长度作为权重,保证在最小程 度改变外边界方向的前提下,规则化矢量边界,使生成的矢量边界线能最大程度地与 点云套合。综上,本发明利用点云数据集合,解决了无法精确、快速提取建筑物外边 界的问题,不需要构建三角网或者内插格网,运行效率高、速度快、占用空间小,并 且得到的外边界矢量规则化程度高,符合建筑建模需求。

4、本发明在屋顶面片分割的基础上,基于屋顶面片外轮廓点云,逐一重建建筑 物屋顶的多面结构,其结合分割得到的结果以及合并时外轮廓邻域内的信息,保留点 云数据信息,还原建筑物矢量模型。相比于其他数据驱动类的方法,本发明的主要优 势在于三维重建得到的建筑物模型正确性和完整性较高。相比于整体建筑特征提取, 再计算合并的方法,将建筑物屋顶的整体重建变为了屋顶面片的重建,实现方便。同 一条屋脊线在不同面片中进行了两次计算,最大程度地保留了细节的特征和面片间的 拓扑关系。同时,考虑到了LiDAR数据的高程特征,利用高点的坐标处理阶跃线,同 时根据房屋主方向规则化阶跃线,因而兼顾了模型精度和规则化程度。本发明不需要 其他辅助数据的支持,具有较高的自动化程度和重建精度。对于具有复杂结构的建筑 物重建,得到更理想的矢量模型结果,为复杂结构建筑物的重建提供了一种新的方法。

5、使用效果好,本发明在利用机载LiDAR数据,提出了一种顾及多面片拓扑关 系的建筑物三维建模的方法。针对多面片建筑物的特点延伸的按照屋脊线、阶跃线和 边界线分类的处理面片的矢量边界,而不是传统的提取建筑物内的特征线;并提出了 不同类别矢量线间的处理方法,保证了模型在分割的基础上,最大程度地还原点云的 三维空间特征。

由于LiDAR点云数据数据本身易获取且成本低,可快速对现实城市中各种房屋类 型的建筑要素精确定位、准确提取三维坐标信息。本发明在此基础上提出了一种快速 高效的三维建模方案,完全自动化的重建三维建筑模型。在数据组织上不需要构建三 角网或栅格化处理点云,直接利用kd树分析点云的三维空间结构,节省了资源空间, 大量减少了工作量,提高了方法的运行速度,降低了建模成本。

综上所述,本发明方法步骤简单、设计合理且实现方便、使用效果好,能简便、 快速完成建筑物屋顶的重建过程,并且所建模型的精确度高,其利用LiDAR点云数据 的空间结构,解决了复杂建筑物模型三维重建的问题,具有运行效率高、速度快等特 点,得到的模型最大程度保留了点云细节,精确度高、鲁棒性强。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明的方法流程框图。

图2为所获取建筑物屋面的点云图。

图3为采用本发明所获取建筑物屋面外边界线的点云图。

图4为采用本发明获取的建筑物屋顶的矢量模型图。

图5为对本发明获取的建筑物屋顶矢量模型进行渲染后的模型图。

具体实施方式

如图1所示的一种基于机载LiDAR数据的建筑物屋顶重建方法,包括以下步骤:

步骤一、LiDAR点云数据获取:采用机载LiDAR测量系统获取待测区域的点云数 据,并将所获取的点云数据传送至数据处理设备;所述点云数据中包括待测区域内多 个建筑物屋顶的点云数据,每个建筑物屋顶的点云数据均包括该建筑物屋顶的多个测 点及各测点的三维坐标。

本实施例中,进行LiDAR点云数据处理之前;先通过设置高程阈值对所获取的点 云数据进行滤波,去除所述点云数据中需处理建筑物之外的其它地物的点云数据。同 时,还需对滤波后的点云数据进行分类,找出待测区域内各建筑物的点云数据。

本实施例中,如图2所示,所获取的点云数据为一个住宅区的点云数据,点云密 度为30点/m2,平均点间距约20cm。

步骤二、LiDAR点云数据处理:采用所述数据处理设备分别对多个建筑物的点云 数据进行处理,并获取各建筑物屋顶的矢量模型;多个建筑物的点云数据处理过程均 相同;对待测区域内的任一个建筑物的点云数据进行处理时,过程如下:

步骤201、建筑物屋顶面片分割:采用区域生长方法对当前所处理建筑物屋顶的 点云数据进行处理,从当前所处理建筑物屋顶分割出多个屋顶面片,并获得多个屋顶 面片的点云数据;之后,根据各屋顶面片的点云数据,且采用最小二乘法对各屋面面 片分别进行平面拟合,获得各屋顶面片所在平面的平面方程;同时,对多个屋顶面片 进行编号,并对多个屋顶面片的相邻关系分别进行记录,每个屋顶面片的相邻关系均 包括与该屋顶面片相邻的屋顶面片的数量以及各相邻屋顶面片的布设位置。

多个所述屋顶面片均为平面,每个屋顶面片的点云数据均包括位于该屋顶面片上 的多个测点及各测点的三维坐标;多个所述屋顶面片的数量为N'个,N'为正整数且N' ≥2。

本实施例中,步骤201中进行建筑物屋顶面片分割时,先将当前所处理建筑物屋 顶的点云数据构建kd树,再从当前所处理建筑物屋顶的点云数据中随机选取一个测 点作为种子点,并采用K邻近搜索算法搜索出多个邻近点,搜索出的多个邻近点与所 述种子点组成邻近点集;之后,计算出所述邻近点集的法向量,并按照计算出的法向 量进行区域生长,便分割出一个屋顶面片,且将所分割出的屋顶面片中的所有测点均 从当前所处理建筑物屋顶的点云数据中删除;然后,按照对当前所处理建筑物屋顶的 点云数据中剩余的点云数据再次进行屋顶面片分割,直至分割出所有屋顶面片。此处, 所构建的kd树为三维kd树。

其中,对所述邻近点集的法向量进行计算时,先对所述邻近点集中所有测点的法 向量进行计算;之后,将所述邻近点集中所有测点的法向量叠加后,获得所述邻近点 集的法向量。

本实施例中,采用K邻近搜索算法搜索出邻近点的数量为15个~20个。,

所述邻近点集中所包含测点的数量为D'个,D'个测点由先至后分别为Clj1、 Clj2、…、CljD',其中Clj1又记作Clj(D'+1);D'个测点中任一个测点Cljd'的法向量为 (Nd'.X,Nd'.Y,Nd'.Z),Nd'.X=(Cljd'.z+Clj(d'+1).z)×(Cljd'.y-Clj(d'+1).y), Nd'.Y=(Cljd'i.x+Clj(d'+1).x)×(Cljd'.z-Clj(d'+1).z),Nd'.Z=(Cljd'.y+Clj(d'+1).y)× (Cljd'.x-Clj(d'+1).x);其中,测点Cljd'的三维坐标为(Cljd'.x,Cljd'.y,Cljd'.z),测点Clj(d'+1)的三维坐标为(Clj(d'+1).x,Clj(d'+1).y,Clj(d'+1).z)。

本实施例中,根据各屋顶面片的点云数据,且采用最小二乘法对各屋面面片分别 进行平面拟合时,所用的平面模型为A1×x+B1×y+C1×z=n1。

步骤202、建筑物屋面点云数据获取:根据步骤201中所记录的多个屋顶面片的 相邻关系,将多个屋顶面片的点云数据组合形成当前所处理建筑物屋面的点云数据。

步骤203、建筑物屋面及各屋顶面片的外轮廓点提取:调用外轮廓点提取模块, 从步骤202中所获取的当前所处理建筑物屋面的点云数据中提取出当前所处理建筑物 屋面的多个外轮廓点,并获得当前所处理建筑物屋面的外轮廓点集合A'。同时,分别 从步骤201中各屋顶面片的点云数据中提取出各屋顶面片的多个外轮廓点,并获得各 屋顶面片的外轮廓点集合。

步骤204、屋顶面片矢量边界获取:结合步骤201中多个屋顶面片的点云数据和 相邻关系以及步骤203中各屋顶面片的外轮廓点集合,获取多个屋顶面片的矢量边界; 多个屋顶面片的矢量边界获取方法均相同,对任一个屋顶面片Si的矢量边界进行获取 时,过程如下:

步骤2041、建立搜索信息集合:将多个所述屋顶面片中除屋顶面片S'i'之外的N'-1 个屋顶面片的点云数据,组合成搜索信息集合Ji';搜索信息集合Ji'中包括N'-1个子 集合,N'-1个子集合分别为N'-1个屋顶面片的点云数据;其中,i'为屋顶面片的编 号,i'为正整数且i'=1、2、…、N'。

步骤2042、邻域搜索:对屋顶面片S'i'的外轮廓点集合中的各外轮廓点分别进行 邻域搜索,获得屋顶面片S'i'的邻域搜索信息,所述邻域搜索信息中包括屋顶面片S'i'的 所有外轮廓点的邻域搜索点及各邻域搜索点的三维坐标。

对屋顶面片S'i'的外轮廓点集合中任一个外轮廓点Ci'j'进行邻域搜索时,从步骤 201中所建立的搜索信息集合S'i中找出与外轮廓点Ci'j'距离最近的测点,所找出的测 点为外轮廓点Ci'j'的邻域搜索点,记作C'i'j'

其中,j'为正整数且j'=1、2、…、M',M'为屋顶面片S'i'的外轮廓点集合中外 轮廓点的总数量。

步骤2043、外轮廓点类别确定:先根据屋顶面片S'i'的外轮廓点集合中各外轮廓 点的三维坐标,沿逆时针方向或顺时针方向,由先至后对屋顶面片S'i'的外轮廓点集合 中的所有外轮廓点由先至后进行排序,再按照排序结果,由先至后对所述外轮廓点集 合中各外轮廓点的邻域搜索点进行处理,并得出各外轮廓点的类别,过程如下:

步骤Ⅰ、邻域搜索点所属屋顶面片编号确定:根据步骤2041中N'-1个所述子集 合,判断邻域搜索点C'i'j'所属的子集合;并根据所属的子集合,确定邻域搜索点C'i'j'所 属的屋顶面片,记录邻域搜索点C'i'j'所属屋顶面片的编号k',k'为正整数,k'=1、2、…、 N'且k'≠i'。

步骤Ⅱ、外轮廓点类别确定:根据当前所处理建筑物屋面的外轮廓点集合A',判 断外轮廓点Ci'j'是否属于外轮廓点集合A':当外轮廓点Ci'j'属于外轮廓点集合A'时,外 轮廓点Ci'j'的类别为外边界线且其类别编号为U;否则,根据外轮廓点Ci'j'和邻域搜索 点C'i'j'的三维坐标,得出外轮廓点Ci'j'和邻域搜索点C'i'j'的高程差Δhij:当Δhij≤Δh0时, 外轮廓点Ci'j'的类别为屋脊线且其类别编号记作Tk';当Δhij>Δh0时,外轮廓点Ci'j'的 类别为阶跃线且其类别编号记作Wk';其中,Δh0=0.2m~0.4m。

步骤Ⅱ中,当外轮廓点Ci'j'的类别为屋脊线时,说明屋顶面片S'i'在外轮廓点Ci'j'的 位置处与编号为k'的屋顶面片相交;当外轮廓点Ci'j'的类别为阶跃线时,说明屋顶面 片S'i'与编号为k'的屋顶面片在外轮廓点Ci'j'的位置处阶跃形成高低面;当外轮廓点 Ci'j'的类别为外边界线时,说明屋顶面片S'i'的外轮廓点Ci'j'为当前所处理建筑物屋面 的外边界点。

步骤Ⅲ、按照步骤Ⅰ至步骤Ⅱ中所述的方法,对下一个外轮廓点的类别进行确定。

步骤Ⅳ、多次重复步骤Ⅲ,直至完成屋顶面片S'i'的外轮廓点集合中所有外轮廓点 的类别确定过程。

本实施例中,对步骤Ⅱ中外轮廓点类别进行确定时,当外轮廓点Ci'j'的类别为外 边界线且其类别编号为U时,建立边界线类别集合U,并将邻域搜索点C'i'j'放入集合 U中;当外轮廓点Ci'j'的类别为屋脊线且其类别编号记作Tk'时,建立屋脊线类别集合 Tk',并将邻域搜索点C'i'j'放入集合Tk'中;步骤Ⅲ中对下一个外轮廓点的类别进行确定 时,当当前所确定外轮廓点和其邻域搜索点的高程差≤Δh0且阶跃线类别集合Tm'已建 立时,将当前所确定外轮廓点的邻域搜索点放入集合Tm'中;否则,需建立屋脊线类别 集合Tm',并将当前所确定外轮廓点的邻域搜索点放入集合Tm'中;其中,m'为当前所 确定外轮廓点的邻域搜索点所属屋顶面片的编号,m'为正整数,m'=1、2、…、N'且 m'≠i'。也就是说,将连续的相同类别编号的点放入到同一集合中。

另外,步骤2042进行邻域搜索过程中,未查找到邻域搜索点时,则将外轮廓点Ci'j' 放入集合K',步骤2043中进行外轮廓点类别确定和步骤2044中进行矢量边界确定时, 无需考虑放入集合K'中的外轮廓点。

步骤2044、矢量边界确定:根据步骤2043中所确定屋顶面片Si的外轮廓点集合 中各外轮廓点的类别,并结合屋顶面片S'i'的外轮廓点集合中各外轮廓点的三维坐标和 步骤201中所记录的屋顶面片S'i'的相邻关系,对屋顶面片S'i'的矢量边界进行确定。

步骤2045、多次重复步骤2041至步骤2044,直至完成多个屋顶面片的矢量边界 确定过程。

步骤205、建筑物屋顶矢量模型获取:待步骤204中多个屋顶面片的矢量边界确 定后,便获得当前所处理建筑物屋顶的矢量模型,详见图4。对图4中的矢量模型进 行渲染后,获得的模型详见图5。

本实施例中,步骤204中进行屋顶面片矢量边界获取之前,还需根据步骤203中 所获取的当前所处理建筑物屋面的外轮廓点集合,调用外边界线提取模块,提取出当 前所处理建筑物屋面的外边界线。

本实施例中,步骤203中所述外轮廓点集合A'中包括当前所处理建筑物屋面的多 个外轮廓点及各外轮廓点的三维坐标,各屋顶面片的外轮廓点集合中包括该屋顶面片 上的多个外轮廓点及各外轮廓点的三维坐标。

本实施例中,步骤203中对当前所处理建筑物屋面的外轮廓点进行提取时,从当 前所处理建筑物屋面的二维数据集中,提取多个外轮廓点,并形成外轮廓点集合A″; 所述外轮廓点集合A″中外轮廓点的数量为N个,所述外轮廓点集合A″中包含N个外 轮廓点的二维数据,N个所述外轮廓点连接形成当前所处理建筑物屋面的外轮廓线; 之后,根据步骤202中当前所处理建筑物屋面的点云数据,获取外轮廓点集合A″中各 外轮廓点的三维坐标。

当前所处理建筑物屋面的二维数据集包括当前所处理建筑物的点云数据中多个 测点在X-Y平面直角坐标系上的二维坐标。

步骤203中对各屋顶面片的外轮廓点进行提取时,所有屋顶面片的外轮廓点提取 方法均与当前所处理建筑物屋面的外轮廓点的提取方法相同;其中,对屋顶面片S'i'的 外轮廓点进行提取时,从屋顶面片S'i'的二维数据集中,提取M'个外轮廓点,并形成 外轮廓点集合B″;所述外轮廓点集合B″中外轮廓点的数量为M'个,所述外轮廓点集 合B″中包含M'个外轮廓点的二维数据;之后,根据步骤201中屋顶面片S'i'的点云数 据,获取外轮廓点集合B″中各外轮廓点的三维坐标。

屋顶面片S'i'的二维数据集包括屋顶面片S'i'的点云数据中多个测点在X-Y平面直 角坐标系上的二维坐标。

本实施例中,所述外轮廓点集合A″中的N个所述外轮廓点,分别记作A0、A1、 A2、…、AN-1

步骤203中对当前所处理建筑物屋面的外轮廓点进行提取时,过程如下:

步骤2011、构建kd树:将当前所处理建筑物屋面的点云数据中,多个测点在X-Y 平面直角坐标系上的二维坐标构建kd树。

此时,所构建的kd树是基于整个建筑物屋面点云数据的二维坐标构建的数据结 构,该数据结构根据输入的单个二维坐标能快速搜索到邻近的点集及距离,是一种二 维平面的搜索机制。

步骤2012、邻域搜索:利用步骤2011中所构建的kd树在X-Y平面上进行邻域搜 索,找出当前所处理建筑物屋面的所有外轮廓点,X-Y平面为X-Y平面直角坐标系所 在的水平面;邻域搜索过程如下:

步骤20121、第一次搜索:以极值点A0作为本次搜索的搜索点O1且以X坐标轴的 负半轴作为基准向量进行邻域搜索,并在当前搜索点O1的邻域内找出旋转角度最小的 测点,所找出的测点为第一次搜索出的外轮廓点A1

当前搜索点的邻域内任一测点Ci的旋转角度为由基准向量逆时针旋转至向量 的旋转角度;极值点A0为当前所处理建筑物的点云数据中X轴坐标值最大、X轴 坐标值最小、Y轴坐标值最大或Y轴坐标值最小的测点。

步骤20122、第j次搜索:以第j-1次搜索出的外轮廓点Aj-1作为本次搜索的搜索 点Oj且以向量为基准向量进行邻域搜索,并按照步骤20121中所述的方法, 在当前搜索点Oj的邻域内找出旋转角度最小的测点,所找出的测点为第j次搜索出的 外轮廓点Aj

其中,j为正整数且j≥2;当j=2时,Aj-2=A0;当j>2时,Aj-2为第j-2次搜 索出的外轮廓点。

步骤20123、多次重复步骤20122,直至搜索出的外轮廓点为A0时,完成邻域搜 索过程。

综上,对建筑物屋面外轮廓点进行提取时,先构建当前所处理建筑物屋面的二分 查找树(即kd树);再以极值点A0作为搜索点,以水平负方向作为基准方向,利用 所构建的kd树逆时针搜索邻近点云,两测点间的方向与基准方向的逆时针旋转角度 最小的测点作为第二个外轮廓点;之后,继续以第二个外轮廓点作为搜索点,与上一 个外轮廓点之间的方向向量作为基准方向,搜索第三个外轮廓点;如此不断重复,直 到搜回到起始点(极值点A0),这样形成由建筑物屋面的多个外轮廓点组成的闭合线 段,即建筑物屋面的外轮廓线。

步骤20121和步骤20122中进行搜索时,当前搜索点的邻域均为以当前搜索点为 中心且以R为搜索半径的圆形区域;其中,R=2d~3d,d为步骤一中所述点云数据 的点间距。本实施例中,R=50cm,实际使用时,可以根据u具体需要,对R的取值 大小进行相应调整。

本实施例中,步骤20121中当前搜索点O1的邻域内任一测点Ci的旋转角度记作 ∠aCi,测点Ci的二维坐标为(XCi,YCi);第一次搜索时的基准向量为T1,且T1=(-1,0); 对∠aCi进行计算时,先根据公式aCi=XCi×(-1)+YCi×0=-XCi,计算得出aCi:当aCi≥0时,根据公式∠aCi=arccos(aCi),计算得出∠aCi;当aCi<0时,根据公式∠aCi=90 °-arccos(aCi),计算得出∠aCi

步骤20122中当前搜索点Oj的邻域内任一测点Cp的旋转角度记作∠aCp,测点Cp的二维坐标为(XCp,YCp),第j次搜索时的基准向量记作(Xj,Yj);对∠aCp进行计算时,先根据公式aCp=XCp×Xj+YCi×Yj,计算得出aCp:当aCp≥0时,根据公 式∠aCp=arccos(aCp),计算得出∠aCi;当aCp<0时,根据公式∠aCp=90°-arccos(aCp), 计算得出∠aCi

本实施例中,步骤2012中进行邻域搜索过程中,将极值点A0和各次搜索到的外 轮廓点均标记为已用点。

步骤20123中,多次重复步骤20122且完成第n次搜索后,获得第n次搜索出的 外轮廓点An,并将外轮廓点An标记为已用点;之后,按照步骤20122中所述的方法, 将An作为搜索点,进行第n+1次搜索,且当第n+1次搜索过程中搜索到的外轮廓点为 标记的已用点时,将外轮廓点An标记为不可用点;然后,按照An-1、An-2、…、A1顺 序,由先至后对标记为有用点的外轮廓点进行回滚搜索,过程如下:

步骤Ⅰ-1、第一次回滚搜索:对第(n-1)次搜索出的外轮廓点An-1进行回滚搜索, 过程如下:

步骤Ⅰ-11、第一次邻域搜索:按照步骤20121中所述的方法,以外轮廓点An-1作 为本次搜索的搜索点O11且以向量为基准向量进行邻域搜索;

步骤Ⅰ-12、第一次邻域搜索结果处理:步骤Ⅰ-11中搜索完成后,当在当前搜索 点O11的邻域测点集合S'(n-1)中不能找出旋转角度最小的测点时,将外轮廓点An-1标记 为不可用点,并进入步骤Ⅱ-1,进行下一次回滚搜索;

反之,当在邻域测点集合S'(n-1)中找出旋转角度最小的测点时,将所找出的测 点作为回滚搜索过程中第一次搜索出的外轮廓点A11,且将外轮廓点A11标记为已用点, 并判断外轮廓点A11是否为极值点A0:当外轮廓点A11为极值点A0时,完成回滚搜索过 程;否则,进入步骤Ⅰ-13,进行下一次邻域搜索;

步骤2012中进行邻域搜索过程中,第(n-1)次搜索时,当前搜索点On-1的邻域 内所有测点组成邻域测点集合S(n-1);所述邻域测点集合S(n-1)中的所有未标记的测 点组成邻域测点集合S'(n-1);

步骤Ⅰ-13、第k次邻域搜索:以回滚搜索过程中第(k-1)次搜索出的外轮廓点 A1(k-1)作为本次搜索的搜索点O1k且以向量为基准向量进行邻域搜索,并按 照步骤20121中所述的方法,在当前搜索点O1k的邻域内找出旋转角度最小的测点, 所找出的测点为回滚搜索过程中第k次搜索出的外轮廓点A1k

其中,k为正整数且k≥2;当k=2时,A1(k-2)=O11,A1(k-1)=A11;当j>2时,A1(k-2)为回滚搜索过程中第(k-2)次搜索出的外轮廓点;

步骤Ⅰ-14、第k次邻域搜索结果处理:步骤Ⅰ-13中搜索完成后,判断第k次搜 索出的外轮廓点A1k是否为极值点A0:当外轮廓点A1k为极值点A0时,完成回滚搜索过 程;否则,返回步骤Ⅰ-13,进行下一次邻域搜索;

步骤Ⅱ-1、第h次回滚搜索:按照步骤Ⅰ-1中所述的方法,对步骤2012中第 (n-h+1)次搜索出的外轮廓点An-h+1进行回滚搜索,直至完成回滚搜索过程;其中, h为正整数且h≥2;

步骤2012中完成回滚搜索过程后,当前状态下所有标记为已用点的测点组成所 述外轮廓点集合A″,并且所有标记为已用点的测点总数量为N个。

综上所述,进行建筑物屋面外轮廓点提取时,增设回滚搜索机制,因而能有效确 保所提取外边界线的准确性和可操作性。

本实施例中,步骤2012中进行邻域搜索过程中,将极值点A0和各次搜索到的外 轮廓点由先至后放入外轮廓点集合堆栈中,并将放入所述外轮廓点集合堆栈中的极值 点A0和所有外轮廓点均标记为已用点。

步骤20123中,将外轮廓点An标记为不可用点的同时,还需将外轮廓点An从所述 外轮廓点集合堆栈中弹出。

步骤Ⅰ-12中将外轮廓点A11标记为已用点的同时,还需将外轮廓点A11放入所述 外轮廓点集合堆栈中。

步骤Ⅰ-13中将外轮廓点A1k标记为已用点的同时,还需将外轮廓点A1k所述外轮 廓点集合堆栈中。

步骤2012中完成回滚搜索过程后,当前状态下所述外轮廓点集合堆栈内的所有 测点组成所述外轮廓点集合。

本实施例中,对当前所处理建筑物屋面的外边界线进行提取时,过程如下:

步骤2031、特征点提取:采用道格拉斯-普扑克算法对所述外轮廓线进行特征点 提取,并从所述外轮廓点集合A″提取出S个特征点,S个特征点分别记作S1、S2、…、 SS

本实施例中,获得当前所处理建筑物屋面的外轮廓线后,所获得N个外轮廓点A0、 A1、A2、…、AN-1沿逆时针方向由前至后进行排列;之后,将外轮廓点A0和AN-1分别 作为起始点和终止点,将步骤201中所得到的外轮廓线分割成一条折线段,之后再采 用道格拉斯-普扑克算法对该折线段进行特征点提取,所提取的特征点为突变的测点, 即拐点。

本实施例中,步骤2031中采用道格拉斯-普扑克算法对所述外轮廓线进行特征点 提取时,过程如下:

步骤20311、特征点指定:将所述外轮廓点集合A″中N个所述外轮廓点中任意相 邻两个外轮廓点AD和AF指定为特征点,并将外轮廓点AD和AF均标记为特征点;其中 D和F均为正整数且D≠F,D=1、2、…、N,F=1、2、…、N。

本实施例中,AD=A0,AF=AN-1

步骤20312、中间特征点获取:将外轮廓点AD和AF作为一个特征点对,从所述外 轮廓点集合A''找出一个与特征点对AD与AF所在的直线ADAF的距离最远且未标记的 外轮廓点,并将所找出的外轮廓点作为特征点对AD与AF的中间特征点,记作AE,且 将外轮廓点AE标记为特征点。

步骤20313、特征点对获取:以步骤20312中获取的中间特征点AE重新组建特征 点对。

以中间特征点AE重新组建特征点对时,将中间特征点AE分别与特征点AD和AF组 成两个特征点对,两个特征点对分别为特征点对AD与AE和特征点对AE与AF

步骤20314、中间特征点获取及判断处理:对步骤20313中组成的两个特征点对 分别进行中间特征点获取及判断处理,且两个特征点对的中间特征点获取及判断处理 方法均相同。

其中,对一个特征点对进行中间特征点获取及判断时,从所述外轮廓点集合A''中 找出一个与当前所处理特征点对所在的直线的距离最远且未标记的外轮廓点,并判断 所找出的外轮廓点与当前所处理特征点对所在直线的距离d是否大于d0:当d>d0时, 将所找出的外轮廓点作为当前所处理特征点对的中间特征点,并将该中间特征点标记 为特征点,并进入步骤20315;否则,完成当前所处理特征点对的特征点提取过程。

其中,d0=30cm~50cm。

步骤20315、特征点对获取与中间特征点获取及判断处理:先按照步骤20313中 所述的特征点对获取方法,以步骤20314中所获取的中间特征点重新组建特征点对; 之后,按照步骤20314中所述的方法,对本步骤中所组建的所有特征点对分别进行中 间特征点获取及判断处理。

步骤20316、多次重复步骤20315,直至完成所组建的所有特征点对的特征点提 取过程。

本实施例中,步骤20314中对所找出的外轮廓点与当前所处理特征点对所在直线 的距离d进行计算时,根据公式d=(L1×An.X+L2×An.y+L3)/L1×L1+L2×L2,其 中所找出的外轮廓点的二维坐标为(An.X,An.y),当前所处理特征点对的两个特征 点的二维坐标分别为(At.X,At.y)和(Af.X,Af.y),其中L'1=Af.y-At.y,L'2=At.x-Af.x, L'3=Af.x×At.y-At.x×Af.y。

本实施例中,步骤2031中采用道格拉斯-普扑克算法对所述外轮廓线进行特征点 提取后,所提取的特征点数量为M个,其中M为正整数且M≥S;M个特征点组成特征 点集合,S个特征点分别记作S1、S2、…、SM,特征点S1又记作特征点SM+1

特征点提取完成后,还需对所提取的M个特征点分别进行判定;其中,对M个特 征点中任一个特征点Sh进行判定时,判断特征点Sh与直线Sh-1Sh+1之间的距离dh是否大 于d0:当dh>d0时,在所述特征点集合中保留特征点Sh;否则,从所述特征点集合 中删除特征点Sh,并将特征点Sh标记为非特征点。

直线Sh-1Sh+1为特征点Sh-1和Sh+1所在的直线,特征点Sh-1和Sh+1为与特征点Sh相邻 的两个特征点;其中,h为正整数且h=1、2、…、M。

对M个特征点分别进行判定后,所述特征点集合中特征点的数量为S个。

综上,步骤2031中进行特征点提取时,先从外轮廓点集合中的第一个外轮廓点 和最后一个外轮廓点作为特征点对,使外轮廓线形成一条折线段;之后,分别计算特 征点对中的两个特征点之间的所有外轮廓点到两个特征点连线的距离,将距离最大且 大于d0外轮廓点作为中间特征点,并将中间特征点分别与特征点对中的两个特征点 组成两个特征点对;然后,对组成的特征点对再进行中间特征点获取,当中间特征点 到特征点对中两个特征点连线的距离小于d0时结束。

由于道格拉斯-普扑克算法存在一定的限制性,主要原因在于外轮廓点集合中的 第一个外轮廓点和最后一个外轮廓点(即指定的特征点)要求都不能为拐点,因而提 取出的特征点并不都是拐点,因而需对提取出的特征点进行二次确认,即判定。实际 进行判定时,根据所判断特征点的前后相邻两个特征点进行验证。

步骤2032、最小二乘法直线拟合及初始边界线获取:对S个特征点中相邻两个特 征点所在的直线分别进行拟合,并获得S条拟合直线;S条拟合直线相交形成的封闭 曲线为当前所处理建筑物的初始边界线,所述初始边界线由多个直线段连接而成。

对S个特征点中相邻两个特征点Sa和Sb进行直线拟合时,先将特征点Sa和Sb以 及步骤201中所述外轮廓点集合中特征点Sa和Sb之间的所有外轮廓点组成直线点集, 再利用最小二乘法对所述直线点集进行直线拟合,获得特征点Sa和Sb所在的拟合直 线;其中,a和b均为正整数且a≠b,a=1、2、…、S,b=1、2、…、S。

本实施例中,步骤2032中对相邻两个特征点Sa和Sb进行直线拟合时,先将所述 直线点集中所有测点的X轴坐标值组成X轴坐标集合,并将所述直线点集中所有测点 的X轴坐标值组成Y轴坐标集合;之后,计算X轴坐标集合中多个X轴坐标值的方差, 记作σX;同时,计算Y轴坐标集合中多个Y轴坐标值的方差,记作σY;然后,根据 计算得出的σX和σY,选取拟合用的直线模型:当σX≥σY时,所选取的直线模型为 y=kx+b;否则,当σX<σY时,所选取的直线模型为x=ky+b;最后,根据所述直线点 集中所有测点的二维坐标,并利用所选取的直线模型进行直线拟合。

本实施例中,采用直线模型y=kx+b进行直线拟合时,k=[n*Σ(xg×yg)-Σxg×Σ yg]/[n×Σyg2-Σyg×Σyg],式中n为所述直线点集中的测点总数量,Σ(xg×yg)为所 述直线点集中所有测点的X轴与Y轴坐标值的乘积之和,Σxg为所述直线点集中所有 测点的X轴坐标值之和,Σyg为所述直线点集中所有测点的Y轴坐标值之和,Σyg2为 所述直线点集中所有测点的Y轴坐标值的平方之和。

步骤2033、建筑物主方向及副方向确定:先对步骤2032中所述初始边界线中的 多个直线段的方向向量进行确定,再对多个直线段的方向向量的权重分别进行计算, 并将权重最大的直线段的方向向量作为当前所处理建筑物的主方向,将当前所处理建 筑物的主方向的正交向量作为当前所处理建筑物的副方向。

本实施例中,对步骤2032中所述初始边界线中的多个直线段的方向向量进行确 定时,沿逆时针方向由先至后对各直线段的方向向量进行确定。

本实施例中,步骤2032中所述初始边界线由P个直线段组成,所述初始边界线 中有P个顶点,P个顶点分别为S条拟合直线相交后的交点,P个顶点沿逆时针方向 由先至后分别记作T1、T2、…、TP,P个直线段沿逆时针方向由先至后排列,其中P 个直线段中第s条直线段记作直线段TsTs+1,其中s为正整数且s=1、2、…、P,其中 顶点T1又记作TP+1,个直线段中第s条直线段的方向方向为TsTs+1

本实施例中,步骤2033中对多个直线段的方向向量进行确定时,多个所述直线 段的方向向量确定方法均相同。对任一个直线段lQ的方向向量VQ进行确定时,根据公 式VQ.X=XQ2-XQ1(XQ2-XQ1)2+(YQ2-YQ1)2和公式VQ.Y=YQ2-YQ1(XQ2-XQ1)2+(YQ2-YQ1)2进行计算, 方向向量VQ=(VQ.X,VQ.Y);式中,直线段lQ的两端点的二维坐标分别为(XQ1,YQ1) 和(XQ2,YQ2)。

对直线段lQ的方向向量的权重进行计算时,由先至后将直线段lQ的方向向量VQ, 分别与所述初始边界线中其它各直线段的方向向量叠加后,获得直线段lQ的权重向量 WQ,过程如下:

步骤20331、叠加顺序确定及角度差阈值c0设定:按照叠加先后顺序,对所述初 始边界线中其它各直线段的方向向量进行排序;其中,角度差阈值c0=5°~10°,c=90°-c0

步骤20332、第一次叠加:将直线段lQ的方向向量VQ作为基准方向向量,先计算 得出本次叠加的直线段的方向向量与基准方向向量之间的角度差Δ∠Q1;再结合步骤 20331中所设定的c0和c,并根据计算得出的Δ∠Q1确定叠加方式:当Δ∠Q1更接近c0时,将基准方向向量与本次叠加的直线段的方向向量叠加;当Δ∠Q1更接近c时,将 基准方向向量与本次叠加直线段的方向向量的正交向量叠加;之后,按照所确定的叠 加方式进行叠加,并将叠加后的向量作为下一次叠加的基准叠加向量。

步骤20333、第t次叠加:将第t-1次叠加后的向量作为本次叠加的基准叠加向量, 先计算得出本次叠加直线段的方向向量与当前状态下的的基准叠加向量之间的角度 差Δ∠Qt;再结合步骤20331中所设定的c0和c,并根据计算得出的Δ∠Qt确定叠加方 式:当Δ∠Qt更接近c0时,将当前状态下的基准叠加向量与本次叠加的直线段的方向向 量叠加;当Δ∠Qt更接近c时,将当前状态下的基准叠加向量与本次叠加直线段的方 向向量的正交向量叠加;之后,按照所确定的叠加方式进行叠加,并将叠加后的向量 作为下一次叠加的基准叠加向量。

步骤20334、多次重复步骤20333,直至完成方向向量VQ与所述初始边界线中其 它各直线段的方向向量的全部叠加过程,且叠加过程完成后所得的向量为直线段lQ的 权重向量WQ

步骤2033中权重最大的直线段为权重向量的长度最大的直线段。

本实施例中,步骤20332中对本次叠加的直线段的方向向量与基准方向向量之间 的角度差Δ∠Q1进行计算时,根据公式Δ∠Q1=arccos(|VL1.X×VQ.X+VL1.Y×VQ.Y|) 进行计算;本次叠加的直线段的方向向量为(VL1.X,VL1.Y),基准方向向量为 (VQ.X,VQ.Y);

步骤20333中对本次叠加的直线段的方向向量与当前状态下的基准叠加向量之间 的角度差Δ∠Qt进行计算时,根据公式Δ∠Qt=arccos(|VLt.X×Vt.X+VLt.Y×Vt.Y|)进 行计算;本次叠加的直线段的方向向量为(VLt.X,VLt.Y),当前状态下的基准方向向 量为(Vt.X,Vt.Y)。

本实施例中,步骤20332中叠加后的向量记作(VQ'.X,VQ'.Y);将基准方向向量 与本次叠加直线段的方向向量叠加时,VQ'.X=VL1.X+VQ.X,VQ'.Y=VL1.Y+VQ.Y;将基 准方向向量与本次叠加直线段的方向向量的正交向量叠加时,VQ'.X=VL1⊥.X+VQ.X, VQ'.Y=VL1⊥.Y+VQ.Y;本次叠加直线段的方向向量的正交向量为(VL1⊥.X,VL1⊥.Y);

步骤20333中叠加后的向量记作(Vt'.X,Vt'.Y);将当前状态下的基准叠加向量 与本次叠加的直线段的方向向量叠加时,Vt'.X=VLt.X+Vt.X,Vt'.Y=VLt.Y+Vt.Y;将当 前状态下的基准叠加向量与本次叠加直线段的方向向量的正交向量叠加时, Vt'.X=VLt⊥.X+Vt.X,Vt'.Y=VLt⊥.Y+Vt.Y;本次叠加直线段的方向向量的正交向量为 (VLt⊥.X,VLt⊥.Y)。

步骤2034、初始边界线规则化:对步骤2032中所述初始边界线中的多个直线段 分别进行规则化处理。

对所述初始边界线中任一个直线段进行规则化处理时,过程如下:

步骤2034-1、规则化方向确定:根据步骤2033中所确定的主方向和副方向以及 当前所处理直线段的方向向量,对当前所处理直线段的规则化方向进行确定:当当前 所处理直线段的方向向量更靠近主方向时,以主方向作为规则化方向;反之,当当前 所处理直线段的方向向量更靠近副方向时,以副方向作为规则化方向。

步骤2034-2、是否需进行规则化判断:计算当前所处理直线段在步骤2034-1中 所确定规则化方向上的投影长度L,并根据投影长度L对当前所处理直线段是否需进 行规则化进行判断:当投影长度L≤L0时,进入步骤2034-3;否则,无需进行规则化 处理,将当前所处理直线段所在的直线作为其规则化直线;其中,L0=50cm~1m。

步骤2034-3、规则化处理:以当前所处理直线段的中点为起点,且以步骤2034-1 中所确定的规则化方向为方向向量,生成当前所处理直线段的规则化直线。

本实施例中,步骤2034中进行初始边界线规则化之前,先找出步骤2032中所述 初始边界线中方向向量相同的所有直线段,并将方向向量相同的所有直线段合并为一 条直线;进行规则化处理时,仅需对合并后的直线进行规则化处理。实际进行规则化 处理时,合并后直线的中点坐标为取方向向量相同的所有直线段的平均值。

本实施例中,步骤2034-2中对当前所处理直线段在步骤2034-1中所确定规则化 方向上的投影长度L进行计算时,先根据公式Δ∠θ=arccos(|VH.X×V.X+VH.Y× V.Y|)进行计算,当前所处理直线段的方向向量为(VH.X,VH.Y),主方向为 (V.X,V.Y);之后,根据计算得出的Δ∠θ,对投影长度L进行计算:当步骤2034-1 中所确定规则化方向为主方向时,当步骤2034-1中所确定规则化方向为副方向时,

综上,实际进行规划化处理时,当前所处理直线段的中点坐标保持不变,方向向 量改为主方向或副方向。

步骤2035、规则化边界线获取:步骤2034中所述初始边界线中的多个直线段均 规则化处理完成后,多个直线段的规则化直线相交形成的封闭曲线为当前所处理建筑 物的规划化边界线。

如图3所示,采用本发明所述的方法对边界线进行规划化后,除部分弧线或者大角 度的线段外,得到的建筑物屋面外边界线在规则化的前提下,覆盖了全部点云的外边 界,使用效果非常好。图3中,左侧为未经规则化的边界线,右侧为规则化后的边界 线。

本实施例中,步骤2042中对外轮廓点Ci'j'进行邻域搜索时,以外轮廓点Ci'j'为中 心且以0.5m~1.5m为搜索半径进行搜索。实际使用时,可以根据具体需要,对搜索 半径进行相应调整。并且,实际进行搜索时,沿逆时针方向进行搜索,并且以外轮廓 点Ci'j'的邻近区域内最外一点(即X轴坐标或Y轴坐标值最小的测点)开始搜索。

本实施例中,步骤2044中进行矢量边界确定之前,还需根据屋顶面片S'i'的外轮 廓点集合中各外轮廓点的三维坐标,沿逆时针方向或顺时针方向,由先至后对屋顶面 片S'i'的外轮廓点集合中的所有外轮廓点进行排序,并根据外轮廓点的排序结果,对步 骤2043中得出的所有外轮廓点的类别编号进行排序,获得屋顶面片S'i'的外轮廓点类 别编号序列。

排序完成后,屋顶面片S'i'中相邻两个外轮廓点的类别编号相邻;所述外轮廓点类 别编号序列中,多个外轮廓点的类别编号由先至后分别记作Li'1、Li'2、…、Li'M'

本实施例中,步骤Ⅱ中当Δhij>Δh0时,还需对外轮廓点Ci'j'和邻域搜索点C'i'j'的 高程进行比较,并建立阶跃线类别集合Wk',且将外轮廓点Ci'j'和邻域搜索点C'i'j'中高 程高的点放入阶跃线类别集合Wk'中。

步骤Ⅲ中对下一个外轮廓点的类别进行确定时,当当前所确定外轮廓点和其邻域 搜索点的高程差>Δh0时,还需对当前所确定外轮廓点和其邻域搜索点的高程进行比 较:当阶跃线类别集合Wm'已建立时,将当前所确定外轮廓点和其邻域搜索点中高程 高的点放入集合Wm'中;否则,需建立阶跃线类别集合Wm',并将当前所确定外轮廓点 和其邻域搜索点中高程高的点放入集合Wm'中;其中,m'为当前所确定外轮廓点的邻 域搜索点所属屋顶面片的编号,m'为正整数,m'=1、2、…、N'且m'≠i'。

本实施例中,步骤Ⅱ中类别编号Tk'中,T表示类别为屋脊线,k'表示在外轮廓点 Ci'j'的位置处屋顶面片S'i'与编号为k'的屋顶面片相交。

类别编号记作Wk'中,W表示类别为阶跃线,k'表示在外轮廓点Ci'j'的位置处屋顶 面片S'i'与编号为k'的屋顶面片之间形成高低面。

本实施例中,步骤2044中进行矢量边界确定时,由先至后对步骤2043中所述外 轮廓点类别编号序列中相邻两个类别编号分别进行矢量边界点提取处理,过程如下:

步骤ⅰ、对类别编号Li'1和Li'2进行矢量边界点提取处理:先判断Li1和Li2是否相同: 当Li1=Li2时,完成矢量边界点提取过程;否则,获取与类别编号Li'1和Li'2对应的矢量 边界点,过程如下:

当Li'1=Tg'且Li'2=Th'时,先计算出屋顶面片S'i'与编号为g'的屋顶面片之间的相交 直线段lg'和屋顶面片S'i'与编号为h'的屋顶面片之间的相交直线段lh',再计算出直线段 lg'和lh'的交点Cg'h',交点Cg'h'为与类别编号Li'1和Li'2对应的矢量边界点。其中,交点 Cg'h'为三个平面(即屋顶面片S'i'、编号为g'的屋顶面片和编号为h'的屋顶面片)的交 点。当Li'1=Tg'且Li'2=Th'时,说明屋顶面片S'i'先与编号为g'的屋顶面片相交,紧接着 再与编号为h'的屋顶面片相交。

当Li'1和Li'2中一个编号为Ta'且另一编号为U时,先计算出屋顶面片S'i'与编号为a' 的屋顶面片之间的相交直线段la',再结合屋顶面片S'i'的相邻关系,计算出直线段la'与 当前所处理建筑物屋面的外边界线之间的交点Ca',Ca'为与类别编号Li'1和Li'2对应的 矢量边界点。其中,交点Ca'处于当前所处理建筑物屋面的外边界线上,交点Ca'为屋 顶面片S'i'与编号为a'的屋顶面片的公共交点。对交点Ca'的计算方法为:先计算出直 线段la'与当前所处理建筑物屋面的外边界线中相交的所有交点,再将所求出的交点中 距离kd树搜索得到的点距离最近的点作为Ca'。当Li'1=Ta'且Li'2=U时,说明屋顶面片S'i'先与编号为a'的屋顶面片相交且其下一条外边界线段为当前所处理建筑物屋面的外 边界线;反之,当Li'1=U且Li'2=Ta'时,说明屋顶面片S'i'的一条外边界线段为当前所处 理建筑物屋面的外边界线,紧接着屋顶面片S'i'再与编号为a'的屋顶面片相交。

当Li'1和Li'2中一个编号为Wb'且另一编号为U时,先根据阶跃线类别集合Wb'中所 有点的三维坐标,采用最小二乘法拟合出集合Wk'中所有点所处的直线lb',再结合屋顶 面片S'i'的相邻关系,计算出直线lb'与当前所处理建筑物屋面的外边界线之间的交点 Cb',Cb'位于屋顶面片S'i'与编号为b'的屋顶面片的交界线上,Cb'为与类别编号Li'1和 Li'2对应的矢量边界点。其中,当Li'1=Wb'且Li'2=U时,说明屋顶面片S'i'先与编号为b'的 屋顶面片阶跃形成高低面且其下一条外边界线段为当前所处理建筑物屋面的外边界 线;反之,当Li'1=U且Li'2=Wb'时,说明屋顶面片S'i'的一条外边界线段为当前所处理建 筑物屋面的外边界线,紧接着屋顶面片S'i'再与编号为a'的屋顶面片阶跃形成高低面。

当Li'1和Li'2中一个编号为Te'且另一编号为Wf'时,先计算出屋顶面片S'i'与编号为 e'的屋顶面片之间的相交直线段le';同时,根据阶跃线类别集合Wf'中所有点的三维 坐标,采用最小二乘法拟合出集合Wf'中所有点所处的直线lf',再结合屋顶面片S'i'的 相邻关系,计算出直线段le'与直线lf'之间的交点Ce'f',Ce'f'为与类别编号Li'1和Li'2对 应的矢量边界点。其中,当Li'1=Te'且Li'2=Wf'时,说明屋顶面片S'i'先与编号为e'的屋 顶面片相交,紧接着再与编号为f'的屋顶面片阶跃形成高低面;反之,当Li'1=Wf'且 Li'2=Te'时,说明屋顶面片S'i'先与编号为f'的屋顶面片阶跃形成高低面,紧接着再与 编号为e'的屋顶面片相交。

当Li'1=Wp'且Li'2=Wq'时,根据阶跃线类别集合Wp'中所有点的三维坐标,采用最小 二乘法拟合出集合Wp'中所有点所处的直线lp';同时,根据阶跃线类别集合Wq'中所有 点的三维坐标,采用最小二乘法拟合出集合Wq'中所有点所处的直线lq',再计算出直线 lp'和lq'的交点Cp'q',交点Cp'q'为与类别编号Li'1和Li'2对应的矢量边界点。此时,屋顶 面片S'i'先与编号为p'的屋顶面片阶跃形成高低面,紧接着再与编号为q'的屋顶面片 阶跃形成高低面。

其中,g'、h'、a'、b'和e'均为屋顶面片的编号。

步骤ⅱ、对类别编号Li't'和Li'(t'+1)进行矢量边界点提取处理:按照步骤ⅰ中所述的 方法,对类别编号Li't'和Li'(t'+1)进行矢量边界点提取处理;其中,t'为正整数且t'=1、 2、…、M';其中,Li'1又记作Li'(M'+1)

步骤ⅲ、多次重复步骤ⅱ,直至完成所述外轮廓点类别编号序列中任意相邻两个 类别编号的矢量边界点提取处理过程。

步骤ⅳ、将步骤ⅰ至步骤ⅲ中所提取的所有矢量边界点,按照提取的先后顺序由 先至后连接,获得屋顶面片S'i'的矢量边界。

本实施例中,步骤ⅰ中对交点Cg'h'进行求解时,先利用屋顶面片S'i'与编号为g'的 屋顶面片的平面方程,求出相交直线段lg'后,再得出直线段lg'在X-Y平面上的投影直 线lg'(只需不考虑直线段lg'中的Z轴坐标即可);同理,利用屋顶面片S'i'与编号为h' 的屋顶面片的平面方程,求出相交直线段lh',后,再得出直线段lh'在X-Y平面上的投 影直线lh'(只需不考虑直线段lh'中的Z轴坐标即可),此时只需在X-Y平面上求出投 影直线lg'和投影直线lh'的交点Cg'h',便得出交点Cg'h'的二维坐标,由于交点Cg'h'位于 屋顶面片S'i'上,则结合屋顶面片S'i'的平面方程,便能得出交点Cg'h'的三维坐标。

对交点Ca'进行求解时,由于所得出的当前所处理建筑物屋面的外边界线位于二维 平面(即X-Y平面)上,先利用屋顶面片S'i'与编号为a'的屋顶面片的平面方程,求出 相交直线段la'后,再得出直线段la'在X-Y平面上的投影直线la'(只需不考虑直线段la'中 的Z轴坐标即可);然后,结合屋顶面片S'i'的相邻关系,计算出投影直线la'与当前所 处理建筑物屋面的外边界线之间的交点Ca',此时得出交点Ca'的二维坐标,由于交点 Ca'位于屋顶面片S'i'上,则结合屋顶面片S'i'的平面方程,便能得出交点Ca'的三维坐标。

对交点Cb'进行求解时,先得出直线lb'在X-Y平面上的投影直线lb'(只需不考虑直 线段lb'中的Z轴坐标即可);然后,再结合屋顶面片S'i'的相邻关系,计算出投影直线 lb'与当前所处理建筑物屋面的外边界线之间的交点Cb',此时得出交点Cb'的二维坐标, 由于交点Cb'位于屋顶面片S'i'上,则结合屋顶面片S'i'的平面方程,便能得出交点Cb'的 三维坐标。

对交点Ce'f'进行求解时,先利用屋顶面片S'i'与编号为e'的屋顶面片的的平面方 程,求出相交直线段le'后,再得出直线段le'在X-Y平面上的投影直线le'(只需不考虑 直线段le'中的Z轴坐标即可);同时,得出直线lf'在X-Y平面上的投影直线lf'(只需 不考虑直线段lf'中的Z轴坐标即可);然后,计算出投影直线le'与投影直线lf'之间的 交点Ce'f',此时得出交点Ce'f'的二维坐标,由于交点Ce'f'位于屋顶面片S'i'上,则结合 屋顶面片S'i'的平面方程,便能得出交点Ce'f'的三维坐标。

对交点Cp'q'进行求解时,先得出直线段lp'在X-Y平面上的投影直线lp'(只需不考 虑直线段lp'中的Z轴坐标即可);同时,得出直线lq'在X-Y平面上的投影直线lq'(只 需不考虑直线段lq'中的Z轴坐标即可);然后,计算出投影直线lp'与投影直线lq'之间 的交点Cp'q',此时得出交点Cp'q'的二维坐标,由于交点Cp'q'位于屋顶面片S'i'上,则结 合屋顶面片S'i'的平面方程,便能得出交点Cp'q'的三维坐标。

以上所述,仅是本发明的较佳实施例,并非对本发明作任何限制,凡是根据本发明技 术实质对以上实施例所作的任何简单修改、变更以及等效结构变化,均仍属于本发明技术 方案的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号