三维点云法向量的生成方法、装置和存储介质与流程

文档序号:14475322阅读:209来源:国知局
三维点云法向量的生成方法、装置和存储介质与流程

本发明涉及计算机技术领域,特别是涉及三维点云法向量的生成方法、装置、计算机设备和存储介质。



背景技术:

三维重建是指对三维物体建立适合计算机表示和处理的数学模型。许多三维重建的算法都需要借助于点云法向量来得到精确的重建结果。

目前,三维点云法向量的计算方法按照搜索每个点的邻域、拟合平面、加权平均的步骤进行计算,算法稳定可靠。但对于目前高密度、高数量级的三维点云数据来说计算效率不高,无法满足实时三维重建的要求。邻域点搜索和拟合平面两个过程耗时严重,导致三维点云法向量的生成效率低。



技术实现要素:

基于此,有必要针对三维点云法向量的生成效率低的问题,提供一种三维点云法向量的生成方法、装置、计算机设备和存储介质。

一种三维点云法向量的生成方法,所述方法包括:

获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;

根据所述第一测量图像和第二测量图像中的对应像素点形成三维点云;

将所述三维点云中的三维点一一映射到二维度的点阵列中的点;所述点阵列的行数与所述第一测量图像或者所述第二测量图像的列方向的像素个数相等,所述点阵列的列数与所述第一测量图像或者所述第二测量图像的行方向的像素个数相等;

按照所述点阵列划分所述三维点云,以得到三角面片;

获取所述三角面片的法向量;

根据所述三角面片的法向量确定所述三维点云的法向量。

在其中一个实施例中,所述三维点云中的三维点一一映射到二维度的点阵列中的点,包括:获取所述三维点云中的三维点对应于所述第一测量图像中生成所述三维点的像素点的行号和列号;按照获取的行号和列号,将所述三维点映射到二维度的点阵列中的点;所述点阵列中的点的行号和列号分别与获取的所述行号和所述列号一致。

在其中一个实施例中,所述按照所述点阵列划分所述三维点云,以得到三角面片,包括:

遍历所述点阵列中除最后一行和最后一列后剩余的点;

根据当前遍历的点构建相应的四元组;所述四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;

按照所述四元组划分所述三维点云中对应所述四元组中点的三维点,以得到三角面片。

在其中一个实施例中,所述按照所述四元组划分所述三维点云中对应所述四元组中点的三维点,以得到三角面片,包括:

当所述四元组中的四个点均对应所述三维点云中的三维点时,获取所述四元组中四个点对应的三维点的两条对角线的三维距离;

将所述三维点云中对应所述四元组中点的三维点构成的四边形沿三维距离较短的所述对角线划分,以得到三角面片。

在其中一个实施例中,所述按照所述四元组划分所述三维点云中对应所述四元组中点的三维点,以得到三角面片,还包括:

当所述四元组中仅有三个点对应所述三维点云中的三维点时,将所述三个点对应的三维点构成三角面片。

在其中一个实施例中,所述根据所述三角面片的法向量确定所述三维点云的法向量,包括:

当所述三维点云其中一个三维点属于多个三角面片时,将所述一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到所述一个三维点的法向量;所述权重为相应三角面片的面积;

当所述三维点云其中一个三维点仅属于一个三角面片时,将所述一个三角面片的法向量作为仅属于所述一个三角面片的所述一个三维点的法向量。

在其中一个实施例中,所述按照所述点阵列划分所述三维点云,以得到三角面片之后,所述方法还包括:

获取划分出的三角面片的边长;

将边长超过预设值的三角面片剔除。

一种三维点云法向量的生成装置,所述装置包括:

测量图像获取模块,用于获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;

三维点云形成模块,用于根据所述第一测量图像和第二测量图像中的对应像素点形成三维点云;

点阵列形成模块,用于将所述三维点云中的三维点一一映射到二维度的点阵列中的点;所述点阵列的行数与所述第一测量图像或者所述第二测量图像的列方向的像素个数相等,所述点阵列的列数与所述第一测量图像或者所述第二测量图像的行方向的像素个数相等;

三角面片获取模块,用于按照所述点阵列划分所述三维点云,以得到三角面片;

三角面片法向量获取模块,用于获取所述三角面片的法向量;

三维点云法向量确定模块,用于根据所述三角面片的法向量确定所述三维点云的法向量。

在其中一个实施例中,所述点阵列形成模块,还用于获取所述三维点云中的三维点对应于所述第一测量图像中生成所述三维点的像素点的行号和列号;按照获取的行号和列号,将所述三维点映射到二维度的点阵列中的点;所述点阵列中的点的行号和列号分别与获取的所述行号和所述列号一致。

在其中一个实施例中,所述三角面片获取模块,还用于遍历所述点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组;所述四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;按照所述四元组划分所述三维点云中对应所述四元组中点的三维点,以得到三角面片。

在其中一个实施例中,所述三角面片获取模块,还用于当所述四元组中的四个点均对应所述三维点云中的三维点时,获取所述四元组中四个点对应的三维点的两条对角线的三维距离;将所述三维点云中对应所述四元组中点的三维点构成的四边形沿三维距离较短的所述对角线划分,以得到三角面片。

在其中一个实施例中,所述三角面片获取模块,还用于当所述四元组中仅有三个点对应所述三维点云中的三维点时,将所述三个点对应的三维点构成三角面片。

在其中一个实施例中,所述三维点云法向量确定模块,还用于当所述三维点云其中一个三维点属于多个三角面片时,将所述一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到所述一个三维点的法向量;所述权重为相应三角面片的面积;当所述三维点云其中一个三维点仅属于一个三角面片时,将所述一个三角面片的法向量作为仅属于所述一个三角面片的所述一个三维点的法向量。

在其中一个实施例中,所述装置还包括:

三角面片的边长获取模块,用于获取划分出的三角面片的边长;

三角面片剔除模块,用于将边长超过预设值的三角面片剔除。

一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下的步骤:

获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;

根据所述第一测量图像和第二测量图像中的对应像素点形成三维点云;

将所述三维点云中的三维点一一映射到二维度的点阵列中的点;所述点阵列的行数与所述第一测量图像或者所述第二测量图像的列方向的像素个数相等,所述点阵列的列数与所述第一测量图像或者所述第二测量图像的行方向的像素个数相等;

按照所述点阵列划分所述三维点云,以得到三角面片;

获取所述三角面片的法向量;

根据所述三角面片的法向量确定所述三维点云的法向量。

一种存储有计算机程序的存储介质,所述计算机程序被一个或多个处理器执行时,使得所述一个或多个处理器执行以下的步骤:

获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;

根据所述第一测量图像和第二测量图像中的对应像素点形成三维点云;

将所述三维点云中的三维点一一映射到二维度的点阵列中的点;所述点阵列的行数与所述第一测量图像或者所述第二测量图像的列方向的像素个数相等,所述点阵列的列数与所述第一测量图像或者所述第二测量图像的行方向的像素个数相等;

按照所述点阵列划分所述三维点云,以得到三角面片;

获取所述三角面片的法向量;

根据所述三角面片的法向量确定所述三维点云的法向量。

上述三维点云法向量的生成方法、装置、计算机设备和存储介质,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

附图说明

图1为一个实施例中三维点云法向量生成方法的应用环境图;

图2为一个实施例中计算机设备的内部结构示意图;

图3为一个实施例中三维点云法向量的生成方法的流程图;

图4为一个实施例中二维度的点阵列的示意图;

图5为一个实施例中四元组中四个点构成的四边形的示意图;

图6为一个实施例中三角面片的示意图;

图7为一个具体实施例中三维点云法向量的生成方法的流程图;

图8为一个实施例中三维点云法向量的生成装置的结构框图;

图9为一个实施例中三维点云法向量的生成装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中三维点云法向量的生成方法的应用环境图。参照图1,该应用环境包括双目视觉测量设备110和计算机设备120。双目视觉测量设备110和计算机设备120通过网络连接。双目视觉测量设备110可以由立体视觉系统由左右两部摄像机组成。计算机设备120可以是独立的计算机设备或者计算机设备集群,可以是物理计算机设备或者虚拟计算机设备。

图2为一个实施例中计算机设备的内部结构示意图。该计算机设备可以是图1中的计算机设备120。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器可以包括非易失性存储介质和内存储器。该处理器用于提供计算和控制能力,支撑整个计算机设备的运行。计算机设备的存储器中存储有计算机程序,该计算机程序被处理器执行时,可使得处理器执行一种三维点云法向量的生成方法。网络接口用于连接网络进行通信。

本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

如图3所示,在一个实施例中,提供了一种三维点云法向量的生成方法。本实施例主要以该方法应用于上述图1中的计算机设备来举例说明。参照图3,该三维点云法向量的生成方法具体包括如下步骤:

s302,获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像。

其中,双目立体视觉测量方式是模拟人类视觉原理,使用计算机被动感知距离的方法。从两个或者多个点观察一个物体,获取在不同视角下的图像,根据图像之间像素的匹配关系,通过三角测量原理计算出像素之间的偏移来获取物体的三维信息。得到了物体的景深信息,就可以计算出物体与相机之间的实际距离,物体三维大小,两点之间实际距离。第一测量图像和第二测量图像分别是由双目立体视觉系统由不同位置的两台或者一台摄像机经过移动或旋转拍摄同一幅场景,得到的像素相同的两幅测量图。这里所使用的术语“第一”和“第二”在本文中用于描述测量图,但测量图不受这些术语的限制。这些术语仅用于将第一测量图与另一测量图区分。举例来说,在不脱离本发明的范围的情况下,可以将第一测量图称为第二测量图,且类似地,可将第二测量图称为第一测量图。第一测量图和第二测量图两者都是测量图,但其不是同一测量图。

s304,根据第一测量图像和第二测量图像中的对应像素点形成三维点云。

被测物体上同一个三维点被两幅测量图记录下来,该三维点在第一幅测量图中对应的像素点,与该三维点在第二幅测量图中对应的像素点,称为对应像素点对应像素点也可称为同名点。同名点具有相同的特征,如果是通过投射散斑到被测物体表面的方法进行三维重建的,同名点就是两幅图像上相关程度最高的点。如果是通过投射正弦或余弦条纹到被测物体表面的方法,同名点就是两幅测量图相位值近似的点。被测物体是通过双目立体视觉测量方式测量的对象。三维点是被测物体表面的点。三维点云是组成被测物体表面的三维点的集合。

在一个实施例中,计算机设备根据被测物体上的三维点在第一幅测量图上的像素点的位置找到在第二幅测量图上的对应像素点的位置,得到一系列同名点。第一测量图上的像素点和与之对应的相机中心点形成第一连线,第二测量图上的像素点和与之对应的相机中心点形成第二连线,第一连线和第二连线相交得到三维点,三维点构成三维点云。

s306,将三维点云中的三维点一一映射到二维度的点阵列中的点;点阵列的行数与第一测量图像或者第二测量图像的列方向的像素个数相等,点阵列的列数与第一测量图像或者第二测量图像的行方向的像素个数相等。

其中,建立与第一测量图或第二测量图行数和列数相等的二维度的点阵列。根据三维点云中的三维点对应该三维点在第一测量图或者第二测量图中的像素点的行号或列号,在二维度的点阵列中找到三维点的行号和列号对应的位置对其进行标注。如图4所示,为二维度的点阵列。二维度的点阵列第一行用数字表示点阵列的列号,n的上限值是第一测量图或者第二测量图的最大列号。二维度的点阵列第一列用数字表示点阵列的列号,m的上限值是第一测量图或者第二测量图的最大行号。例如:当第一测量图或者第二测量图的像素为800×600,那么n=800,m=600。其中的p标注为存在对应的三维点,n标注为没有对应的三维点。p的下标表示三维点云的序号,例如p1表示三维点云中的第一个三维点,并用(1,1)表示该三维点的行号为1和列号为1。

s308,按照点阵列划分三维点云,以得到三角面片。

其中,三角面片是由三个三维点构成的三维空间面片。

在一个实施例中,计算机设备按照点阵列划分三维点云,以得到三角面片。同时将组成三角面片的顶点的三维点的序号存放在三角化数组中。三角化数组用于存放组成一个个三角面片的序号,一个三角面片对应三个三维点的序号。

s310,获取三角面片的法向量。

其中,法向量是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。由于空间内有无数个直线垂直于已知平面,因此一个平面都存在无数个法向量。这里三角面片法向量是垂直于三角面片的直线,通过求解三角面片任意两条相交的边的法向量即可得到三角面片的法向量。

s312,根据三角面片的法向量确定三维点云的法向量。

其中,三维点的法向量可以由共用该三维点的每个三角面片的法向量按照相应的权重加权求和得到,权重为相应三角面片的面积。三维点云的法向量是三维点的法向量的集合。

在一个实施例中,计算机设备根据三角面片的法向量计算出三维点云的法向量,并对每个三维点的法向量进行归一化处理,使每个三维点的法向量模长为1。

上述三维点云法向量的生成方法,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

在一个实施例中,s306包括:获取三维点云中的三维点对应于第一测量图像中生成三维点的像素点的行号和列号;按照获取的行号和列号,将三维点映射到二维度的点阵列中的点;点阵列中的点的行号和列号分别与获取的行号和列号一致。

具体地,获取第一测量图像或第二测量图像中像素点的行号和列号,将像素点的行号和列号分别作为三维点的行号和列号。根据三维点的行号和列号将三维点排列在点阵列中。点阵列中的点在不同维度上分别按照相应点的行号和列号的升序排列。

上述实施例中,通过将第一测量图像或第二测量图像中像素点的行号和列号,将像素点的行号和列号分别作为三维点的行号和列号,按照行号和列号进行二维排序。这样将三维点转换成二维度的点阵列的点,使得二维度的点阵列能够准确地在二维度上反映三维点之间的位置关系,划分出的三角面片大小合适,便于准确计算三维点云的法向量。

在一个实施例中,s308包括:遍历点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组;四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

例如,从第一行和第一列的点(1,1)开始遍历点阵列中除最后一行和最后一列的点(m,n)后剩余的点。将二维度的点阵列中要遍历的点记为(r,c),保持(r,c)的行号r不变,将(r,c)的列号进行加一成为c+1,得到点(r,c+1)。保持(r,c)的列号c不变,将(r,c)的行号进行加一成为r+1,得到点(r+1,c)。将(r,c)的行号和列号分别进行加一,得到点(r+1,c+1)。r是行的英文首字母,c是列的英文首字母。将(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)这四个点构成四元组。按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

上述实施例中,遍历二维度的点阵列中的点,以相邻的四个点为单位划分三角面片,划分出的三角面片大小更合适,进一步提高了计算三维点云法向量的准确率。

在一个实施例中,s308还包括:当四元组中的四个点均对应三维点云中的三维点时,获取四元组中四个点对应的三维点的两条对角线的三维距离;将三维点云中对应四元组中点的三维点构成的四边形沿三维距离较短的对角线划分,以得到三角面片。

例如:如图5所示。四元组中的四个点(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)构成四边形。当四元组中的四个点(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)在二维度的点阵列中均有对应的三维点。获取四元组中的四个点(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)构成的四边形的其中一条对角线点(r,c)和(r+1,c+1)的连线的三维空间距离d1,另一对角线点(r,c+1)和(r+1,c)的连线的三维空间距离d2,比较d1和d2的长短。若d1比d2长,那么取(r,c)、(r,c+1)和(r+1,c)作为一个三角面片的三个顶点,(r,c+1)、(r+1,c)和(r+1,c+1)作为另一个三角面片的三个顶点;若d1比d2短,那么取(r,c)、(r,c+1)和(r+1,c+1)作为一个三角面片的三个顶点,(r,c+1)、(r+1,c)和(r,c)作为另一个三角面片的三个顶点,存储三角面片三个顶点所对应的三维点序号存入三角化数组中。

上述实施例中,将三维点云中对应四元组中点的三维点构成的四边形沿三维距离较短的对角线划分,可以避免划分出的三角面片过于狭长,更进一步提高了计算三维点云法向量的准确率。

在一个实施例中,s308还包括:当四元组中仅有三个点对应三维点云中的三维点时,将三个点对应的三维点构成三角面片。

具体地,当四元组中的四个点(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)在二维度的点阵列中存在三个对应的三维点,那么将存在的三个对应的三维点作为顶点构成三角面片。当四元组中的四个点(r,c)、(r,c+1)、(r+1,c)、(r+1,c+1)在二维度的点阵列中只存在两个、一个或没有对应的三维点,那么继续遍历该点的下一个点。

上述实施例中,当四元组中仅有三个点对应三维点云中的三维点时,可直接将该三个点对应的三维点构成三角面片,提高划分三角面片的效率。

在一个实施例中,s308还包括:当四元组中对应三维点云中的三维点的点数量小于三时,将该四元组删除。本实施例中,在四元组中的点不具备划分三角面片的条件时,直接删除,可提高划分三角面片的效率。

在一个实施例中,s312还包括:当三维点云其中一个三维点属于多个三角面片时,将一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到一个三维点的法向量;权重为相应三角面片的面积;当三维点云其中一个三维点仅属于一个三角面片时,将一个三角面片的法向量作为仅属于一个三角面片的一个三维点的法向量。

具体地,当多个三角面片共用一个三维点时,该三维点的法向量是共用该三维点的每个三角面片的法向量各自与相应的三角面片的面积的乘积之和。当一个三维点只作为一个三角面片的顶点时,该三维点的法向量是三角面片的法向量。

举例说明:如图6所示,三维点p8有三个三角片s2、s3和s8共用。三维点p8的法向量等于s2的法向量×三角面片s2的面积+三角面片s3的法向量×三角面片s3的面积+三角面片s8的法向量×三角面片s8的面积。只作为一个三角面片s1的顶点的三维点p1的法向量等于三角面片s1的法向量。

上述实施例中,通过三角面片的法向量进行加权求和就可以求出三维点云的法向量,计算量少,提高了生成三维点云的法向量的效率。

在一个实施例中,计算机设备按三维点云的序号依次进行三维点的法向量计算。当一个三维点只作为一个三角面片的顶点时,该三维点的法向量是三角面片的法向量。当三维点作为多个三角片的顶点时,该三维点的法向量是共用该三维点的每个三角面片的法向量各自与相应的三角面片的面积的乘积之和。

上述实施例中,根据三维点的序号依次进行计算三维点的法向量可以避免重复计算三维点法向量的问题,可提高点云法向量的计算效率。

在一个实施例中,三维点云法向量的生成方法还包括:获取划分出的三角面片的边长;将边长超过预设值的三角面片剔除。

其中,预设值是通过将三角化数组中的每个三角面片的三个边长,经过排序,取中间值,再乘以比例系数得到。这个比例系数依据经验而定。

上述实施例中,通过预设值将三维点云中三维点离得比较远但是也构成三角面片的剔除掉。这样避免不正确的三角面片的出现,从而提高三维点的法向量的计算效率。

如图7所示,在一个具体的实施例中,提供了一种三维点云的法向量生成方法,该方法应用于计算机设备。该方法具体包括如下步骤:

s702,计算机设备获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像。

s704,计算机设备根据第一测量图像和第二测量图像中的对应像素点形成三维点云。

s706,计算机设备获取三维点云中的三维点对应于第一测量图像中生成三维点的像素点的行号和列号。

s708,计算机设备将三维点云中的三维点一一映射到二维度的点阵列中的点。

s710,计算机设备遍历点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组。

s712,计算机设备按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

s714,计算机设备获取划分出的三角面片的边长;将边长超过预设值的三角面片剔除。

s716,计算机设备获取三角面片的法向量;根据三角面片的法向量确定三维点云的法向量。

上述实施例中,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

如图8所示,在一个实施例中,提供了一种三维点云法向量的生成装置800。该装置800包括:测量图像获取模块810、三维点云形成模块820、点阵列形成模块830、三角面片获取模块840、三角面片法向量获取模块850、三维点云法向量确定模块860。其中:

测量图像获取模块810,用于获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像。

三维点云形成模块820,用于根据第一测量图像和第二测量图像中的对应像素点形成三维点云。

点阵列形成模块830,用于将三维点云中的三维点一一映射到二维度的点阵列中的点;点阵列的行数与第一测量图像或者第二测量图像的列方向的像素个数相等,点阵列的列数与第一测量图像或者第二测量图像的行方向的像素个数相等。

三角面片获取模块840,用于按照点阵列划分三维点云,以得到三角面片。

三角面片法向量获取模块850,用于获取三角面片的法向量。

三维点云法向量确定模块860,用于根据三角面片的法向量确定三维点云的法向量。

上述三维点云法向量的生成装置800,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

在一个实施例中,点阵列形成模块830,还用于获取三维点云中的三维点对应于第一测量图像中生成三维点的像素点的行号和列号;按照获取的行号和列号,将三维点映射到二维度的点阵列中的点;点阵列中的点的行号和列号分别与获取的行号和所述列号一致。

在一个实施例中,三角面片获取模块840,还用于遍历点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组;四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

在一个实施例中,三角面片获取模块840,还用于当四元组中的四个点均对应三维点云中的三维点时,获取四元组中四个点对应的三维点的两条对角线的三维距离;将三维点云中对应四元组中点的三维点构成的四边形沿三维距离较短的对角线划分,以得到三角面片。

在一个实施例中,三角面片获取模块840,还用于当四元组中仅有三个点对应三维点云中的三维点时,将三个点对应的三维点构成三角面片。

在一个实施例中,三维点云法向量确定模块860,还用于当三维点云其中一个三维点属于多个三角面片时,将一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到一个三维点的法向量;权重为相应三角面片的面积;当三维点云其中一个三维点仅属于一个三角面片时,将一个三角面片的法向量作为仅属于一个三角面片的一个三维点的法向量。

如图9所示,在一个实施例中,装置800还包括:三角面片的边长获取模块870、三角面片剔除模块880。其中:

三角面片的边长获取模块870,用于获取划分出的三角面片的边长;

三角面片剔除模块880,用于将边长超过预设值的三角面片剔除。

上述三维点云法向量的生成装置,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

在一个实施例中,提供了一种计算机设备。该计算机设备包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;根据第一测量图像和第二测量图像中的对应像素点形成三维点云;将三维点云中的三维点一一映射到二维度的点阵列中的点;点阵列的行数与第一测量图像或者第二测量图像的列方向的像素个数相等,点阵列的列数与第一测量图像或者第二测量图像的行方向的像素个数相等;按照点阵列划分三维点云,以得到三角面片;获取三角面片的法向量;根据三角面片的法向量确定三维点云的法向量。

在一个实施例中,三维点云中的三维点一一映射到二维度的点阵列中的点的步骤包括:获取三维点云中的三维点对应于第一测量图像中生成三维点的像素点的行号和列号;按照获取的行号和列号,将三维点映射到二维度的点阵列中的点;点阵列中的点的行号和列号分别与获取的行号和列号一致。

在一个实施例中,按照点阵列划分三维点云,以得到三角面片的步骤包括:遍历点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组;四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

在一个实施例中,按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片的步骤包括:当四元组中的四个点均对应三维点云中的三维点时,获取四元组中四个点对应的三维点的两条对角线的三维距离;将三维点云中对应四元组中点的三维点构成的四边形沿三维距离较短的对角线划分,以得到三角面片。

在一个实施例中,按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片的步骤还包括:当四元组中仅有三个点对应三维点云中的三维点时,将三个点对应的三维点构成三角面片。

在一个实施例中,根据三角面片的法向量确定三维点云的法向量的步骤包括:当三维点云其中一个三维点属于多个三角面片时,将一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到一个三维点的法向量;权重为相应三角面片的面积;当三维点云其中一个三维点仅属于一个三角面片时,将一个三角面片的法向量作为仅属于一个三角面片的一个三维点的法向量。

在一个实施例中,该计算机程序被处理器执行时,使得处理器执行以下步骤:获取划分出的三角面片的边长;将边长超过预设值的三角面片剔除。

上述计算机设备,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

在一个实施例中,提供了一种计算机设备。该计算机设备包括存储器和处理器,存储器中存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:获取通过双目立体视觉测量方式测得到的第一测量图像和第二测量图像;根据第一测量图像和第二测量图像中的对应像素点形成三维点云;将三维点云中的三维点一一映射到二维度的点阵列中的点;点阵列的行数与第一测量图像或者第二测量图像的列方向的像素个数相等,点阵列的列数与第一测量图像或者第二测量图像的行方向的像素个数相等;按照点阵列划分三维点云,以得到三角面片;获取三角面片的法向量;根据三角面片的法向量确定三维点云的法向量。

在一个实施例中,三维点云中的三维点一一映射到二维度的点阵列中的点的步骤包括:获取三维点云中的三维点对应于第一测量图像中生成三维点的像素点的行号和列号;按照获取的行号和列号,将三维点映射到二维度的点阵列中的点;点阵列中的点的行号和列号分别与获取的行号和列号一致。

在一个实施例中,按照点阵列划分三维点云,以得到三角面片的步骤包括:遍历点阵列中除最后一行和最后一列后剩余的点;根据当前遍历的点构建相应的四元组;四元组包括当前遍历的点、当前遍历的点同行次列的点、当前遍历的点次列同行的点和当前遍历的点次行次列的点;按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片。

在一个实施例中,按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片的步骤包括:当四元组中的四个点均对应三维点云中的三维点时,获取四元组中四个点对应的三维点的两条对角线的三维距离;将三维点云中对应四元组中点的三维点构成的四边形沿三维距离较短的对角线划分,以得到三角面片。

在一个实施例中,按照四元组划分三维点云中对应四元组中点的三维点,以得到三角面片的步骤还包括:当四元组中仅有三个点对应三维点云中的三维点时,将三个点对应的三维点构成三角面片。

在一个实施例中,根据三角面片的法向量确定三维点云的法向量的步骤包括:当三维点云其中一个三维点属于多个三角面片时,将一个三维点属于的每个三角面片的法向量按照相应的权重加权求和,得到一个三维点的法向量;权重为相应三角面片的面积;当三维点云其中一个三维点仅属于一个三角面片时,将一个三角面片的法向量作为仅属于一个三角面片的一个三维点的法向量。

在一个实施例中,该计算机程序被处理器执行时,使得处理器执行以下步骤:获取划分出的三角面片的边长;将边长超过预设值的三角面片剔除。上述存储介质,将三维点云中的三维点按照第一测量图像中像素点的排列位置进行二维排序,形成二维度的点阵列,该点阵列能够以二维形式体现三维点云中三维点之间的位置关系,于是根据二维度的点阵列可以将三维点云划分出三角面片,再基于三角面片生成三维点云的法向量。不再需要经过领域点搜索和拟合平面这两个严重耗时的过程,就可以生成三维点云的法向量,提高了三维点云法向量的计算效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储器记忆体(read-onlymemory)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1