opencv 平面法向量_基于散乱地面激光扫描点云数据的复杂立面中平面的自动提取...-程序员宅基地

技术标签: opencv 平面法向量  

基于散乱地面激光扫描点云数据的复杂立面中平面的自动提取

【摘要】:目前,越来越多的应用如三维建模,竣工测量,存档,恢复和重建都需要人工建立三维模型,从而用最真实的效果去详尽描述物体细节特征信息。因此,在计算机视觉、摄影测量和遥感领域,三维建模是一个综合而复杂的研究问题。因为它包括:提取,检测,重建对象的部件,以及针对复杂对象海量三维数据的自动化处理。

在从复杂对象获取海量三维数据的过程中,一方面,地面激光雷达TLS(Terrestrial Laser Scanner)由于其快速,因此在三维建模数据的获取上有着巨大的潜力。另一方面,对于一般的复杂对象,由于很多因素例如分辨率、配准步骤,对象的颜色、粗糙程度以及测量误差的影响,TLS获取到的大量(高达几百万)无结构(随即分布的)三维点云的局部密度不尽相同,并且包含大量随机噪点。大多数情况下都不可能手动地去编辑处理海量的3维点云,因为这样会耗时很长,甚至当planner表面需要的时候也不能这样进行操作。因此,即使对象是一个平坦表面或者线状边缘,从点云中提取对象特征仍然不是一件容易的任务。因此这个过程是极其重要的,该研究课题对于从人造建筑物中的数字存档有着重要意义。

我们希望仅仅通过使用作为潜在数据的点云来创建人造对象的3维计算机模型,但是问题是如何处理大量的通过TLS获得的三维测量点,以此来正确提取对象的主要属性和细节,比如平面表面和边线。尽管这个问题同TLS获取的数据没有关联,但是它关系到处理那些搜集到的数据的专业程度。

在元素的提取过程中,分割是最重要的一步。在过去的十年中,很过算法被设计成通过使用分割的方法从点云中去提取平面曲面。通常情况下,我们使用如下三种不同方法中的一种来获取分割点:区域增长,属性集群和模型拟合方法(RANSAC和Hough变化算法)。尽管区域增长和属性集群方法为了对在点云数据中出现的同类地区进行分组,因而采用了几何标准,但是模型拟合方法则是基于拟合几何原始形状。在实际应用中,大部分的分割方法使用几何信息来分割三维点云。这些信息通常包括每个点的位置(X,Y和Z),局部预测到的平面法线和最佳拟合结果的残差。然而,这些信息可能会被噪点所影响,并最终影响到分割的结果,导致了坏的分割的发生(过度分割,分割不足或没有分割)。这最终会导致提取过程和创建三维模型的失败。

区域增长方法因为必须定义正确的种子表面,因而在使用上受到了很大的制约,因为如果种子表面的定义错了(特别是在现有大量噪点数据的情况下),那么错误就会增加并导致处理的失败。因此,可以考虑一种对噪点数据敏感的方法。同样,当它被用来分隔海量的无规则的点云数据时,同样会导致错误的分隔结果(或高,或低甚至出现没有分割的情况)。因此,区域增长算法有的时候不是非常的透明,另外也不能提供均匀的应用。

虽然聚类方法提供了整体和灵活的方式从数据中提取同类特征,并且不局限于仅提取某一特定类型的特征,然而从基于集群算法的海量无规则的3维点云中提取的属性数据可能并不能用在实际的应用中,尤其是当存在噪点和离群数据,因为计算海量数据的集群多维特征的成本非常高,而且处理海量数据需要从激光扫描仪那里获得点云数据[Sapkota,2008].另外,这个方法对于数据中的噪点非常敏感,而且会被周围数据的定义所影响。因此,我们需要一个更加健壮的方法方法来消除噪点和离群数据,目前对这种方法的研究还在进行中。

尽管RANSAC(random sample consensus)算法在包含噪声和异常值的情况下是有效的,但是它有一个缺点,就是是容易生成错误面,例如平行渐次的情况,例如楼梯。在这项研究中,我们通过一个实际的测试来评估RANSAC中的错误结果。楼梯提供了平行递增平面的理想例子。根据从RANSAC中获取的针对分隔平面表面的最终结果,错误的结果(斜曲面)非常明显。这些错误结果凸显出了通过RANSAC自动提取平面表面的一个障碍。另一方面,这些结果可以被视为一个明显的坏的分割案例(分隔不足或者是没有分割)。这个问题可能发生,因为即使平面表面通过迭代(MaxIterNo)得到了点的最大数目,RANSAC也同样会接受这个平面表面。而且,他仅仅使用点的位置,并且不能采用其他参数,比如考虑向量(NV)。因此,在平行平面表面,有MaxPointNo的面通常是倾斜面(错误的平面)。

最后,这篇博士论文的研究目的是要找到或是改进一种新方法,以最符合现实的方式正确的提取平面表面和解释线性属性,而这也是为了展现基于海量3维无规则点云(TLS点云)的人造对象的实际情况和条件。同样,这篇文章的研究也是为了实现从3维点云中直接自动创建3维模型。之前的主要目标可以分为如下几个方面和动机。

A.避免从RANSAC中得到的平行平面表面的错误面,比如楼梯

B.创造一个可以直接处理TLS中的三维点云的新方法

C.避免错误分割(比如,过度分割,分割不足或者是没有分割)

D.在目前已有的噪点数据中,正确地分割和提取最适合现实的最大的不同平面表面,以此来获得大量无规则3维数据的复杂对象

E.解读平面表面的线性特性(提取边界)

F.提高自动化和分割结果的可靠性

为了避免平行渐次的情况,本文提出了对RANSAC算法的改进,称为顺序法线向量RANSAC(Seq-NV-RANSAC).本算法检测点云和拟合的RANSAC平面之间的法线向量(NV)是否符合一个给定的阂值。因此,"Seq-NV-RANSA"可以自动地决定一个点是否可以加到这个表面的迭代中,并且通过这一项检查,可以保证不会从错误的面中得到MaxPointNo。得到第一个平面后,迭代上述过程直到在该阀值的条件下所有的平面都提取完全。这一过程导致:

避免了从RANSAC中获取的错误面

高效的计算,因为每一次RANSAC将会处理合适数量的点

在计算属性方面有质量的改进

提高了表面提取的自动化程度,因为结果完全是自动有序的获取的

另一方面,当从复杂正面的大量点云中遇到特殊的平面表面是,在一些分组中分割不足的问题可能会出现,比如两个或更多的平面表面有着相同的水平面和相同的向量方向。

同样,因为多种不同的原因,过度分割的问题也可能出现,比如在法线计算过程中噪声点会产生影响。

分割错误(比如欠分割或过分割)仍然是提取平面的最大障碍。因此,提出了一种方法扩展"SEQ-NV-RANSAC",通过运用拓扑信息和阀值来避免分割错误。首先,为了避免欠分割,检查由已经提出的"SEQ-NV-RANSAC"方法获取到的每一个面组来得到所有的欧氏距离小于阀值的邻接点,这个过程会被不断重复直到没有点再加入这个面组,然后对剩下的点创建新的面组来检查。然后,为了解决过分割的问题,提出了三种检查方法:法线相似性,垂直距离和使用包围盒检测的相交区域。修改后的"Seq-NV-RANSAC"方法有着如下可能的结果;

能够成功避免针对平面表面的坏的分割结果(分割不足和过度分割)

提高了最终结果的质量

使得提取的平面表面能够更好的拟合现实

尽管这些点云通过不同的数据源获得,比如ALS或图像匹配,但是算法仍旧被要求能够在此任何一种分割结果的基础上正常运行。因为通常情况下,数据源获得无规则的3维点云,而且我们所推荐的方法仅仅需要点云的坐标(X,Y,Z)和针对平面表面的初始群体

因此,可以实现从3维点云中直接自动生成3维模型,因为分割是3维建模过程中重要的一个步骤

针对平面分割结果的直线边缘提取,利用先前提取的多有平面,提出新的方法"Seq-RANSAC-Edges"来检测边界。首先,每一个被Seq-NV-RANSAC拒绝的点都回归到它真实的平面表面——除了噪点和没有作用的点。为了提取任意平面表面的边,我们首先要确定平面表面的输入数据包含所有边上所包含的点。在使用Seq-NV-RANSAC方法来分割平面表面之前,所有或者大部分用来表现每一个平面表面的边应该被舍弃掉。正如前面所介绍的,那是因为Seq-NV-RANSAC方法是基于聚集点云,使用各个点的向量来发挥作用的。通过该点周围的临近点来计算向量。因此,逻辑上来讲,边上的一个点通过现实中相交的两个不同的平面表面来获取临近点,因此该点所计算出来的向量应该能清楚表现该点向量同表面计算出来向量的差异。而且,不能将这个点加入到平面表面中(例如,大部分边上的点应该被加入到通过Seq-NV-RANSA方法获取的用来搜集被舍弃点的文件中)。第二,根据在所有平面之间创建的拓扑关系,使用边相交算法(IntEdges)来寻找属于两邻接平面之间相交的点云。那取决于3个阀值:θth:两个面的最大夹角,Lth:点和备选线之间的最大3维垂直距离,Wth:针对一条备选线的最小可接受的点数。然后,用自由边界点算法(FreeBoundaryPoints)来寻找将每一个平面封装成环的轮廓点。FreeBoundaryPoints算法可分为四个主要步骤,找到每个面上的旋转转换矩阵,产生2维不规则三角网(TIN),寻找使用2维TIN的面的自由边界点,最后,计算所有FreeBoundaryPoints的原始3维坐标。其次,为了避免在交叉时有重复边,使用顶点融合算法(MergeEdPos)融合前两个算法的结果。再次,使用Seq-RANSAC-Edges算法独立分割每一边上的点,并自动对所有平面使用拟合分割后的点提取所有边界线。为避免伪线(3D2P)阀值被添加到Seq-RANSAC-Edges,以此来检测位于两个相邻点之间的三维距离,其中这两个相邻点都位于同一条直线内。为了解释线性特征(分割边缘点和拟合边线),Seq-RANSAC-Edges方法的结果是一个估计的结果,因为:

即使一个组的点包含多个边,然而所有边缘都被成功解译为最符合实际的

避免杂散线

即使有噪点存在,仍旧能够正常发挥作用

提高表面提取的自动化程度,因为最终的结果全部都是自动和有序获得的

高效

另外一个优势是:使用者可以轻松地改变一个或多个阀值来从被舍弃的点中提取其他的线(如果需要的话)

作为两条或多条线的焦点,拐角点还不能被精确地定义。这是因为,如果在最初获取的数据中,该拐角点已经存在,那么这个拐角点就只会被一条边(第一条被提取的边)接受,因此,第二条提取的边就不能拥有该拐角点。

本文包括了所提到的全部方法,并介绍了大致的流程,通过流程图与方程对文中所提的方法进行了解释与证明。最后,给出论文所提出的方法的算法流程图,并使用实际数据对所提出的方法进行实验,实验结果证明了方法的有效性。其能够防止伪平面和伪边缘的产生,提高了面提取的质量和自动化程度。对于从海量散乱三维点云中直接获取三维模型具有较大的潜力。

最后,根据最终的研究结果和本文的研究动机,我们得出的结论是,本文提出的所有方法全部达到了这项研究的既定目标,研究的成果包括:

处理大规模的无规则3维点云的海量数据,其中,这些3维点云数据应当覆盖复杂正面对象的所有特征

剔除了由最初RANSAC算法得到的错误的数据成分(平面表面和边)

自动地从复杂人造对象中提取所有的平面表面,这其中包含从不同层次提取数据,比如楼梯,还可以从不同的向量方向提取数据,比如地面,不同深度的墙,方柱,带有不同坡度和方向的斜曲面,逐步递增的平行平面表面(楼梯),窗户等等。

成功地剔除了平面表面的坏的分割结果(分割不足和过度分割)

自动解译所有的线性特征(边)

提高了表面提取的自动化程度,因为这些结果全部都是自动及有序获得的

同样,尽管这些点云是在不同的数据源中获得的,比如ALS、图像匹配,我们仍旧需要其在任何一种分割结果中都运行正常

这篇论文包括如下八个章节:

第一章关于提取平面表面和解译线性特征的概要的介绍,这也是为了创建一个精确的和符合现实的3维模型,并且这个模型能够逼真的展现人造对象所处的环境和条件,还能够展现通过激光扫面仪器获得的点云数据及这些点云数据的主要属性。我们首先说明本论文的目的和意义,接着,说明论文组织的整体框架。

第二章对目前相关领域研究的一个回顾。这包括对三种不同分割算法所运用到的相关算法的回顾,通过一个实际测试对RANSAC算法的错误结果进行评估,其中对RANSAC算法的错误结果进行评估是本文将要解决的一个重要问题。为了分析之前的分割方法,我们将三钟不同方法进行两两对比,并且分别对相关方法的应用做了一个简要的概括。

第三章对本项研究中出现的问题做了一个简要的介绍,这其中包括:整体的研究目标,研究的出发点,所遇到的问题,以及提出的疑问。其中对本项研究提出的疑问分为许多类,并且是根据对问题不同的看法来分类的。比如数据的获取步骤,准备过程,解决主要问题的步骤和质量检测步骤。

第四章详细介绍了我们所提出的分割平面表面的有序向量RANSAC ("Seq-NV-RANSAC")方法,这一方法是基于RANSAC算法的改进版本,是为了更好的剔除无规则的3维点云中的错误面,尤其是在平行递增的平面表面中显得尤为重要,比如楼梯。首先,描述一个大概的工作流程,接着解释所有准备步骤的所采用的方法,其中,中间的工作包括寻找每一个点云的相邻组,基于聚类特征步骤的拟合和分割。最后,我们描述了主要的检测方案和实施过程,这种间所用到的流程图,数字和方程都用到了最初的RANSAC方法。

第五章介绍了研究领域目前的状况,对相关领域的介绍对于理解本论文有着极大地帮助,另外,还介绍了相关的领域成果,包括:仪器,工具和适应参数。接着对研究结果进行了分析(获取的数据),该分析涵盖了配准的步骤。我们对基于"Seq-NV-RANSAC"方法和基于原始的RANSAC算法获取的实验结果进行了比较实验,而且比较实验遵循将“Seq-NV-RANSAC'方法应用在三种不同实际数据上的原则,这样可以得到对人造对象不同案例的比较直观的结果(平行递进平面表面,平面表面的不同方向和大量点云的复杂正面)。这些比较展现了我们所推荐的"Seq-NV-RANSAC"方法在分割从大量无规则3维点云中截取的平面表面的优点和缺点。

第六章提出了修改有序法向量RANSAC方法的修改方案,作为"Seq-NV-RANSAC"方法的扩展,这样也是为了避免分割错误的情况(分割不足或者是过度分割),这一问题在从大量无规则3维点云中获取的复杂正面中尤其严重。首先,我们展示了一个一般的工作流程,然后通过流程图,数字和方程来解释分割不足和过度分割所采用的方法的问题。最后,我们比较了采用修改后的"Seq-NV-RANSAC"得到的结果和使用原先"Seq-NV-RANSAC"方法所得到的结果,这些实验数据都是通过"Seq-NV-RANSAC"方法获得,并且都有分割不足或是过度分割的问题。

第七章我们详细介绍了解译各条边的具体步骤,对所有已经提取的表面,通过使用有序RANSAC方法来提取"Seq-RANSAC-Edges"边,这是我们提出的一个新的处理方法。首先,显示一般工作流程,然后,通过展现流程图和方程来解释"Seq-RANSAC-Edges"所采用的新方法。最后,通过修正的"Seq-RANSAC-Edges"方法获取实际数据,并将"Seq-RANSAC-Edges"方法应用在这些实际的数据中,并且通过数字和评估结果来展现最后的研究成果。

第八章展示这项研究工作的主要成果并对下一步的研究提供建设性的建议。

最后因为最终的研究结果比之前预想的要好,所以我们可以肯定,这项研究还有非常大的发展空间,另外,因为实现了直接从3维点云中自动地创建3维模型,所以这项研究的主要目标成功的实现了。

未来的工作主要集中在如下几个方面:

阈值参数的自适应测定,

调整优化边线提取的最终结果,

提高平面表面提取和边线提取步骤的自动化程度,

通过深入挖掘本研究所取得的成果来建立CAD模型,

继续深入研究本论文所涉及的相关研究方法,不断提高算法效率,

将目前研究所得到的方法应用于其他数据源所获取的点云数据中。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39620662/article/details/111764876

智能推荐

Java多重if....else if-程序员宅基地

文章浏览阅读97次。public class HelloWorld { public static void main(String[] args) { int age=25; if(age>60){ System.out.println("老年"); }else if(age>40 && age<60){ Sy..._java中多重if用if?:怎么写

Fork-Join及Phaser-程序员宅基地

文章浏览阅读109次。为什么80%的码农都做不了架构师?>>> ..._phaser和forkjoinpool

MySQL主键和外键详解:定义和使用方法-程序员宅基地

文章浏览阅读245次。MySQL数据库的主键和外键详解主键主键的定义主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来..._主键 外键 公共维度

UE4_常见动画节点学习_Two Bone IK双骨骼IK-程序员宅基地

文章浏览阅读889次,点赞20次,收藏9次。关节目标位置空间设为BCSBoneSpace时,用作关节目标位置的骨骼命名。执行器位置空间设为BCSBoneSpace时,用作执行器位置的骨骼命名。要应用IK解算器的骨骼命名。启用时,执行器(组件、父或骨骼)的旋转将应用到IK骨骼。肢体最大长度的比率,用于决定缩放骨骼的时间。在关节目标位置空间中指定位置关节目标的向量。XYZ组件在目标骨骼上的平移。XYZ组件在目标骨骼上的旋转。XYZ组件在目标骨骼上的缩放。XYZ组件在目标骨骼上的平移。XYZ组件在目标骨骼上的旋转。XYZ组件在目标骨骼上的缩放。

百练 4102 宠物小精灵之收服 【二维费用01背包】_宠物小精灵之收服 百练-程序员宅基地

文章浏览阅读1.2k次。传送门 // 题意: 有k个怪物, 告诉每个怪物捕捉它需要的精灵球和皮卡丘收到的伤害, 给定精灵球的一共的数量和皮卡丘总的体力值, 问最多可以捕捉到多少个怪物, 然后如果能捕捉到的怪物相同则要消耗的体力值尽量的小….思路: 很明显的二维背包费用的题, 加了一维费用那么dp数组同时加一维即可……捡起一个物品所需要付出两种代价, 所以dp[i][u][v] 代表捕捉前i个怪物用掉精灵球u个, 体..._宠物小精灵之收服 百练

stm32中断服务函数c语言,STM32中断数据回调函数接收处理-程序员宅基地

文章浏览阅读2k次。1.定义一个空的指针函数 指针函数的参数是uint8_t 类型chtypedef void (* usart_recv_callback)(uint8_t ch);2.声明这个类型usart_recv_callback usart1_recv_cb;3.串口配置时,一个形参为串口中断接收回调void Usart_Config(USART_TypeDef* USARTx, uint32_t bau..._stm32回调函数和中断服务函数

随便推点

activiti工作流引擎入门教程-程序员宅基地

文章浏览阅读1.2w次,点赞11次,收藏79次。activiti简介Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准。Activiti是一种轻量级,可嵌入的BPM引擎,而且还设计适用于可扩展的云架构。 Activiti将提供宽松的Apache许可2.0,同时促进Activiti BPM引擎和BPMN 2.0的匹配。activiti的7大马车1.Repos..._activiti

Ubuntu18.04下VIM安装及配置_ubuntu安装vim-程序员宅基地

文章浏览阅读8.7w次,点赞37次,收藏286次。作者:陈浩 更新日期:2018-09-211.安装VIM $sudo apt-get install vim我的vim 已经是最新版 (2:8.0.1453-1ubuntu1)。2.安装vim-plug 一种方便简洁的插件管理插件终端输入如下命令: $ curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.gi..._ubuntu安装vim

most , most , most important things!-程序员宅基地

文章浏览阅读113次。Little nun, Have u ever heard "Touching is strong forbidden between man and woman?2011. Aneurysm identification by analysis of the blood-vessel skeleton.提出动脉瘤颈的识别,基于血管和血管骨架上表面点相互位置的概率估计。半自动方法..._python centline 中心线提取 c++

rtsp协议详解-程序员宅基地

文章浏览阅读96次。RTSP简介RTSP(Real Time Streaming Protocol), 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealNetworks公司提交的IETF RFC标准. 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP..._rtsp协议详解

将眼动追踪加入Vive头显,Tobii Pro推出VR研究工具-程序员宅基地

文章浏览阅读668次。这款VR研究工具可以用于心理学、消费者行为和人类表现等方面,是低成本、高效率的解决方案。 最近,Tobii Pro推出一款新的研究工具,可用于沉浸式VR研究。这种沉浸式VR研究与传统的研究方式大相径庭,可广泛应用于各类研究。据了解,Tobii Pro VR集成方案基于Tobii的眼动追踪技术和HTC Vive头显,并结..._vive unity vr 眼动数据

软件开发常用名词中英文对照-程序员宅基地

文章浏览阅读543次。  abort 中止  abstract class 抽象类  accelerator 快捷键  accelerator mapping 快捷键映射  accelerator table 快捷键对应表  access modifier 访问修饰符  Access Pack 访问包  access specifier 访问说明符  access violation 访问冲突  accessibili..._implementation 开发人员 setup

推荐文章

热门文章

相关标签