赞
踩
这是点云滤波系列的第三篇学习笔记,在之前我们学习了非常经典的MLS算法(点云滤波(一)——MLS(移动最小二乘)/PSS介绍),以及为解决MLS不具备保持边缘问题所提出的变体RMLS(点云滤波(二)——RMLS(鲁棒移动最小二乘)介绍)。RMLS由于没有找到相关的开源代码,并且我对方法也存在一些疑惑,害怕复现出来依托答辩,所以就没有花时间去复现。但是寻找能够保持边缘的边缘的点云平滑算法依然是我目前面对的问题,因此我会继续找一些相关的论文进行学习并形成笔记。这次阅读的文章是2013年发表于TOG上的论文Edge-aware point set resampling(EAR),作者也将算法实现发布在了CGAL库中。
看了这么多论文,感觉写摘要还是有公式可以套用的,我现在觉得大部分摘要都会包含以下几部分:
引言部分是对摘要的展开,这篇文章的组织性很强,摘要中的每一点都在引言部分展开。
在related work部分,本文也强调了MLS、LOP,这些方法都假设下垫面是光滑的,因此无法实现边缘保持。同RMLS一样,EAR也要将下垫面处理成分段光滑表面。
需要注意EAR和MLS是重采样算法,APSS/RIMLS/Cocone/Poisson是更下游的重建算法,其中APSS/Cocone/Poisson是edge-oblivious方法,RIMLS是edge-aware方法。
Resampling away from edges
由上图可以看出,经过这一步,会输出具有可靠法线的定向点,并且在锐利边缘处会留下间隙,流程如下:
Edge-aware upsampling
上采样过后,锐利边缘处的空隙被重新填补
这一环节的输入是包含缺陷的无序点云
Q
=
{
q
j
}
j
∈
J
Q=\{q_j\}_{j\in J}
Q={qj}j∈J,输出的是平滑后的远离边缘的有向点云
S
=
{
s
i
}
i
∈
I
=
{
(
p
i
,
n
i
)
}
S=\{s_i\}_{i\in I}=\{(p_i,n_i)\}
S={si}i∈I={(pi,ni)}达到的效果如下:
实现对噪声的滤除,同时将点推离边缘,并在边缘留下空隙。其中有一个重要参数
σ
p
\sigma_p
σp,数值越大边缘处的空隙越大,在噪声更多的情况下可以获得更好的分离效果。接下来看看这种推离是怎么实现的。
E 1 E_1 E1来源于几何中位数(L1-median),到 Q Q Q中n个点距离和最小的点 p p p被称作 Q Q Q的几何中位数, p = arg min x ∑ j ∈ J ∣ ∣ q j − x ∣ ∣ p=\argmin_{x}\sum_{j\in J}||q_j-x|| p=argminx∑j∈J∣∣qj−x∣∣。 E 1 E_1 E1不同的地方在于需要找到一个点集 P P P而不只是一个点 p p p,添加一个距离权重项 θ ( r ) = e − r 2 / ( h / 4 ) 2 \theta(r)=e^{-r^2/(h/4)^2} θ(r)=e−r2/(h/4)2之后,相当于 p i p_i pi只会看到他附近的一个小邻域中的点, 可以认为 p i p_i pi是其邻域点的几何中位数。
E 2 E_2 E2的作用是为了使得 P P P中的点分布均匀 η ( r ) = 1 / ( 3 r 3 ) \eta(r)=1/(3r^3) η(r)=1/(3r3)是一个斥力函数(这个地方原文好像写错了,论文中笔误好像挺多的。。。。)会惩罚距离过近的投影点
但是尽管LOP对于原始数据的几何重建效果很好,但他仍然是一个各向同性的操作子,因为距离权重
θ
(
r
)
\theta(r)
θ(r)不考虑锐利的几何特征。因此EAR做出的改进是考虑法线防线来推断出边缘的大致位置。具体做法是使用
ϕ
(
n
i
,
p
i
−
q
j
)
=
e
−
(
n
i
T
(
p
i
−
q
j
)
)
2
/
σ
p
2
\phi(n_i,p_i-q_j)=e^{-(n_i^T(p_i-q_j))^2/\sigma_p^2}
ϕ(ni,pi−qj)=e−(niT(pi−qj))2/σp2代替
E
1
E_1
E1中的距离权重项。所以完整形式如下:
P
k
+
1
=
G
(
P
k
)
=
arg min
P
=
{
p
i
}
{
E
1
(
P
k
,
Q
)
+
E
2
(
P
k
,
Q
)
}
,
E
1
(
P
k
,
Q
)
=
∑
i
∈
I
∑
j
∈
J
∥
p
i
k
−
q
j
∥
ϕ
(
n
i
,
p
i
−
q
j
)
,
E
2
(
P
k
,
Q
)
=
∑
i
∈
I
λ
i
∑
i
∈
I
\
{
i
}
η
(
∥
p
i
k
−
p
i
′
k
∥
)
θ
(
∥
p
i
k
−
p
i
′
k
∥
)
P^{k+1}=G(P^k) = \argmin_{P=\{p_i\}} \{ E_1(P^k, Q) + E_2(P^k, Q) \},\\ E_1(P^k, Q) = \sum_{i \in I} \sum_{j \in J} \|p_i^k - q_j\| \phi(n_i,p_i-q_j),\\ E_2(P^k, Q) = \sum_{i\in I} \lambda_{i} \sum_{i \in I \backslash \{i\}} \eta(\|p_i^k - p_{i'}^k\|) \theta(\|p_i^k - p_{i'}^k\|)
Pk+1=G(Pk)=P={pi}argmin{E1(Pk,Q)+E2(Pk,Q)},E1(Pk,Q)=i∈I∑j∈J∑∥pik−qj∥ϕ(ni,pi−qj),E2(Pk,Q)=i∈I∑λii∈I\{i}∑η(∥pik−pi′k∥)θ(∥pik−pi′k∥)
e
−
(
n
i
T
(
p
i
−
q
j
)
)
2
/
σ
p
2
e^{-(n_i^T(p_i-q_j))^2/\sigma_p^2}
e−(niT(pi−qj))2/σp2可以用来衡量
p
i
p_i
pi与
q
j
q_j
qj之间的几何差异,如下图所示
ϕ
(
n
p
,
p
−
q
1
)
=
1
\phi(n_p,p-q_1)=1
ϕ(np,p−q1)=1而
ϕ
(
n
p
,
p
−
q
2
)
\phi(n_p,p-q_2)
ϕ(np,p−q2)权重较小,所以最后
P
P
P的选择会倾向于远离锐利特征的位置(但有个问题,这样操作的话不是就失去了局部性么)
这里的
η
(
r
)
=
−
r
\eta(r)=-r
η(r)=−r,用于平衡
E
1
E_1
E1和
E
2
E_2
E2的
λ
i
\lambda_i
λi的取值取决于
μ
\mu
μ,LOP指出
μ
\mu
μ反应了在几何精确度(
μ
∈
[
0.1
,
0.25
]
\mu \in[0.1,0.25]
μ∈[0.1,0.25])和均匀分布
μ
∈
[
0.3
,
0.45
]
\mu \in[0.3,0.45]
μ∈[0.3,0.45]之间的权衡,EAR中选择的是
μ
\mu
μ=0.45。另一个重要参数是
h
=
d
b
b
/
m
h=d_{bb}/\sqrt m
h=dbb/m
,其中
d
b
b
d_{bb}
dbb是bounding box的对角线长度,
m
m
m是输入点云的个数,
σ
p
=
h
\sigma_p=h
σp=h。
上一步我们获得了边缘处留有空隙的点云,在这一步中需要将空隙填补上。每次都会插入一个新点 ( p k , n k ) (p_k,n_k) (pk,nk),这个点要满足三个目标:1) p k p_k pk位于下垫面上;2) n k n_k nk垂直于 p k p_k pk处的下垫面;3)插入点要均匀的分布。直接求解需要在5D解空间中进行搜索,这非常困难,尤其是在锐利特征附近。本文的做法分三步:找到一个near-sparsest的插入基点 b k b_k bk(目标3),优化出投影距离 d k d_k dk(目标1),计算投影方向 n k n_k nk(目标2),最终的投影点即为 p k = b k + d k n k p_k=b_k+d_kn_k pk=bk+dknk。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。