刚性配准与非刚性配准

前言

“配准”这个词其实应用的场景很多,例如在AR设备上进行定位需要用到的图像配准,需要提前存储图像的特征信息,然后用AR设备的摄像头实时计算图像特征并进行匹配,配准成功后进行跟踪。

本文所说的“配准”,是应用于三维点云或者mesh之中的,在我看过的文献中,“配准”(registration)和“对齐”(alignment)这两个词都用于描述这个意思。

根据物体本身是否发生形变,可以分为刚性配准非刚性配准:刚性配准所有顶点共用一个变换矩阵,非刚性配准则不是。


刚性配准

假设两个点云分别用 source : X = { x 1 , . . . , x m } \text{source}:\mathbf{X}=\{\mathbf{x}_1,...,\mathbf{x}_m\} source:X={x1,...,xm} target : Y = { y 1 , . . . , y n } \text{target}:\mathbf{Y}=\{\mathbf{y}_1,...,\mathbf{y}_n\} target:Y={y1,...,yn} 表示,刚性配准的目标就是要找到最优的刚性变换 T T T,使得 T ( X ) T(\mathbf{X}) T(X) Y \mathbf{Y} Y 尽可能重合。用最优化的形式表述为:
min ⁡ R , t 1 m ∑ i = 1 m ∣ ∣ R x i + t − y ( x i ) ∣ ∣ 2 \min_{\mathbf{R},\mathbf{t}}{\frac{1}{m}\sum_{i=1}^m || \mathbf{R}\mathbf{x}_i+\mathbf{t}-\mathbf{y}(\mathbf{x}_i) ||^2} R,tminm1i=1m∣∣Rxi+ty(xi)2
其中 y ( x i ) \mathbf{y}(\mathbf{x}_i) y(xi) 为target中对应的顶点。

求解这个最优化问题最常用的方法就是迭代最近点算法(Iterative Closest Point, ICP),按照最优化形式分解为两个步骤:

  1. 最近点查找:对于 X \mathbf{X} X 中的每个顶点 x \mathbf{x} x,查找 Y \mathbf{Y} Y 中最近的顶点 y ( x ) \mathbf{y}(\mathbf{x}) y(x) 作为对应点;
  2. SVD求解最优变换:首先各自减去质心 x ^ = x − x ‾ \mathbf{\hat{x}}=\mathbf{x}-\mathbf{\overline{x}} x^=xx y ^ = y ( x ) − y ( x ) ‾ \mathbf{\hat{y}}=\mathbf{y}(\mathbf{x})-\overline{\mathbf{y}(\mathbf{x})} y^=y(x)y(x) ,令 W = ∑ x ^ i y ^ i T \mathbf{W}=\sum{\mathbf{\hat{x}_i}\mathbf{\hat{y}_i}^T} W=x^iy^iT ,然后奇异值分解 W = U D V T \mathbf{W}=\mathbf{U}\mathbf{D}\mathbf{V}^T W=UDVT,则最优变换为 R ∗ = V U T \mathbf{R}^*=\mathbf{V}\mathbf{U}^T R=VUT t ∗ = y ‾ − R ∗ x ‾ \mathbf{t}^*=\mathbf{\overline{y}}-\mathbf{R}^*\mathbf{\overline{x}} t=yRx

最近点查找往往需要耗费很多时间,常见的可以用kd-tree进行加速;在确定顶点对应关系后,最优变换就存在闭合形式的解。ICP算法就是首先确定一个初始解 R 0 , t 0 \mathbf{R}_0,\mathbf{t}_0 R0,t0,然后不断地迭代进行上面两个步骤,直至满足收敛条件。初始解例如可以人为在两个点云上标注4对对应点,然后计算得到,收敛条件可以是变换矩阵的增量小于某个阈值等等。

为了优化ICP算法的效果和速度,还有很多变种,例如:

  • 采样点集进行匹配;
  • 点对进行加权;
  • 拒绝某些特殊点对,例如距离太远的;
  • 点到点的距离,变为点到切平面的距离;

实际上从更根本的角度来看,刚性配准就是最小化一个度量函数
min ⁡ T E ( T ( X ) , Y ) \min_{T}{E(T(\mathbf{X}),\mathbf{Y})} TminE(T(X),Y)
按照我的经验,度量函数 E E E 设置为点云的 chamfer distance,直接进行迭代优化(例如在Pytorch框架下反向传播优化)也能取得不错的配准效果。


非刚性配准

相对于刚性配准,非刚性配准的点云或者mesh是可以产生形变的。变形模板(template, source)用 X = { x 1 , . . . , x m } \mathbf{X}=\{\mathbf{x}_1,...,\mathbf{x}_m\} X={x1,...,xm} 表示,配准目标(target)用 Y = { y 1 , . . . , y n } \mathbf{Y}=\{\mathbf{y}_1,...,\mathbf{y}_n\} Y={y1,...,yn} 表示,变形后的曲面用 X ^ = { x ^ 1 , . . . , x ^ m } \hat{\mathbf{X}}=\{\hat{\mathbf{x}}_1,...,\hat{\mathbf{x}}_m\} X^={x^1,...,x^m} 表示。如果我们用 f Θ ( X ) f_{\Theta}(\mathbf{X}) fΘ(X) 来表示对模板的变形,那么 Θ \Theta Θ 就是我们待优化的参数。一般来说参数量越大,就说明模板变形的自由度越大(一般也配准得越准确),但同时优化难度和开销也越高。

基于“优化”的非刚性配准可以表示如下:
Minimize Θ E ( f Θ ( X ) , Y ) \mathop{\text{Minimize}}\limits_{\Theta} \quad E(f_{\Theta}(\mathbf{X}),\mathbf{Y}) ΘMinimizeE(fΘ(X),Y)
其中 E E E 表示评估两个曲面相似程度的度量函数。

在非刚性配准中,模板会发生形变,因此我们不仅希望变形后模板和目标尽可能对齐,还希望变形后的模板保持一定的形态特点(举个极端例子,模板缩成一个顶点,可能从“对齐”的度量来看是一个最优解),因此往往度量函数会包括正则化的度量。即在非刚性配准中度量函数一般为
E = E align + α E reg E=E_{\text{align}}+\alpha E_{\text{reg}} E=Ealign+αEreg
其中 E align E_{\text{align}} Ealign 是对常见的非刚性配准中“形变场”(deformation field)的度量,常见的形变场的表示方式有:

  • 直接以变形后的顶点坐标 X ^ \hat{\mathbf{X}} X^ 作为优化参数;
  • 每个顶点单独做仿射变换;
  • 采样少部分顶点做仿射变换,其它顶点做采样顶点的加权变换
  • ……

E reg E_{\text{reg}} Ereg 则可以有很多,例如光滑度度量、位置约束、局部形状约束、参数正则化等等。

更多关于非刚性配准的总结,可以参考《A Survey of Non-Rigid 3D Registration》

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
刚性算法是一种解决图像问题的方法,其目标是将两幅或多幅图像进行确的对齐和匹,以便进行后续的分析和处理。 与刚性算法不同,刚性算法允许图像在对齐的过程中发生形变,即图像的局部区域可以发生拉伸、挤压、旋转等变换,以适应图像之间的线性差异性。 刚性算法有很多种,其中比较常用的包括基于特征点(如SIFT、SURF等)的算法、基于图像灰度变化的算法和基于弹性变形模型的算法。 基于特征点的刚性算法是一种广泛应用的方法,其主要步骤包括特征点的检测和匹、相似性变换模型的估计和形变场的计算。该方法可以通过检测图像中的显著特征点,并通过计算特征点之间的相似性变换模型来实现图像的刚性对齐。 基于图像灰度变化的算法是一种基于图像灰度信息的方法,其主要思想是通过优化两幅图像之间的灰度差异来实现图像。该方法可以通过最小化两幅图像之间的灰度差异来估计刚性变换模型,从而实现图像的确对齐。 基于弹性变形模型的刚性算法是一种基于物理模型的方法,其主要思想是将图像的变形看作是一个弹性材料的变形过程,通过求解弹性模型的参数来实现图像的刚性对齐。该方法通常具有较高的确度和鲁棒性。 综上所述,刚性算法是一种解决图像问题的方法,能够确地对齐和匹不同图像之间的线性差异性。不同的刚性算法具有各自的特点和适用范围,在实际应用中可以根据具体情况选择合适的算法进行图像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值