一种面向树木的三维点云数据的简化方法技术

技术编号:19695911 阅读:30 留言:0更新日期:2018-12-08 12:13
本发明专利技术提供一种面向树木的三维点云数据的简化方法,该方法构造三维立方网格并计算网络与邻居网格的同质连接权值,并依据同质连接权值的大小来顺次剔除一些冗余点,简化树木的三维点云数据。利用本发明专利技术在简化数据的同时并尽量保持原有树木的三维点云数据所表达的植被结构,在树木三维建模领域具有较高的实际应用价值。

【技术实现步骤摘要】
一种面向树木的三维点云数据的简化方法
本专利技术属于空间定位、遥感、通信网络融合
,具体涉及一种面向树木的三维点云数据的简化方法,利用互联网、大数据、云计算技术对植物进行三维数据处理。
技术介绍
当前通过激光扫描仪、激光雷达等设备可以快速的对物体进行三维扫描,这些设备获得的是由大量三维空间点构成点云数据。利用这些点云数据可以快速和低成本的进行物体的三维建模具有较为重要的实际应用意义。然而,密集的空间扫描带来较为精细的物体细节信息的同时,也带来了极大的计算负担和存储负担,因此十分有必要对激光扫描仪、激光雷达等设备获得的三维点云数据进行简化,保留原有物体的特征的同时尽量的缩减点云数据集中三维空间点的数量。进行三维点云数据的简化对于获得数据量更少、更易于计算和显示的三维物体十分重要。当前的方法和技术多集中于:通过聚类算法、八叉树的分割查找、找到物体中平面、曲面的规律,在发现规律的同时删除掉或者合并在处在同一平面、曲面上冗余和重复的点。这些技术在简化较为规律的人造建筑、人造物体、存在大面积平面结构的对象的时候较为有效。然而,在处理树木的时候,由于树木包含的叶片、树枝,在这些对象上找到面和曲面规律较为困难,而通过强行进行聚类和八叉树分割会丢弃掉一些相对重要的枝杈和整体形态信息,因此当前的算法对于简化树木三维点云数据效率较低。本专利技术的任务是提出一种面向针叶树木的三维点云数据的简化方法,能够针对树木点云的特性,对其三维空间点的数量进行简化。
技术实现思路
:针对现有技术存在的问题,本专利技术提供一种面向树木的三维点云数据的简化方法,该方法构造三维立方网格并计算网络与邻居网格的同质连接权值,并依据同质连接权值的大小来顺次剔除一些冗余点,简化树木的三维点云数据。本专利技术所述的一种面向树木的三维点云数据的简化方法,包括以下步骤:S1.输入包含n个三维空间点的树木点云数据集PointDataSet,输入网格边长width,输入同质化聚束数量clusternum,输入简化百分比percent:S101.输入树木点云数据集PointDataSet,PointDataSet为一个三维空间点构成的数据集{p1,p2,..pn}该数据集包含n个三维空间点;其中任意一个三维点pi={px,py,pz},px为该点在x轴的坐标,py为该点在y轴的坐标,pz为该点在z轴的坐标;S102,统计PointDataSet中的所有点,获得PointDataSet中所有点的x坐标最大值xmax,x坐标最小值xmin,y坐标最大值ymax,y坐标最小值ymin,z坐标最大值zmax,z坐标最小值zmin;S103,PointDataSet中的所有点的x轴跨度xdistance=xmax-xmin,y轴跨度ydistance=ymax-ymin,z轴跨度zdistance=zmax-zmin;S104,输入网格边长width,输入同质化聚束数量clusternum;网格边长width的默认值为xdistance/1000;同质化聚束数量clusternum的默认值为100;S2.将PointDataSet所占用的三维空间按照边长为width切割为多个立方网格,构成立方网格列表CubeList:S201,立方网格列表CubeList=空集合;S202,x迭代器xcounter=xmin;S203,y迭代器ycounter=ymin;S204,z迭代器zcounter=zmin;S205,建立一个立方网格Cube,Cube包含以下属性:Cube对应的空间范围scope为从(xcounter,ycounter,zcounter)至(xcounter+width,ycounter+width,zcounter+width)Cube的中心点位置的坐标:cp=(xcounter+width/2,ycounter+width/2,ycounter+width/2)Cube的点密度density=0;Cube的隶属类目category=0;Cube的同质连权值priority=0;S206,Cube的点密度density=在PointDataSet中包含在Cube空间范围内的所有空间点的个数;S207,将Cube加入到CubeList之中;S208,zcounter=zcounter+width;S209,如果zcounter>=zmax则转到S210,否则转到S205;S210,ycounter=ycounter+width;S211,如果ycounter>=ymax则转到212,否则转到S204;S212,xcounter=xcounter-1;S213,如果xcounter>=xmax则转到S214,否则转到S203;S214,该步骤计算过程结束;S3.计算CubeList中每一个Cube的类属关系category,获得距离指数distanceindex:S301,将CubeList中每一个Cube的点密度density作为输入数据,通过k-means算法将输入数据划分为clusternum个类目,获得clusternum个聚类中心c[1],c[2],…c[clustenum];其中c[1]表示编号为1的聚类中心,c[2]表示编号为2的聚类中心,c[clustenum]表示编号为clusternum的聚类中心;c[i]表示第i个聚类中心;S302,对于CubeList中的每一个Cube,计算该Cube的density与clusternum个聚类中心的距离,并找到与density距离最近的聚类中心,将聚类中心的编号存储到Cube的类属关系category之中;S303,建立数组CloseDistance=空数组;S304,对于PointDataSet中的每一个三维空间点,找到与该点最近的另外一个三维空间点并将距离值加入到CloseDistance之中;S305,计算CloseDistance的均值avgdistacne;S307,统计CubeList所有Cube的category的均值avgcatalog;S308,获得距离指数distanceindex,其计算公式如下:S4.计算CubeList中每一个Cube同质连权值priority:S401,对于CubeList中的每一个Cube进行以下步骤的处理;S402,当前要处理网格currentCube=在CubeList中取出一个Cube;S403,当前要处理的中心点centerpoint=currentCube的中心点位置的坐标cp;S404,邻居列表neighborlist=计算CubeList中所有Cube的cp到centerpoint的距离,取出距离小于等于distanceindex的所有Cube;S405,allnum=neighborlist中Cube的数量;S406,同质化计数器scounter=0,异质化计数器ycounter=0,迭代计数器counter=1;S407,testCube=取出neighborlist中第counter个Cube;S408,diff=ABS(currentCube的隶属类目category-testCube的隶属类目c本文档来自技高网...

【技术保护点】
1.一种面向树木的三维点云数据的简化方法,包括以下步骤:S1.输入包含n个三维空间点的树木点云数据集PointDataSet,输入网格边长width,输入同质化聚束数量clusternum,输入简化百分比percent:S101.输入树木点云数据集PointDataSet,PointDataSet为一个三维空间点构成的数据集{p1,p2,..pn}该数据集包含n个三维空间点;其中任意一个三维点pi={px,py,pz},px为该点在x轴的坐标,py为该点在y轴的坐标,pz为该点在z轴的坐标;S102,统计PointDataSet中的所有点,获得PointDataSet中所有点的x坐标最大值xmax,x坐标最小值xmin,y坐标最大值ymax,y坐标最小值ymin,z坐标最大值zmax,z坐标最小值zmin;S103,PointDataSet中的所有点的x轴跨度xdistance=xmax‑xmin,y轴跨度ydistance=ymax‑ymin,z轴跨度zdistance=zmax‑zmin;S104,输入网格边长width,输入同质化聚束数量clusternum;网格边长width的默认值为xdistance/1000;同质化聚束数量clusternum的默认值为100;S2.将PointDataSet所占用的三维空间按照边长为width切割为多个立方网格,构成立方网格列表CubeList:S201,立方网格列表CubeList=空集合;S202,x迭代器xcounter=xmin;S203,y迭代器ycounter=ymin;S204,z迭代器zcounter=zmin;S205,建立一个立方网格Cube,Cube包含以下属性:Cube对应的空间范围scope为从(xcounter,ycounter,zcounter)至(xcounter+width,ycounter+width,zcounter+width);Cube的中心点位置的坐标:cp=(xcounter+width/2,ycounter+width/2,ycounter+width/2);Cube的点密度density=0;Cube的隶属类目category=0;Cube的同质连权值priority=0;S206,Cube的点密度density=在PointDataSet中包含在Cube空间范围内的所有空间点的个数;S207,将Cube加入到CubeList之中;S208,zcounter=zcounter+width;S209,如果zcounter>=zmax则转到S210,否则转到S205;S210,ycounter=ycounter+width;S211,如果ycounter>=ymax则转到212,否则转到S204;S212,xcounter=xcounter‑1;S213,如果xcounter>=xmax则转到S214,否则转到S203;S214,该步骤计算过程结束;S3.计算CubeList中每一个Cube的类属关系category,获得距离指数distanceindex:S301,将CubeList中每一个Cube的点密度density作为输入数据,通过k‑means算法将输入数据划分为clusternum个类目,获得clusternum个聚类中心c[1],c[2],…c[clustenum];其中c[1]表示编号为1的聚类中心,c[2]表示编号为2的聚类中心,c[clustenum]表示编号为clusternum的聚类中心;c[i]表示第i个聚类中心;S302,对于CubeList中的每一个Cube,计算该Cube的density与clusternum个聚类中心的距离,并找到与density距离最近的聚类中心,将聚类中心的编号存储到Cube的类属关系category之中;S303,建立数组CloseDistance=空数组;S304,对于PointDataSet中的每一个三维空间点,找到与该点最近的另外一个三维空间点并将距离值加入到CloseDistance之中;S305,计算CloseDistance的均值avgdistacne;S307,统计CubeList所有Cube的category的均值avgcatalog;S308,获得距离指数distanceindex,其计算公式如下:...

【技术特征摘要】
1.一种面向树木的三维点云数据的简化方法,包括以下步骤:S1.输入包含n个三维空间点的树木点云数据集PointDataSet,输入网格边长width,输入同质化聚束数量clusternum,输入简化百分比percent:S101.输入树木点云数据集PointDataSet,PointDataSet为一个三维空间点构成的数据集{p1,p2,..pn}该数据集包含n个三维空间点;其中任意一个三维点pi={px,py,pz},px为该点在x轴的坐标,py为该点在y轴的坐标,pz为该点在z轴的坐标;S102,统计PointDataSet中的所有点,获得PointDataSet中所有点的x坐标最大值xmax,x坐标最小值xmin,y坐标最大值ymax,y坐标最小值ymin,z坐标最大值zmax,z坐标最小值zmin;S103,PointDataSet中的所有点的x轴跨度xdistance=xmax-xmin,y轴跨度ydistance=ymax-ymin,z轴跨度zdistance=zmax-zmin;S104,输入网格边长width,输入同质化聚束数量clusternum;网格边长width的默认值为xdistance/1000;同质化聚束数量clusternum的默认值为100;S2.将PointDataSet所占用的三维空间按照边长为width切割为多个立方网格,构成立方网格列表CubeList:S201,立方网格列表CubeList=空集合;S202,x迭代器xcounter=xmin;S203,y迭代器ycounter=ymin;S204,z迭代器zcounter=zmin;S205,建立一个立方网格Cube,Cube包含以下属性:Cube对应的空间范围scope为从(xcounter,ycounter,zcounter)至(xcounter+width,ycounter+width,zcounter+width);Cube的中心点位置的坐标:cp=(xcounter+width/2,ycounter+width/2,ycounter+width/2);Cube的点密度density=0;Cube的隶属类目category=0;Cube的同质连权值priority=0;S206,Cube的点密度density=在PointDataSet中包含在Cube空间范围内的所有空间点的个数;S207,将Cube加入到CubeList之中;S208,zcounter=zcounter+width;S209,如果zcounter>=zmax则转到S210,否则转到S205;S210,ycounter=ycounter+width;S211,如果ycounter>=ymax则转到212,否则转到S204;S212,xcounter=xcounter-1;S213,如果xcounter>=xmax则转到S214,否则转到S203;S214,该步骤计算过程结束;S3.计算CubeList中每一个Cube的类属关系category,获得距离指数distanceindex:S301,将CubeList中每一个Cube的点密度density作为输入数据,通过k-means算法将输入数据划分为clusternum个类目,获得clusternum个聚类中心c[1],c[2],…c[clustenum];其中c[1]表示编号为1的聚类中心,c[2]表示编号为2的聚类中心,c[clustenum]表示编号为clusternum的聚类中心;c[i]表示第i个聚类中心;S302...

【专利技术属性】
技术研发人员:张素莉许骏付浩海张华潘欣张妳妳
申请(专利权)人:长春工程学院
类型:发明
国别省市:吉林,22

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1