图像拼接-ANNAP算法推导与解释

103 阅读4分钟

算法思路

1. 局部单应性模型(针对重叠区域)

这个地方可以参考APAP

2. 单应矩阵线性化(针对非重叠区域但临近重叠区域)

​编辑


“非匹配区域”是指不重叠的区域,那为什么还存在“相对应的点”呢?

        解释:非匹配点区域(通常为非重叠区域)确实不存在在两张待拼接图像中直接对应的点,但在处理过程中会人为定义一些 “对应点” 来辅助计算和处理。

锚点的概念:在单应性线性化部分,为了处理非重叠区域的变换,引入了锚点(anchor points)的概念。这些锚点位于重叠区域和非重叠区域的边界上,它们在重叠区域内是有对应点的,通过这些在重叠区域内的对应点计算出的局部单应性等信息,来为非重叠区域的计算提供基础

计算加权平均变换:对于非重叠区域中的任意点q,其变换是通过边界上锚点p的线性化单应性的加权平均来计算的。这里的锚点p是在边界上选取的,它们在重叠区域内是有匹配点的,利用这些锚点以及其相关计算来确定非重叠区域内点的变换,从而在一定程度上解决非重叠区域的透视畸变等问题,使得整个拼接过程更加自然和准确。

        也就是说,虽然非重叠区域本身不存在直接的对应点,但通过边界上有对应点的锚点来进行相关计算和处理,以实现对非重叠区域的合理变换估计。

在哪里“线性化近似”?为什么要“线性化近似”?

  1. 线性化的含义:所谓的“线性化”是指将原本非线性的单应性变换在局部(即在点p的邻域内)近似为一个线性模型。这种线性模型更容易处理,因为它简化了计算,并且减少了在非重叠区域由于非线性变换引起的透视失真。
  2. 为什么需要线性化:在线性化之前,单应性变换在非重叠区域的外推会产生极端和不自然的缩放效果,导致严重的透视失真。通过线性化,我们可以减少这种失真,使得图像拼接的结果更加自然和准确。线性化处理后的单应性变换在非重叠区域的行为更加平滑,减少了由于非线性变换带来的不连续性和失真。(通俗解释版:将非线性输入信号分割成若干段,在每一段内部,输入与输出之间的关系可以视为线性的。 通过这种方式,可以有效地降低非线性带来的影响,提高测量精度)

3. 全局相似转换(距离重叠区域更远的全景图像部分)

  1. 特征点匹配和异常值剔除:首先,通过特征点匹配(如SIFT)找到对应点,然后使用RANSAC算法剔除异常值。
  2. 分组对应点:使用RANSAC算法,设置不同的阈值εg和εl,找到具有最大内点数的平面的单应性,并重复此过程直到内点数小于η。每组内点对应一个相似变换。(这一步很重要,主要是实现了点的分组)
  3. 选择最优相似变换:计算每组内点的相似变换,然后检查对应的旋转角度,并选择旋转角度最小的那个作为最优全局相似变换。(通俗解释:其实就是对每个组,用组里的点来计算一个相似变换矩阵)

​编辑

  • 对于每个相似变换,计算其旋转角度,并选择旋转角度最小的变换作为全局相似变换。
  • 选择旋转角度最小的原因是,这通常意味着相机运动更接近于纯平移,这在实际拍摄中更为常见。

4. 全局相似变换的整合(将全局相似变换整合到整个图像)

上面已经算出来了全局相似变换,现在要把3.3里的全局相似整合到重叠区域,这样做可以在保持重叠区域对齐的同时,优化整个图像的透视效果。也就是在整个目标图像中平衡局部单应性和全局相似性。