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

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue