1. 引言
随着3D扫描仪的普及,点云的获取越来越方便。点云的法向量作为点云的重要属性之一,在很多算法中具有重要作用,例如点云的重建、渲染、分割等。然而,准确快速的估计出点云的法向仍然是一项比较艰巨的任务。尤其是在点云的获取过程中,会受到噪声、遮挡等客观原因的影响,这也加大了点云法向估计的误差。
近年来,针对点云法向估计有很多算法,包括:基于Voronoi/Delaunay的方法 [1] [2] [3] [4];基于法向修正的方法 [5] [6] [7] [8];基于邻域拟合的方法 [9] [10] [11] [12] [13]。其中基于Voronoi/Delaunay的方法 [1] [2] [3] [4] 主要通过三角剖分来构建点云之间的拓扑关系,再根据构建出来的拓扑关系重建法向,但是,它对噪声比较敏感。基于法向修正算法是一类基于平滑化的滤波方法,主要通过不同的方法对初始法向进行校正和离群滤波。基于邻域拟合的方法最早是Hoppe等人 [9] 提出的,也称主成分分析法(Principal Component Analysis),简称PCA。该算法将邻域内所有点用一平面来进行拟合,并将当前点的法向定义为所拟合平面的法向。当该点位于光滑区域,PCA可以准确估计出该点的法向;当该点位于边界处、角点等位置,其邻域由多个光滑曲面组成,在拟合时受到位于其他光滑曲面的影响,估计出的法向过于光滑。该类算法是以当前点为中心构造候选邻域,具有一定的局限性。因此,现如今大多学者将这一条件放宽,提出以当前点的近邻点为中心构造邻域进行法向估计。
Cao等人 [14] 受图像滤波的启发,提出邻域漂移的思想来进行法向估计。首先将尖锐特征处的点分为边缘点和角点,针对尖锐特征和角点分别设计了不同策略用于候选邻域的生成:对于边缘点,通过引入方向约束算法,从边缘点的邻域中来选择点构造候选邻域,且该候选邻域要包含当前点在内;对于角点,采用自适应的迭代方式来为其选出一个位于光滑平面的邻域。为了最终得到的邻域比较“平坦”,利用局部邻域的协方差分析作为候选邻域的评价准则。该方法可以很好的解决位于尖锐特征处点的拟合效果较差的问题,但是对于特征点选取候选邻域集的方式过于复杂,效率很低,可行性较差。Zhou等人 [15] 将多尺度的思想用于候选邻域集的构造中,找到包含当前点在内的多个尺度的邻域构成候选邻域集,从而丰富了候选邻域集的选取范围,囊括了更多的可选条件,减小了误差。然后对每一候选邻域求解一最优的拟合平面,将邻域内点与拟合平面的距离作为评价准则找到一最优邻域用于法向估计。虽然该算法的评价准则更加准确,但是在求解最优拟合平面时耗时较长。为了提高效率,Zhang等人 [16] 设计一种更为快捷的候选邻域构造算法和最优邻域的评价准则。首先将当前点的所有近邻点对应的邻域作为候选邻域,再用协方差分析找到一个最优邻域用于法向估计。该方法不需要利用搜索法来判断当前点是否在邻域中,极大的提高了效率。然而,该算法对于候选邻域的构造采取单一的尺度,对于复杂形状的模型和非均匀采样处理的效果并不好;在最优邻域的确定上,没有考虑当前点与拟合平面的距离,筛选的过于粗糙,误差较大。
本文对候选邻域集的构造和最优邻域的筛选进行创新,提出了一种新算法。在候选邻域集的构造中,将多尺度思想引入其中,并设计了两种方案:第一种,以当前点的所有近邻点为中心,采用多个尺度构造候选邻域集;第二种,根据当前点与近邻点的距离远近的不同,对位于不同邻域尺度的点采用不同的尺度构造候选邻域集。在最优邻域的筛选上,不仅采用协方差对候选邻域集的“平坦程度”进行刻画,而且也考虑了候选邻域与当前点的距离。针对该距离的引入,提出了两种不同的最优邻域评价方法:第一种:首先根据当前点到候选邻域的距离远近程度先对侯选邻域集进行一次筛选,再通过余下的候选邻域的协方差矩阵进行分析找到最优邻域;第二种:通过将协方差分析的结果和点到平面的距离相结合来找到一个最优邻域。本文对提出的算法进行不同组合测试,实验结果表明,所有的组合都明显优于以往算法,且时间消耗上都较低。但是从候选邻域集的两种方案来看,第一种构造候选邻域集的方案在效果上更好,因为该方法筛选更多的候选邻域;第二种方案在效果上略次于第一种方案。总之,本文提出的算法,可以准确的估计出点云的法向。
2. 本文算法
对于一组有噪声的点云数据
(N为采样点个数,
),本文提出基于多尺度的邻域平移法向估计算法,该算法可以高效的筛选出候选邻域和最优邻域。分为3步:
第一步:点云预处理。首先利用PCA算法估计出点云P中的所有点的初始法向,再通过协方差矩阵的特征值来对所有点距尖锐特征的远近程度进行刻画,将点分为平滑点和特征点。
第二步:筛选特征点的最优邻域。对于特征点
,首先构造其邻域,然后通过本文提出的两版构造多尺度候选邻域集的方法对邻域内所有点构造多尺度的候选邻域集,再通过给出的评价方法对其进行筛选得到一最优邻域。
第三步:确定最终法向。对于平滑点,初始法向即为最终法向;对于特征点,对第二步筛选出的最优邻域使用PCA算法得到最终法向。算法流程如图1所示。
2.1. 点云预处理
对于点云P中任意一点
,找到初始邻域
,即
。本文采用与文献 [16] 同样的方法对每个点的初始法向和特征权重进行估计。首先,对这些初始邻域构造对应的局部邻域协方差矩阵,定义如下:
(1)
其中
是点
的邻域点,
是局部邻域
的平均值,
代表矩阵相乘,将协方差矩阵
的奇异值记为
,其中
。
点
的初始法向定义为上述协方差矩阵中最小特征值
对应的特征向量,并且对于点
的特征权重
定义如下:
(2)
点的特征权重
刻画了该点位于尖锐特征处的概率。当
较小时,说明该点远离尖锐特征;当
较大时,说明该点靠近尖锐特征。在本文中将
(
为给定的阈值)时,定义该点是特征点,否则定义该点是平滑点。
本文使用文献 [16] 来对
进行自动取值,然后用
代表特征权重
的分布,并通过最小化下面的函数来对该分布进行光滑处理:
(3)
其中
是权衡参数;A为一阶差分矩阵;
、
分别为F范数和
范数;
定义为
的第一个峰值后的平缓点。
2.2. 筛选特征点的最优邻域
2.2.1. 构造多尺度的候选邻域集
对于特征点
,以该点的近邻点为中心构造邻域作为候选邻域。为了使得构造的候选邻域充分靠近当前点
,本文以
为尺度构造
的邻域
,即
。文献 [16] 直接对邻域
中所有点构造单尺度的邻域作为候选邻域集。本文为了丰富候选邻域集,采用两版方案构造多尺度的候选邻域集:
第一版:以邻域
中的所有点为中心,
(
)为不同的三个尺度构造候选邻域
,
,
,所有候选邻域构成候选邻域集
:
在实验中
,
,该版本的方法可以囊括多个候选邻域,可选条件丰富,对于效果有明显提升。但是在该方法下的候选邻域比较多,在速度上有一定的局限性。因此,本文又提出了第二版构造候选邻域集的方法。
第二版:以与当前点的距离为基础,构造多尺度候选邻域集。如图2所示:对于与当前点
较远的点,一方面为了使所在邻域尽可能靠近当前点,另一方面由于该点远离尖锐特征,所在的平面较平坦。所以选择一个较大的尺度来构造邻域即可;对于与当前点
较近的点,靠近尖锐特征处,其所在邻域仍可能跨越尖锐特征,需要对邻域做仔细的分割,采用多个尺度构造候选邻域。
![](//html.hanspub.org/file/74-2622598x64_hanspub.png?20220928084924263)
Figure 2. Effects at different neighborhood scales
图2. 不同邻域尺度下的效果
具体来说,首先对邻域
进行分割,将其分成三部分,对于处于不同邻域尺度范围的点,处理的方式不同,详细如下:
a:对于邻域尺度在0~K2/4内的点(图2中蓝色圈内的点),以
为尺度构造多尺度候选邻域
,
,
;
b:对于邻域尺度在K2/4-K2/2内的点(图2中紫色圈除去蓝色圈的点),以
为尺度构造多尺度候选邻域
,
;
c:对于邻域尺度在K2/2-K2/内的点(图2中红色圈除去紫色圈的点)
所有的候选邻域构成候选邻域集
:
实验结果表明,由于第一版构造的候选邻域集相比第二版较多,可选条件丰富,因此效果更加优越;第二版的效果略次于第一版,但是时间上优于第一版。
2.2.2. 确定最优邻域
接下来从候选邻域集中选择最优邻域
用于法向估计。本文不但用协方差对邻域的“平坦程度”进行分析,而且也考虑了拟合平面与当前点的“远近程度”。在邻域的“平坦程度”上,用公式(1)对每个
候选邻域
(
;
)构造对应的局部邻域协方差矩阵,然后再通过公式(2)得到对应的特征权重
(
;
)。为了使所选的邻域比较平坦,需要在所有候选邻域
特征权重中找到较小的值。除此之外,希望所选出的最优邻域的拟合平面要尽可能的靠近当前点,即对
该邻域与当前点的远近程度进行刻画。首先对候选邻域
(
;
)的拟合平面构成的集合记为
(
;
),然后再通过如下公式计算出当前点与候选邻域的拟
合平面之间的距离:
,
;
(4)
其中
代表当前点,
代表候选邻域的中心点,
代表候选邻域的拟合平面的法向,
代表内积,
代表绝对值。
为了将两种评价指标结合起来,本文采用两种方法:
第一种(
):给定一个阈值
,根据得到的
,先对候选邻域集进行第一波筛选。当
时,说明这个候选邻域与当前点的距离较远,将其舍掉。将余下的符合远近条件的候选邻域构成的集合记为
,并将所对应的特征权重构成的集合记为
。然后找到
中的最小值
,其对应邻域
即为最优邻域:
(5)
第二种(
):对于候选邻域
(
;
),将它对应的特征权重
(
;
)和到当前点的距离
(
;
)做加权组合得到最终的评价准则
。具体定义如下:
,
;
(6)
其中
是一个权衡参数用于平衡
和
。接下来将所得的结果构成集合
,然后找到集合F中的最小值,其对应的邻域为最优邻域
:
(7)
与文献 [16] 类似,对于最优点,如果依旧选择
为尺度构造邻域,最终邻域仍然可能跨越边界处。为了保障最优邻域不跨越边界处,将邻域的尺度缩小,以
为尺度构造最优邻域
。
2.3. 最终法向的确定
对于平滑点,其邻域为一个光滑的曲面,PCA可以准确的对邻域拟合。因此,初始法向即为最终法向;对于特征点,邻域可能由多个曲面构成,直接PCA无法估计出准确的法向。因此,对得到的最优邻域进行处理得到最终法向。
3. 实验结果及分析
为了评估算法的性能,将本文算法与一些具有代表性的算法进行比较,包括HF、LRRfast、PatchShift、PCA、PCV、RNE、ShiftPCA,其中HF使用HF_cubes模型进行比较。所有实验使用的电脑配置为11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40 GHz 1.38 GHz。本文在确定候选邻域集时采用两种不同的方案,在最优邻域的评估时也采用两种不同的方案,组合起来共有四种方案,在文章中用方案1、方案2、方案3、方案4代表。其中方案1代表用第二版候选邻域集和第一种评价指标组合的方法,同时阈值
;方案2代表用第二版候选邻域集和第二种评价指标组合的方法,同时阈值
;方案3代表用第一版候选邻域集和第一种评价指标组合的方法,同时阈值
;方案4代表用第一版候选邻域集和第二种评价指标组合的方法,同时阈值
。
本文对大量模型进行测试:所有模型都添加了均值为0的噪声,标准差定义为点云之间平均距离的百分比,大小为30%,40%,50%,60%。
3.1. 参数的确定
本文算法的参数主要如下:
:构造多尺度邻域时选择的三种邻域尺度;
:指标函数的阈值。
其中噪声的大小与
的取值成正比。在本文的实验中设置
。对于阈值
,通过大量实验发现阈值大小对实验结果有很大影响,本文展示了其中4个结果较好的值;0.005、0.05、0.01、0.5。其他算法的邻域尺度大小均设置为100,所有算法的其余相关参数均采用默认值。
3.2. 评价函数
本文使用带有阈值的均方根误差(
)来评价,定义如下:
(8)
(9)
其中
是法向
与
之间的夹角,
是点p的真实法向,
是点p的估计法向;
是点p的真实法向集合,
是点p的估计法向集;当每个点输出一个法向时,集合
为1。本文取
,当
与
的值大于
时,认为该点估计的法向不准确(定义该点为坏点)。
3.3. 结果分析
图3展示了不同算法在不同模型上
的变化情况,由于本文的四种组合方案在效果上基本一致,差别不明显,为了更加清晰的显示本文算法与以前算法之间的差别,在图3中只展示了组合方案中较好的方案3。图4展示了不同算法在每个模型以及所有模型上
均值的比较。图5展示了不同模型坏点的可视化情况(红色点显示坏点)。图6展示了不同算法在各个模型上的法向估计结果的可视化。
如图3和图4所示,即使在非均匀采样下,PCA算法仍然可以准确的估计出光滑曲面的法向,如模型spherefour所示,但是对于尖锐特征模型(如图3中的(b)到(f)所示),估计出的法向准确性较低,相比其他算法,
值最高。这是因为PCA选择整个邻域进行平面拟合,对于特征点,其邻域可能由多个光滑曲面构成,在拟合时易受其他光滑平面的点影响,导致估计出的法向过于光滑,误差较大。
RNE、HF-cubes、LRRfast和PCV在处理尖锐特征模型时,效果都比PCA优越,并且其中PCV的效果最佳,其
值是最低的(如图3中的(b)到(f)所示);在处理光滑模型时,HF-cubes的效果与PCA持平,但RNE、PCV和LRRfast的效果与PCA相比较差(如模型spherefour所示)。
PatchShift和ShiftPCA都是基于邻域漂移的算法。其中PatchShift对于简单的特征模型处理的较好,其
值较低(如cylinder模型和cone模型),但是在处理光滑模型和较复杂的特征模型时,效果较差(如spherefour模型和anchor模型)。ShiftPCA对于特征模型处理效果比较好(如图3中的(d)到(f)所示),但是在处理非均匀采样上效果较差,其
值较高(如图3中的(a)到(c)所示)。总体上来看,PatchShift和ShiftPCA的
值高于本文算法,并且PatchShift的时间消耗也较高(如表1所示)。
![](//html.hanspub.org/file/74-2622598x160_hanspub.png?20220928084924263)
Figure 3.
on different models vary with noise or model scale
图3. 不同模型上
值随噪声或模型尺度的变化情况
![](//html.hanspub.org/file/74-2622598x163_hanspub.png?20220928084924263)
Figure 4. Average
across different models
图4. 不同模型上
的均值
![](Images/Table_Tmp.jpg)
Table 1. Sum and time comparison of R M S _ τ , R M S of different algorithms
表1. 各类算法的
、
值和时间比较
![](//html.hanspub.org/file/74-2622598x171_hanspub.png?20220928084924263)
Figure 5. Different arithmetic visualization
图5. 不同算法上的可视化比较
本文提出的四种组合方案在不同模型和噪声尺度上都得到了较好的结果。从定量分析上看,本文算法在不同模型和噪声尺度上的的
值都比较低,并且其中方案3和方案4 (即采用第一版构造候选邻域集的方法)的效果比方案1和方案2优越,但是时间消耗要比方案1和方案2略高。从可视化结果上看,本文算法对光滑模型的保持和尖锐特征的刻画都权衡的比较好(如图5和图6所示),在保证运行速度的同时可以得到高质量的法向。
3.4. 时间比较
表1展示了不同算法的
和时间的均值。从中能看出用MATLAB (表中记为“M”)实现的ShiftPCA的运行速度是最快的,PCA的效率次之,但是这两类算法的
值相对较大。在MATLAB下实现的LRRfast、PCV、RNE和PatchShift (包括C/C++混编的记为“M&C”)运行速度相对较慢。本文提出的四种方案在时间和效果上都比较优越,在效果上,本文算法的
值比较低,其中方案1和方案2仅次于PCV并且与HF_c持平,明显优于其他算法,方案3和方案4的
值可以达到最低;在时间上,本文算法仅次于PCA和ShiftPCA,显著优于其他算法。总之,本文的算法可以很好的平衡算法的性能和效率,可行性较强。
![](//html.hanspub.org/file/74-2622598x177_hanspub.png?20220928084924263)
Figure 6. Estimation visual comparison of different algorithm
图6. 不同算法的法向估计可视化结果
4. 结论
本文提出的基于多尺度邻域平移法向估计算法,可以快速准确的估计出点云的法向。本文在候选邻域集的构造和最优邻域的筛选上进行了创新,对候选邻域的构造提出多尺度的思想并且将当前点与候选邻域的距离以及对邻域的协方差分析作为最优邻域的筛选指标。从而极大地减小了误差,其误差值从之前的0.28降到了0.15,同时也保证了运行的速度,可以准确的估计出点云法向,可行性较强。但本文算法没有考虑尖锐特征情况下的非均匀采样问题。如何在确保准确性和提高算法效率的基础上,考虑尖锐特征下的非均匀采样问题,这是未来的一项重要工作。
基金项目
国家自然科学基金(62076115, 61702245);大连市青年科技之星(2020RQ053)。