一种基于切分的点云建筑物重建方法与流程

文档序号:11232032阅读:914来源:国知局
一种基于切分的点云建筑物重建方法与流程

本发明属于建筑物重建方法技术领域,涉及一种基于切分的点云建筑物重建方法。



背景技术:

三维数字城市已经广泛地应用于虚拟旅游,城市规划、城市三维地图和数字娱乐等多个领域。城市场景的三维构建可以给予用户更加逼真的视觉体验,有助于其更加准确地理解城市地理信息。建筑物是城市场景中的重要组成物体,快速获得完整、精确的三维建筑物模型具有重要的意义。建筑物的重建也是计算机视觉与计算机图形学的一个重要研究领域。目前,已经有的建筑物的重建方法大致分为:基于形状拟合的建筑物重建方法、基于先验知识的建筑物重建方法。

1、基于形状拟合的建筑物重建方法

基于形状拟合的建筑物重建方法主要思想是通过提取构成建筑物的基本形状,并分析形状间的拓扑关系,通过形状拟合完成场景中建筑物的重建。

《architecturalmodelingfromsparselyscannedrangedata》(internationaljournalofcomputervision)认为建筑物都是由平面组成的,首先利用区域增长的方法,对点云数据按照平面特征作聚类分析,然后计算相邻面之间的交线。由于有些结构在扫描中可能存在严重的缺漏,这个过程需要依赖用户少量的交互操作来修正。

《o-snap:optimization-basedsnappingformodelingarchitecture》(acmtransactionsongraphics)利用随机抽样一致性算法自动地提取平面,并记录平面间的局部邻接关系,形成初始的模型。用户通过简单的交互(如简单的二维勾勒)对初始模型进行修正,以得到准确和明确定义的建筑物模型。

2、基于先验知识的建筑物重建方法

基于先验知识的重建方法已经在建筑物重建方面取得了一些成果。建筑物的重要组成部分(墙、窗户、阳台或者门)各有特征,根据人类的先验知识分析建筑物中不同面片的几何特征(例如:位置、大小和方向等),完成建筑物中窗户、门洞等对象的识别与提取。

《knowledgebasedreconstructionofbuildingmodelsfromterrestriallaserscanningdata》(isprsjournalofphotogrammetryandremotesensing)首先利用区域增长的方法对建筑物进行分割,然后通过分析不同面片的大小、位置、方向和拓扑关系等特征,基于先验知识提取建筑物的墙面、门和突起等立面细节,并基于点云三角网格化,提出基于洞(hole-based)的窗户提取方法。最后利用最小二乘拟合,凸壳拟合或凹多边形拟合完成多边形的重建。

《model-basedreconstructionandclassificationoffacadepartsin3dpointclouds》(theinternationalarchivesofthephotogrammetry,remotesensing)也提出了一种基于知识的建筑物重建方法。该方法首先建立窗户、门和楼梯的真实数据模型库,同时记录了不同立面特征的形状参数及其概率密度函数。通过改进的随机抽样方法预测实际数据,并采用决策树计算实际数据与模型库数据之间的相似度,从而完成窗户和楼梯的提取与重建。

在真实的三维点云场景中,由于扫描过程中遮挡、噪声的干扰或者由于单侧扫描,建筑物的完整点云数据很难获得,导致已有的方法不适用于点云场景中建筑物的重建。



技术实现要素:

本发明的目的是提供一种基于切分的点云建筑物的重建方法,有效地避免因数据缺失,导致重建结果不理想的缺陷。

本发明所采用的技术方案是,一种基于切分的点云建筑物的重建方法,具体按照以下步骤实施:

步骤1、利用区域增长的方法,将点云建筑物中具有相似法向量的点聚为一类,然后利用基于距离的点云聚类方法,将具有相似法向量的平面分开,完成点云建筑物平面簇的分割;

步骤2、对经过步骤1分割后得到的平面点云簇,计算每个平面点云簇的平面方程,在确定切分个数n后将每个平面沿纵向进行切分,计算每个切片的长度,通过比较每个切片与后续切片的高度差探测关键点。然后,依次连接关键点,完成平面的重建;

步骤3、根据平面间的拓扑关系对步骤2重建的初始建筑物模型进行优化;

步骤4、在步骤3的基础上,根据窗户边框与墙面的拓扑关系,通过构造墙面的最小包围盒,提取窗户的点云信息,并利用基于距离的聚类方法,对窗户点云进行分割,将每个窗户单独的提取出来。然后利用区域增长的方法根据窗框的宽度和高度对窗户进行分类,并利用模式匹配将不完整的窗户进行归类。最后,利用四边形对窗户进行表示,完成建筑物细节的重建。

本发明的特点还在于,步骤1具体按照以下步骤实施:

步骤1.1,利用主元分析法计算点云的法向量,具体为:点云建筑物中的任意一点p,找到点p的k个邻近点点p的三阶协方差矩阵m为:

其中,为点p的k个邻近点的平均位置,

通过奇异值分解对点p的三阶协方差矩阵m进行特征值分解,得到协方差矩阵m的特征值λ3>λ2>λ1>0,点p的法向量为最小特征值λ1所对应的特征向量

步骤1.2,计算

提取点云建筑物中f1<0.05的点,构成平面点集pn;

步骤1.3,利用区域增长的方法将平面点集pn中法向量相似的点进行聚类,具体为:根据步骤1.1中点p的法向量选择平面点集pn中任意一点作为种子点,依据步骤1.1计算该种子点的法向量,若该种子点的法向量与点p法向量相似且未被标记,则将该种子点与点p归为一类,并将种子点进行标记,遍历平面点集pn中的所有点,直到所有点被标记,将具有相似法向量的点归为一类,提取具有相似法向量的平面簇;

步骤1.4,根据距离对平行的平面簇进行分割,具体为:遍历具有相似法向量的点云数据,对于任意一点,利用k-d树找出点pi的k个近临点,筛选与它距离小于一定阈值γ的点集nn,γ=0.1;如果点pi是被遍历的第一个点,标记点集nn中所有的点label=1;如果点pi不是被遍历的第一个点,则遍历点集nn中的每一点是否已经被标记,如果点集nn中所有的点均未被标记,则label++,将点集nn中所有的点标记为label,如果点集nn中存在已经被标记的点,找出被标记的点中最小的标记值mlabel,将点集nn中所有的点标记为mlabel,重复步骤1.4,直到点云数据中所有点均被标记,完成点云建筑物平面簇的分割。

步骤2具体按照以下步骤实施:

步骤2.1,计算平面拟合方程,具体为:根据对应的点云簇计算对应平面的平面方程,计算平面方程ι:a1x+b1y+c1z+d1=0的系数,利用最小特征值对应的特征向量来求解平面方程的系数a1、b1、c1和d1;

步骤2.2,将平面沿平行于z轴的方向进行切分,具体为:遍历每个平面中的每个点,计算每个平面的最大和最小的x,y值:xmaxi,ymaxi,zmaxi,xmini,ymini,zmini,如果(xmaxi-xmini)>(ymaxi-ymini),确定切分的个数n后,则将平面沿x轴方向进行切分,记录第i个切片最左端及最右端的x值,同时记录第i个切片两端最大和最小的z值,将第i个切片两端的x值,以及两端最大和最小的z值代入该平面的平面方程,即可获得该切片的四个端点坐标;如果(xmaxi-xmini)<(ymaxi-ymini),确定切分的个数n后,则将平面沿y轴方向进行切分,记录第i个切片最左端及最右端的y值,同时记录第i个切片两端最大和最小的z值,将第i个切片两端的y值,以及两端最大和最小的z值代入该平面的平面方程,即可获得该切片的四个端点坐标;

步骤2.3,在步骤2.2对平面切分的基础上,记录每个切片的高度差,如果前一个切片si与后一个切片si+1高度差大于(zmaxi-zmini)*α,α=0.1,表明切片si右端的两个端点与切片si+1左端的两个端点为关键点。依次比较每个切片与后续切片的高度差,两者相差大于(zmaxi-zmini)*α,α=0.1时,前一个切片右端的两个端点与后续切片的左端两个端点被记为关键点。同时,第一个切片左端的两个端点以及最后一个切片右端的两个端点为关键点,遍历被同一平面中的所有切片,依次连接关键点,完成该平面的重建。

步骤3具体按照以下步骤实施:

步骤3.1,确定构成建筑物的平面之间的拓扑关系,具体为:根据平面的临近关系,判断两平面是否相连;

步骤3.2,计算步骤3.1中相互连接的两平面的相交线方程,并优化重建结果,具体为:

对于平面ι:a1x+b1y+c1z+d1=0,平面π:a2x+b2y+c2z+d2=0,若两个平面相交,则交线的方向向量为:

(a1,b1,c1)×(a2,b2,c2)=(b1c2-b2c1,a2c1-a1c2,a1b2-a2b1),

交线上某点的坐标为:

分别将公式(4)中的z赋值为两相交平面的最大和最小z值,即z=zmaxi,z=zmini,求出两平面相交的关键点坐标,然后分别更新两个平面的一侧端点坐标,优化相交平面的重建结果。另外,若平面底端的两个端点z值差距小于阈值β,β=0.5,则将平面的两个底端对齐。

步骤4具体按照以下步骤实施:

步骤4.1,窗户点云的提取与分割,具体为:根据每个平面的最大和最小x,y,z值:xmaxi,ymaxi,zmaxi,xmini,ymini,zmini,计算墙面的最小包围盒,将包含在墙面的最小包围盒内的点云簇提取出来,利用步骤1.4提出的基于距离的分割方法对窗户点云进行分割,将每个窗户分别提取出来,去除靠近墙面最高处和最低处的细小点云簇;

步骤4.2,窗户分类,具体为:首先,遍历根据步骤4.1提取的窗框点云簇,记录每个窗框的高度hi和宽度wi,将不完整的窗框提取出来,然后遍历剩余的窗框点云簇,利用区域增长的方法将具有相似宽度和高度的窗框归为一类,并将每类窗框中最大的宽度和高度值作为该类窗户tn的长和宽,分为用fhn和fwn表示。

步骤4.3,对步骤4.2中不完整窗框归类,具体为:判断窗框不完整类型,判断公式为:

fsim=λ*min(|wi-fwn|,|hi-fhn|)+(1-λ)*min(|ci-cmn|,|ri-rmn|)(5)

其中,wi和hi表示第i个不完整的窗框wi的宽度和高度,fwn和fhn为经过步骤4.2分类后得到已有窗户结构tn的宽度和高度,min(|wi-fwn|,|hi-fhn|)表示wi和窗户结构tn的结构相似性,cmn为tn第m列最左端的x或者y值,rmn为tn第m行最上端的z值,ci为窗框wi最左端的x或者y值,ri为窗框wi最上端的z值,min(|ci-cmn|,|ri-rmn|)表示不完整窗框wi与已有窗框模式tn之间的排列规整程度的高低,fsim值越小,说明不完整窗框wi和已有的窗户模式越相近,将不完整窗框wi归为具有最小fsim值的窗户模式;

步骤4.4,窗户位置确定,具体为:根据每一个窗框点云簇的左上角点坐标的y,z值对每个点云簇进行聚类,利用区域增长的方法将具有相似y值或z值的点聚为一类,得到的聚类数即为窗户的行数和列数,假设第i行的z值为hi,第i列的左端的y值为vj,拟合得到直线方程为:z=hi,y=vj,每一行的横向间隔为:shi=hi-hi-1,纵向间隔为:svi=vi-vi-1,横线和竖线相交,即可确定每个窗户的位置;

步骤4.5,窗户重建,具体为:根据步骤4.2得到每类窗框的长度fhn和宽度fwn,用四边形对窗户进行表示,将窗户模板重复地绘制到直线z=hi,y=vj相交处。

步骤2.1具体按照以下步骤实施:

步骤2.2.1,读取平面的数据,构造n×4维矩阵v,其中,

步骤2.2.2,求取矩阵v的转置矩阵vt

步骤2.2.3,矩阵vt和v相乘得到矩阵u=vtv,矩阵u为4×4矩阵;

步骤2.2.4,利用svd对矩阵u进行特征值分解,得到最小特征值对应的特征向量,即为平面方程参数a1,b1,c1,d1。

步骤3.1具体为,记两平面分别为pi和pj,遍历平面pi中的每一个点,pi是平面pi中的一点,利用k-d树找出pi的k个邻近点,如果邻近点中存在某点pk∈pj,其距离|pipk|<τ,τ=0.1,则标记平面pi和pj相连接。

步骤2中确定切分个数n中的n为10-80。

本发明的有益效果是,本发明一种基于切分的点云建筑物重建方法,该方法通过比对前后切片的高度差提取关键点,不需要墙面边界点的提取与分类,有效地避免因数据缺失,导致重建结果不理想的缺陷。

附图说明

图1是本发明一种基于切分的点云建筑物重建方法的点云场景中建筑物的点云数据图;

图2是本发明一种基于切分的点云建筑物重建方法提取的建筑物点云不规则平面簇的示意图;

图3是本发明一种基于切分的点云建筑物重建方法沿坐标轴对不规则平面进行切分的示意图;

图4是本发明一种基于切分的点云建筑物重建方法完成不规则墙面的重建示意图;

图5是本发明一种基于切分的点云建筑物重建方法提取的建筑物点云规则平面簇的示意图;

图6是本发明一种基于切分的点云建筑物重建方法沿坐标轴对规则平面进行切分的示意图;

图7是本发明一种基于切分的点云建筑物重建方法完成规则墙面的重建示意图;

图8是本发明一种基于切分的点云建筑物重建方法的两相交平面示意图;

图9是本发明一种基于切分的点云建筑物重建方法优化相交平面的重建结果示意图;

图10是本发明一种基于切分的点云建筑物重建方法中由于平面底部数据缺失进行优化的示意图;

图11是本发明一种基于切分的点云建筑物重建方法中通过构造最小包围盒提取窗户点云数据图;

图12是本发明一种基于切分的点云建筑物重建方法利用y/z值拟合得到的直线示意图;

图13是本发明一种基于切分的点云建筑物重建方法的窗户重建结果示意图。

具体实施方式

下面结合附图和具体实施方式对本发明进行详细说明。

由于现代建筑物多是由平面组成,同一平面上的点具有相同的法向量。平行的平面间具有一定的距离。因此,利用每点的法向量以及点间的距离完成点云建筑物平面的分割。

一种基于切分的点云建筑物的重建方法,具体按照以下步骤实施:

步骤1、利用区域增长的方法,将点云建筑物中具有相似法向量的点聚为一类,然后利用基于距离的点云聚类方法,将具有相似法向量的平面分开,完成点云建筑物平面簇的分割;具体按照以下步骤实施:

步骤1.1,利用主元分析法计算点云的法向量,具体为:点云建筑物中的任意一点p,找到点p的k个邻近点点p的三阶协方差矩阵m为:

其中,为点p的k个邻近点的平均位置,

通过奇异值分解对点p的三阶协方差矩阵m进行特征值分解,得到协方差矩阵m的特征值λ3>λ2>λ1>0,点p的法向量为最小特征值λ1所对应的特征向量

步骤1.2,计算

当f1接近0时,表示点p的邻域点可以近似地拟合成平面,它的临近点中的噪声相对较小,因此,提取点云建筑物中f1<0.05的点,构成平面点集pn;

步骤1.3,利用区域增长的方法将平面点集pn中法向量相似的点进行聚类,具体为:根据步骤1.1中点p的法向量选择平面点集pn中任意一点作为种子点,依据步骤1.1计算该种子点的法向量,若该种子点的法向量与点p法向量相似且未被标记,则将该种子点与点p归为一类,并将该种子点进行标记,例如:点云场景中的任意一点q,根据步骤1.1计算点q的法向量则将点p和点q归为一类,并将点q标记;遍历平面点集pn中的所有点,直到所有点被标记,将具有相似法向量的点归为一类,提取具有相似法向量的平面簇;

步骤1.4,根据距离对平行的平面簇进行分割,具体为:遍历具有相似法向量的点云数据,对于任意一点,利用k-d树找出点pi的30个近临点,筛选与它距离小于一定阈值γ的点集nn,γ=0.1;如果点pi是被遍历的第一个点,标记点集nn中所有的点label=1;如果点pi不是被遍历的第一个点,则遍历点集nn中的每一点是否已经被标记,如果点集nn中所有的点均未被标记,则label++,将点集nn中所有的点标记为label,如果点集nn中存在已经被标记的点,找出被标记的点中最小的标记值mlabel,将点集nn中所有的点标记为mlabel,重复步骤1.4,直到点云数据中所有点均被标记,完成点云建筑物平面簇的分割。

步骤2、对经过步骤1分割后得到的平面点云簇,计算每个平面点云簇的平面方程,在确定切分个数n后将每个平面沿纵向进行切分,计算每个切片的长度,通过比较每个切片与后续切片的高度差探测关键点。然后,依次连接关键点,完成平面的重建;具体按照以下步骤实施:

步骤2.1,计算平面拟合方程,具体为:根据对应的点云簇计算对应平面的平面方程,计算平面方程ι:a1x+b1y+c1z+d1=0的系数,利用最小特征值对应的特征向量来求解平面方程的系数a1、b1、c1和d1;具体为:

步骤2.2.1,读取平面的数据,构造n×4维矩阵v,其中,

步骤2.2.2,求取矩阵v的转置矩阵vt

步骤2.2.3,矩阵vt和v相乘得到矩阵u=vtv,矩阵u为4×4矩阵;

步骤2.2.4,利用svd对矩阵u进行特征值分解,得到最小特征值对应的特征向量,即为平面方程参数a1,b1,c1,d1;

步骤2.2,将平面沿平行于z轴的方向进行切分,具体为:遍历每个平面中的每个点,计算每个平面的最大和最小的x,y,z值:xmaxi,ymaxi,zmaxi,xmini,ymini,zmini,如果(xmaxi-xmini)>(ymaxi-ymini),确定切分的个数n后,将平面沿x轴方向进行切分,记录第i个切片最左端及最右端的x值,同时记录第i个切片两端最大和最小的z值,将第i个切片两端的x值,以及两端最大和最小的z值代入该平面的平面方程,即可获得该切片的四个端点坐标;如果(xmaxi-xmini)<(ymaxi-ymini),确定切分的个数n后,则将平面沿y轴方向进行切分,记录第i个切片最左端及最右端的y值,同时记录第i个切片两端最大和最小的z值,将第i个切片两端的y值,以及两端最大和最小的z值代入该平面的平面方程,即可获得该切片的四个端点坐标;

步骤2.3,在步骤2.2对平面切分的基础上,记录每个切片的高度差,如果前一个切片si与后一个切片si+1高度差大于(zmaxi-zmini)*α,α=0.1,表明切片si右端的两个端点与切片si+1左端的两个端点为关键点。依次比较每个切片与后续切片的高度差,两者相差大于(zmaxi-zmini)*α,α=0.1时,前一个切片右端的两个端点与后续切片的左端两个端点被记为关键点。同时,第一个切片左端的两个端点以及最后一个切片右端的两个端点为关键点,遍历被同一平面切分的所有切片,依次连接关键点,完成该平面的重建。如图2所示,图2为根据步骤1提取的建筑物点云平面簇,它可以看作是两个四边形构成的。如图3所示,图3为沿坐标轴对平面进行切分,黑色框中的两个相邻切片高度差较大,所以左侧切片的右端端点d、c和右侧切片的左端端点e、f被记为关键点。另外,第一个切片的左端端点a、b与最后一个切片的右端端点h、g被记为关键点。依次连接关键点abcd、efgh,完成墙面的重建,如图4所示,为最终的重建结果。如图5-图7所示,图5为根据步骤1提取的建筑物点云平面簇,它是一个规则的四边形。图6为沿坐标轴对平面进行切分,切片大小相似。所以第一个切片的左端端点a、b与最后一个切片的右端端点c、d被记为关键点。图7为依次连接关键点abcd完成墙面的重建。

步骤3、根据平面间的拓扑关系对步骤2重建的平面进行优化;具体按照以下步骤实施:

步骤3.1,确定构成建筑物的平面之间的拓扑关系,具体为:根据平面的临近关系,判断两平面是否相连;遍历平面pi中的每一个点,pi是平面pi中的一点,利用k-d树找出pi的k个邻近点,如果邻近点中存在某点pk∈pj,其距离|pipk|<τ,τ=0.1,则标记平面pi和pj相连接;

步骤3.2,计算步骤3.1中相互连接的两平面的相交线方程,并优化重建结果,具体为:

对于平面ι:a1x+b1y+c1z+d1=0,平面π:a2x+b2y+c2z+d2=0,若两个平面相交,则交线的方向向量为:

(a1,b1,c1)×(a2,b2,c2)=(b1c2-b2c1,a2c1-a1c2,a1b2-a2b1),

交线上某点的坐标为:

图8为两平面相交示意图,分别将公式(4)中的z赋值为两相交平面的最大和最小z值zmax1,zmin1,zmax2,zmin2,求出两平面相交的关键点,如图9所示,然后分别更新两个平面的一侧端点坐标,优化相交平面的重建结果。

如图10所示,由于点云数据缺失,导致重建模型底端不一致,若平面底端的两个端点z值差距小于β,β=0.5,则将平面的两个底端对齐。

步骤4、在步骤3的基础上,根据窗户边框与墙面的拓扑关系,通过构造墙面的最小包围盒,提取窗户的点云信息,并利用基于距离的聚类方法,对窗户进行分割,将每个窗户单独的提取出来。然后利用区域增长的方法根据窗框的宽度和高度对窗户进行分类,并利用模式匹配将不完整的窗户进行归类。最后,利用四边形对窗户进行表示,完成建筑物细节的重建。具体按照以下步骤实施:

步骤4.1,窗户提取与分割,具体为:图11所示,为通过构造最小包围盒提取窗户点云,根据每个平面的最大和最小x,y,z值:xmaxi,ymaxi,zmaxi,xmini,ymini,zmini,计算墙面的最小包围盒,将包含在墙面的最小包围盒内的点云簇提取出来,利用步骤1.4提出的基于距离的分割方法对窗户点云进行分割,将每个窗户分别提取出来,去除靠近墙面最高处和最低处的细小点云簇,这主要是由于在现代建筑物中,窗户并不会紧挨着墙面的最高处或最低处。

步骤4.2,窗户分类,具体为:首先,遍历根据步骤4.1提取的窗框点云簇,记录每个窗框的高度hi和宽度wi,将不完整的窗框(窗框宽度或高度接近于0)提取出来,然后遍历剩余的窗框点云簇,利用区域增长的方法将具有相似宽度和高度的窗框归为一类,并将每类窗框中最大的宽度和高度值作为该类窗户tn的长和宽,分为用fhn和fwn表示;

步骤4.3,对步骤4.2中不完整窗框归类,具体为:判断窗框不完整类型,判断公式为:

fsim=λ*min(|wi-fwn|,|hi-fhn|)+(1-λ)*min(|ci-cmn|,|ri-rmn|)(5)

其中,wi和hi表示第i个不完整的窗框wi的宽度和高度,fwn和fhn为经过步骤4.2分类后得到已有窗户结构tn的宽度和高度,min(|wi-fwn|,|hi-fhn|)表示wi和窗户结构tn的结构相似性,cmn为tn第m列最左端的x或者y值,rmn为tn第m行最上端的z值,ci为窗框wi最左端的x或者y值,ri为窗框wi最上端的z值,min(|ci-cmn|,|ri-rmn|)表示不完整窗框wi与已有窗框模式tn之间的排列规整程度的高低,fsim值越小,说明不完整窗框wi和已有的窗户模式越相近,将不完整窗框wi归为具有最小fsim值的窗户模式;

步骤4.4,窗户位置确定,具体为:根据每一个窗框点云簇的左上角点坐标的y,z值对每个点云簇进行聚类,利用区域增长的方法将具有相似y值或z值的点聚为一类,得到的聚类数即为窗户的行数和列数,假设第i行的z值为hi,第i列的左端的y值为vj,拟合得到直线方程为:z=hi,y=vj,每一行的横向间隔为:shi=hi-hi-1,纵向间隔为:svi=vi-vi-1,横线和竖线相交,即可确定每个窗户的位置;如图12所示,图12中的横线为利用z值拟合得到的直线,竖线为利用y值拟合得到的直线。每一行的横向间隔为:shi=hi-hi-1,纵向间隔为:svi=vi-vi-1。横线和竖线相交,即可确定每个窗户的位置。

步骤4.5,窗户重建,具体为:根据步骤4.2得到每类窗框的长度fhn和宽度fwn,用四边形对窗户进行表示,将窗户模板重复地绘制到直线z=hi,y=vj相交处。此时应注意:绘制窗户的位置是否已经存在其它类型的窗户;绘制的窗户是否超过墙面的边界,如图13所示,为最终窗户的重建结果。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1