计算机视觉的转换-Affine Transformations和Homography讲解

1,971 阅读10分钟

照片:克里斯托弗-伯恩斯Christopher Burns)在Unsplash上的照片

入门指南

了解计算机视觉中的变换。

平行变换和同位素的概述

内容

  • 仿生变换
  • 同位法

- 同质坐标

- 针孔相机模型

- 同位法的方程式

  • 参考文献

变换是计算机视觉的一个重要组成部分,了解它们的工作原理为更多的高级技术奠定了基础。

在这里,我将主要介绍仿生变换同构图。

仿生变换。

仿射变换是最简单的变换形式。这些变换也是线性的,因为它们满足以下属性。

  • 线条映射到直线
  • 点映射到点
  • 平行线保持平行

一些熟悉的仿生变换的例子是平移扩张旋转剪切反射。此外,这些变换的任何组合(如扩张后的旋转)是另一种仿生变换。

基本仿生变换的例子(图片由作者提供

与其把仿生变换分割成不同的情况,不如有一个统一的定义来的更优雅。因此,我们转向使用矩阵作为线性变换来定义仿生变换。如果你不熟悉将矩阵解释为空间的线性变换,3Blue1Brown有一个关于这个主题的优秀视频。

medium.com/media/82745…

从本质上讲,我们可以把仿生变换看作是先用矩阵进行某种线性变换,然后用某种平移来组成。

在二维情况下,仿生变换的方程如下。

二维仿生变换的方程(图片由作者提供

这里,矩阵代表了有条目_(x1_和_x2_)的向量上的某种线性变换,例如反射、剪切、旋转、扩张或所有四种变换的组合。值得注意的是,由于变换是线性的,它也必须是可逆的,所以矩阵的行列式是非零的。变换的最后一步是通过向量_[t1_,t2]进行平移,完成对向量_[y1_,y2]的变换。

二维仿生变换的例子(图片由作者提供

仿生变换也可以用下面的方程推广到_n_维。

n维仿生变换的等式

这种变换通过应用线性变换_A_(其中_A_ 是一个_n×n_的可逆矩阵)将向量_x_ 映射到向量_y_上,然后应用向量_b_ _(b_的维度为_n_×1)进行平移。

总之,仿生变换可以表示为由一些平移组成的线性变换,它们在修改计算机视觉的图像方面非常有效。事实上,图像预处理在很大程度上依赖仿射变换来进行缩放、旋转、移位等。

同构图。

同源变换是投影变换的一种类型,我们利用投影将两个图像联系起来。同源变换最初是为了研究视角的变化而引入的,它们使人们能够更好地理解当我们从不同的视角看图像时,图像是如何变化的。

使用同位素转换视角(来源:马里兰大学)。

同位素的研究是通过研究相机根据其位置和方向采集不同的图像这一事实进行的。从本质上讲,同构图是同一场景的两幅图像之间的转换,但视角不同。有两种仅适用于同构的情况(这两种情况都假定世界观可以用平面来建模)。

  1. 图像由同一台摄像机拍摄,但角度不同 (世界现在基本上是一个平面)。
  2. 两台相机从不同的位置观察同一个平面

鸟瞰图中同构的两种情况(图片由作者提供)。

然而,为了使用同构图,我们必须首先设计工具来描述一个图像在相机上的结果。更具体地说,如果我们得到一个相机 的位置/方向和一个 图像平面(这是图像出现的地方,是相机的一个属性),我们必须找到世界上的一个点(称为世界点)在图像平面上的位置。

找到图像上的点的坐标是同位素分析的关键(图片由作者提供)。

因为光是以直线传播的,我们知道一个具有直角坐标_(X,Y,Z_)的世界点出现在图像平面上,即图像平面与穿过相机中心和世界点的直线的交点(这条直线是光到达相机的路径)。

然而,为了正确定义这个公式,我们必须绕过投影几何中的一个概念,即同质坐标。

同质坐标。

同质坐标(或投影坐标)是另一个坐标系,其优点是同质坐标的公式往往比直角坐标X-Y_平面上的点)简单得多。相比之下,同构坐标使用3个坐标(x_'、y'、z')来表示空间中的点(一般来说,它们比笛卡尔坐标多用一个坐标)。作为一种奖励,将同质坐标转换为笛卡尔坐标是比较简单的。

将同质坐标转换为直角坐标

请注意,当_z'=1时,同质坐标很好地映射到笛卡尔坐标。此外,当_z'=0时,我们将相应的直角坐标解释为无限大的一个点。考虑到这一点,让我们来看看同源坐标的一些应用。

首先,同质坐标中的线可以只用3个点来表示。特别是,你可以在同质坐标中用_(l_1, l2l3)来表示一条直线_l_。那么,这条线就是所有点_p=__(x_,y,z)的集合,使得_l_与_p_ 的点积为0。

用同质坐标表示的直线(图片由作者提供

第二个值得注意的性质是,给定两点_p1_=(abc)和_p2_=(def),经过_p1_和_p2_的直线_l_ 是由这两点的交叉积(初级线性代数中定义的对两个向量的运算)给出的。

同质坐标中两点间的直线(图片由作者提供

最后一个值得注意的性质是,两条直线_l1_和_l2_的交点(在同质坐标中)是由这两条直线的交积给出的点_p_。

两条线在同质坐标中的交点(图片由作者提供

有了这些特性,我们现在就可以很好地理解同构图背后的公式了。

针孔摄像机模型。

我们现在回到我们的问题,即找到世界点(XYZ)--这是在笛卡尔坐标中--位于给定的相机的位置和方向的相机的图像平面

特别是,我们发现世界点_(X_,YZ,1)位于图像平面的点_(X'Y'Z')上,这两个点都是同质坐标,并由以下方程相关(f_ 是描述相机焦距的常数)。

世界点的同质坐标与像平面上的同质坐标的关系方程

从这里,我们可以将_(x_',y',z')转换成前面所述的图像平面上的直角坐标_(x_,y)。

事实证明,将世界点转换为图像平面上的点的矩阵可以被很好地分解,给我们一个直观的方法来理解矩阵的作用。

矩阵可以被理解为两个动作。(1) 缩放,(2) 压缩到一个较低的维度

然而,由于图像上的坐标系与笛卡尔坐标不同(在像素坐标中,左上角是(0,0)),我们必须进行最后一次转换,将同质的图像平面坐标_(x'y'z')转换成同质的像素坐标(u'_,v'w')。

像素坐标的表示(图片由作者提供

因此,我们首先缩放我们的图像平面坐标(为了将其转换为像素),除以像素的大小,即_u_ 方向的_ρu_和_v_方向的_ρv_。你可以认为这是从米这样的单位转换为像素。接下来,我们必须通过一些_u0_和_v0_对坐标进行平移,使像素坐标的原点位于适当的位置。把这两个转换放在一起,我们就可以得到以下公式。

将图像平面坐标转换为像素坐标。

最后,把所有东西放在一起,我们可以通过把世界点_(X_,YZ,1)转换为像素坐标_(u'_,v'w')来完成我们的相机模型,其中两者都是以同质坐标给出的。

相机模型的方程式

外在参数可以被认为是给我们提供摄像机的方向(存储在旋转矩阵_R_中)和位置(存储在矢量_t_中)的信息的一个术语。

在实践中,我们往往不知道所有的参数,所以我们可以用相机矩阵来代替近似,这只是一些3×4的矩阵(通过矩阵乘法特性);这是通过校准相机来完成的。

此外,摄像机矩阵的一个重要属性是,对_C_的条目进行缩放,可以得到一个描述同一摄像机的新摄像机矩阵。这是因为如果我们将_C_乘以某个常数_λ_,那么 同质 像素坐标的所有条目也将被_λ_缩放。然而,当我们从同质坐标转换到笛卡尔坐标时(前面已经显示过),_λ_被抵消,留下的是与缩放前相同的笛卡尔坐标。因此,让相机矩阵的右下条目为1已经成为惯例,因为比例因子是任意的。

照相机矩阵的标准形式

有了这些方程的定义,我们就非常接近于获得一个同构图的公式。

同位素的方程式。

再一次,让我们检查一下针孔摄像机的设置。在这个设置中,我们的相机将拍摄位于一个平面上的点_P_=(X,Y,Z),其中一个点_P_在图像平面上的同质像素坐标显示为_(u',v'__,w')。现在,我们可以在坐标系的选择上运用一个巧妙的技巧。也就是说,我们让_X_轴和_Y_轴位于平面内,使_Z 轴指向平面外。因此,平面上所有点的_Z_坐标都是0,意味着_P_的形式是_P_=(XY,0)。

坐标系的方便选择**(所示坐标是** 同质的)(图片由作者提供

现在,将其代入我们的相机方程,并使用_Z_=0,我们得到以下简化结果。

利用相机方程中的Z=0的优势

这个新的相机矩阵被称为同源 矩阵 H,有8个未知项(因为右下角的1是固定的)。传统上,平面同传矩阵的条目用_H_ 而不是_C_来表示,如下图所示。

平面同源矩阵的方程式

由于同域矩阵中有8个未知数,而平面上的每个世界点都有2个坐标,我们需要在4个世界点上校准相机 ,以估计_H_的所有条目。

回顾一下,同构图是一种转换,当两幅图像都是同一平面的图片,但视角不同时,我们可以用它来将一幅图像转换成另一幅。在数学上,这种转换是由同源矩阵进行的,它是一个3×3的矩阵,有8个未知数,可以通过用4个相应的点来校准图像来估计(使用更多的点可以得到更好的近似值,但4点是最小的要求)。

带有黄色校准点的同构图示例(图片由作者提供

总而言之,同构图是一个强大的工具,可应用于增强现实 (将某些图像投射到环境中)和图像拼接(将多张图像合并以创建一个更大的全景图)等领域。