一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

建筑物的三维点云简化方法

2022-09-01 10:13:06 来源:中国专利 TAG:


1.本发明涉及一种建筑物的三维点云简化方法,属于建筑物的三维简化技术领域。


背景技术:

2.当前无人机技术的广泛应用使得我们可以利用激光雷达、倾斜测量等技术获得一个地区建筑物的三维点云;这些三维点的数据量十分巨大,进而会带来巨大存储和计算压力,给相关的空间分析计算、三维展现、互联网交互带来巨大困难;而建筑物通常是由规则的几何形状构成的,大量的点属于冗余点完全可以删除不参与存储和计算,所以进行建筑物的三维点云简化十分必要。
3.进行建筑物的三维简化目前行业内有两种模式,一、纯人工选取关键点,这种模式较为直接,但是由于数据量多人工选取往往效率较低,无法适应大规模应用;同时三维点的视角效果可能与正常的三维世界的视觉效果有一定偏差,所以人工选取较少点时通常会导致建筑物的变形;二、利用人工智能的算法识别出建筑物的几何特征,进而勾勒出建筑物几何形状,这种模式需要海量的数据训练,而在现实当中一个区域的建筑物是有限的,无法构造海量训练数据集,为了防止智能算法选择错误此类方法通常只能删除较少的冗余点。


技术实现要素:

4.针对如何快速而准确的简化建筑物三维点云的问题,本发明提供一种建筑物的三维点云简化方法。
5.本发明的一种建筑物的三维点云简化方法,包括:
6.s1、输入三维点云数据列表list,获得三维点云空间坐标,根据三维点云空间坐标,获得区域景深尺度变量ptdeep;确定列表list中三维点的个数ptnum;建立三维点状态列表stlist和三维点可去除性列表rmlist;
7.s2、建立平面估算算子planopt,算子planopt的输入为一个三维点inputpt,输出为平面估值planoptresult,具体包括:
8.s201、建立算子过滤点列表planoptlist,在列表list中查找以inputpt为中心、以ptdeep为半径的空间范围内的所有三维点存储到列表planoptlist中;
9.s202、列表planoptlist中三维点的个数为planoptnum;
10.s203、令:算子x方向积累差异性xdiff=0;算子y方向积累差异性ydiff=0;算子z方向积累差异性zdiff=0;
11.s204、令:平面估值planoptresult=0;
12.s205、令:算子计数器planoptcounter=1;
13.s206、取出列表planoptlist中第planoptcounter个元素赋值给算子暂存三维点planopttp;
14.s207、xdiff=xdiff tanh((planopttp.px-inputpt.px)/planoptnum/ptdeep);
15.tanh()表示双曲正切函数,planopttp.px表示planopttp的x轴坐标,inputpt.px
表示inputpt的x轴坐标;
16.s208、ydiff=ydiff tanh((planopttp.py-inputpt.py)/planoptnum/ptdeep);
17.planopttp.py表示planopttp的y轴坐标,inputpt.py表示inputpt的y轴坐标;
18.s209、zdiff=zdiff tanh((planopttp.pz-inputpt.pz)/planoptnum/ptdeep);
19.planopttp.pz表示planopttp的z轴坐标,inputpt.pz表示inputpt的z轴坐标;
20.s210、planoptcounter=planoptcounter 1;
21.s211、如果planoptcounter》planoptnum,则转到s212,否则转到s206;
22.s212、planoptresult=((xdiff ydiff)/2 zdiff)/(2
×
planoptnum);
23.s3、基于算子planopt对列表list的每个三维点进行处理,获得平面估值planoptresult存储到列表stlist之中;
24.s4、基于列表stlist计算三维点可去除性列表rmlist中每一个元素的值;
25.s5、基于rmlist获取列表list简化之后的结果。
26.作为优选,s1包括:
27.s101、输入三维点云数据到列表list,列表list中每一个列表项为一个三维点,每个三维点包含三个属性:点的x轴坐标px,点的y轴坐标py,点的z轴坐标pz;
28.s102、将列表list中px的最大值赋给maxx;
29.s103、将列表list中py的最大值赋给maxy;
30.s104、将列表list中pz的最大值赋给maxz;
31.s105、将列表list中px的最小值赋给minx;
32.s106、将列表list中py的最小值赋给miny;
33.s107、将列表list中pz的最小值赋给minz;
34.s108、确定列表list中三维点的个数ptnum;
35.s109、建立三维点状态列表stlists,列表stlists中包括ptnum个元素,列表stlists中每一个表项为一个整型数,设置列表stlists中所有元素的值为0;
36.s110、建立三维点可去除性列表rmlist,三维点可去除性列表rmlist包括ptnum个元素,三维点可去除性列表rmlist中每一个表项为一个整型数;设置三维点可去除性列表rmlist中所有元素的值为0;
37.s111、计算第一阶段第一暂存变量s1temp1=((maxx-minx) (maxy-miny))/200;
38.s112、计算第一阶段第二暂存变量s1temp2=((maxz-minz))/100;
39.s113、获得区域景深尺度变量ptdeep=tanh(s1temp1/(s1temp1 s1temp2))
×
3.14
×
(s1temp1 s1temp2)/5。
40.作为优选,s3包括:
41.s301、平面分析计数器processcounter=1;
42.s302、利用算子planopt进行处理,列表list的第processcounter个元素赋给算子planopt的inputpt,算子planopt输出的planoptresult存储到平面分析暂存变量processtemp之中;
43.s303、将平面分析暂存变量processtemp的值存储到列表stlist中;
44.s304、processcounter=processcounter 1;
45.s305、如果processcounter》ptnum则转到s306,否则转到s302;
46.s306、处理结束。
47.作为优选,s4包括:
48.s401、令:分析计数器anacounter=1;
49.s402、令:局部循环计数器localcounter=1,局部聚合评价变量localsum=0,局部聚合计数器localsumc=0;
50.s403、局部点localpt=list[localcounter];全局点globalpt=list[anacounter];
[0051]
list[localcounter]表示列表list中第localcounter个三维点,list[anacounter]表示列表list中第anacounter个三维点;
[0052]
s404、localpt.px=(localpt.px globalpt.px)/2;
[0053]
localpt.py=(localpt.py globalpt.py)/2;
[0054]
localpt.pz=(localpt.pz globalpt.pz)/2;
[0055]
localpt.px表示localpt的x轴坐标,localpt.py表示localpt的y轴坐标,localpt.pz表示localpt的z轴坐标,globalpt.px表示globalpt的x轴坐标,globalpt.py表示globalpt的y轴坐标,globalpt.pz表示globalpt的z轴坐标;
[0056]
s405、局部距离暂存分析变量localtempdis=(abs(localpt.px) abs(localpt.py) abs(localpt.pz))/3,abs()表示绝对值函数;
[0057]
s406、如果localtempdis》ptdeep,则转到s409,否则转到s407;
[0058]
s407、localsum=localsum stlist[anacounter]-stlist[localcounter];
[0059]
stlist[anacounter]表示列表stlist中的第anacounter个元素的值,stlist[localcounter]表示列表stlist中的第localcounter个元素的值;
[0060]
s408、localsumc=localsumc 1;
[0061]
s409、localcounter=localcounter 1;
[0062]
s410、如果localcounter》ptnum,则转到s411,否则转到s403;
[0063]
s411、rmlist[anacounter]=localsum/localsumc;
[0064]
rmlist[anacounter]表示三维点可去除性列表rmlist中第anacounter个元素的值;
[0065]
s412、anacounter=anacounter 1;
[0066]
s413、如果anacounter》ptnum,则转到s414,否则转到s402;
[0067]
s414、处理结束。
[0068]
作为优选,s5包括:
[0069]
s501、建立简化表达列表jhbdlist,列表jhbdlist为空的列表;
[0070]
s502、令:简化计数器jhcounter=1;
[0071]
s503、如果rmlist[jhcounter]》0.5,则转到s505,否则转到s504;
[0072]
rmlist[jhcounter]表示三维点可去除性列表rmlist中第jhcounter个元素的值;
[0073]
s504、将list[jhcounter]加入到列表jhbdlist之中;
[0074]
list[jhcounter]表示列表中第jhcounter个元素的值;
[0075]
s505、jhcounter=jhcounter 1;
[0076]
s506、如果jhcounter》ptnum,则转到s507,否则转到s503;
[0077]
s507、将列表jhbdlist作为简化之后的结果输出。
[0078]
本发明的有益效果,本发明基于平面估算算子对一个三维点处于平面中的位置进行估算,进而根据估算内容进行三维点的可去除性分析,基于分析结果实现建筑物的三维点云简化。通过本发明方法,在没有训练数据的情况下可以对一个建筑物的三维点云在平面中的位置进行评价分析,这一评价结果可以直接以一定的阈值进行点的选取,实现快速而准确的建筑物的三维点云简化。
附图说明
[0079]
图1为本发明的流程示意图。
具体实施方式
[0080]
下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0081]
本实施方式的建筑物的三维点云简化方法,包括:
[0082]
步骤1、输入三维点云数据列表list,获得三维点云空间坐标最大x轴坐标maxx,获得三维点云空间坐标最大y轴坐标maxy,获得三维点云空间坐标最大z轴坐标maxz;获得三维点云空间坐标最小x轴坐标minx,获得三维点云空间坐标最小y轴坐标miny,获得三维点云空间坐标最小z轴坐标minz;获得点云中三维点的个数ptnum;建立三维点状态列表stlist,建立三维点可去除性列表rmlist,获得区域景深尺度变量ptdeep;具体包括:
[0083]
步骤101、输入三维点云数据list,list中每一个列表项为一个三维点,这个三维点包含三个属性:点的x轴坐标px,点的y轴坐标py,点的z轴坐标pz;
[0084]
步骤102、获得三维点云空间坐标最大x轴坐标maxx=list中px的最大值;
[0085]
步骤103、获得三维点云空间坐标最大y轴坐标maxy=list中py的最大值;
[0086]
步骤104、获得三维点云空间坐标最大z轴坐标maxz=list中pz的最大值;
[0087]
步骤105、获得三维点云空间坐标最小x轴坐标minx=list中px的最小值;
[0088]
步骤106、获得三维点云空间坐标最小y轴坐标miny=list中py的最小值;
[0089]
步骤107、获得三维点云空间坐标最小z轴坐标minz=list中pz的最小值;
[0090]
步骤108、获得点云中三维点的个数ptnum=获得list中点的个数;
[0091]
步骤109、建立三维点状态列表stlists=构造一个ptnum个元素的列表,列表中每一个表项为一个整型数;设置stlists中所有元素的值为0;
[0092]
步骤110、建立三维点可去除性列表rmlist=构造一个ptnum个元素的列表,列表中每一个表项为一个整型数;设置rmlist中所有元素的值为0;
[0093]
步骤111、第一阶段第一暂存变量s1temp1=((maxx-minx) (maxy-miny))/200;
[0094]
步骤112、第一阶段第二暂存变量s1temp2=((maxz-minz))/100;
[0095]
步骤113、获得区域景深尺度变量ptdeep=tanh(s1temp1/(s1temp1 s1temp2))
×
3.14
×
(s1temp1 s1temp2)/5;其中tanh为双曲正切函数。
[0096]
步骤2、建立平面估算算子planopt,planopt的输入为一个三维点inputpt,输出为平面估值planoptresult,具体包括:
[0097]
步骤201、建立平面估算算子planopt,planopt的输入为一个三维点inputpt;
[0098]
步骤202、算子过滤点列表planoptlist=在list中查找以inputpt为中心以
ptdeep为半径的空间范围内的所有点;
[0099]
步骤203、算子过滤点个数planoptnum=planoptlist中三维点的个数;
[0100]
步骤204、算子x方向积累差异性xdiff=0;算子y方向积累差异性ydiff=0;算子z方向积累差异性zdiff=0;
[0101]
步骤205、平面估值planoptresult=0;
[0102]
步骤206、算子计数器planoptcounter=1;
[0103]
步骤207、算子暂存三维点planopttp=取出planoptlist中第planoptcounter个元素;
[0104]
步骤208、xdiff=xdiff tanh((planopttp.px-inputpt.px)/planoptnum/ptdeep);
[0105]
步骤209、ydiff=ydiff tanh((planopttp.py-inputpt.py)/planoptnum/ptdeep);
[0106]
步骤210、zdiff=zdiff tanh((planopttp.pz-inputpt.pz)/planoptnum/ptdeep);
[0107]
步骤211、planoptcounter=planoptcounter 1;
[0108]
步骤212、如果planoptcounter》planoptnum则转到步骤213,否则转到步骤207;
[0109]
步骤213、planoptresult=((xdiff ydiff)/2 zdiff)/(2
×
planoptnum);
[0110]
步骤214、将planoptresult作为planopt的结果返回。
[0111]
步骤3、基于planopt对list的每个元素进行处理,处理的结果存储到stlist之中,具体包括:
[0112]
步骤301、平面分析计数器processcounter=1;
[0113]
步骤302、利用planopt进行处理,planopt的inputpt=list的第processcounter个元素,算子的处理结果planoptresult存储到平面分析暂存变量processtemp之中。
[0114]
步骤303、stlist[processcounter]=processtemp;
[0115]
步骤304、processcounter=processcounter 1;
[0116]
步骤305、如果processcounter》ptnum则转到步骤306,否则转到步骤302;
[0117]
步骤306、步骤3处理结束。
[0118]
步骤4、基于stlist计算三维点可去除性列表rmlist中每一个元素的值,具体包括:
[0119]
步骤401、分析计数器anacounter=1;
[0120]
步骤402、局部循环计数器localcounter=1;局部聚合评价变量localsum=0;局部聚合计数器localsumc=0;
[0121]
步骤403、局部点localpt=list[localcounter];全局点globalpt=list[anacounter];
[0122]
步骤404、localpt.px=(localpt.px globalpt.px)/2;
[0123]
localpt.py=(localpt.py globalpt.py)/2;
[0124]
localpt.pz=(localpt.pz globalpt.pz)/2;
[0125]
步骤405、局部距离暂存分析变量localtempdis=(abs(localpt.px) abs(localpt.py) abs(localpt.pz))/3;
[0126]
步骤406、如果localtempdis》ptdeep则转到步骤409,否则转到步骤407,
[0127]
步骤407、localsum=localsum stlist[anacounter]-stlist[localcounter];
[0128]
步骤408、localsumc=localsumc 1;
[0129]
步骤409、localcounter=localcounter 1;
[0130]
步骤410、如果localcounter》ptnum则转到步骤411,否则转到步骤403;
[0131]
步骤411、rmlist[anacounter]=localsum/localsumc;
[0132]
步骤412、anacounter=anacounter 1;
[0133]
步骤413、如果anacounter》ptnum则转到步骤414,否则转到步骤402;
[0134]
步骤414、步骤4处理结束;
[0135]
步骤5、基于rmlist获取list简化之后的结果
[0136]
步骤501、建立简化表达列表jhbdlist=一个空的列表;
[0137]
步骤502、简化计数器jhcounter=1;
[0138]
步骤503、如果rmlist[jhcounter]》0.5则转到步骤505,否则转到步骤504;
[0139]
步骤504、将list[jhcounter]加入到jhbdlist之中;
[0140]
步骤505、jhcounter=jhcounter 1;
[0141]
步骤506、如果jhcounter》ptnum则转到步骤507,否则转到步骤503;
[0142]
步骤507、将jhbdlist作为简化之后的结果输出。
[0143]
为了验证把本实施方式方法的有效性,引入一个城市区域所有建筑物的三维点云数据,该数据的数据量为539m,需要进行点云数据简化,本实施方式方法和传统的人工简化、人工智能识别模型方法进行比对。比对效果如下:
[0144][0145]
从以上结果可以看出,本实施方式方法可以更加有效地简化建筑物三维点云数据,其简化后的大小远远小于两个传统方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献