一种基于三维扫描的变电站建模方法与流程

文档序号:27824872发布日期:2021-12-07 20:06阅读:471来源:国知局
一种基于三维扫描的变电站建模方法与流程

1.本发明涉及3d建模领域,特别是一种基于三维扫描的变电站建模方法。


背景技术:

2.近年来,随着智能设备以及数字化理念的不断发展,虚拟现实技术、智慧城市、数字化工厂等应用正在积极推进社会的运转和进步。其中,精准的三维数字化模型为真实场景、设备设施及周边环境提供了逼真的表达方式。传统建模技术通过使用专业的软件,利用人工标记创建物体表面形状,海量的数据导致效率低下而且劳动强度大。随着科技的发展,数字摄影测量技术被广泛地应用在场景重建中
3.三维激光扫描技术是一种先进的全自动高精度立体扫描技术,又称为“实景复制技术”,是继gps空间定位技术后的又一项测绘技术革新,三维激光扫描技术是一种通过高速激光发射器运用激光测距原理(包括脉冲激光和相位激光),瞬时测得空间三维坐标值的测量技术,将使测绘数据的获取方法、服务能力与水平、数据处理方法等进入新的发展阶段。三维激光扫描是基于面的数据采集方式,每次测量的数据不仅仅包含x,y,z点的信息,还包括r,g,b颜色信息,同时还有物体反射率的信息,这样全面的信息能给人一种物体在电脑里真实再现的感觉。
4.在智能电网建设背景下,数据可视化、一体化、智能化、辅助分析能力代表了新型管理系统的重要特征和发展方向。随着智能设备理念的不断发展,智能电网理论的不断完善,虚拟现实技术已经被深入运用到了电网运行的众多方面,目前电站三维模型的创建仍存在着一些障碍,如工作量大、精准度低,数据处理周期长。因此,如何以快速、精准的方式实现变电站的整体建模仍是一项间距的任务


技术实现要素:

5.本发明的目的在于提供一种基于三维扫描的变电站建模方法,以解决如何快速、精准的实现变电站的整体建模的问题。
6.为实现上述技术目的,达到上述技术效果,本发明公开了一种基于三维扫描的变电站建模方法,包括了如下步骤:
7.s10:在变电站实体设置多个测量站点和反射参照点,所述的测量站点使用三维激光扫描仪进行扫描获取变电站的几何位置信息和点云数据;
8.s20:对获得的点云数据进行点云分割和点云聚类,所述的点云分割包括有地面分割和电力线分割,所述的地面分割为去除变电站地面的点云数据,所述的电力线分割为使用高度滤波和空间密度滤波进行提取,所述的点云聚类为对整体的点云数据进行分块操作,获得每个设备单体的点云数据;
9.s30:每个分块的点云数据依次经过数据拼接、数据去噪、数据简化和特征提取,获得每个分块的点云数据的点云模型;
10.s40:对所有的点云模型进行最小重复单元的提取,接着进行模型的匹配,获得每
个最小重复单元的三维模型,所述的最小重复单元的提取采用基于二维平面包围盒拓扑结构的点云重复结构检测算法,所述的模型的匹配为最小重复单元的点云模型与模板库内模型进行形状检索和模板拟合;
11.s50:将最小重复单元的三维模型按照检测的重复模式进行重建,即可快速获得整个变电站的模型。
12.进一步,所述的相邻的两个测量站点之间的点云数据具有30%-40%的重叠度,所述的点云数据的采集精度为:点云数据的坐标线性误差不超过
±
1毫米,点云数据的配准误差不超过
±
2毫米,点云数据的三维坐标精确到1毫米。
13.进一步,所述的数据拼接包括如下步骤:
14.(1)在相邻两个站点的点云数据的重叠的区域均匀选择3个或以上的同名点;
15.(2)使用icp算法对重叠区域进行拼接。
16.进一步,所述的数据去噪中包括噪声点的判断和噪声点剔除步骤,所述的噪声点的判断使用直接检查法、曲线检查法、弦高差法和值限定法中的一种或多种;
17.所述的直接检查法为:直接观测点云数据,判断孤立的或者远离点集的点为噪声点;
18.所述的曲线检查法包括如下步骤:
19.(1)设定阀值ε;
20.(2)通过最小二乘法拟合出一条经过截面首尾数据点的曲线;
21.(3)选取数据点为u
i
,计算数据点u
i
到曲线的欧式距离为e
i

22.(4)若||e
i
||≥ε,则u
i
点为噪声点;
23.所述的弦高差法包括如下步骤:
24.(1)设定的阀值ξ;
25.(2)选取数据点q
i
,连接数据点q
i
前后两点获得弦;
26.(3)计算q
i
到弦的距离f
i

27.(4)若||f
i
||≥ξ,则q
i
点为噪声点;
28.所述的值限定法包括如下步骤:
29.(1)点云数据中数据点之间的最小距离值和最大距离值,并由此设定限值d
min
和d
max

30.(2)选取点云数据的任意两个数据点之间的距离o
i

31.(3)如果o
i
>d
max
,则o
i
=d
max
,如果o
i
<d
min
,o
i
=d
min

32.进一步,所述的数据简化包括如下步骤:
33.(1)取点云数据中任一数据点y,通过kd-tree算法获取n个与数据点y最近的数据点;
34.(2)通过n个最近距离的点拟合出一个最小二乘面;
35.(3)设定阈值d0,计算点云数据中其他数据点到最小二乘面的实际距离d
i

36.(4)判断实际距离d
i
是否大于阈值d0,若是则去除该数据点并重复此步骤,若否,则结束此步骤。
37.进一步,所述的点云数据特征的提取包括如下步骤:
38.(1)计算点云数据各个部分的主轴方向;
39.(2)由主轴方向获取点云数据各个部分的截面轮廓线;
40.(3)由截面轮廓线获取截面的特征点;
41.(4)利用特征线点拟合并输出特征曲线。
42.进一步,所述的主轴方向的获取包括如下步骤:
43.(1)选取点云数据中任一点t(x,y,z),获取m个与点t(x,y,z)距离最近的数据点,利用这m个数据点建立数据点t的最小二乘面;
44.(2)求出最小二乘面的法矢;
45.(3)取t点附近的一个点域h,点域h含有k个数据点,对点域h内的所有点进行步骤(1)-(2),求出所有点所在最小二乘面的法矢;
46.(5)任意取两个向量法矢,对两个向量法矢求向量积,得到主轴向量l1、l2....l
r
,并求得所有向量积的平均值l

,其中
47.(6)设定一个夹角阈值α,对所有的主轴向量进行遍历,选取任一个向量l
i
,判断主轴向量l
i
与l

的夹角是否大于夹角阈值α,若是,则去除选取的主轴向量l
i
,若否,则保留选取的主轴向量;
48.(7)对于所有保留下来的主轴向量取平均值l
i
,得出该部分点云的主轴方向的向量l
t1

49.(8)重复上述步骤获得点云数据的其他主轴方向的向量。
50.进一步,所述的截面轮廓线的获取包括如下步骤:
51.(1)取点t附近的一个点集w,设定阈值v;
52.(2)取点集内的任意点e(x
e
,y
e
,z
e
),计算向量et与点t所在部分的点云数据的主轴向量l
t1
的点乘,该点乘结果为点e到截面的距离
53.(3)遍历点集w内的所有数据点,重复步骤(2),求得点集w内所有点到截面的距离;
54.(4)判断该距离是否小于阈值v,若是,则选取该数据点,若否,则舍去;
55.(5)读取步骤(3)中筛选出来的点,拟合出相应的截面轮廓线。
56.进一步,所述的截面的特征点的获取包括的如下步骤:
57.(1)从所得截面轮廓线内的点云数据集s任意取三个数据点,通过三点建立平面,并求出该平面的法矢;
58.(2)设截面的点云数据集s中含有x个数据点,继续抽取截面的点云数据集s中的其他数据点,重复第一步的操作直到抽取完所有数据点;
59.(3)对求得的多个平面的法矢进行均值运算,得到截面所在平面的方程;
60.(4)在截面平面内取任意两个不相平行的单位向量a(i
a
,j
a
,k
a
),b(i
b
,j
b
,k
b
),计算截面点云数据集s中所有数据点投在两个单位向量上的投影长度,并分别求和得d
a
与d
b
,d
a
为所有数据点在单位向量a的投影距离的和,d
b
为所有数据点在单位向量b的投影距离的和;
61.(5)计算截面质心z在两个矢量上坐标,计算公式如下:
62.u=d
a
/x,v=d
b
/x,其中,u为截面质心z在单位向量a上的坐标值,v为截面质心z在单位向量b上的坐标值;
63.(6)求截面质心z(p,q,r)在xyz坐标系中的坐标,公式如下:
64.p=u*i
a
+v*i
b

65.q=u*j
a
+v*j
b

66.r=u*k
a
+v*k
b

67.进一步,所述的点云模型与模板库内模型进行形状检索和模板拟合步骤如下:
68.(1)分别统计检测点云模型中每一个数据点与模板库的灰度较差,用集合
69.d={d1,d2,d3,...,d
n
}存储,d
i
表示第i个象元与核象元的灰度较差;
70.(2)集合d元素按从小到大顺序排序,然后将d拆分为首尾两个类,表示为d1={d1,d2,d3,...,d
q
}和d2={d
q+1
,d
q+2
,d
q+3
,...,d
n
},计算两个灰度差类的类间方差公式入下:
[0071][0072]
其中,
[0073]
(3)当类间方差取得最大值时,则说明两个灰度差类的可分性最强,即类间方差取得最大值时,则判定取得最佳灰度差阈值,即当取得最佳灰度阈值q
*
时,满足下式:
[0074][0075]
(4)获取点云数据中的单点与模板库灰度较差最佳灰度分割阈值q
*
后,将点云数据分为两类,当灰度值较差小于q
*
,则认为该点云数据与模板库匹配达到最优,保留该部分点云数据;当灰度值较差大于q
*
,则将该部分点云数据舍弃,最终获得与模板库匹配程度最优的点云集合。
[0076]
所述的步骤s10中,使用倾斜摄影技术对电站中的设备单体的表面纹理和铭牌进行拍摄,并在步骤s50中将设备单体的纹理和铭牌信息映射到模型上。
[0077]
本发明具有以下有益效果:
[0078]
1、三维激光扫描测量技术具有扫描速度快、实时性强、精度高、主动性强、全数字特征等特点,经后期软件简单的处理就可以直接得到高精度三维数字化模型,无需费时费力的数据处理,可以极大地降低成本。
[0079]
2.使用本发明方法建模时,点云数据的处理速度快,精度高,有效的提高了电力系统虚拟现实建模的快速性和有效性。
[0080]
3.使用本方法得到精确的三维模型结构,不仅可以用于构建高精度虚拟现实模型资源,更能够针对不同电力设备的三维特征进行分析计算,实现对虚拟现实模型资源的参数化组织管理。
附图说明
[0081]
图1为7个二维点数据点。
[0082]
图2为二维数据点的初次分割。
[0083]
图3为所有点之间的拓扑关系网络。
[0084]
图4为数据点之间的kd-tree分布。
[0085]
图5为对kd-tree分布上的数据点进行命名。
[0086]
图6为点p与其他点的距离。
[0087]
图7中(a)圆管型钢截面的法矢分布,(b)矩形管截面的法矢分布。
[0088]
图8为截面轮廓线取点的示意图。
[0089]
图9为截面质心计算示意图。
[0090]
图10为本发明方法的流程图。
具体实施方式
[0091]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。
[0092]
本发明提供一种基于三维扫描的变电站建模方法,包括了如下步骤:
[0093]
s10数据采集;
[0094]
对变电站现场进行探勘:三维激光扫描仪测程和测量速度的不同,对扫描站点的布设有很大的影响,测量站点在布设时,需要考虑到各个站点之间的互补性、相邻站点之间的通视性,并且保证站点的覆盖面能够囊括整个变电站且相邻的两个测量站点之间的点云数据具有30%-40%的重叠度,控制扫描仪的采集精度,精度为坐标线性误差不超过
±
1毫米;点云配准误差不超过
±
2毫米;三维坐标单位为米,精确到小数点后三位,在对变电站进行数据采集时,可以通过控制界面对三维激光扫描仪进行控制,操纵其对变电站的实体和反射参照点进行扫描,最终得出变电站的几何位置信息、点云数据
[0095]
利用倾斜摄影技术对变电站设备进行拍照,获取其外貌纹理,构建设备纹理库,以便后期建模处理利用,同时保证拍摄的设备铭牌清晰可见。
[0096]
s20点云分割和点云聚类
[0097]
对获得的点云数据进行点云分割和点云聚类,点云分割包括有地面分割和电力线分割,地面分割为去除变电站地面的点云数据,电力线分割为使用高度滤波和空间密度滤波进行提取,点云聚类为对整体的点云数据进行分块操作,获得每个设备单体的点云数据。
[0098]
s30每个设备单体的点云数据处理;
[0099]
每个分块的点云数据依次经过数据拼接、数据去噪、数据简化和特征提取,获得每个分块的点云数据的点云模型。
[0100]
s40快速建模
[0101]
对所有的设备单体的点云模型进行最小重复单元的提取,接着进行模型的匹配,获得每个最小重复单元的三维模型,所述的最小重复单元的提取采用基于二维平面包围盒拓扑结构的点云重复结构检测算法,将提取的最小重复单元的点云模型在模板库中cad模型进行形状检索,并将检索的模型与点云模型进行模板拟合;
[0102]
s50:将最小重复单元的三维模型按照检测的重复模式进行重建,即可快速获得整个变电站的模型。
[0103]
本发明方法的点云数据的数据拼接方法采用间接拼接-点集对点集的拼接。
[0104]
点集对点集的拼接因为不需要非常精准的同名点所以不需要标靶来进行拼接,但是相邻的两个测量站点之间的点云数据30%-40%的重叠度是必须要保证的,包括如下步骤:
[0105]
(1)在拼接的时候需要在重叠的区域均匀选择3个或以上的同名点。计算转换参
数。由于在选择同名点的时候人工操作导致选取的同名点精准度不够,所以只是初步的选择粗拼接;
[0106]
(2)在此基础上再进行临近点迭代法(iterative close point algorithm,icp)。icp算法是用迭代来计算相邻最近点集。调整并评估转换模型误差。使误差达到最小的算法。icp算法的精度比较高,而且扫描过程比较方便,因为不需要反射体。
[0107]
由于变电站面积普遍较大,以及激光扫描仪本身的特性,现有的三维激光扫描仪不能实现仅通过一次扫描就采集到完整的变电站点云数据。因此我们采取多站扫描拼接技术,实现变电站点云数据的快速获取。基于点云数据的拼接算法,实现多站扫描数据的精准拼接,以此得到完整的变电站三维点云数据
[0108]
本发明方法的点云数据的噪声点的判断方法包括有:直接检查法、曲线检查法、弦高差法和值限定法
[0109]
直接检查法为:直接观测点云数据,判断孤立的或者远离点集的点为噪声点,通过对点云数据进行放大、缩小、旋转等操作,来找出屏幕出现的与扫描得到的被测物点云不同的点,这些点一般是孤立的或者是离点集距离较远的点。通过这种方式进行初步的检查,来剔除比较明显的噪声点;
[0110]
曲线检查法包括如下步骤:
[0111]
(1)设定阀值ε;
[0112]
(2)通过最小二乘法拟合出一条经过截面首尾数据点的曲线;
[0113]
(3)选取数据点为u
i
,计算数据点u
i
到曲线的欧式距离为e
i

[0114]
(4)若||e
i
||≥ε,则u
i
点为噪声点;
[0115]
弦高差法包括如下步骤:
[0116]
(1)设定的阀值ξ;
[0117]
(2)选取数据点q
i
,连接数据点q
i
前后两点获得弦;
[0118]
(3)计算q
i
到弦的距离f
i

[0119]
(4)若||f
i
||≥ξ,则q
i
点为噪声点。
[0120]
值限定法包括如下步骤:
[0121]
(1)点云数据中数据点之间的最小距离值和最大距离值,并由此设定限值d
min
和d
max

[0122]
(2)选取点云数据的任意两个数据点之间的距离o
i

[0123]
(3)如果o
i
>d
max
,则o
i
=d
max
,如果o
i
<d
min
,o
i
=d
min

[0124]
在扫描的过程中,扫描得到的数据会因为外界的干扰而不能真实的表示要研究的物体。因为用的是激光进行扫描,所以仪器会出现一定的误差,因为激光光束会有一定的离散度,而这就会使机器可能接收到的不是测量物体反射回来的反射光束,而当反射回来的是其它物体的反射的光束的时候,这些反射回来的光束对于我们来说就是噪声。噪声点的不但会使得扫描的点云数量变得很大,这样会占用很多存储空间,而且还会给建模的精度和速度都造成不好的影响。
[0125]
在扫描的过程中,对周边的环境进行观测后,确定噪声点的主要来源是周边人员,车辆的流动,树木绿化。所以在前期选择测量的位置上多做些准备的话会减少后期这些工作。在建模之前需要将这些噪声点进行处理,以免噪声点对建模产生不良的影响。
[0126]
本发明方法中的点云数据的数据简化方法包括以下步骤
[0127]
(1)取点云数据中任一数据点y,通过kd-tree算法获取n个与数据点y最近的数据点,所述的n的取值范围通常为几个到几十个之间;
[0128]
(2)通过n个最近距离的点拟合出一个最小二乘面;
[0129]
(3)设定阈值d0,计算点云数据中其他数据点到最小二乘面的实际距离d
i

[0130]
(4)判断实际距离d
i
是否大于阈值d0,若是则去除该数据点并重复此步骤,若否,则结束此步骤。
[0131]
现在用一组数据来模拟这个数据的简化的过程,这里以二维数据来展示,(点与点之间的分割线需要换作分割面)。
[0132]
(1)建立kd-tree
[0133]
kd-tree其实就是二叉树的一种,不过它的每一个节点都代表了一个点域,建立kd-tree的过程实际就是一个划分点,建立点与点之间拓扑关系,使之有序化的一个过程。设数据点为(1,5),(7,9),(2,3),(8,6),(4,1),(3,8),(6,4),如图1所示的7个点,现在要建立它们之间的联系。
[0134]
第一步:计算数据点在每个维度上的方差,得到方差最大的那个维度,将它作为后面展开的方向确定的依据。(注:该维度上的方差最大,也就意味着该维度上所有点的分布最为稀疏,因此按照这个方向进行区域划分之后得到的点云数据二叉树分布也就更加分散,更利于观测。)在这个样本数据中,经过计算发现在y轴方向上的方差更大,所以取垂直于y轴的方向作为第一根分割线。
[0135]
第二步:将所有y轴上的点进行从小到大排序,然后得出中点值(点若是偶数,则中间两个点都可以选择),至此我们可以得出y方向上的中点了,在本样本数据中的中点是(1,5)。所以就过点(1,5)作一条垂直于y轴的分割线,实现第一步的数据群分割。如图2所示
[0136]
第三步:根据第二步选出的中间点,先按y轴数据大小进行排序,然后可以将数据群分成两块,一块是y=5下方的点(4,1),(2,3),(6,4),另一块是y=5上方的点(8,6),(3,8),(7,9)。
[0137]
第四步:针对上下两部分点集,依次重复第一步到第三步的工作,不断地增加分割线,将数据群进行更深度的区域分割,最后会分成每个点集里面只包含一个点的情况。注意在确定后续分割线方向的时候应该沿着维度顺序依次循环进行(在本样里面是y轴,x轴两个方向依次交替进行,直到全部分割,此外后续排序后的查询也应该按照这个顺序进行)。至此kd-tree已经建立完毕,每个点对应一个点集,所有点之间的拓扑关系网络建立完毕。如图3所示。
[0138]
前面是通过网格图展示人建立kd-tree的过程。实际上建立kd-tree的过程就是一个建立二叉树的过程。第一步和第二步得出的第一个点,可以看作二叉树的根节点,一阶父节点,然后数据被分成左右两个子集。两个子集在重复前面的步骤时得到的节点既是上一阶树的子节点,又是后一阶树的父节点。一直细分,直到所有的子集的点都成了叶子节点时(或者树无法再细分下去的时候),建树便完成了。如图4所示
[0139]
(2)获取距离最近的n个点
[0140]
建立了kd-tree树之后,便可以利用kd-tree来进行进一步的点间距获取。以前的部分算法是利用所有点的坐标,直接计算某一点与其他点之间的欧氏距离,这样会使计算
量、时间复杂度大大增加,现在考虑利用建立kd-tree之后点间的联系可以有效地缩短寻找最近点的时间。
[0141]
任意定一个点作为正在查找的点,如点p(1,6)。并且设定a点(1,5),b点(7,9),c点(4,1),d点(3,8),e点(8,6),f点(2,3),g点(6,4)。如图5所示
[0142]
第一步:查询根节点a点(1,5),y方向:p
y
=6>a
y
=5,所以进入a点右侧空间进行下一步的查询。
[0143]
第二步:查询子节点b点(7,9),x方向:p
x
=1<b
x
=7,所以进入b点左侧空间进行下一步的查询。
[0144]
第三步:得到叶子节点d(3,8)可能是距离点p最近的点。计算出p点和d点之间的距离d=2.828。
[0145]
第四步:回溯之前查询过的点a和点b,并且计算点p和他们之间的距离,a点p点间距离d1=1,b点p点间距离为d2=6.708。发现d2>d,所以不用再回溯查询b点另外一侧的所有点。d1<d,即d点肯定不是最近点,需要进入a点另外一侧依次进行查询。如图6所示
[0146]
计算p点到a点右侧第一条分割线(c点所在分割线)的距离d3=3>d,所以不需要查询c点右侧的所有点。接着计算p点到c点左侧分割线(点f所在分割线)的距离d4=3>d,所以不需要查询f点右侧的所有点,重复刚刚的操作直到再次到达叶子节点(如本样本里的f点),即完成了所有的回溯,可以从计算的距离结果里面看出,最近的点是点a(若是第四步回溯查询不存在距离比d小的点,那么前面的这些的操作就不需要)。所以重复刚刚的做法即可以获得初始时候设定的n值。需要说明的是,针对不同的图形,不同的点云数据,n的取值可能存在很大的差异,需要根据实际情况来确定,一般情况为几个到几十个之间。
[0147]
(3)建立优化最小二乘面
[0148]
通过前面的操作,我们可以获得n个距离最近的点,这一步操作的内容是利用前面得到的这些点,然后拟合出一个最近的平面。大致方法如下:
[0149]
第一步:设空间平面s的参数方程是:
[0150]
ax+by+cz+d=0
ꢀꢀ
式(1-1),
[0151]
式(1-1)中的a,b,c,d四个字母代表空间平面的四个不同的参数。
[0152]
第二步:任意从这n个点中取出三个点,带入s空间平面的参数方程(1-1),解一个多元一次方程组,即可以求出未知参数a,b,c,d的关系。
[0153]
第三步:再利用空间点到空间平面距离公式:
[0154][0155]
其中式(1-2)中的参数a,b,c,d即求出来的空间平面的参数方程的参数值,x,y,z是我们要计算的空间某点的坐标值。
[0156]
第四步:计算点集n中每个点到这个平面s的距离d
i
,然后对这些距离值d
i
进行求和运算,即:
[0157]
[0158]
其中式(1-3)中的l代表所有的距离之和,d
i
代表每个点到平面s的距离,n代表一共有多少个距离值。
[0159]
第五步:由于前面建立面s的时候时是随机选取的点,所以根据计算公式:
[0160][0161]
其中式(1-4)中的n代表一共提取了多少个临近值,b代表建立不同的平面s的可能性的种数。
[0162]
由式(1-4)可知,总共会有不同的空间平面s1,s2,
……
s
b
,一个b个平面。因此,相应地也会有l1,l2,
……
l
b
,一共b个距离总和的数值。
[0163]
第六步:然后将l1存储起来,将l1与l2比较大小,若是l1<l2,那么继续比较l1与l3的大小,依次往后计算。若是出现了l
i
的值比l1更小,那么用刚刚的l
i
来替换之前的l1,并且将新的l1存储起来。然后,接着进行把l1与l
i
到l
b
中后续值比较的过程。直到比较完成之后我们会获得最小的距离总和值l
min
,那么该l
min
对应的面s
min
也就是距离最近的平面,即我们优化最小二乘面。
[0164]
(4)设定阈值,去除离群值
[0165]
基于前面一步之中已经建立了一个优化后的最小二乘面,现在开始计算其他点到这个最小二乘面的实际距离d
i
。与此同时设定一个根据实际情况估计出的合适阈值d0,比较两者,若是d
i
<d0,则认定改点并非离群值或者噪声;若是d
i
>d0,则将改点作为噪声值去除。需要注意的是阈值的设置不能太大,否则会使简化、去噪的效果很不明显;若是阈值的设置太小,则会使点的去除过度,可能会损失部分重要数据,使点云失真。
[0166]
点云数据的简化方法还可以是有以下方法
[0167]
其中一种方法是按给定数据点的个数进行简化。算法是按一定的优先顺序删除一部分点,这里采用点与点间的距离作为度量。算法的简单思想是,给定一个数据点的个数作为阈值,当现有点的个数大于这个阈值时,就将点云中距离最近的两点中的一个点删除。每一步都是一个这样的循环,直到当前点的个数小于给定的阈值时,计算停止。
[0168]
另一种按给定数据点间的距离进行简化是个比较简单的准则。主体思想是,给定一个距离的阈值,只需要简单的将点间的距离与该阈值进行对比,距离小于阈值的边结点删除,大于阈值的则保留。这种算法只需要将所有点云数据遍历一遍,实现起来也比较简单,效率很高。
[0169]
上述两种简化方法不适合在曲率较大的地方进行简化,本发明的方法为按法向精度进行简化,可当我们删除一个点后,会在该点处曲面的法向方向上产生误差。我们可以通过对该误差大小的计算,来对评价其是否能被删除。
[0170]
本发明的方法在kd-tree算法基础上,融合了最小二乘面拟合方法,经自主分析研究和算法改善后提出的,可以实现对于实际的工业钢结构点云数据的简化,本步骤也可以用于数据的去噪声点。
[0171]
本发明中点云数据的特征提取包括如下步骤:
[0172]
(1)主轴方向获取
[0173]
特征提取算法处理的对象是工业钢结构,而大部分的钢结构的表面都具有一定的规则性,所以建立法矢的时候可以利用这个特性。如圆管型钢结构和矩形钢结构他们的外
形几乎都是平面结构,所以法矢一定是垂直于该点所在的附近的微小平面。如圆管钢结构,任取表面某点,他的法矢应该是过圆心垂直于圆管轴心线的方向,与此同时该点距离最近的几个点拟合出来的平面一定是类似于圆柱体纵切面的形状和位置。所以总结起来即是,针对处理的钢结构的特点,需要的法矢和该点的最小二乘面是垂直的,如图7所示,具体过程如下:
[0174]
第一步:获取某点t(x,y,z)的距离最近的m个点,利用这m个点建立点t的最小二乘面。这一步的算法部分可以直接调用前面数据简化部分的算法,大致流程如下:首先任意取某点t,然后通过二叉树获取距离最近的几个点(此处需要注意:现在取点是为了大致得出该点法矢,所以取点最近的n个点的时候没必要取的很大,不需要特别精确);最后是利用前面讲到的方法,通过这n个点建立一个最小二乘面s
t
,其方程为:
[0175]
ax+by+cz+d=0
ꢀꢀ
式(2-1)
[0176]
其中式子(2-1)中的a,b,c,d代表了该平面的几个参数,x,y,z代表了该平面上点的坐标。此时求出最小二乘面之后,a,b,c,d四个参数应该已经求出来。
[0177]
第二步:求出最小二乘面s
t
的法矢。由于前面的平面方程为ax+by+cz+d=0,所以直接可以获取该平面的法矢,该方向为向量r1=(a,b,c)所指向的方向。
[0178]
第三步:求点t的法矢:由前面的分析可知t点的法矢和t点的最小二乘面s
t
的法矢是同一个方向,即向量r1=(a,b,c)所指向的方向。
[0179]
第四步:取t点附近一个较大的点域h,点域h含有k个数据点,然后对点域h内的所有点进行第一步到第三步的工作,求出所有的法矢向量,即r1,r2,
……
r
k
,共有k个。
[0180]
第五步:求主轴方向的粗略方向。对于k个法矢,在其中任意取两个向量r
i
和r
j
,对两个向量求内积,即进行叉乘运算得到向量l1。由叉乘的性质可知:向量l1的方向与向量r
i
和r
j
的方向都是垂直的,向量l1的方向即是主轴的方向。而且,由于向量r
i
和r
j
是随意取得,根据计算公式:
[0181][0182]
其中公式(2-2)中的k代表一共提取了多少个法矢,r代表建立不同的主轴方向向量l1的可能性的种数。
[0183]
所以在求出了r个主轴向量l1,l2……
l
r
,之后,可以求出这r个方向向量的平均值l平作为主轴方向的粗略估计。
[0184]
第六步:求出精确的主轴方向。计算l

与其他r个主轴向量l1,l2……
l
r
,之间的夹角大小,设定一个夹角阈值α,若是两者间的夹角大于这个阈值α,我们就去除这个主轴方向向量,若是该夹角并没有超出阈值α则保留下来,最后对于所有保留下来的主轴方向向量进行取平均值的运算,得出该部分点云的主轴方向向量l
t1

[0185]
第六步:求出整体的主轴方向,前面第一步到第五步得出的是管道某段的主轴方向,考虑到管道、工业钢可能在长度上较长,所以需要求出其余部分的主轴方向。从第三步的t点出发,沿着主轴方向,可以得到下一个点t2,两点之间有一定的距离值。然后对于点t2进行前面的第一步到第五步的算法,最后依次得到其他的主轴方向向量l
t1
,l
t2
,l
t3
……

[0186]
(2)截面轮廓的获取
[0187]
整体钢结构的主轴方向向量已经在前面的一步中获得了,现在就开始利用这个主
轴方向获得截面轮廓线。因为包含主轴方向向量l
t1
,l
t2
,l
t3
……
,所以获得的截面轮廓线也会有相应地很多个,现在设其中一个主轴方向l
t1
为(p,q,r),求该附近邻域的界面轮廓线。由前面的算法可知,求出主轴方向l
t1
的时候,使用的基本点是t点,而且已知了点t的坐标(x,y,z),所以过点t的截面轮廓线,步骤如下:
[0188]
第一步:取点t附近的其他点,如点e(x
e
,y
e
,z
e
),点f(x
f
,y
f
,z
f
),然后根据点t、e、f点的坐标,可以得到直线et和直线ft的矢量方向,线段的长度以及所属直线表达式。
[0189]
第二步:通过将向量l
t1
与向量et进行点乘,然后将将结果取模得到的值就是向量l
t1
的模乘以向量et在向量l
t1
方向上投影的长度。在下图8所示即为线段ee'的长度。ee'这个量便可以用来衡量点e点到t点附近的想求得的截面轮廓得距离;
[0190]
第三步:重复第二步的工作,计算附近一个较大领域内的所有点到该轮廓面的距离。然后设置阈值d,若是点面距离小于阈值d,如下图8中ff'的长度,则保留f并且存入新的地址,将点f算作截面轮廓上的点;若是点面距离大于阈值d,如下图8的ee'的长度,那么跳过点e的存入新地址的过程,进入下一个点的筛选,直至邻域内的点筛选完毕;
[0191]
第四步:读取第三步里面筛选出来的点,形成截面轮廓薄点云片,然后将这些点拟合出相应的截面轮廓曲线,如圆形管道截面圆形,矩形钢的矩形(3)截面特征点获取
[0192]
若是圆管结构,那么需要提取的特征点肯定是圆心;若是矩形钢那么要提取的特征性的点就是它的外接圆的圆心;相应地对于h型钢,需要肯定是它的重心,图形的中心,所有总结起来这一类的图形可以用一个统一的算法的进行,即提取薄点云片的质心,步骤如下:
[0193]
第一步:从所得的截面点云数据集s里面任意去三个点,通过这三个点建立平面,再求出它的空间平面法矢量。建立平面的方法和获取平面的法矢量的方法如前所述。
[0194]
第二步:继续抽取截面数据集s里的其他组数据,重复第一步的操作,直到抽取完所有组的数据。
[0195]
第三步:根据求得的多个法矢,将他们进行求均值运算,得到最终的点云所在的整个平面的方程,(这一步可以先求一个均值,然后再设定一个阈值,比较每个法矢量与均匀法矢量的夹角大小,排除夹角较大的值,最后再求一次剩余法矢量的均值,这样算出来的平面就更加准确,误差也会小很多)。设这个求得的平面为f。
[0196]
第四步:在面f内任意取一个单位向量a(i
a
,j
a
,k
a
),再取另外一个和单位向量a不平行的单位向量b(i
b
,j
b
,k
b
),设截面片点云数据集s里面包含x个点,那么分别计算x个点投影到向量a与向量b的长度值d
1a
,d
1b
,d
2a
,d
2b
,d
3a
,d
3b
……
d
xa
,d
xb

[0197]
计算点到单位矢量距离的方法如下:设需要求的点是h,任取单位矢量a上一点g(算法中直接取实际坐标原点),由公式
[0198][0199]
式(2-3)中的为单位向量,取模之后值为1,所以上述公式的最终结果是向量在矢量方向上的投影,即点h在矢量上的长度值如图9所示,
[0200]
第五步:计算d
a
与d
b
的值。设每个点的权重为1,所以距离计算过程即为求和公式
[0201][0202][0203]
其中公式(2-4)和公式(2-5)里面的x表示一共包含的点的个数,也就是到单位矢量的距离值的个数d
ia
、d
ib
表示每个点到单位矢量的距离,d
a
、d
b
表示所有点到两个单位矢量的距离的总和。
[0204]
第五步:计算在两个单位矢量上的质心坐标。由于设每个点的权重为1,所以总的质量为x,所以可以计算出结果
[0205]
u=d
a
/x
ꢀꢀ
(2-6),
[0206]
v=d
b
/x
ꢀꢀ
(2-7),
[0207]
其中,u为单位向量a上的质心坐标值,v为单位向量b上的质心的坐标值;
[0208]
第六步:通过前面这两个公式可以求出质心在新的矢量基下的坐标(u,v),所以可以求出质心在初始的xyz坐标系里面的坐标位置r(p,q,r),所以质心r的坐标计算公式如下:
[0209]
p=u*i
a
+v*i
b
ꢀꢀ
(2-8),
[0210]
q=u*j
a
+v*j
b
ꢀꢀ
(2-9),
[0211]
r=u*k
a
+v*k
b
ꢀꢀ
(2-10),
[0212]
本算法也可以直接取x(1,0,0),y(0,1,0),z(0,0,1),三个向量基,算出三个矢量上的质心,最终得到截面中心点即所需特征点,方法同前。
[0213]
(4)特征线成形及其输出
[0214]
特征点拟合出特征线的方法,方法很多,常见的比如使用matlab,opengl,都可以实现曲线拟合的功能,但是考虑到实际应用中后续可能会需要进一步获取实体模型或者对该特征曲线进行进一步的处理,因此决定使用catia二次开发的原理,在catia里面拟合出所需的特征线。大致思路是利用caa对catia进行二次开发,给它增加一个曲线拟合的功能。
[0215]
在变电站建模过程中,首先进行数据的预处理,即自动去除变电站地面和设备上的电力线的点云数据,然后利用区域增长算法,将设备的点云数据独立化,接着通过数据拼接、数据去噪、数据简化和特征提取建立点云模型,在此基础上,通过采用基于二维平面包围盒拓扑结构的重复结构检测的算法,分别电站场景重复结构模式,最后,采用基于组件匹配的建模方法对最小重复单元进行建模(包括形状检索和模板拟合),并与重复结构模式相结合,从而得到变电站模型,所述的点云模型与模板库内模型进行形状检索和模板拟合步骤如下:
[0216]
(1)分别统计检测点云模型中每一个数据点与模板库的灰度较差,用集合
[0217]
d={d1,d2,d3,...,d
n
}存储,d
i
表示第i个象元与核象元的灰度较差;
[0218]
(2)集合d元素按从小到大顺序排序,然后将d拆分为首尾两个类,表示为d1={d1,d2,d3,...,d
q
}和d2={d
q+1
,d
q+2
,d
q+3
,...,d
n
},计算两个灰度差类的类间方差公式入下:
[0219][0220]
其中,
[0221]
((3)当类间方差取得最大值时,则说明两个灰度差类的可分性最强,即类间方差取得最大值时,则判定取得最佳灰度差阈值,即当取得最佳灰度阈值q
*
时,满足下式:
[0222][0223]
(4)获取点云数据中的单点与模板库灰度较差最佳灰度分割阈值q
*
后,将点云数据分为两类,当灰度值较差小于q
*
,则认为该点云数据与模板库匹配达到最优,保留该部分点云数据;当灰度值较差大于q
*
,则将该部分点云数据舍弃,最终获得与模板库匹配程度最优的点云集合。
[0224]
本方法的具体流程如图10所示。
[0225]
变电站主体建筑及主要元器件三维数据采集实施要求
[0226]
(1)变电站主体建筑三维数据采集
[0227]
1.记录整理相关信息,详细记录变电站的名称、电压等级、变电站性质、三维数据信息。
[0228]
2.准确获取三维点云数据,获取变电站建筑的三维点云数据。
[0229]
3.精度为坐标线性误差不超过
±
1毫米;点云配准误差不超过
±
2毫米;三维坐标单位为米(m),精确到小数点后三位。
[0230]
4.拍摄高清照片
[0231]
变电站外围照片,拍摄两张照片:一张变电站围墙照片;一张能清晰看到变电站名称的大门照片。照片格式为*.jpg,像素建议不低于1024*768px。
[0232]
(2)变电站主要元器件三维数据采集
[0233]
站用变电器数据采集的内容主要是空间位置坐标以及设备外形照片数据等,具体内容包括
[0234]
1.采集站用变电器设备位置,采集站用变电器设备的三维点云数据;
[0235]
2.记录整理相关信息,详细记录设备的编号、材质、高度、回路名称、布线方式等信息,记录变电器上设备如刀闸、开关、跌落、采集终端等设备信息。
[0236]
3.控制采集精度
[0237]
精度为坐标线性误差不超过
±
1毫米;点云配准误差不超过
±
2毫米;三维坐标单位为米(m),精确到小数点后三位。
[0238]
4.拍摄高清照片
[0239]
设备照片,拍摄三张照片:一张设备全貌照片;一张能清晰看到设备铭牌的设备铭牌照片(若存在设备身背铭牌悬挂分散情况,可根据实际需要拍摄多张铭牌相片);一张能清晰看到设备的几何结构的照片。对铭牌和几何结构复制的情况进行记录并拍照,照片格式为*.jpg,像素建议不低于1024*768px。
[0240]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1