点集配准:从刚性到非刚性的引力方法探索
在点集配准领域,不同的方法适用于不同的场景。本文将介绍两种重要的点集配准方法:BH - RGA 和 NRGA,探讨它们的原理、应用及实验结果。
BH - RGA 对真实世界数据的配准
BH - RGA 非常适合处理真实世界数据的配准问题,包括大型部分重叠的点集和激光雷达数据。下面我们通过具体的数据集来了解其应用。
-
Apollo 和 Vestalin 数据集
:这两个数据集是通过结构光技术获取的雕像的部分 3D 重建数据。由于扫描过程的原因,它们处于不同的参考框架中。Apollo 数据集的部分扫描包含约 30% 的聚类离群点,且点密度变化较大,因此使用了体积质量归一化(VMN)方法。VMN 虽不是 BH - RGA 算法本身的一部分,但在实践中很有用,它可以按体积单位均匀初始化质量。Vestalin 数据集使用三个锚点进行处理,并根据点的强度改变质量。
-
Pedestal 数据集
:使用两个锚点,分别位于板块的左下角和右下角。
-
Universe 数据集
:代表雕塑的两个 3D 重建,形状在下部有所不同。
-
KITTI 激光雷达数据集
:选取 2011 09 26 驱动 0001 序列的第一帧和第三帧,位移适中,离群点比例约为 20%。同样由于扫描中点密度高度变化,应用了 VMN。在没有使用锚点或其他先验知识的情况下,该算法能准确配准扫描数据,两个扫描各包含约 120k 个点,在 CPU 上不进行子采样或并行化的情况下,配准时间约为 90 秒。
下面是一个简单的表格总结这些数据集的处理情况:
| 数据集 | 处理方式 | 特殊情况 |
| — | — | — |
| Apollo | 应用 VMN,含约 30% 聚类离群点 | 点密度变化大 |
| Vestalin | 使用三个锚点,根据点强度改变质量 | 不同参考框架 |
| Pedestal | 使用两个锚点 | - |
| Universe | 两个 3D 重建,下部形状不同 | - |
| KITTI 激光雷达 | 应用 VMN,选取特定帧 | 离群点比例约 20%,点密度高度变化 |
非刚性引力方法(NRGA)
NRGA 是 GA 在非刚性情况下的扩展,它能处理具有噪声和部分重叠数据的挑战性场景,克服了先前方法的一些局限性。
NRGA 的原理
NRGA 的目标是找到一个映射 $T: R^D \to R^D$,使两个点集之间的距离误差函数最小化。这个误差函数是点集 $Y$ 相对于 $X$ 的总引力势能(GPE),即欧几里得距离的加权逆值之和:
[
\varphi_a = \arg\min_T \sum_{i = 1}^{M} \sum_{j \in N(i)} \omega_{ij} (d(T(Y_i, T_i) - X_j))^{-1}
]
其中,$\omega_{ij} = -Gm_im_j$ 表示点 $i$ 在其最近邻 $j \in N(i)$ 中的 GPE 权重,$d(Y_i, X_j) = |Y_i - X_j| + \varepsilon$ 是数值稳定的欧几里得距离。
NRGA 的步骤
- 构建 k - d 树 :分别在参考点集 $X$ 和模板点集 $Y$ 上构建 k - d 树。由于 $X$ 是静态的,只需要计算一次 k - d 树;而 $Y$ 会变形,所以在每次迭代中都要重建 k - d 树。
- 定义影响区域 :在每次迭代中,每个 $Y_i$ 从 $X$ 和 $Y$ 中选择一些最近邻,定义影响区域 $\Gamma_X^i$ 和 $\Gamma_Y^i$,缩小每个 $Y_i$ 的解空间。使用 k - d 树获取最近邻,$\Gamma_X^i$ 通过以 $X$ 的高斯曲率为参数的 N 体问题吸引 $\Gamma_Y^i$,实现局部多链接的点到点交互。计算力场后,独立更新 $\Gamma_Y^i$ 中的模板点。通过 Procrustes 对齐从 $\Gamma_Y^i$ 的前一个和当前状态获得无约束变换元组 $T_i$,并串行估计所有 $\Gamma_Y^i$ 的 $T$。
- 应用 CCM 正则化器 :使用相干集体运动(CCM)算子 $\Xi$ 将多个无约束变换场和速度合并为每个 $Y_i$ 的最优逐点更新。当系统的 GPE 达到局部最小值时,实现局部最优解。
下面是 NRGA 主要步骤的 mermaid 流程图:
graph TD;
A[初始化 T = 0] --> B[构建 X 的 k - d 树];
B --> C{迭代条件判断};
C -- 满足 --> D[构建 Y 的 k - d 树];
D --> E[构建 RX 和 RY 区域集合];
E --> F[对所有 k 循环];
F --> G[选择 ΓYk 和 ΓXk 区域];
G --> H[计算 Fk 力矩阵];
H --> I[计算 Vt + 1k 和 Dt + 1k];
I --> J[计算 Tk = {Rk, sk, tk}];
J --> K[结束 k 循环];
K --> L[对所有 Yk 循环];
L --> M[更新速度 vt + 1k];
M --> N[更新变换 Tt + 1k];
N --> O[结束 Yk 循环];
O --> P[更新 Yt + 1 = T(Yt, T)];
P --> C;
C -- 不满足 --> Q[结束];
NRGA 的关键组成部分
- 修改的 N 体问题 :遵循对 N 体问题的修改,按需计算力,预先计算 $X$ 的曲率。只有 $X$ 产生引力场且保持固定,避免同一集合内粒子的引力相互作用。添加外部排水力 $F_{ext}^i = -\eta \dot{r}_i$,使系统的部分动能在每次迭代中耗散。
-
分布式局部多链接策略
:NRGA 是一种局部多链接方法,将 $Y$ 迭代配准到 $X$。从 $Y$ 和 $X$ 中选取最近邻的多集,分别记为 $R_Y$ 和 $R_X$,每个集合有 $K = M$ 个元素。元素数量根据点集的总点数按比例 $\rho_Y$ 和 $\rho_X$ 选取,通常 $\rho \in [0.02, 0.1]$。局部多链接的 N 体问题在相应区域的多集上求解,目标是细化局部变换。局部刚性变换元组 $T_k = {R_k, s_k, t_k}$ 通过旋转 $R_k$、缩放 $s_k$ 和翻译 $t_k$ 估计。同时,应用粗到细的软化半径参数 $\varepsilon$ 策略,使其在每次迭代中指数下降:
[
\varepsilon(t) = \varepsilon \exp(1 - \frac{t}{\xi})
]
其中 $\xi \leq 150$ 是最大迭代次数。 -
相干集体运动正则化器
:CCM 算子 $\Xi$ 用于正则化 $Y_i$ 的速度 $v_t^i$,确保点轨迹不交叉,相对点位置得以保留。对于变换元组 $T_i$,也应用 $\Xi$ 算子进行平均:
[
\Xi(T_i) = \left[(\vartheta)\left(\sum_{k \in \Psi_i} R_k\right), (\vartheta)\left(\sum_{k \in \Psi_i} t_k\right), (\vartheta)\left(\sum_{k \in \Psi_i} s_k\right)\right]
]
NRGA 的算法和复杂度分析
NRGA 的复杂度可以通过以下公式估计:
[
O(\xi (M \log M + M\rho_M \rho_N + M)) = O(M^2N)
]
但通常 $\rho \in [0.02; 0.1]$,假设 $\rho = 0.05$ 且 $M \leq 5 \cdot 10^4$,修正后的复杂度最多为 $O(M^{\beta}N)$,其中 $\beta = 1.45$。NRGA 的核心实现只需要几百行未优化的 C++ 代码。
下面是 NRGA 的算法代码:
Algorithm 10 Non - Rigid Gravitational Approach
Input: a reference XN×D and a template YM×D
Output: a displacement field T (Y,T) registering Y to X
Parameters: ε ∈(0,1], η ∈(0,1], G, m(Y), m(X), Δt, ρ ∈[0.02,0.1], εE = 10−4, ξ
1: Initialisation: T = 0
2: build a k - d tree on X
3: while |φ curr
g
−φ prev
g
| > εE or t ≤ξ do
4:
build a k - d tree on (Y)t
5:
build multi - set of regions RX (Sec. 9.3.1.2)
6:
build multi - set of regions RY (Sec. 9.3.1.2)
7:
for all k ∈{1,...,M} do
8:
select the regions ΓY
k and ΓX
k from RY and RX
9:
compute F t
k using Eqs. (9.29) – (9.32)
10:
compute V t+1
k
and Dt+1
k
using Eqs. (9.34) – (9.35)
11:
compute Tk = {Rk,sk,tk} for ΓY
k :
12:
▷solve for sk from the curl - free component of Dt+1
k
13:
▷solve absolute orientation problem for Rk [144,158]
14:
▷tk = mean(Dt+1
k
)
15:
end for
16:
for all Yk, k ∈{1,...,M} do
17:
update velocities vt+1
k
= Ξ
(
vt+1
k
)
using Eq. (9.36)
18:
update transformation Tt+1
k
= Ξ
(
Tt+1
k
)
using Eq. (9.37)
19:
end for
20:
update Yt+1 = T (Yt,T)
21: end while
通过以上介绍,我们对 BH - RGA 和 NRGA 这两种点集配准方法有了更深入的了解。它们在不同的场景中发挥着重要作用,为点集配准问题提供了有效的解决方案。接下来我们将进一步探讨 NRGA 的实验评估情况。
点集配准:从刚性到非刚性的引力方法探索
NRGA 的实验评估
为了验证 NRGA 的性能,我们在特定平台上进行了实验,并与其他几种广泛使用的非刚性点集配准方法进行了比较。
实验设置
实验在具有 32 GB RAM 和 Intel i7 - 6700K CPU(运行频率为 4.0GHz)的平台上进行。设置参数如下:$\eta = 0.05$,$G = 1.67$,$\rho = 0.05$,$\Delta t = 0.006$,$\xi = 100$,$\varepsilon = 0.1$。参与比较的方法包括非刚性 ICP(NR - ICP)、TPS - RPM、CPD 和 GMM - Reg,其中除 GMM - Reg 调用从 C++ 源代码编译的 Linux 可执行文件外,其他方法都完全在 Matlab 中运行。
评估方法和数据集
我们使用具有已知真实对应关系的合成基准数据集(鱼、线(2D)和兔子(3D))进行定量评估。对输入模板进行四种退化场景的修改,并针对每种场景进行 100 次实验。每次运行报告均方根误差(RMSE),定义为:
[
E_{rmse} = \sqrt{\frac{1}{N} \sum_{j = 1}^{N} (r_{ij} - E_{mean})^2}
]
其中 $E_{mean}$ 表示平均误差。具体的退化场景如下:
1.
添加噪声
:在每次实验中,向模板中引入均匀和高斯分布的噪声,噪声量范围为总点数的 5% 到 60%。额外的输入噪声增加了不确定对应关系的数量,使问题更加不适定。
2.
随机扰动
:随机扰动模板中的初始点位置,扰动的方向和大小是高斯分布的实现。扰动大小随每次实验线性增加。
3.
数据缺失
:从模板中随机删除 20% 的原始数据块。
4.
初始错位
:改变模板的初始错位程度,使轴角方向值 $(\theta_x, \theta_y, \theta_z)$ 是均匀分布 $U(-\frac{\pi}{4}, \frac{\pi}{4})$ 的实现。
下面是一个表格总结不同退化场景的特点:
| 退化场景 | 描述 |
| — | — |
| 添加噪声 | 引入 5% - 60% 均匀和高斯分布噪声 |
| 随机扰动 | 初始点位置随机扰动,大小线性增加 |
| 数据缺失 | 随机删除 20% 原始数据块 |
| 初始错位 | 轴角方向值从 $U(-\frac{\pi}{4}, \frac{\pi}{4})$ 取值 |
实验结果
- 噪声情况 :定量结果显示,在均匀噪声情况下,NRGA 表现出色,随着噪声增加,其相对精度提高。在 60% 噪声的情况下,NRGA 在两个数据集上显示出最低的 RMSE。对于高斯噪声,CPD 表现最佳,因为它明确建模了高斯噪声,并且我们总是选择相应的最优参数。然而,NRGA 接近 GMM - Reg 和 TPS - RPM,这两种方法没有做出这样的假设。NR - ICP 在有噪声的实验中失败。
- 数据缺失情况 :在数据缺失的情况下,NRGA 始终显著优于所有比较方法。例如,当从所有模板中删除超过 30% 的点时,NRGA 的表现明显更好。
下面是不同方法在不同场景下的性能对比表格:
| 场景 | NRGA | NR - ICP | TPS - RPM | CPD | GMM - Reg |
| — | — | — | — | — | — |
| 均匀噪声 | 最稳定,RMSE 最低 | 失败 | 较稳定 | 对高斯噪声好 | 较稳定 |
| 高斯噪声 | 接近 GMM - Reg 和 TPS - RPM | 失败 | 较稳定 | 最佳 | 较稳定 |
| 数据缺失 | 显著优于其他方法 | - | - | - | - |
以下是 NRGA 实验评估步骤的 mermaid 流程图:
graph TD;
A[设置实验平台和参数] --> B[选择合成数据集];
B --> C[对模板进行四种退化场景修改];
C --> D[每种场景进行 100 次实验];
D --> E[计算每次实验的 RMSE];
E --> F[比较 NRGA 与其他方法的性能];
总结
本文介绍了两种点集配准方法:BH - RGA 和 NRGA。BH - RGA 适用于处理真实世界中的大型部分重叠点集和激光雷达数据,通过体积质量归一化等方法有效应对点密度变化和离群点问题。NRGA 作为 GA 在非刚性情况下的扩展,通过最小化总引力势能实现非刚性点集配准。它采用构建 k - d 树、定义影响区域和应用 CCM 正则化器等步骤,结合修改的 N 体问题、分布式局部多链接策略,有效处理具有噪声和部分重叠数据的挑战性场景。
实验评估表明,NRGA 在均匀噪声和数据缺失的情况下表现出色,优于其他几种广泛使用的非刚性点集配准方法。这些方法为点集配准领域提供了有效的解决方案,在计算机视觉、机器人等多个领域具有重要的应用价值。未来,我们可以进一步研究如何优化这些方法的参数和复杂度,以适应更复杂的实际场景。
超级会员免费看
43

被折叠的 条评论
为什么被折叠?



