基于规范性编码的复杂点云分割方法及系统
技术领域
本发明属于计算机视觉与图像处理,尤其是点云分割技术。
背景技术
随着三维视觉的发展,物体三维信息的获得与处理受到越来越多的重视。使用三维传感设备获得物体点云数据后,对采集的点云数据进行有效分割是对物体三维处理的基础与前提。点云分割的目的是对杂乱无章的点云数据进行有效地划分,使每个点云的子集合具有相同或相近的属性,从而对感兴趣的子集合进行单独处理。点云分割在3D打印、虚拟现实、场景理解、智慧城市等领域有着广泛的应用。
传统的点云分割方法主要有基于边缘的分割算法,该算法通过检测边缘点的强度变化得到点云的边界,从而获取分割区域。该方法分割速度较快,但精度不高,并且对噪声敏感。针对边缘对噪声敏感的问题,现有技术一提供了基于区域增长的分割算法,该算法主要基于邻域的信息对相似点云进行归类,比较种子点与邻域点的法线夹角和邻域的曲率,小于阈值则满足生长要求,但算法过于依赖点云曲率和法线的变化,鲁棒性较差。现有技术二提出了基于正态估计的区域增长分割算法,采用多变量统计离群值在复杂3D模型中进行可靠的正态估计,对点云中的平面和非平面进行自动分割,该方法对有异常值和噪声的情况下效果比较好,但该类算法性能依赖种子的选取和区域增长策略,易产生过分割或分割不足的问题。现有技术三提出基于欧氏聚类算法下的点云数据分割,通过计算点云数据间的欧氏距离并确定阈值,对点云进行迭代至类间距大于阈值,该聚类算法比较稳定,但过于依赖点云的距离属性,并且在处理大规模点云数据时,时间复杂度高。
以上介绍的点云分割算法无先验信息,只能根据颜色、距离、法线或曲率等性质来判断同一分割类别,对于目标位于不连通区域,可能无法将同一类目标分割正确,技术人员提出了基于模型的分割算法,通过对点云进行局部采样和统计推理,并利用RANSAC来确定数据中的平面、圆柱体和曲面,该方法以数学原理为基础,速度快,但数学模型较为单一,先验信息不具有灵活性,无法处理大规模下的场景数据。现有技术四提出基于深度学习的点云分割,该方法通过训练样本获得先验信息,从而进行点云分割,但由于数据集样本大,训练时间长,算法效率较低。
发明内容
发明目的:提供一种基于规范性编码的复杂点云分割方法,以解决现有技术存在的上述问题。
技术方案:基于规范性编码的复杂点云分割方法,包括如下步骤:
步骤1、接收输入目标点云并进行标准化处理,获得预定格式的结构数据;
步骤2、根据目标点云模板,构建滑窗并在待分割点云中初步检测是否存在目标物体;
步骤3、判断滑窗内的点云数据是否与目标模板相符,判断是否为目标点云;
步骤4、对已检测到的目标点云,通过减小滑窗的移动距离进行优化匹配,获得最终的目标位置,并对目标点云进行标记。
步骤5、对已获得最终位置的目标点云,根据目标点云各组成模块大小调整滑窗,通过滑窗在目标点云中检测目标点云各组成模块,并对各组成模块进行标注。
在进一步的实施例中,所述步骤1进一步为:
步骤11、输入目标点云进行归一化处理;
步骤12、构建包含多个坐标系的标准坐标系集;
步骤13、基于所述标准坐标系集,对所述点云进行重编码,计算并记录获得的交点数据,得到定长有序的三维结构数据;
步骤14、将所述三维数据转化为定长有序的一维结构数据。
在进一步的实施例中,所述步骤2进一步为:
构建以预定缩放倍数为半径的球体;
将所述球体作为空间滑窗,在待分割点云中按照预定方式滑动;
计算当前点云落在球体内的数量;
若当前滑窗内的点云数量小于预先设定的点云阈值,则继续滑动窗口,若大于阈值,并且滑窗内点云编码后数据与模板点云整体编码后数据误差低于阈值,表示可能检测到目标物体。
在进一步的实施例中,所述步骤3进一步包括初步匹配和精确匹配。
在进一步的实施例中,所述步骤5进一步为:
当获得目标点云位置时,根据点云模板各组成模块的编码,调整滑窗大小,在目标点云中进行滑动;
计算经过编码后的落于滑窗内点云数据与模板点云各模块编码数据的误差,若误差低于阈值,表示可能检测到目标点云的组成模块;
获得目标点云各组成模块位置并进行标注。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
有益效果:该方法在有先验信息的基础上,将具有任意数量点的点云数据进行编码及匹配,可以高效地分割出点云,分割准确度高,且方法简单易实施。
附图说明
图1为本发明流程示意图。
图2为宠物整体点云图。
图3为带有宠物各部位标志的点云图。
图4为含有该宠物点云的场景点云数据示意图。
图5为目标整体模板编码后数据示意图。
图6为搜索结果示意图。
图7为获得的目标场景中所有目标物体及其标识结果示意图。
具体实施方式
如图1所示,输入为目标点云及待分割点云,输出为待分割点云中与目标点云模板匹配的物体三维坐标位置。该方法在获得目标点云模板的前提下,可以从表征复杂场景的点云数据中找到与目标模板匹配的物体的三维坐标位置,并在获得目标点云模板各组成模块的前提下,通过多级模板规范编码,对已检测物体各部位进行模块的标识。
本专利提出的基于规范性编码的复杂点云分割方法流程为:
步骤一制作目标点云3级模板
若给定的目标格式为点云,则直接输入,若给定的目标格式为CAD模型,将CAD模型转换为点云。利用规范编码方法将目标点云编码为长度为N,3N,6N的定长编码。长度为N的定长编码表示在编码过程中使用N组坐标系,不同长度定长编码中的每组坐标系含有的坐标系个数w相同;然后按照规范化坐标系集中对应的采样坐标系x轴方向,将长度为6N的定长编码中的数据分为6N组,记作D={d1,d2……d6N},其中第n组数据dn={d11,d12……d1w}对应的坐标系x轴方向相同;接着采用主成分分析法(PCA)对点云d1,d2……d6N分别进行位姿校正,校正后的点云数据为r1,r2……r6N;最后将各个模块编码为长度为3N的定长编码。规范性编码具体过程为:
(1)对输入点云进行归一化处理,得到归一化后的点云P与新坐标系{G},归一化前的点云数据是归一化后的s倍(缩放系数)。
(2)在以坐标系{G}的原点为球心,半径为1的球体内建立规范化坐标系集{Sn},为使坐标系集{Sn}中的坐标系更均匀的分布于空间,将{Sn}中的坐标系分为N组,每组共w个坐标系,并利用斐波那契球构建坐标系集{Sm}。坐标系的构建主要根据输入点云坐标来确定。
(5)计算坐标系x轴在正方向与P所表征物体表面相交点附近的拟合平面的近似方程。通过在坐标系中建立圆柱,记录点云P落在其中的点集V{A1,A2…},分别计算V中各个点到坐标系原点的距离,选择距离原点最小的点Ae(xe,ye,ze)和其临近的三个点A1(x1,y1,z1)、A2(x2,y2,z2)、A3(x3,y3,z3),该组点拟合P的物体表面,并且坐标系的x轴可穿过该表面F。
(6)计算坐标系的x轴正方向与P所表征物体表面的交点Q。
由于平面F是由空间中4个点拟合的,采用双线性内插法,计算四个点坐标与坐标系位姿的交点Q(Xik,Yik,Zik),公式如下:
其中,M为坐标系{G}绕任意轴的旋转矩阵。ik表示第i组的第k个坐标系,i≤m,k≤w。
(5)重复(3)和(4),对原始点云进行顺序固定的重编码,并将获得的交点依次记录,获得定长有序的三维结构数据。
(6)根据获得的三维结构数据,按照顺序计算数据中的点与其重编码时对应的坐标系原点间的距离,将定长有序的三维结构数据转化为定长有序的一维结构数据。
步骤二建立空间球体滑窗
根据目标点云模板,构建以缩放倍数
为半径的球体,将该球体作为空间滑窗,在待分割点云中进行从左到右,从前往后,从上到下滑动。计算当前点云落在该球体内的数量,若当前滑窗内的点云数量小于预先设定的点云阈值,则继续滑动窗口,若大于阈值,表示可能检测到目标物体,进入步骤三。
步骤三初步判断滑窗内的点云数据是否和目标模板相符
按照步骤一中的编码方式对滑窗内的点云进行规范化编码,得到编码长度为8q的定长编码,将该定长编码中的数据根据对应x轴方向分为8q组C{c1,c2…c8q},并使用PCA对8q组数据分别进行位姿校正,获得校正位姿后的数据B{b1,b2…b8q},其中,b1中相同组数据b11,b12…b1w各点对应坐标系的方向相同。将校正位姿后的各组数据分别与R={r1,r2,...rk,...,r6N}中各组数据计算平均差异,bl与rk计算差异ε1的公式如下:
其中,e为w组坐标系中目标点云校正位姿数据与待分割点云校正后位姿数据的求和平均值,1≤l≤q,1≤i≤w,1≤k≤6N。
若出现一组ε1值小于阈值T1,则判定球体内检测的点云数据有可能为目标物体,并且根据bl与rk坐标系x轴的方向调整待检测物体的位姿,进入步骤四进行准确判断;若各组bl与rk计算的ε1值都大于阈值T1,则判定球体内点云数据与目标物体点云数据不匹配,重复步骤二,继续使用球体滑窗在待分割点云中滑动。
步骤四准确判断滑窗内的点云数据是否和目标模板相符
对滑窗内调整位姿后的点云数据进行规范化编码,得到编码长度为N的定长编码,编码数据为{b11,b12…b1w…b21…bNw},将该组数据与模板编码长度为N的定长编码{r11,r12…r1w…r21…rNW}比较获得误差ε2,计算公式如下:
如果误差ε2值大于阈值T2,则认为当前球体内未检测到目标点云,返回步骤三,重新计算下一个目标点云校正位姿数据与待分割点云校正后位姿数据的误差ε1,如果误差ε2值小于阈值T2,则认为当前球体内已准确检测到目标点云,进入步骤五。
步骤五点云匹配位姿优化
减小球体滑窗的滑动距离,采用球体滑窗在步骤四中已检测到的目标点云位置附近滑动,每次滑窗都对新采集的点云进行规范化编码,得到编码长度为3N的定长编码,第h次得到的编码数据为{bh11,bh12…bh1w…bh21…bh3NW},比较获得的所有滑窗内的数据,并根据公式(6)计算每组数据误差ε2。当ε2最小时,说明待分割点云和目标点云模板最匹配,即将此时球体滑窗位置作为最终检测到目标的位置。
步骤六判断目标点云各模块的名称
首先根据目标点云各模块大小与整体目标点云模块的位姿关系,分别调整球体滑窗大小,确定球体滑窗在目标点云模块中的滑动范围。然后使用球体滑窗在滑动范围内进行各方向滑动,获得落在球体滑窗内点云数据并将其编码为长度为3N的定长编码,将该定长编码与对应的模块编码根据公式(6)计算每组数据误差ε2,当ε2最小时,说明此时位于球体滑窗内的点云和目标点云模块模板最匹配。最后对滑窗内的点云进行模块标记。
步骤七
重复步骤二至步骤五,获得目标场景中所有目标物体及其标识结果。
实施例
按照本发明方法完整实施的实施例及其实施过程包含以下步骤:
原始数据集由两部分组成,第一部分是目标点云及其带有标志的组成模块,第二部分是包含有目标点云的场景点云数据。根据目标点云模板,从场景点云数据中找到目标点云,并标志目标点云各组成模块。
Step1:从数据集中取出目标点云,该点云为宠物的整体目标点云,并带有各组成模块的标志,图2是该宠物整体点云图,图3是带有宠物各部位标志的点云图。再从数据集中取出包含有该宠物点云的场景点云数据,如图4所示。并将宠物整体点云数据分别编码为长度为72,216,648的定长结构数据j1,j2,j3,这些定长结构数据w取80。再分别将宠物带标志的组成模块编码为长度216的定长结构数据,其中目标整体模板编码后数据如图5所示。
Step2:根据目标模板点云,构建半径为60的球体,将球体作为空间滑窗,在场景点云数据中从做到右,从前往后,从上到下滑动。时刻计算当前点云落在球体内的数量,如果当前滑窗内点云数据低于500,则继续滑动窗口,如果大于五百,则有可能是目标点云,需要进行判断。
Step3:对滑窗内的点云数据进行规范化编码,得到编码长度16的定长数据,将该定长数据根据对应x轴方向分为16组,并使用PCA分别对这16组数据进行位姿校正,获得校正后的数据B{b1,b2…b16},根据公式(4),(5),将校正位姿后的各组数据分别与j3{r1,r2…r648}各组数据进行比较,如果误差ε小于3,则判定球体内检测的点云数据可能为目标物体,根据与调整球体内点云数据的位姿,并进行进一步判断。如果所有组数据的值都大于阈值3,则判定球体内点云与目标点云数据不匹配,重复Step2,继续使用球体在待分割点云中滑动。
Step4:对滑窗内调整位姿后的点云数据进行规范化编码,得到编码长度为72的定长编码,使用公式(6)将该数据与j1比较获得误差,如果误差大于阈值2.5,则认为当前球体内未检测到目标点云,返回Step3继续判断,如果误差小于阈值2.5,则认为当前点云已经检测到目标点云,应当对点云数据进行精确位姿判断。
Step5:减小球体滑窗的滑动距离,采用球体滑窗在步骤四中已检测到的目标点云位置附近滑动,每次滑窗都对新采集的点云进行规范化编码,得到编码长度为216的定长编码,根据公式6计算当前定长编码与j2误差比较,当误差最小时,说明此时球体内点云与目标点云模板最匹配,将此时球体滑窗位置作为最终检测到目标的位置。搜索结果如图6所示。
Step6:获得目标点云后,根据目标点云模板中各模块大小及相对点云整体位姿关系,调整空间球体滑窗大小并限定滑动范围,在目标点云中滑动,根据公式(6)获得与目标点云各模块模板最匹配的点云,并将其标记,标记结果如图7所示。
Step7重复Step2至Step5,即可获得目标场景中所有目标物体及其标识结果。
总之,基于上述对不同分割方法的分析,同时考虑到算法的自适应能力,对噪声的敏感程度和算法效率等因素,本发明提出了一种基于规范性编码的目标点云分割方法,首先给定待分割目标的模板并对其进行编码,然后通过对输入点云进行空间球体滑窗,分别计算匹配距离,根据最高级别编码的最小匹配距离,在给定点云中分割出模板相应的内容,从而完成点云分割。
以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种等同变换,这些等同变换均属于本发明的保护范围。