三维点云法向量的生成方法、装置、电子设备及存储介质与流程

文档序号:24160975发布日期:2021-03-05 16:49阅读:83来源:国知局
三维点云法向量的生成方法、装置、电子设备及存储介质与流程

[0001]
本发明涉及计算机视觉技术领域,尤其涉及一种三维点云法向量的生成方法、装置、电子设备及存储介质。


背景技术:

[0002]
对任意场景的三维重建,一般需要先计算点云中每个三维点的法向量,然后用表面重建生成多边形网格,在多边形网格构建完毕后,通过后续的纹理贴图实现三维重建。而每个三维点的法向量的正确计算是生成多边形网格的重要基础。在相关技术中,使用八叉树分割点云,将分割后的点云根据未调整的法向量进行聚类,然后通过局部二次曲面拟合并在拟合过程中剔除不符合观测误差的噪点,再对法向量方向进行投票,投票后迭代拟合和投票步骤直到没有噪点,得到符合观测误差的三维点及其法向量。但是,聚类算法本身速度较慢,且需要迭代多次拟合并剔除噪点以及投票的步骤,导致获得法向量的效率较低。
[0003]
针对相关技术中,计算点云中各三维点的法向量存在效率低的问题,目前尚未提出有效的解决方案。


技术实现要素:

[0004]
本申请实施例提供了一种三维点云法向量的生成方法、装置、电子设备和计算机存储介质,以至少解决相关技术中计算点云中各三维点的法向量存在效率低的问题。
[0005]
第一方面,本申请实施例提供了一种三维点云法向量的生成方法,所述方法包括:
[0006]
将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云,其中,所述采集对象包括采集者和传感器;
[0007]
计算所述过滤后的点云中各个三维点的法向量;
[0008]
针对所述过滤后的点云中的每一个三维点:根据近邻算法对所述轨迹进行搜索得到轨迹节点,根据所述轨迹节点和所述三维点的法向量进行计算,得到所述三维点对应的第一弧度值,根据所述第一弧度值和预设的弧度区间对所述三维点的法向量进行调整,得到所述三维点的目标法向量。
[0009]
在其中一些实施例中,所述采集到的点云包括多个采集点,所述将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云包括:
[0010]
将所述采集到的点云通过体素滤波得到中间点云;
[0011]
对所述中间点云滤除在包围体轨迹空间内的采集点,得到所述过滤后的点云,其中,所述包围体轨迹空间是根据最小包围体沿所述轨迹运动得到的,所述最小包围体为最小包围所述采集对象的立方体或球体。
[0012]
在其中一些实施例中,所述将所述采集到的点云通过体素滤波得到中间点云包括:
[0013]
统计各体素内所述采集点的采集点个数,其中,各所述体素的边长是根据所述采集到的点云的稠密度得到的;
[0014]
根据所述采集点个数和预设的个数阈值,得到第一体素和第二体素,其中,所述第一体素内的采集点个数小于所述个数阈值,所述第二体素内的采集点个数大于或等于所述个数阈值;
[0015]
对所述采集到的点云滤除在所述第一体素内的采集点,并用所述第二体素内所有采集点的位置平均值代替所述第二体素内所有采集点的空间位置,得到所述中间点云。
[0016]
在其中一些实施例中,所述过滤后的点云包括多个三维点,所述计算所述过滤后的点云中各个三维点的法向量包括:
[0017]
对各个所述三维点,根据近邻算法和预设的第一邻域半径进行搜索得到第一近邻点,根据所述第一近邻点基于pca算法进行计算,得到各所述三维点的法向量。
[0018]
在其中一些实施例中,所述根据近邻算法和所述轨迹进行搜索得到轨迹节点,根据所述轨迹节点和所述三维点的法向量进行计算,得到所述三维点对应的第一弧度值包括:
[0019]
根据近邻算法在所述轨迹上进行搜索,得到距离所述三维点最近的前m个轨迹节点,其中,所述轨迹节点包括所述采集对象的位姿,m为预设的节点个数;
[0020]
将m个所述轨迹节点的位置分别和所述三维点的位置进行减法计算,得到m个第一向量,将m个所述第一向量分别和所述三维点的法向量进行反余弦计算后求绝对值,得到m个所述第一弧度值。
[0021]
在其中一些实施例中,所述根据所述第一弧度值和预设的弧度区间对所述三维点的法向量进行调整,得到所述三维点的目标法向量包括:
[0022]
在m个所述第一弧度值均在预设的第一弧度区间内的情况下,将所述三维点的法向量反向,得到所述三维点的目标法向量;
[0023]
在m个所述第一弧度值均在预设的第二弧度区间内的情况下,将所述三维点的法向量确定为所述三维点的目标法向量;
[0024]
在m个所述第一弧度值中的若干个第一弧度值在所述第一弧度区间内且其他第一弧度值在所述第二弧度区间内的情况下,或者在m个所述第一弧度值均在预设的第三弧度区间内的情况下,基于所述三维点的法向量和所述三维点的多个第二近邻点进行投票,并根据投票结果对所述三维点的法向量进行调整,得到所述三维点的目标法向量,其中,各所述第二近邻点是根据近邻算法和预设的第二邻域半径进行搜索得到的。
[0025]
在其中一些实施例中,所述基于所述三维点的法向量和所述三维点的多个第二近邻点进行投票,并根据投票结果对所述三维点的法向量进行调整,得到所述三维点的目标法向量包括:
[0026]
将各所述第二近邻点的位置分别和所述三维点的位置进行减法计算,得到多个第二向量,将各所述第二向量分别和所述三维点的法向量进行反余弦计算,得到多个第二弧度值;
[0027]
统计多个所述第二弧度值中小于预设的弧度阈值的个数,得到第一投票数,统计多个所述第二弧度值中大于或等于所述弧度阈值的个数,得到第二投票数;
[0028]
在所述投票结果为所述第一投票数大于所述第二投票数的情况下,将所述三维点的法向量反向,得到所述三维点的目标法向量;
[0029]
在所述投票结果为所述第一投票数小于或等于所述第二投票数的情况下,将所述
三维点的法向量确定为所述三维点的目标法向量。
[0030]
第二方面,本申请实施例提供了一种三维点云法向量的生成装置,所述装置包括:滤波模块、法向量计算模块和法向量调整模块;
[0031]
所述滤波模块,用于将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云,其中,所述采集对象包括采集者和传感器;
[0032]
所述法向量计算模块,用于计算所述过滤后的点云中各个三维点的法向量;
[0033]
所述法向量调整模块,用于针对所述过滤后的点云中的每一个三维点:根据近邻算法对所述轨迹进行搜索得到轨迹节点,根据所述轨迹节点和所述三维点的法向量进行计算,得到所述三维点对应的第一弧度值,根据所述第一弧度值和预设的弧度区间对所述三维点的法向量进行调整,得到所述三维点的目标法向量。
[0034]
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的三维点云法向量的生成方法。
[0035]
第四方面,本申请实施例提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的三维点云法向量的生成方法。
[0036]
相比相关技术,本申请实施例提供的三维点云法向量的生成方法,通过将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云,其中,采集对象包括采集者和传感器,计算过滤后的点云中各个三维点的法向量,针对过滤后的点云中的每一个三维点:根据近邻算法对轨迹进行搜索得到轨迹节点,根据轨迹节点和三维点的法向量进行计算,得到三维点对应的第一弧度值,根据第一弧度值和预设的弧度区间对三维点的法向量进行调整,得到三维点的目标法向量,解决了相关技术中计算点云中各三维点的法向量存在效率低的问题,提高了点云中各三维点法向量生成的效率。
附图说明
[0037]
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0038]
图1是根据本申请实施例的三维点云法向量的生成方法的流程图;
[0039]
图2是根据本申请实施例的体素的示意图;
[0040]
图3是根据本申请实施例的采集对象移动过程中的位姿示意图;
[0041]
图4是根据本申请实施例的采集对象在轨迹上对各三维点观测情况的示意图;
[0042]
图5是根据本申请实施例的计算各三维点的法向量的方法流程图;
[0043]
图6是根据本申请实施例的第一弧度值的计算方法流程图;
[0044]
图7是根据本申请实施例的根据投票结果调整各三维点的法向量的示意图;
[0045]
图8是根据本申请实施例的三维点云法向量的生成装置的结构示意图;
[0046]
图9是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
[0047]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用
于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0048]
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
[0049]
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
[0050]
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
[0051]
本实施例提供了一种三维点云法向量的生成方法。图1是根据本申请实施例的三维点云法向量的生成方法的流程图,如图1所示,该流程包括如下步骤:
[0052]
s110、将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云。点云(point cloud)是指在逆向工程中通过测量仪器得到的产品外观表面的点数据集合。通常使用三维坐标测量机所得到的点数量比较少,点与点的间距也比较大,叫稀疏点云。而使用三维激光扫描仪或照相式扫描仪得到的点云,点数量比较大并且比较密集,叫密集点云。本实施例中,传感器是不限于16线、32线、64线的激光雷达传感器中的一种,使得本实施例提供的生成方法可以应对各种激光雷达采集到的不同稠密度的点云。采集对象包括采集者和传感器,采集者是指携带传感器运动的载体或/和用户。利用传感器对任意场景进行采集,得到采集到的点云,如室内多房间点云、室外多树木点云等。该采集到的点云包括多个三维的采集点。
[0053]
体素滤波是指使用aabb包围盒将点云数据体素化,一般来说体素中点云越密集的地方信息越多,噪音点及离群点可通过体素去除。另一方面如果采集到的点云稠密度很高,过多的点云数据会降低数据后续处理的效率。通过体素滤波实现向下采样,可以减少点云
数量同时不会破坏点云本身的形状特征。优选地,统计各体素内采集点的采集点个数。图2是根据本申请实施例的体素的示意图。如图2所示,各体素是立方体,各体素的边长是根据采集到的点云的稠密度得到的。根据各体素内的采集点个数和预设的个数阈值,得到采集点个数小于该个数阈值的第一体素,以及采集点个数大于或等于该个数阈值的第二体素。预设的个数阈值是根据采集到的点云的稠密度得到的。对该采集到的点云滤除掉在第一体素内的所有采集点,并用第二体素内所有采集点的位置平均值代替该第二体素内所有采集点的空间位置,即该第二体素内所有点都用一个重心点最终表示,获得中间点云。位置是指给定三维坐标系(笛卡尔坐标系),场景中的物体在该坐标系中的位置,一般用(x,y,z)表示。
[0054]
在实际应用中,采集对象与任意场景下采集到的点云不会发生相遇的情况,因此将该中间点云基于采集对象的轨迹进行滤波,以过滤掉该中间点云内采集对象经过该轨迹遇到的所有采集点。轨迹是该采集对象在对任意场景进行采集时运动产生的。优选地,对中间点云滤除包围体轨迹空间内的所有采集点,得到过滤后的点云。该包围体轨迹空间是指最小包围体沿轨迹运动得到的空间,最小包围体是最小包围采集对象的立方体或球体。在无法获得采集对象的形状信息的情况下,可以使用简单的球体作为最小包围体。
[0055]
s120、计算过滤后的点云中各个三维点的法向量。法向量(normal)是空间解析几何的一个概念,垂直于平面的直线所表示的向量为该平面的法向量。点云中每个三维点的法向量夹角及曲率值均不随场景中物体的运动而改变,具有刚体运动不变性。过滤后的点云包括多个三维点,可以使用不限于基于特征向量的邻域计算方法(即pca算法)、基于三角分割法或基于鲁棒统计的方法计算获得各三维点的法向量,在此不做限定。
[0056]
s130、针对过滤后的点云中的每一个三维点:根据近邻算法对轨迹进行搜索得到轨迹节点,根据轨迹节点和三维点的法向量进行计算,得到三维点对应的第一弧度值,根据第一弧度值和预设的弧度区间对三维点的法向量进行调整,得到三维点的目标法向量。
[0057]
近邻算法是指根据数据之间的距离寻找距离目标数据最近的多个数据项。将过滤后的点云包括的三维点个数记为n,对第i个三维点根据近邻算法在采集对象运动的轨迹上进行搜索,得到距离第i个三维点最近的多个轨迹节点,i=1,2,...,n。各轨迹节点包括采集对象的位姿。位姿(pose)是指位置和姿态(朝向),例如:在二维中一般是(x,y,yaw),三维中一般是(x,y,z,yaw,pitch,roll),后三个元素描述物体的姿态。图3是根据本申请实施例的采集对象移动过程中的位姿示意图。如图3所示,其中yaw是航向角,绕z轴旋转,pitch是俯仰角,绕y轴旋转,roll是翻滚角,绕x轴旋转。
[0058]
根据各个轨迹节点和第i个三维点的法向量进行计算,可以得到各轨迹节点到第i个三维点的向量与第i个三维点的法向量之间的夹角,本实施例中,以弧度表示该夹角的角度,就可以得到第i个三维点对应的多个第一弧度值。第一弧度值的数量与轨迹节点的数量相同。然后通过判断表示夹角的多个第一弧度值是否分布在预设的弧度区间,实质上是判断采集对象在多个轨迹节点上是否可以观测到第i个三维点,进而在多个轨迹节点上不能观测到、可以单侧观测到或可以双侧观测到第i个三维点的情况下,对第i个三维点的法向量进行调整以获得第i个三维点的目标法向量。图4是根据本申请实施例的采集对象在轨迹上对各三维点观测情况的示意图。如图4所示,一侧观测的各三维点可以被采集对象在多个轨迹节点上单侧观测到,无观测的各三维点不能被多个轨迹节点观测到,两侧观测的各三
维点可以被采集对象在多个轨迹节点上双侧观测到。根据采集对象在多个轨迹节点上对各三维点的观测情况,对各三维点分别进行调整,最终可以得到n个三维点的目标法向量。
[0059]
通过上述步骤,通过体素滤波并基于采集对象的轨迹先验进行滤波,可以滤除采集到的点云中的噪点,减少法向量计算的数据量,同时保存采集到的点云的形状特征,然后计算过滤后的点云中各三维点的法向量,进而基于采集对象的轨迹先验和各三维点的法向量,得到各三维点对应的多个第一弧度值,即采集对象在轨迹上运动过程中对各三维点的观测情况,并根据观测情况对各个三维点的法向量进行调整得到各三维点的目标向量。本申请提供的方法相对于相关技术,无需将点云聚类,也不用通过反复的拟合迭代过程来剔除噪点进而计算法向量,而是基于采集对象的轨迹先验可以更快地剔除噪点,并在一次拟合计算得到各三维点的法向量后,基于采集对象的轨迹先验来调整法向量,可以提高点云中各三维点法向量生成的效率,解决相关技术中计算点云中各三维点的法向量存在效率低的问题。
[0060]
在一些实施例中,图5是根据本申请实施例的计算各三维点的法向量的方法流程图,如图5所示,该流程包括如下步骤:
[0061]
s510、对各个三维点,根据近邻算法和预设的第一邻域半径进行搜索得到第一近邻点。第一邻域半径的值可以根据点分辨率、物体细节精细程度和用途等因素来确定。优选地,第一邻域半径是体素边长的a倍,本实施例中,a为3。基于各三维点的位置分别在第一邻域半径范围内进行搜索,可以使用kd-tree(即k-dimensional树)做加速,分别得到各三维点的第一近邻点。kd-tree是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构,可以加快搜索速度。本实施例中,将过滤后的点云包括的三维点个数记为n,对第i个三维点搜索得到ni个第一近邻点,i=1,2,...,n。
[0062]
s520、根据第一近邻点基于pca算法进行计算,得到各三维点的法向量。通过利用第i个三维点的ni个第一近邻点可以估计出一个平面,进而计算出第i个三维点的法向量。根据pca(principal component analysis,主成分分析)算法,将各第一近邻点与第i个三维点相减得到一个矩阵,然后svd(奇异值分解)对该矩阵进行分解,并将特征值最小的特征向量作为第i个三维点的法向量。pca算法本身的效率快,有利于整体提高法向量生成的效率,且适用于大规模的点云场景中。
[0063]
在一些实施例中,图6是根据本申请实施例的第一弧度值的计算方法流程图,如图6所示,将过滤后的点云包括的三维点个数记为n,计算第i(i=1,2,...,n)个三维点的第一弧度值的流程包括如下步骤:
[0064]
s610、根据近邻算法在轨迹上进行搜索,得到距离第i个三维点最近的前m个轨迹节点。对采集对象的轨迹构建kd-tree,基于近邻算法在轨迹上快速搜索距离第i个三维点最近的前m个轨迹节点,各轨迹节点包括采集对象的位姿,m为预设的节点个数。优选地,m为奇数。本实施例中,m为15。
[0065]
s620、将m个轨迹节点的位置分别和第i个三维点的位置进行减法计算,得到m个第一向量。将m个轨迹节点的位置分别记为pos_traj_1、pos_traj_2、

、pos_traj_m,将每个轨迹节点的位置和第i个三维点的位置通过公式1进行计算,得到m个第一向量:
[0066]
vec_traj_j=pos_traj_j-pt_3d
ꢀꢀ
公式1
[0067]
其中,pos_traj_j表示第j个轨迹节点的位置(x_j,y_j,z_j),j=1,...,m,pt_3d
表示第i个三维点的位置,vec_traj_j表示第j个第一向量。
[0068]
s630、将m个第一向量分别和第i个三维点的法向量进行反余弦计算后求绝对值,得到m个第一弧度值。将每个第一向量和第i个三维点的法向量通过公式2进行计算,得到m个第一弧度值:
[0069]
deg_dot_j=|arccos(dot(normal_pt_3d,vec_traj_j))|
ꢀꢀ
公式2
[0070]
其中,vec_traj_j表示第j个第一向量,j=1,...,m,normal_pt_3d表示第i个三维点法向量(nx,ny,nz),法向量和第一向量都是经过归一化处理后的向量,dot(
·
)表示点乘函数,arccos(
·
)表示反余弦函数,deg_dot_j表示第j个第一弧度值,其取值范围为[0,π]。
[0071]
通过步骤s610至步骤s630得到的m个第一弧度值,可以准确地反映出采集对象在距离第i个三维点最近的前m个轨迹节点对第i个三维点观测的情况,进而根据采集对象对第i个三维点观测的实际情况对第i个三维点的法向量作出相应的调整。
[0072]
在一些实施例中,基于采集对象的轨迹先验对不同观测情况下的三维点进行调整,以获得各三维点的目标法向量,而无需通过反复的拟合迭代来获得目标法向量,效率更高。根据m个第一弧度值调整第i个三维点的法向量,包括如下步骤:
[0073]
在m个第一弧度值均在预设的第一弧度区间内的情况下,将第i个三维点的法向量反向,得到第i个三维点的目标法向量。第一弧度区间为[0,theta],theta为预设弧度,本实施例中,theta为(5π/12),其对应的角度值为75
°
。在m个第一弧度值均分布在[0,5π/12]的情况下,说明第i个三维点只能被采集对象在m个轨迹节点上单侧观测到,但第i个三维点的法向量指向内侧,需要将第i个三维点的法向量进行反向,得到第i个三维点调整后的目标法向量。
[0074]
在m个第一弧度值均在预设的第二弧度区间内的情况下,将第i个三维点的法向量确定为第i个三维点的目标法向量。第二弧度区间为[theta*2,π]。在m个第一弧度值均分布在[5π/6,π]的情况下,说明第i个三维点只能被采集对象在m个轨迹节点上单侧观测到,且第i个三维点的法向量的方向正确,指向外侧,无需进行调整,直接将第i个三维点的法向量确定为第i个三维点的目标法向量。
[0075]
在m个第一弧度值中的若干个第一弧度值在第一弧度区间内且其他第一弧度值在第二弧度区间内的情况下,即m个第一弧度值中的一部分第一弧度值分布在[0,5π/12]且其他第一弧度值分布在[5π/6,π],说明第i个三维点不能被采集对象在m个轨迹节点上观测到,需要根据第i个三维点的法向量和第i个三维点的多个第二近邻点进行投票的结果,调整第i个三维点的法向量。
[0076]
在m个第一弧度值均在预设的第三弧度区间内的情况下,第三弧度区间为[theta,theta*2],即m个第一弧度值均分布在[5π/12,5π/6],说明第i个三维点可以被采集对象在m个轨迹节点上双侧观测到,同样需要根据第i个三维点的法向量和第i个三维点的多个第二近邻点进行投票的结果,调整第i个三维点的法向量。
[0077]
图7是根据本申请实施例的根据投票结果调整各三维点的法向量的示意图,如图7所示,真实的墙体是有厚度的,采集的点云也是有噪声的,但是大部分点应该在真实墙体附近(如果不在,说明点云有错误,而不是有噪声)。根据近邻算法和预设的第二邻域半径进行搜索得到各第二近邻点。优选地,第二邻域半径是第一邻域半径的b倍,本实施例中,b为1.1。基于第i个三维点的位置在第二邻域半径范围内进行搜索,可以使用kd-tree做加速,
得到第i个三维点的多个第二近邻点。
[0078]
优选地,将各第二近邻点的位置分别和第i个三维点的位置通过公式3进行减法计算,得到多个第二向量:
[0079]
vec_k=pt_neighbo rs_k-pt_3d
ꢀꢀ
公式3
[0080]
其中,pt_neighbors_k表示第k个第二近邻点的位置,k=1,...,ki,ki表示第i个三维点的第二近邻点个数,pt_3d表示第i个三维点的位置,vec_k表示第k个第二向量。将各第二向量分别和第i个三维点的法向量通过公式4进行计算,得到多个第二弧度值:
[0081]
deg_dot_k=arccos(dot(normal_pt_3d,vec_k))
ꢀꢀ
公式4
[0082]
其中,vec_k表示第k个第二向量,k=1,...,ki,normal_pt_3d表示第i个三维点法向量(nx,ny,nz),法向量和第二向量都是经过归一化处理后的向量,dot(
·
)表示点乘函数,arccos(
·
)表示反余弦函数,deg_dot_k表示第k个第二弧度值。
[0083]
统计多个第二弧度值中小于预设的弧度阈值的个数,得到第一投票数,统计多个第二弧度值中大于或等于弧度阈值的个数,得到第二投票数。本实施例中,弧度阈值为π/2。第一投票数即ki个第二弧度值中小于π/2的第二弧度值个数,第二投票数即ki个第二弧度值中大于或等π/2的第二弧度值个数。在投票结果为第一投票数大于第二投票数的情况下,说明第i个三维点的法向量指向内侧,将第i个三维点的法向量反向,得到第i个三维点的目标法向量。在投票结果为第一投票数小于或等于第二投票数的情况下,说明第i个三维点的法向量指向外侧,将第i个三维点的法向量确定为第i个三维点的目标法向量。通过根据第i个三维点的多个第二邻居点与第i个三维点的法向量在空间中的关系,对第i个三维点的法向量进行调整得到目标法向量,无需通过反复的拟合迭代来获得目标法向量,效率更高。
[0084]
本申请实施例提供了一种三维点云法向量的生成装置。图8是根据本申请实施例的三维点云法向量的生成装置的结构示意图,如图8所示,该装置包括滤波模块810、法向量计算模块820和法向量调整模块830:滤波模块810用于将采集到的点云通过体素滤波并基于采集对象的轨迹进行滤波,得到过滤后的点云,其中,采集对象包括采集者和传感器;法向量计算模块820用于计算过滤后的点云中各个三维点的法向量;法向量调整模块830用于针对过滤后的点云中的每一个三维点:根据近邻算法对轨迹进行搜索得到轨迹节点,根据轨迹节点和三维点的法向量进行计算,得到三维点对应的第一弧度值,根据第一弧度值和预设的弧度区间对三维点的法向量进行调整,得到三维点的目标法向量。
[0085]
关于三维点云法向量的生成装置的具体限定可以参见上文中对于三维点云法向量的生成方法的限定,在此不再赘述。上述三维点云法向量的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0086]
本申请实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0087]
可选地,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0088]
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
[0089]
另外,结合上述实施例中的三维点云法向量的生成方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种三维点云法向量的生成方法。
[0090]
在一个实施例中,图9是根据本申请实施例的电子设备的内部结构示意图,如图9所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图9所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的数据库用于存储数据。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种三维点云法向量的生成方法。
[0091]
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0092]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0093]
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0094]
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1