1.本技术涉及点云数据处理技术领域,尤其涉及一种点云拼接方法和装置、三维扫描仪、电子设备及计算机可读存储介质。
背景技术:2.结构光扫描仪由于其重建精度相较于激光扫描仪更高,广泛应用于国内外研究机构、高校及企业的科研、生产制造和在线检测中,涉及消费电子、航天航空、汽车、重型机械和医疗等行业领域。在结构光扫描仪扫描过程,由于扫描角度问题造成待扫描物体表面被遮挡、光照强度、噪声、背景等影响,需要对其进行多次扫描,将多个角度的点云数据进行配准,点云数据被统一到同一个坐标系中,拼接成一幅完整的点云模型。由于结构光扫描仪的扫描特性,扫描得到的点云数据往往重叠区域有限,对于这类点云数据重叠区域较小的情况如何准确、高效地配准成为亟需解决的技术问题。
技术实现要素:3.鉴于上述问题,提出了本技术以便提供一种解决上述问题的点云拼接方法和装置、三维扫描仪、电子设备及计算机可读存储介质,能够提高点云拼接的效率和准确率。所述技术方案如下:
4.第一方面,提供了一种点云拼接方法,应用于三维扫描仪,包括:
5.获取待拼接的至少两幅点云数据,根据所述点云数据中点云法线的信息对所述点云数据进行自适应下采样,得到下采样后的点云数据;
6.计算所述下采样后的点云数据的fpfh(fast point feature histograms,快速点特征直方图)特征;
7.根据所述下采样后的点云数据的fpfh特征,初步建立所述至少两幅点云数据间匹配的点对集合;
8.基于ransac(random sample consensus,随机抽样一致)算法,对所述点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于所述筛选出的点对计算得到初始变换矩阵;
9.基于icp(iterative closest point,迭代最近点)算法对所述初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据所述优化后的旋转平移矩阵对所述至少两幅点云进行拼接。
10.在一种可能的实现方式中,所述根据所述点云数据中点云法线的信息对所述点云数据进行自适应下采样,得到下采样后的点云数据,包括:
11.对于所述点云数据,创建至少一层体素网格;
12.在体素网格的每个体素中对法线角度小于预设角度阈值的点进行合并,得到下采样后的点云数据。
13.在一种可能的实现方式中,所述计算所述下采样后的点云数据的fpfh特征,包括:
14.对于下采样后的点云数据,假设源点p
t
,给定搜索半径r,寻找到p
t
点的一个或多个邻近点ps,在p
t
点建立局部坐标系uvw,计算p
t
点与邻近点的三元描述组(α,φ,θ),并对这3个参数α,φ,θ分别划分g个区间,g为正整数,统计p
t
点与邻近点的三元描述组(α,φ,θ)落入区间的分布情况,得到一个3
×
g维度的特征向量spfh(simplified point feature histogram,简化点特征直方图),记为spfh(p
t
),uvw坐标系如下:
[0015][0016]
p
t
点与邻近点ps的三元描述组(α,φ,θ)计算公式如下:
[0017][0018]
其中n
t
是p
t
点的法向量,ns是ps点的法向量,d是p
t
和ps之间的欧氏距离;
[0019]
对p
t
点的邻近点ps计算邻近点ps的3
×
g维度的特征向量spfh,记为spfh(ps);
[0020]
采用如下公式对spfh(p
t
)和spfh(ps)进行加权得到p
t
的fpfh特征:
[0021][0022]
其中ws表示p
t
和ps之间的欧氏距离。
[0023]
在一种可能的实现方式中,基于icp算法对所述初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,包括:
[0024]
基于所述初始变换矩阵,结合point-to-plane(点到平面)度量的icp算法对所述筛选出的点对计算损失函数,重复迭代优化,直至旋转平移矩阵的变化量小于预设变化阈值和/或损失函数的误差值小于预设误差阈值,终止迭代,得到优化后的旋转平移矩阵,损失函数e
symm
如下:
[0025][0026]
其中r为旋转矩阵,t为平移矩阵,pi和qi分别是两幅点云中的一点,是pi点的法向量,是qi点的法向量。
[0027]
在一种可能的实现方式中,所述基于ransac算法,对所述点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于所述筛选出的点对计算得到初始变换矩阵,包括:
[0028]
在所述点对集合中随机筛选m个点对,基于ransac算法计算得到第一初始矩阵;计算所述点对集合中除所述筛选出的点对外的其他点对在所述第一初始变换矩阵下的距离误差,将所述距离误差小于预设阈值的点标记为第一样本内点,将所述距离误差大于预设阈值的点标记为第一样本外点,并统计出所述第一样本内点的数量;
[0029]
在所述点对集合中随机筛选m个点对,基于ransac算法计算得到第二初始矩阵;计算所述点对集合中除所述筛选出的点对外的其他点对在所述第二初始变换矩阵下的距离误差,将所述距离误差小于预设阈值的点标记为第二样本内点,将所述距离误差大于预设阈值的点标记为第二样本外点,并统计出所述第二样本内点的数量;
[0030]
……
[0031]
在所述点对集合中随机筛选m个点对,基于ransac算法计算得到第n初始变换矩阵;计算所述点对集合中除所述筛选出的点对外的其他点对在所述第n初始变换矩阵下的距离误差,将所述距离误差小于预设阈值的点标记为第n样本内点,将所述距离误差大于预设阈值的点标记为第n样本外点,并统计出所述第n样本内点的数量;
[0032]
筛选出所述统计出的n个样本中,样本内点数量最多的第n初始变换矩阵,作为初始变换矩阵。
[0033]
在一种可能的实现方式中,所述m个点对为3个点对;所述n为大于或等于1的正整数。
[0034]
第二方面,提供了一种点云拼接装置,应用于三维扫描仪,包括:
[0035]
采样模块,用于获取待拼接的至少两幅点云数据,根据所述点云数据中点云法线的信息对所述点云数据进行自适应下采样,得到下采样后的点云数据;
[0036]
fpfh特征计算模块,用于计算所述下采样后的点云数据的fpfh特征;
[0037]
点对集合建立模块,用于根据所述下采样后的点云数据的fpfh特征,初步建立所述至少两幅点云数据间匹配的点对集合;
[0038]
初始变换矩阵计算模块,用于基于ransac算法,对所述点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于所述筛选出的点对计算得到初始变换矩阵;
[0039]
精确配准模块,用于基于icp算法对所述初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据所述优化后的旋转平移矩阵对所述至少两幅点云进行拼接。
[0040]
第三方面,提供了一种三维扫描仪,包括三维扫描仪本体,所述三维扫描仪执行三维扫描操作时,使用如上述任一项所述的点云拼接方法对扫描获取到的点云数据进行拼接。
[0041]
第四方面,提供了一种电子设备,该电子设备包括处理器和存储器,其中,所述存储器中存储有计算机程序,所述处理器被配置为运行所述计算机程序以执行上述任一项所述的点云拼接方法。
[0042]
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序被配置为运行时执行上述任一项所述的点云拼接方法。
[0043]
借由上述技术方案,本技术实施例提供的点云拼接方法和装置、三维扫描仪及电子设备及计算机可读存储介质,可以根据点云数据中点云法线的信息对点云数据进行自适应下采样,得到下采样后的点云数据,下采样后的点云数据不失代表性与描述性,且下采样后的点云数据相比于原始点云数据量减少很多,可以提高后续处理速度;随后计算下采样后的点云数据的fpfh特征,根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合,进而基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵,由于fpfh特征
通过法线方向之间所有的相互关系来估计点云表面变化情况,可以很好地描述点云的几何特征,从而能够给定一个正确的初始姿态,使得后面的迭代优化朝着正确的方向进行,减少迭代次数,提高点云拼接效率和准确率;最后基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接,从而在初始配准基础上再精确配准,进一步提高点云拼接的准确率。
附图说明
[0044]
为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
[0045]
图1示出了根据本技术实施例的点云拼接方法的流程图;
[0046]
图2示出了根据本技术实施例的单个体素下采样示意图;
[0047]
图3示出了根据本技术另一实施例的点云拼接方法的流程图;
[0048]
图4示出了根据本技术实施例的待拼接的点云数据p和q以及两者的相对位姿;
[0049]
图5示出了采用现有方案的点云数据p和q拼接后的效果图;
[0050]
图6示出了根据本技术实施例的点云数据p和q拼接后的效果图;以及
[0051]
图7示出了根据本技术实施例的点云拼接装置的结构图。
具体实施方式
[0052]
下面将参照附图更详细地描述本技术的示例性实施例。虽然附图中显示了本技术的示例性实施例,然而应当理解,可以以各种形式实现本技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本技术,并且能够将本技术的范围完整的传达给本领域的技术人员。
[0053]
需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。
[0054]
本技术实施例提供了一种点云拼接方法,可以应用在三维扫描仪。如图1所示,该点云拼接方法可以包括以下方框s101至s105:
[0055]
方框s101,获取待拼接的至少两幅点云数据,根据点云数据中点云法线的信息对点云数据进行自适应下采样,得到下采样后的点云数据;
[0056]
方框s102,计算下采样后的点云数据的fpfh特征;
[0057]
方框s103,根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合;
[0058]
方框s104,基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵;
[0059]
方框s105,基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接。
[0060]
本技术的实施例可以根据点云数据中点云法线的信息对点云数据进行自适应下
采样,得到下采样后的点云数据,下采样后的点云数据不失代表性与描述性,且下采样后的点云数据相比于原始点云数据量减少很多,可以提高后续处理速度;随后计算下采样后的点云数据的fpfh特征,根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合,进而基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵,由于fpfh特征通过法线方向之间所有的相互关系来估计点云表面变化情况,可以很好地描述点云的几何特征,从而能够给定一个正确的初始姿态,使得后面的迭代优化朝着正确的方向进行,减少迭代次数,提高点云拼接效率和准确率;最后基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接,从而在初始配准基础上再精确配准,进一步提高点云拼接的准确率。
[0061]
在本技术的实施例中,上文方框s101中根据点云数据中点云法线的信息对点云数据进行自适应下采样,得到下采样后的点云数据,具体可以包括以下a1至a2:
[0062]
a1,对于点云数据,创建至少一层体素网格。
[0063]
在a1中,可以创建一层体素网格,可以用于点云质量满足预设质量条件的高点云质量;也可以创建从细到粗的多层体素网格。
[0064]
a2,在体素网格的每个体素中对法线角度小于预设角度阈值的点进行合并,得到下采样后的点云数据。
[0065]
在a2中,利用点之间法向夹角大小反映物体表面几何特征变化,可以在体素网格的每个体素中对法线角度小于预设角度阈值的点进行合并,得到下采样后的点云数据。这里的预设角度阈值可以根据实际需求来设置,如预设角度阈值为25度或30度等,本实施例对此不作限制。
[0066]
图2示出了根据本技术实施例的单个体素下采样示意图,在图2中,单个体素包括四个顶点,它们的法向量分别是n1、n2、n3、n4,其中n1和n3的法线角度小于预设角度阈值,将其合并成n13;n2和n4的法线角度小于预设角度阈值,将其合并成n24,从而实现了单个体素的下采样。需要说明的是,此处举例仅是示意性的,并不对本实施例进行限制。
[0067]
本技术实施例可以将物体或场景表面上几何性状特征(如边缘或者曲率大的表面)变化剧烈部分保留更密集的点,而平面部分保留点较稀疏,这些下采样点是点云上具有稳定性、区别性的点集,下采样点的数量相比于原始点云数据量减少很多,与fpfh局部特征描述子结合在一起,组成下采样点描述子用来形成原始点云的紧凑表示,而且不失代表性与描述性,从而加速后续处理速度。
[0068]
在本技术的实施例中,首先介绍pfh(point feature histograms,点特征直方图),它是一种姿态不变的局部特征,通过计算源点或查询点与邻近点之间的空间差异,并形成一个多维直方图对源点的k邻域的点的几何属性进行描述,这里源点的k邻域的点是与源点的距离小于半径r的点。pfh表示法是基于点k邻域内所有点法线两两之间的关系,它是通过法线方向之间所有的相互关系来估计样本表面变化情况,以描述样本的几何特征。fpfh是由pfh改进而来的,减少了pfh的计算复杂度,提高了计算效率,并且保留了pfh的大部分识别性。上文方框s102计算下采样后的点云数据的fpfh特征,具体可以包括如下内容:
[0069]
对于下采样后的点云数据,假设源点p
t
,给定搜索半径r,寻找到p
t
点的一个或多个邻近点ps,在p
t
点建立局部坐标系uvw,计算p
t
点与邻近点的三元描述组(α,φ,θ),并对这3
个参数α,φ,θ分别划分g个区间,g为正整数,统计p
t
点与邻近点的三元描述组(α,φ,θ)落入区间的分布情况,得到一个3
×
g维度的特征向量spfh,记为spfh(p
t
),uvw坐标系如下:
[0070][0071]
p
t
点与邻近点ps的三元描述组(α,φ,θ)计算公式如下:
[0072][0073]
其中n
t
是p
t
点的法向量,ns是ps点的法向量,d是p
t
和ps之间的欧氏距离;
[0074]
对p
t
点的邻近点ps计算邻近点ps的3
×
g维度的特征向量spfh,记为spfh(ps);
[0075]
采用如下公式对spfh(p
t
)和spfh(ps)进行加权得到p
t
的fpfh特征:
[0076][0077]
其中ws表示p
t
和ps之间的欧氏距离。
[0078]
在本技术的实施例中,g可以根据实际需求来设置,如g为11,本技术实施例对此不作限制,这样统计p
t
点与邻近点的三元描述组(α,φ,θ)落入区间的分布情况,得到一个33维度的特征向量spfh,记为spfh(p
t
)。采用p
t
得到spfh(p
t
)的方法,对p
t
点的邻近点ps计算邻近点ps的33维度的特征向量spfh,记为spfh(ps)。
[0079]
在本技术的实施例中,上文方框s103根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合。举例来说,对于点云数据p、q分别进行下采样,得到下采样后的点云数据p、q,计算下采样后的点云数据p、q的fpfh特征。对于下采样后的点云数据p的点p
t
,在q中查找与p
t
的fpfh特征匹配的点q
t
,初步建立两幅点云数据间匹配的点对集合(p
t
,q
t
)。
[0080]
在本技术的实施例中,上文方框s104基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵,具体可以包括以下内容:
[0081]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第一初始矩阵;计算点对集合中除筛选出的点对外的其他点对在第一初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第一样本内点,将距离误差大于预设阈值的点标记为第一样本外点,并统计出第一样本内点的数量;
[0082]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第二初始矩阵;计算点对集合中除筛选出的点对外的其他点对在第二初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第二样本内点,将距离误差大于预设阈值的点标记为第二样本外点,并统计出第二样本内点的数量;
[0083]
……
[0084]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第n初始变换矩阵;计算点对集合中除筛选出的点对外的其他点对在第n初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第n样本内点,将距离误差大于预设阈值的点标记为第n样本外点,并统计出第n样本内点的数量;
[0085]
筛选出统计出的n个样本中,样本内点数量最多的第n初始变换矩阵,作为初始变换矩阵。
[0086]
在本技术的实施例中,预设阈值可以根据实际需求来设置,例如预设阈值为0.01包围盒的对角线长度,本技术实施例对此不作限制。另外,随机筛选m个点对可以体现出本技术实施例的点云拼接方案的系统具有更好的鲁棒性,这里的鲁棒性是在异常和危险情况下系统生存的能力。
[0087]
在本技术的实施例中,m个点对可以为3个点对,n为大于或等于1的正整数。这样可以提高筛选的效率,并且能够给定一个正确的初始姿态,使得后面的迭代优化朝着正确的方向进行,减少迭代次数,提高点云拼接效率和准确率。
[0088]
在本技术的实施例中,上文方框s105基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,具体可以包括如下内容:
[0089]
基于初始变换矩阵,结合point-to-plane度量的icp算法对筛选出的点对计算损失函数,重复迭代优化,直至旋转平移矩阵的变化量小于预设变化阈值和/或者损失函数的误差值小于预设误差阈值,终止迭代,得到优化后的旋转平移矩阵,损失函数e
symm
如下:
[0090][0091]
其中r为旋转矩阵,t为平移矩阵,pi和qi分别是两幅点云中的一点,是pi点的法向量,是qi点的法向量。
[0092]
在本技术的实施例中,基于ransac算法筛选得到的初始变换矩阵使得两幅点云数据大致重合,但是配准精度可能达不到实际工程应用的需求,因此在初始配准基础上再精确配准。icp算法要求待配准的点云数据有比较近的初始位置,对应点之间的误差有很多度量方式,这里结合point-to-plane度量的icp算法对筛选后的匹配点对计算损失函数,使得损失函数最小,直至旋转平移矩阵的变化量小于预设变化阈值或者损失函数的误差值小于预设误差阈值,终止迭代。
[0093]
图3示出了根据本技术另一实施例的点云拼接方法的流程图,如图3所示,该点云拼接方法可以包括以下方框s301至s306:
[0094]
方框s301,点云数据下采样。
[0095]
该方框中,可以参见前文a1至a2介绍的方法对待拼接的至少两幅点云数据进行自适应下采样,得到下采样后的点云数据。这里可以采用结构光扫描仪扫描得到点云数据。
[0096]
方框s302,计算下采样后的点云数据的fpfh特征,建立特征匹配点对集合。
[0097]
该方框中,可以参见前文介绍的下采样后的点云数据的fpfh特征计算方法,此处不再赘述。
[0098]
方框s303,基于ransac算法筛选匹配的点对集合,求解初始变换矩阵。
[0099]
该方框中,可以参见前文介绍的基于ransac算法,对点对集合中预设个数的点对
进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵的方法,此处不再赘述。
[0100]
方框s304,icp迭代,计算损失函数和旋转平移矩阵,并更新点云数据。
[0101]
该方框中,损失函数可以参见前文介绍,此处不再赘述。旋转平移矩阵可以是4
×
4的矩阵,其中旋转矩阵是3
×
3的矩阵,平移矩阵是3
×
1的矩阵,剩余位置通过0和1来补齐。
[0102]
方框s305,判断旋转平移矩阵的变化量是否小于预设变化阈值或者损失函数的误差值是否小于预设误差阈值,若是,即旋转平移矩阵的变化量小于预设变化阈值或者损失函数的误差值小于预设误差阈值,则执行方框s306;若否,即旋转平移矩阵的变化量大于预设变化阈值或者损失函数的误差值大于预设误差阈值,则返回继续执行方框s304。
[0103]
方框s306,终止迭代,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接。
[0104]
对于结构光扫描仪进行扫描,扫描得到的点云数据往往重叠区域有限,目前对于这类两幅点云数据重叠区域较小的情况,配准成功率无法得到保障,并且迭代次数多,耗时长,且容易陷入局部优化。本技术实施例先对点云数据进行下采样,针对特征丰富的区域采样更多的点,对于平面区域采样更少的点;计算采样数据点的fpfh特征,根据fpfh特征建立匹配点对集合;基于ransac对点对集合进行点对筛选,剔除错误匹配点对,并选择筛选后点对保留数量最多的那一组作为样本点,并以该组旋转平移矩阵作为icp算法的初始变换矩阵;基于point-to-plane icp算法对初始变换矩阵进行迭代优化,根据优化后的旋转平移矩阵对点云进行拼接,可以看到本技术实施例能够给定一个正确的初始姿态,使得迭代朝着正确的方向进行,减少迭代次数,提高拼接效率和成功率。
[0105]
图4示出了根据本技术实施例的待拼接的点云数据p和q以及两者的相对位姿,具体地,(a)为待拼接的点云数据p,(b)为待拼接的点云数据q以及(c)为p和q两者的相对位姿。
[0106]
图5示出了采用现有方案的点云数据p和q拼接后的效果图,具体地,图5中的左图是将点云数据q旋转平移到p的效果图,右图是左图的另一角度的效果图。
[0107]
图6示出了根据本技术实施例的点云数据p和q拼接后的效果图,具体地,图6中的左图是利用优化后的旋转平移矩阵将点云数据q旋转平移到p的效果图,右图是左图的另一角度的效果图。
[0108]
结合图4、图5以及图6,可以看到本技术实施例提供的点云拼接方法,拼接的准确性更高。
[0109]
需要说明的是,实际应用中,上述所有可能的实施方式可以采用结合的方式任意组合,形成本技术的可能的实施例,在此不再一一赘述。
[0110]
基于上文各个实施例提供的点云拼接方法,基于同一发明构思,本技术实施例还提供了一种点云拼接装置。
[0111]
图7示出了根据本技术实施例的点云拼接装置的结构图。如图7所示,该点云拼接装置可以包括采样模块710、fpfh特征计算模块720、点对集合建立模块730、初始变换矩阵计算模块740以及精确配准模块750。
[0112]
采样模块710,用于获取待拼接的至少两幅点云数据,根据点云数据中点云法线的信息对点云数据进行自适应下采样,得到下采样后的点云数据;
[0113]
fpfh特征计算模块720,用于计算下采样后的点云数据的fpfh特征;
[0114]
点对集合建立模块730,用于根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合;
[0115]
初始变换矩阵计算模块740,用于基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵;
[0116]
精确配准模块750,用于基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接。
[0117]
在本技术的实施例中,上文图7展示的采样模块710还用于:
[0118]
对于点云数据,创建至少一层体素网格;
[0119]
在体素网格的每个体素中对法线角度小于预设角度阈值的点进行合并,得到下采样后的点云数据。
[0120]
在本技术的实施例中,上文图7展示的fpfh特征计算模块720还用于:
[0121]
对于点云数据的下采样点,假设源点p
t
,给定搜索半径r,寻找到p
t
点的一个或多个邻近点ps,在p
t
点建立局部坐标系uvw,计算p
t
点与邻近点的三元描述组(α,φ,θ),并对这3个参数α,φ,θ分别划分g个区间,g为正整数,统计p
t
点与邻近点的三元描述组(α,φ,θ)落入区间的分布情况,得到一个3
×
g维度的特征向量spfh,记为spfh(p
t
),uvw坐标系如下:
[0122][0123]
p
t
点与邻近点ps的三元描述组(α,φ,θ)计算公式如下:
[0124][0125]
其中n
t
是p
t
点的法向量,ns是ps点的法向量,d是p
t
和ps之间的欧氏距离;
[0126]
对p
t
点的邻近点ps计算邻近点ps的3
×
g维度的特征向量spfh,记为spfh(ps);
[0127]
采用如下公式对spfh(p
t
)和spfh(ps)进行加权得到p
t
的fpfh特征:
[0128][0129]
其中ws表示p
t
和ps之间的欧氏距离。
[0130]
在本技术的实施例中,上文图7展示的精确配准模块750还用于:
[0131]
基于初始变换矩阵,结合point-to-plane度量的icp算法对筛选出的点对计算损失函数,重复迭代优化,直至旋转平移矩阵的变化量小于预设变化阈值和/或者损失函数的误差值小于预设误差阈值,终止迭代,得到优化后的旋转平移矩阵,损失函数e
symm
如下:
[0132]
[0133]
其中r为旋转矩阵,t为平移矩阵,pi和qi分别是两幅点云中的一点,是pi点的法向量,是qi点的法向量。
[0134]
在本技术的实施例中,上文图7展示的初始变换矩阵计算模块740还用于:
[0135]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第一初始矩阵;计算点对集合中除筛选出的点对外的其他点对在第一初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第一样本内点,将距离误差大于预设阈值的点标记为第一样本外点,并统计出第一样本内点的数量;
[0136]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第二初始矩阵;计算点对集合中除筛选出的点对外的其他点对在第二初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第二样本内点,将距离误差大于预设阈值的点标记为第二样本外点,并统计出第二样本内点的数量;
[0137]
……
[0138]
在点对集合中随机筛选m个点对,基于ransac算法计算得到第n初始变换矩阵;计算点对集合中除筛选出的点对外的其他点对在第n初始变换矩阵下的距离误差,将距离误差小于预设阈值的点标记为第n样本内点,将距离误差大于预设阈值的点标记为第n样本外点,并统计出第n样本内点的数量;
[0139]
筛选出统计出的n个样本中,样本内点数量最多的第n初始变换矩阵,作为初始变换矩阵。
[0140]
在本技术的实施例中,m个点对为3个点对;n为大于或等于1的正整数。
[0141]
基于同一发明构思,本技术实施例还提供了三维扫描仪,包括三维扫描仪本体,三维扫描仪执行三维扫描操作时,使用如上述任一项的点云拼接方法对扫描获取到的点云数据进行拼接。可以看到,本技术实施例提供的三维扫描仪相比于传统扫描仪,在扫描获取到至少两幅点云数据后,可以根据点云数据中点云法线的信息对点云数据进行自适应下采样,得到下采样后的点云数据,下采样后的点云数据不失代表性与描述性,且下采样后的点云数据相比于原始点云数据量减少很多,可以提高后续处理速度;随后计算下采样后的点云数据的fpfh特征,根据下采样后的点云数据的fpfh特征,初步建立至少两幅点云数据间匹配的点对集合,进而基于ransac算法,对点对集合中预设个数的点对进行预设次数的筛选,获得筛选出的点对,并基于筛选出的点对计算得到初始变换矩阵,由于fpfh特征通过法线方向之间所有的相互关系来估计点云表面变化情况,可以很好地描述点云的几何特征,从而能够给定一个正确的初始姿态,使得后面的迭代优化朝着正确的方向进行,减少迭代次数,提高点云拼接效率和准确率;最后基于icp算法对初始变换矩阵进行迭代优化,得到优化后的旋转平移矩阵,进而根据优化后的旋转平移矩阵对至少两幅点云进行拼接,从而在初始配准基础上再精确配准,进一步提高点云拼接的准确率。
[0142]
基于同一发明构思,本技术实施例还提供了一种电子设备,包括处理器和存储器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任意一个实施例的点云拼接方法。
[0143]
基于同一发明构思,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任意一个
实施例的点云拼接方法。
[0144]
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置、模块的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
[0145]
本领域普通技术人员可以理解:本技术的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干程序指令,用以使得一电子设备(例如个人计算机,服务器,或者网络设备等)在运行所述程序指令时执行本技术各实施例所述方法的全部或部分方框。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0146]
或者,实现前述方法实施例的全部或部分方框可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的电子设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被电子设备的处理器执行时,所述电子设备执行本技术各实施例所述方法的全部或部分方框。
[0147]
以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:在本技术的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本技术的保护范围。