本发明涉及网格曲面重构技术领域,更具体地说,涉及一种基于船体外板点云数据的网格曲面确定方法及装置。
背景技术:
船体外板具有大尺寸、形状复杂等特点,其三维轮廓一般通过3维激光扫描仪快速高精度的获取。但是测量得到的外板点云数据具有海量和散乱等特点,而且数据排列不规则,占据较大的空间,不利于外板轮廓数据的存储、成形情况的比对以及外板的定位。因此需要少量的规则排列分布的网格状数据来表示外板曲面。针对点云曲面的网格化问题,国内外目前主要有基于三角形网格重构和基于多边形网格重构的方法。基于三角形网格重构的思想是在给定区域选取种子三角形,然后通过区域增长的算法进行重构。基于四边形网格重构,采用的是分层逐点生成的思想,在每一层生成一个小的四边形,再利用B样条方法,拟合临近区域的点云。还有基于两个三角形合并成一个四边形的方法,但是不能考虑到区域内部结构特征及性质的变化。这些方法建立点云索引表比较复杂,且占用内存较大,空间复杂度较高。
因此,如何克服现有技术中不易搜索点云数据、占内存较大以及空间复杂度较高的问题,是本领域技术人员需要解决的。
技术实现要素:
本发明的目的在于提供一种基于船体外板点云数据的网格曲面确定方法及装置,以实现对船体复杂外板的点云四边形网格重构,解决船体复杂外板海量散乱点云数据的数据存储量大、曲面定位难等问题。
为实现上述目的,本发明实施例提供了如下技术方案:
一种基于船体外板点云数据的网格曲面确定方法,包括:
将船体外板的三维点云数据投影在二维平面,形成二维点云数据;
利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线;
根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线;
利用所述二维点云数据的边界曲线、横向网格曲线和纵向网格曲线,以及最近邻点插值算法,确定所述船体外板的三维重构网格曲面。
其中,所述将船体外板的三维点云数据投影在二维平面,形成二维点云数据,包括:
在船体外板的三维点云数据中,确定X坐标的最大值和最小值,以及Y坐标的最大值和最小值;
在二维平面上创建矩形区域,并根据所述X坐标的最大值和最小值,以及Y坐标的最大值和最小值,将所述矩形区域划分为N×M的正方形网格区域;其中,N为横向网格数,M为纵向网格数,L为网格尺寸,且N、M均为不小于零的正整数,L为不小于零的有理数;
将船体外板的三维点云数据投影在二维平面,通过所述正方形网格区域记录每个点的位置。
其中,利用所述X坐标的最大值Xmax和最小值Xmin以及网格尺寸L,确定纵向网格数M;其中,
利用所述Y坐标的最大值Ymax和最小值Ymin以及网格尺寸L,确定横向网格数N;其中,
其中,所述利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线,包括:
根据所述二维点云数据在所述正方形网格区域的位置,确定所述二维点云数据在所述正方形网格区域的边界网格;
利用临近域的拟合曲线的曲率,确定所述边界网格内的角点,并通过插值法确定边界点;
根据所述二维点云数据的边界点以及三次样条插值算法,拟合出所述二维点云数据的边界曲线;所述边界曲线包括上边界曲线、下边界曲线、左边界曲线以及右边界曲线。
其中,根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线,包括:
根据所述二维点云数据的上边界曲线和下边界曲线,拟合出所述二维点云数据的横向网格曲线;
根据所述二维点云数据的左边界曲线和右边界曲线,拟合出所述二维点云数据的纵向网格曲线;
利用所述横向网格曲线和纵向网格曲线将二维平面划分为曲线网格。
其中,所述横向网格曲线和所述纵向网格曲线的条数相同。
一种基于船体外板点云数据的网格曲面确定装置,包括:
二维投影模块,用于将船体外板的三维点云数据投影在二维平面,形成二维点云数据;
边界拟合模块,用于利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线;
网格划分模块,用于根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线;
曲面重构模块,用于利用所述二维点云数据的边界曲线、横向网格曲线和纵向网格曲线,以及最近邻点插值算法,确定所述船体外板的三维重构网格曲面。
其中,所述二维投影模块包括:
坐标值确定单元,用于在船体外板的三维点云数据中,确定X坐标的最大值和最小值,以及Y坐标的最大值和最小值;
正方形网格区域划分单元,用于在二维平面上创建矩形区域,并根据所述X坐标的最大值和最小值,以及Y坐标的最大值和最小值,将所述矩形区域划分为N×M的正方形网格区域;其中,N为横向网格数,M为纵向网格数,L为网格尺寸,且N、M均为不小于零的正整数,L为不小于零的有理数;
投影单元,用于将船体外板的三维点云数据投影在二维平面,通过所述正方形网格区域记录每个点的位置。
其中,所述边界拟合模块包括:
边界网格确定单元,用于根据所述二维点云数据在所述正方形网格区域的位置,确定所述二维点云数据在所述正方形网格区域的边界网格;
边界点确定单元,用于利用临近域的拟合曲线的曲率,确定所述边界网格内的角点,并通过插值法确定边界点;
边界曲线拟合单元,用于根据所述二维点云数据的边界点以及三次样条插值算法,拟合出所述二维点云数据的边界曲线;所述边界曲线包括上边界曲线、下边界曲线、左边界曲线以及右边界曲线。
其中,所述网格划分模块包括:
横向网格曲线拟合单元,用于根据所述二维点云数据的上边界曲线和下边界曲线,拟合出所述二维点云数据的横向网格曲线;
纵向网格曲线拟合单元,用于根据所述二维点云数据的左边界曲线和右边界曲线,拟合出所述二维点云数据的纵向网格曲线;
曲线网格划分单元,用于利用所述横向网格曲线和纵向网格曲线将二维平面划分为曲线网格;所述横向网格曲线和所述纵向网格曲线的条数相同。
通过以上方案可知,本发明实施例提供的一种基于船体外板点云数据的网格曲面确定方法,包括:将船体外板的三维点云数据投影在二维平面,形成二维点云数据;利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线;根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线;利用所述二维点云数据的边界曲线、横向网格曲线和纵向网格曲线,以及最近邻点插值算法,确定所述船体外板的三维重构网格曲面。
可见,在本方案中,可将海量散乱的船体外板点云数据,转化为少量的规则排列的点阵数据。实现了海量散乱点云数据的规整化压缩,有利于外板曲面数据的存储、定位和比较;本发明还公开了一种种基于船体外板点云数据的网格曲面确定装置,同样能实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种基于船体外板点云数据的网格曲面确定方法流程示意图;
图2为本发明实施例公开的二维投影示意图;
图3为本发明实施例公开的边界拟合示意图;
图4为本发明实施例公开的网格划分示意图;
图5为本发明实施例公开的曲面重构示意图;
图6为本发明实施例公开的一种基于船体外板点云数据的网格曲面确定装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于船体外板点云数据的网格曲面确定方法及装置,以实现对船体复杂外板的点云四边形网格重构,解决船体复杂外板海量散乱点云数据的数据存储量大、曲面定位难等问题。
参见图1,本发明实施例提供的一种基于船体外板点云数据的网格曲面确定方法,包括:
S101、将船体外板的三维点云数据投影在二维平面,形成二维点云数据;
其中,所述将船体外板的三维点云数据投影在二维平面,形成二维点云数据,包括:
在船体外板的三维点云数据中,确定X坐标的最大值和最小值,以及Y坐标的最大值和最小值;
在二维平面上创建矩形区域,并根据所述X坐标的最大值和最小值,以及Y坐标的最大值和最小值,将所述矩形区域划分为N×M的正方形网格区域;其中,N为横向网格数,M为纵向网格数,L为网格尺寸,且N、M均为不小于零的正整数,L为不小于零的有理数;
将船体外板的三维点云数据投影在二维平面,通过所述正方形网格区域记录每个点的位置。
其中,利用所述X坐标的最大值Xmax和最小值Xmin以及网格尺寸L,确定纵向网格数M;其中,
利用所述Y坐标的最大值Ymax和最小值Ymin以及网格尺寸L,确定横向网格数N;其中,
具体的,在本实施例中,船体外板的三维点云数据可以通过激光三维扫描仪提取;提取后,可将船体外板的三维轮廓数据进行投影,在二维平面对其投影进行研究。具体包括以下步骤:
(1).1:在提取的点云数据区域,找到X坐标的最大值和最小值(Xmin和Xmax)和Y坐标的最大和最小值(Ymin和Ymax);
(1).2:在xoy平面上创建一个矩形区域,并根据Xmax、Xmin、Ymax和Ymin,将该区划分为N×M的正方形网格区域,在此,正方形网格的建立,便于点云数据的存储和索引,其中N是横向网格数,M是纵向网格数,L是网格尺寸大小。它们可以分别由Eq.(1)和Eq.(2)计算得到。
(1).3:在xoy平面内得到投影的点云数据,在正方形网格记录每个点的位置,以便找到边界数据点,投影后的二维点云数据如图2所示。
S102、利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线;
其中,所述利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线,包括:
根据所述二维点云数据在所述正方形网格区域的位置,确定所述二维点云数据在所述正方形网格区域的边界网格;
利用临近域的拟合曲线的曲率,确定所述边界网格内的角点,并通过插值法确定边界点;
根据所述二维点云数据的边界点以及三次样条插值算法,拟合出所述二维点云数据的边界曲线;所述边界曲线包括上边界曲线、下边界曲线、左边界曲线以及右边界曲线。
具体的,在本实施例中,根据正方形网格中的空间关系,将投影的4个边界上的数据划分,寻求边界网格;本实施例中寻求边界网格的规则为:若网格内无点存在,则不是边界;若有点存在,判断与其相邻的网格是否至少存在一个网格没有点存在,若是,则是边界网格。
进一步,通过计算临近域的拟合曲线的曲率,跟设定的阈值相比较,判断当前点是否是角点,找出角点通过插值边界点。最后,根据每个边界找到的点云数据通过三次样条的插值拟合出边界曲线,参见图3,为本实施例提供的边界拟合示意图,并根据图3可知,本方案中拟合的边界曲线具体包括上边界曲线、下边界曲线、左边界曲线以及右边界曲线。
S103、根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线;
其中,根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线,包括:
根据所述二维点云数据的上边界曲线和下边界曲线,拟合出所述二维点云数据的横向网格曲线;
根据所述二维点云数据的左边界曲线和右边界曲线,拟合出所述二维点云数据的纵向网格曲线;
利用所述横向网格曲线和纵向网格曲线将二维平面划分为曲线网格;其中,所述横向网格曲线和所述纵向网格曲线的条数相同。
具体的,对于网格的划分,首先在拟合出的边界曲线的基础上对方程自变量系数的变化,可以将这一投影区域的点云数据进行纵向和横向的网格划分。在具体实施过程中,在本实施例中,S103具体包括以下步骤:
(3).1:假设上边界曲线的拟合方程是:
y1=a1·x3+b1·x2+c1·x+d1;
下边界曲线的拟合方程是:
yN=aN·x3+bN·x2+cN·x+dN;
为了得到中间的网格曲线,将网格的横向网格曲线可以表示为:
yi=ai·x3+bi·x2+ci·x+di (3)
在这里,对曲线方程的系数做一定的处理,使得
可得到在上边界和下边界之间的曲线变化的曲线方程,从而拟合出横向的网格曲线。
同样地,左边界曲线的拟合方程是:
x1=a1′·y3+b1′·y2+c1′·y+d1′
右边界曲线拟合方程是:
xM=aM′·y3+bM′·y2+cM′·y+dM′
纵向网格曲线可以表示为:
xj=aj′·y3+bj′·y2+cj′·y+dj′ (4)
在这里,对曲线方程的系数做一定的处理,使得
可由上述曲线方程系数拟合出纵向的网格曲线。
(3).2:拟合的网格曲线将XOY平面分为N×M部分,可得到每个水平网格曲线和每个垂直网格线的交叉点,即点云数据的坐标,为了更加方便定位点云数据,在这里,使横向与纵向网格曲线条数相等,详见图4所示。
S104、利用所述二维点云数据的边界曲线、横向网格曲线和纵向网格曲线,以及最近邻点插值算法,确定所述船体外板的三维重构网格曲面。
参见图5,对得到的网格化曲线使用最近邻点插值算法,得到三维重构网格曲面。可见,在本方案中,为了克服现有的船体外板网格重构技术中存在的占内存、不易定位点云数据等问题,提出了船体复杂外板点云四边形网格重构方法,该方法通过拟合出的船体外板点云的边界曲线,找到每个曲线方程自变量系数的关系,可以得到横向和纵向的网格曲线,最后通过最临近插值的算法拟合出曲面。
下面对本发明实施例提供的网格曲面确定装置进行介绍,下文描述的网格曲面确定装置与上文描述的网格曲面确定方法可以相互参照。
参见图6,本发明实施例提供的一种基于船体外板点云数据的网格曲面确定装置,包括:
二维投影模块100,用于将船体外板的三维点云数据投影在二维平面,形成二维点云数据;
边界拟合模块200,用于利用所述二维点云数据的边界点以及三次样条插值算法,确定所述二维点云数据的边界曲线;
网格划分模块300,用于根据所述二维点云数据的边界曲线,对所述二维点云数据进行网格划分,形成所述二维点云数据的横向网格曲线和纵向网格曲线;
曲面重构模块400,用于利用所述二维点云数据的边界曲线、横向网格曲线和纵向网格曲线,以及最近邻点插值算法,确定所述船体外板的三维重构网格曲面。
基于上述实施例,所述二维投影模块包括:
坐标值确定单元,用于在船体外板的三维点云数据中,确定X坐标的最大值和最小值,以及Y坐标的最大值和最小值;
正方形网格区域划分单元,用于在二维平面上创建矩形区域,并根据所述X坐标的最大值和最小值,以及Y坐标的最大值和最小值,将所述矩形区域划分为N×M的正方形网格区域;其中,N为横向网格数,M为纵向网格数,L为网格尺寸,且N、M均为不小于零的正整数,L为不小于零的有理数;
投影单元,用于将船体外板的三维点云数据投影在二维平面,通过所述正方形网格区域记录每个点的位置。
基于上述实施例,所述边界拟合模块包括:
边界网格确定单元,用于根据所述二维点云数据在所述正方形网格区域的位置,确定所述二维点云数据在所述正方形网格区域的边界网格;
边界点确定单元,用于利用临近域的拟合曲线的曲率,确定所述边界网格内的角点,并通过插值法确定边界点;
边界曲线拟合单元,用于根据所述二维点云数据的边界点以及三次样条插值算法,拟合出所述二维点云数据的边界曲线;所述边界曲线包括上边界曲线、下边界曲线、左边界曲线以及右边界曲线。
基于上述实施例,所述网格划分模块包括:
横向网格曲线拟合单元,用于根据所述二维点云数据的上边界曲线和下边界曲线,拟合出所述二维点云数据的横向网格曲线;
纵向网格曲线拟合单元,用于根据所述二维点云数据的左边界曲线和右边界曲线,拟合出所述二维点云数据的纵向网格曲线;
曲线网格划分单元,用于利用所述横向网格曲线和纵向网格曲线将二维平面划分为曲线网格;所述横向网格曲线和所述纵向网格曲线的条数相同。
可见,在本方案中,将采集到的三维点云数据投影在二维平面;对投影的数据找出边缘数据,拟合出四条边缘曲线,得到四个边缘曲线方程,计算所有纵向特征曲线系数的平均值和所有横向特征曲线系数的平均值,找到系数之间的关系作为一条曲线方程的系数。通过本发明所述的方法,可以获得当前复杂外板横向和纵向的曲线情况,由得到的方程,通过插值拟合出网格曲面,该方法准确性高、简单易实施;同时,对比横纵曲线网格拟合整个曲面的情况,可以采用更少排列规则的点代表点云数据的特征,能够节省内存空间,更好的分析船体外板的特征情况。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。