建筑物点云提取方法、装置、计算机设备及可读存储介质
技术领域
本发明涉及激光点云分类技术领域,特别涉及一种建筑物点云提取方法、装置、计算机设备及可读存储介质。
背景技术
机载激光雷达(LIDAR)技术是近年来发展起来的一种可以直接获取地面三维信息的技术,具有传统航空摄影测量无可比拟的优势,激光雷达扫描系统避免了传统摄影测量中所必须的定向及影像匹配等步骤,相比于传统的摄影测量方法速度快、精度高、成本低,具备实时性、高效性、非接触性、数据量大等优点。但LIDAR获取的输电走廊的点云数据除包含建筑物信息外,也包含了其他点云信息,如地面信息、植被信息及导线信息等,要准确获取建筑物的三维信息,必须对LIDAR数据进行处理。
由于建筑物的几何模型具有多样性、复杂性,建筑物所处的人工环境和自然环境一般比较复杂,既有树木等植被,又有道路,杆塔等其他人工地物,建筑物的提取一直是个难点,目前提取建筑物的方法主要有以下3类:
1)基于区域增长法:该方法先计算点云法线,然后根据建筑物屋顶面的特性,采用计算点云法线夹角的策略提取建筑物点云,但初始种子点和增长停止准则难以确定,增长过程比较耗时且容易出现过增长。
2)基于点云重采样法:该方法将点云重采样得到规则格网数据或栅格化成距离图像,利用已有图像处理方法提取建筑物,但数据重采样会降低提取结果的精度。
3)基于特征分类的方法:该方法首先由LIDAR点云数据计算点云特征及影像特征,选取部分点云作为训练样本,利用SVM/IVM/Adaboost等机器学习算法将点云分类,从分类结果中得到建筑点云。这类方法计算复杂度较高,特征学习时间较长,且同于分类时没有考虑邻域信息,存在将同一地物点云分为多种类别地物的情况。
尽管已有多种建筑物点云提取方法,但由于建筑物几何特征的复杂性与多样性,同时建筑物所处的人工环境和自然环境一般比较复杂,既有树木等植被,又有道路、杆塔等其他人工地物,准确且高效的提取建筑物方法仍有待研究。
发明内容
本发明实施例提供了一种建筑物点云提取方法,以解决现有技术中建筑物点云提取方式存在的准确度低或效率低的技术问题。该方法包括:
在输电走廊的激光雷达点云数据中获取地面点云以及建筑物与高出地面植被的混合点云;
将所述地面点云以及所述混合点云生成格网,根据所述地面点云以及所述混合点云中每个点的二维坐标确定每个点在所述格网中对应的网格块;
在所述地面点云中建立二维的德洛内三角网,并将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,所有种子网格块组成种子网格块集合;
针对每个种子网格块进行八邻域网格聚类,得到该种子网格块的八邻域网格聚类结果,各种子网格块的八邻域网格聚类结果组成网格聚类结果;
将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;
在欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;
从所述数据点集合中确定建筑物点云。
本发明实施例还提供了一种建筑物点云提取装置,以解决现有技术中建筑物点云提取方式存在的准确度低或效率低的技术问题。该装置包括:
点获取模块,用于在输电走廊的激光雷达点云数据中获取地面点云以及建筑物与高出地面植被的混合点云;
格网建立模块,用于将所述地面点云以及所述混合点云生成格网,根据所述地面点云以及所述混合点云中每个点的二维坐标确定每个点在所述格网中对应的网格块;
种子网格块确定模块,用于在所述地面点云中建立二维的德洛内三角网,并将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,所有种子网格块组成种子网格块集合;
网格聚类模块,用于针对每个种子网格块进行八邻域网格聚类,得到该种子网格块的八邻域网格聚类结果,各种子网格块的八邻域网格聚类结果组成网格聚类结果;
距离聚类模块,用于将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;
分层模块,用于将欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;
点云提取模块,用于从所述数据点集合中确定建筑物点云。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的建筑物点云提取方法,以解决现有技术中建筑物点云提取方式存在的准确度低或效率低的技术问题。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的建筑物点云提取方法的计算机程序,以解决现有技术中建筑物点云提取方式存在的准确度低或效率低的技术问题。
在本发明实施例中,本申请通过将地面点云以及建筑物与高出地面植被的混合点云生成格网,再根据地面点云以及建筑物与高出地面植被的混合点云中每个点的二维坐标确定每个点在格网中对应的网格块,再在地面点云中建立二维的德洛内三角网,将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,相对解决了现有技术中区域增长法中初始种子难以确定的问题;再针对每个种子网格块进行八邻域网格聚类,该方式运算速度快,不直接针对点云进行处理,而是先针对格网块进行聚类,大大加快了点云的聚类速度,相对解决了现有技术中区域增长法与基于特征分类法的耗时过长的问题;最后,将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;在欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;从所述数据点集合中确定建筑物点云,实现了将符合建筑物特征的点提取为建筑物点,有利于提高提取精度,相对解决了现有技术中基于点云重采样法中精度低的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例提供的一种建筑物点云提取方法的流程图;
图2是本发明实施例提供的一种实施上述建筑物点云提取方法的示意流程图;
图3是本发明实施例提供的一种计算机设备的结构示意图;
图4是本发明实施例提供的一种建筑物点云提取装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本发明实施例中,提供了一种建筑物点云提取方法,如图1所示,该方法包括:
步骤102:在输电走廊的激光雷达点云数据中获取地面点云以及建筑物与高出地面植被的混合点云;
步骤104:将所述地面点云以及所述混合点云生成格网,根据所述地面点云以及所述混合点云中每个点的二维坐标确定每个点在所述格网中对应的网格块;
步骤106:在所述地面点云中建立二维的德洛内三角网,并将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,所有种子网格块组成种子网格块集合;
步骤108:针对每个种子网格块进行八邻域网格聚类,得到该种子网格块的八邻域网格聚类结果,各种子网格块的八邻域网格聚类结果组成网格聚类结果;
步骤110:将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;
步骤112:在欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;
步骤114:从所述数据点集合中确定建筑物点云。
由图1所示的流程可知,在本发明实施例中,本申请通过将地面点云以及建筑物与高出地面植被的混合点云生成格网,再根据地面点云以及建筑物与高出地面植被的混合点云中每个点的二维坐标确定每个点在格网中对应的网格块,再在地面点云中建立二维的德洛内三角网,将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,相对解决了现有技术中区域增长法中初始种子难以确定的问题;再针对每个种子网格块进行八邻域网格聚类,该方式运算速度快,不直接针对点云进行处理,而是先针对格网块进行聚类,大大加快了点云的聚类速度,相对解决了现有技术中区域增长法与基于特征分类法的耗时过长的问题;最后,将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;在欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;从所述数据点集合中确定建筑物点云,实现了将符合建筑物特征的点提取为建筑物点,有利于提高提取精度,相对解决了现有技术中基于点云重采样法中精度低的问题。
具体实施时,可以扫描输电走廊,获得包括建筑物、地面、导线、植被在内的激光雷达点云数据,对该激光雷达点云数据进行预处理,提取出:地面点云S1={p1,p2,...,pn}、建筑物与高植被(即高出地面的植被)的混合点云S2={p1,p2,...,pn}、导线点云、其它点云。
具体实施时,将地面点云以及建筑物与高出地面植被的混合点云生成格网的过程中,可以生成边长为a(例如,a可以设定为3)的格网G1,统计S1与S2的所有点的X、Y坐标的最大值、最小值,分别为MaxX、MaxY、MinX、MinY,根据格网G1边长a计算格网G1的行数M和列数N,根据每个点的二维坐标(x,y)计算该点所在的行r和列c,然后将该点对应到G1中第r行c列的格网块中。
具体实施时,在地面点云中建立二维(忽略Z值)的德洛内三角网(Delaunaytriangulation)的过程可以采用Bowyer-Watson算法实现,所有的德洛内三角网组成集合Td。
具体实施时,在地面点云中建立二维(忽略Z值)的德洛内三角网之后,可以根据德洛内三角网的坐标值来确定出至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块,即可确定出种子网格块,此外,本实施例还可以通过以下步骤实现将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块:
针对每个德洛内三角网,计算该德洛内三角网的平面与水平面之间的夹角,该夹角为该德洛内三角网的坡度;
确定出至少两条边大于预设边长且所述夹角小于预设角度的德洛内三角网,组成三角网集合T2;具体实施时,具体的,该预设边长的取值可以根据预估建筑物的高度来确定,例如,一个建筑物的面积一般不会太小,长度一般大于5米,所以作为建筑物候选点的三角形至少有两条边要大于5米,即上述预设边长可以为5米;该预设角度可以根据建筑物所处的地面平整度确定,建筑物是建立在比较平坦的地面上,也就是说建筑物与地面的夹角一般小于20度,即该预设角度可以是20度;
针对三角网集合T
2中的每个德洛内三角网,确定该德洛内三角网的最小外接矩形在格网G
1中所跨越的网格块,确定出的网格块为种子网格块,所有种子网格块组成集合为G
2={...,G
rc,...},其中G
rc表示第r行第c列种子网格块的网格编号,G
2是G
1的子集
具体实施时,可以通过以下步骤实现针对每个种子网格块进行八邻域网格聚类,得到该种子网格块的八邻域网格聚类结果:
针对种子网格块集合G2中的每个种子网格块Grc循环执行以下步骤;
将当前种子网格块Grc放入一个聚类集合G3中,在所述种子网格块集合G2中删除该当前种子网格块Grc;
针对所述聚类集合G3中的每个种子网格块,执行以下步骤,直至遍历完聚类集合G3中的所有种子网格块,所述聚类集合G3为当前种子网格块的八邻域网格聚类结果:
从聚类集合G3中取出一个种子网格块Grc,获取与该种子网格块Grc八邻域相邻的8个网格块,8个网格块组成集合G4;
当该8个网格块中存在与所述种子网格块集合G2中的种子网格块重合的网格块Gij时,将重合的种子网格块Gij放入聚类集合G3中,在所述种子网格块集合G2中删除该重合的种子网格块Gij。
各种子网格块的八邻域网格聚类结果G3组成网格聚类结果,网格聚类结果形成集合G5,集合G5的每个元素为一个集合G3。
具体实施时,将所述网格聚类结果G5中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果G6,包括:
针对每个种子网格块的八邻域网格聚类结果G3中所有网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到该种子网格块对应的距离聚类结果G6i,各种子网格块对应的距离聚类结果G6i组成欧式距离聚类结果G6。
具体的,欧氏距离聚类的距离阀值为D,D的取值主要是去掉一些明显的不是建筑物范围内的点,D的取值可以根据目标建筑物最小尺寸确,例如,D的取值可以是4,每个聚类的最小数量阀值为可以min,min表示目标建筑物最小点云数,可以根据目标建筑点云的数量大致确定,例如,min可以为8,最大数量阀值可以max,max可以取无限大,为方便计算机计算,可以取一个相对比较大的值即可,例如,max可以为10000000,欧式距离聚类结果得到集合G6={G61,G62,…G6n},其中G6i∈G6G6i={P1,P2,…Pn},1<=i<=n,G6i由若干个点云组成。
具体实施时,为了精准地确定出数据点集合,可以将欧式距离聚类结果内的所有点统一整体按照高程值分层,进而确定出数据点集合,本实施例也可以通过以下步骤分别对每个种子网格块对应的距离聚类结果中的点按照高程值分层,进而确定出数据点集合,例如,将欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合,包括:
将每个种子网格块对应的距离聚类结果G6i中的点按照高程值分层,每层高度可以根据计算精度等因素确定,例如,每层高度可以为0.1米;例如,找到G6i所有点高程值(Z值)的最大值MaxZ、最小值MinZ,从最大高程值到最小高程值分层,每层高度0.1米,从上到下的层数依次为0,1,2,…,N,其中:
针对每层中的点,随机选取两个点组成直线模型,距直线模型的距离小于第一预设距离的点为直线模型的局内点,确定该层内的每个点是否属于直线模型的局内点,直至遍历该层内所有的点,包括点最多的直线模型为该层的匹配直线模型,匹配直线模型内的点组成该层的分数据点集合,各层的分数据点集合组成该种子网格块对应的距离聚类结果对应的第一数据点集合M={P1,P2,…,Pn},各种子网格块对应的距离聚类结果对应的第一数据点集合组成所述数据点集合。
具体实施时,该第一预设距离可以根据计算结果精度、计算量等因素确定,例如,第一预设距离可以为0.01米。
具体实施时,从所述数据点集合中确定建筑物点云,包括:
针对每个种子网格块对应的距离聚类结果对应的第一数据点集合M={P1,P2,…,Pn},执行以下步骤,直至遍历该第一数据点集合中的每个点:
从该第一数据点集合中取一个点Pi,在第一数据点集合中确定出以该点为圆心且预设半径值为半径的圆所包含的点P(xi,yi,zi),i=0,1,2,…,n;
利用确定出的所有点P(xi,yi,zi)拟合平面;
针对确定出的每个点,计算点到拟合出的平面的距离值;例如,可以先计算拟合出的平面的法向量,进而基于法向量计算每个点到拟合出的平面的距离值;
将距离值小于第二预设距离的点确定为平面内的点;例如,该第二预设距离的取值可以根据目标建筑物某一平面内建筑物的点云厚度确定,一般取值范围可以是0.1至0.2;
当平面内的点的总数与确定出的点的总数之间的比例大于预设值(例如,该预设值可以为0.8),确定该平面为建筑物的平面,确定该平面内的点为建筑物的点。
以下结合图2描述实施上述建筑物点云提取方法的过程,该过程包括以下步骤:
(1)扫描输电走廊,获得包括建筑物、地面、导线、植被在内的激光雷达点云数据。
(2)对获得的激光雷达点云数据进行预处理,提取出:地面点云S1={p1,p2,...,pn}、建筑物与高植被混合的激光点云S2={p1,p2,...,pn}、导线点云、其它点云。
(3)取S1(地面点云)与S2(建筑物与高植被混合点云)的点云,通过生成边长为a(a设定为3)的格网G1。
(4)统计S1与S2的所有点的X、Y坐标的最大值、最小值,分别为MaxX,MaxY、MinX、MinY。
(5)根据格网GRID边长a计算格网GRID的行数M和列数N。
(6)将每个点云分配到格网块内:首先根据当前点的二维坐标(x,y)计算该点所在的行r和列c,然后将该点对应到格网G1中第r行c列的格网块中。
(7)将地面点S1通过步骤(8)至步骤(16)的Bowyer-Watson算法构建二维(忽略Z值)的德洛内三角网(Delaunay triangulation)。
(8)统计S1的所有点的X、Y坐标的最大值、最小值,分别为PMaxX、PMaxY、PMinX、PMinY,先将X、Y坐标的最大值、最小值外扩m米,将S1的宽度向两侧外扩一个值Δx,将S1的高度的最大值外扩一个值Δy,具体实施时,m可以是任意大于等于0的数,为了便于计算可以取为整数,例如5米,Δx可以是S1宽度的任意倍数,Δy可以是S1高度的任意倍数,例如,1倍、2倍等,只要X、Y、宽度、高度扩后得到的超级三角形ABC能够包含S1的所有点的要求即可,计算公式如下:
PMaxX=PMaxX+n+Δx
PMaxY=PMaxY+n+Δy
PMinX=PMinX-n-Δx
PMinY=PMinY-n
式中:Δx与Δy需满足如下关系式:
w=PMaxX-PMinX(PMaxX、PMinX均为外扩前的值)
h=PMaxY-PMinY(PMaxY、PMinY均为外扩前的值)
n>0,Δx>0,Δy>0
(9)得到超级三角形ABC,包括所有的S1中的所有的点,三个点的坐标为
B(P
MinX,P
MinY),C(P
MaxX,P
MinY),将该超级三角形放到三角形集合T
d中,T
d中的所有三角形的边放到边集合E
Td中。
(10)从S1中取一个点Pi,从Td中取出一个三角形,三角形三个顶点P1(P1x,P1y),P2(P2x,P2y),P3(P3x,P3y),则P1P2、P1P3、P2P3的向量分别为(P2x-P1x,P2y-P1y),(P3x-P1x,P3y-P1y),(P3x-P2x,P3y-P2y)。
(11)计算三角形外接圆的面积SΔ与三边的边长LP1P2,LP1P3,LP2P3,计算公式如下:
(12)三角形外接圆半径R与圆心C(Cx,Cy)计算公式如下
(13)判断Pi(Pix,Piy)是否在Td的三角形的外接圆中,计算公式如下:
(14)如果在外接圆内,则将该三角形从Td中删除,三角形的边放到临时的集合TEMP中;如果在集合TEMP中有边加入了两次,则将该边从集合ETd中删除;
(15)重复步骤(10)至步骤(14),直到Td中的所有三角形全部被处理完毕。从ETd中查找包含Pi的空腔。连接Pi与空腔内的所有顶点,将生成的新的三角形加入到Td中,生成的三角形的边加入到ETd中。
(16)重复步骤(10)至步骤(15),直到S1内的所有点处理完成,将包含超级三角形顶点的三角形从Td删除。Td就是最后所要的Delaunay三角网的所有三角形。
(17)从Delaunay三角网的Td三角形集合中,找到至少两条边大于L米(即上述预设边长)的所有三角形的集合T1。
(18)从集合T1中,取出一个三角形,三个顶点为:P1(P1x,P1y,P1z),P2(P2x,P2y,P2z),P3(P3x,P3y,P3z),则P1P2与P1P3的向量分别为(P2x-P1x,P2y-P1y,P2z-P1z),(P3x-P1x,P3y-P1y,P3z-P1z),计算两向量积,计算公式如下:
(19)计算三角形ΔP1P2P3平面与水平面的夹角θ,计算公式如下:
式中:A=(P2y-P1y)(P3z-P1z)-(P2z-P1z)(P3y-P1y)
B=(P2z-P1z)(P3x-P1x)-(P2x-P1x)(P3z-P1z)
C=(P2x-P1x)(P3y-P1y)-(P2y-P1y)(P3x-P1x)
(20)三角形的平面与水平面夹角θ小于阀值20度(即上述预设角度)的三角形的集合为T2。
(21)集合T
2中每个三角形的最小外接矩形在格网G
1中占用的网格块为种子网格块,种子网格块的编号组成的集合为G
2={...,G
rc,...},其中G
rc表示第r行第c列的网格编号,G
2是G
1的子集
(22)从G2中取出一个元素Grc(网格编号)放到一个新的集合(即上述聚类集合)G3中,将Grc从G2中删除。
(23)从G3中取出一个元素Grc,Grc的八邻域相邻的8个网格编号的集合为G4:
G4={G(r-1)(c-1),G(r-1)c,G(r-1)(c+1),Gr(c-1),Gr(c+1),G(r+1)(c-1),G(r+1)c,G(r+1)(c+1)}。
(24)如果G4有元素Gij属于G2,则将Gij放到集合G3中,并且从集合G2中删除。
(25)重复步骤(23)、步骤(24),直到G3中的元素被处理完毕。
(26)重复步骤(22)至步骤(25),直到G2中的元素被处理完毕。
(27)将所有G3形成一个集合G5(即上述网格聚类结果),G5的每个元素为一个集合。
(28)从G5中取出一个元素,得到该元素的所有网格内的建筑物与高植被的混合点云,运用欧氏距离聚类,聚类的距离阀值设为D1,每个聚类的最小数量阀值为min,最大数量阀值为max,聚类结果得到集合G6={G61,G62,…G6n},其中G6i∈G6,G6i={P1,P2,…Pn},1<=i<=n,G6i由若干个点云组成。
(29)从集合G6中取出一个元素G6i,找到G6i所有点高程值(Z值)的最大值MaxZ、最小值MinZ,从最大高程值到最小高程值分层,每层高度0.1米,从上到下的层数依次为0,1,2,…,N。其中:
(30)将每个点云分配到各个层内,首先根据当前点的坐标(x,y,z)计算该点所在的层F,然后将该点添加到第F层中,F的计算公式为:
(31)将每一层的点云,采用随机抽样一致性算法(RANSAC),找到与点云最匹配的直线模型。例如,随机选取两个点,得到直线模型,距直线的净空距离小于0.01米(即上述第一预设距离)的点云认为是局内点,不断迭代选取直线模型计算局内点,将局内点最多的模型作为最匹配的直线模型。迭代次数k的计算公式为:
式中:p表示迭代过程中从数据集内随机选取出的点均为局内点的概率,p=0.99
n表示模型需要选定的n个点,这里是直线模型n=2;
(32)重复步骤(31),得到所有层的直线模型数据点的集合M={P1,P2,…,Pn}(即上述每个种子网格块对应的距离聚类结果对应的第一数据点集合);
(33)从集合M中取一个点Pi为中心,取半径为n米(即上述预设半径值,例如,可以为1米)的圆内的一系列点P(xi,yi,zi),i=0,1,2,…,n,用最小二乘法计算P(xi,yi,zi)集合内点拟合的平面的法向量(A,B,C),计算公式如下:
平面方程的一般表达式:
Ax+By+Cz+D=0;
方程组:
令D=1,得到平面的法向量(A,B,C)
(34)根据法向量,算出P(xi,yi,zi)集合的每个点(xi,yi,zi)到平面的距离为d,计算公式如下:
(35)如果d小于dMin米(即上述第二预设距离),则认为点属于这个平面,如果平面内点数p与P(xi,yi,zi)的总点数n的比例大于pMax(即上述预设值,pMax的取值范围可以是0.8至0.9),则认为这个平面是建筑物的平面,平面点都认为是建筑物的点。提取出建筑物点云。
(36)重复(33)至(35),直到集合M中的所有点处理完毕。
(37)重复(29)至(36),直到集合G6中的所有元素处理完毕。
(38)重复(28)至(37),直到集合G5中的所有元素处理完毕,至此,输电走廊的建筑物点云提取完毕。
具体实施时,在本实施例中,提供了一种计算机设备,如图3所示,包括存储器302、处理器304及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的建筑物点云提取方法具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的建筑物点云提取方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种建筑物点云提取装置,如下面的实施例所述。由于建筑物点云提取装置解决问题的原理与建筑物点云提取方法相似,因此建筑物点云提取装置的实施可以参见建筑物点云提取方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图4是本发明实施例的建筑物点云提取装置的一种结构框图,如图4所示,该装置包括:
点获取模块402,用于在输电走廊的激光雷达点云数据中获取地面点云以及建筑物与高出地面植被的混合点云;
格网建立模块404,用于将所述地面点云以及所述混合点云生成格网,根据所述地面点云以及所述混合点云中每个点的二维坐标确定每个点在所述格网中对应的网格块;
种子网格块确定模块406,用于在所述地面点云中建立二维的德洛内三角网,并将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,所有种子网格块组成种子网格块集合;
网格聚类模块408,用于针对每个种子网格块进行八邻域网格聚类,得到该种子网格块的八邻域网格聚类结果,各种子网格块的八邻域网格聚类结果组成网格聚类结果;
距离聚类模块410,用于将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;
分层模块412,用于将欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;
点云提取模块414,用于从所述数据点集合中确定建筑物点云。
在一个实施例中,所述种子网格块确定模块,具体用于针对每个德洛内三角网,计算该德洛内三角网的平面与水平面之间的夹角,该夹角为该德洛内三角网的坡度;确定出至少两条边大于预设边长且所述夹角小于预设角度的德洛内三角网,组成三角网集合;针对三角网集合中的每个德洛内三角网,确定该德洛内三角网的最小外接矩形所跨越的网格块,确定出的网格块为种子网格块。
在一个实施例中,所述网格聚类模块,具体用于针对种子网格块集合中的每个种子网格块循环执行以下步骤:
将当前种子网格块放入一个聚类集合中,在所述种子网格块集合中删除该当前种子网格块;
针对所述聚类集合中的每个种子网格块,执行以下步骤,直至遍历完聚类集合中的所有种子网格块,所述聚类集合为当前种子网格块的八邻域网格聚类结果:
从聚类集合中取出一个种子网格块,获取与该种子网格块八邻域相邻的8个网格块;
当该8个网格块中存在与所述种子网格块集合中的种子网格块重合的网格块时,将重合的种子网格块放入聚类集合中,在所述种子网格块集合中删除该重合的种子网格块。
在一个实施例中,所述距离聚类模块,具体用于针对每个种子网格块的八邻域网格聚类结果中所有网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到该种子网格块对应的距离聚类结果,各种子网格块对应的距离聚类结果组成欧式距离聚类结果。
在一个实施例中,所述分层模块具体用于将每个种子网格块对应的距离聚类结果中的点按照高程值分层,每层高度为0.1米;
针对每层中的点,随机选取两个点组成直线模型,距直线模型的距离小于第一预设距离的点为直线模型的局内点,确定该层内的每个点是否属于直线模型的局内点,直至遍历该层内所有的点,包括点最多的直线模型为该层的匹配直线模型,匹配直线模型内的点组成该层的分数据点集合,各层的分数据点集合组成该种子网格块对应的距离聚类结果对应的第一数据点集合,各种子网格块对应的距离聚类结果对应的第一数据点集合组成所述数据点集合。
在一个实施例中,所述点云提取模块具体用于针对每个种子网格块对应的距离聚类结果对应的第一数据点集合,执行以下步骤,直至遍历该第一数据点集合中的每个点:
从该第一数据点集合中取一个点,在第一数据点集合中确定出以该点为圆心且预设半径值为半径的圆所包含的点;
利用确定出的所有点拟合平面;
针对确定出的每个点,计算点到拟合出的平面的距离值;
将距离值小于第二预设距离的点确定为平面内的点;
当平面内的点的总数与确定出的点的总数之间的比例大于预设值,确定该平面为建筑物的平面,确定该平面内的点为建筑物的点。
本发明实施例实现了如下技术效果:本申请通过将地面点云以及建筑物与高出地面植被的混合点云生成格网,再根据地面点云以及建筑物与高出地面植被的混合点云中每个点的二维坐标确定每个点在格网中对应的网格块,再在地面点云中建立二维的德洛内三角网,将至少两条边大于预设边长且坡度小于预设角度的德洛内三角网所跨越的网格块确定为种子网格块,相对解决了现有技术中区域增长法中初始种子难以确定的问题;再针对每个种子网格块进行八邻域网格聚类,该方式运算速度快,不直接针对点云进行处理,而是先针对格网块进行聚类,大大加快了点云的聚类速度,相对解决了现有技术中区域增长法与基于特征分类法的耗时过长的问题;最后,将所述网格聚类结果中网格块内的建筑物与高出地面植被的混合点云进行欧式距离聚类,得到欧式距离聚类结果;在欧式距离聚类结果内的所有点按照高程值分层,并确定每层中属于直线模型的点,各层中属于直线模型的点组成数据点集合;从所述数据点集合中确定建筑物点云,实现了将符合建筑物特征的点提取为建筑物点,有利于提高提取精度,相对解决了现有技术中基于点云重采样法中精度低的问题。
显然,本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。