1、单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。
点的齐次坐标依赖于其尺度定义,因此单应性矩阵 H H 也仅依赖尺度定义,所以,单应性矩阵具有8个独立的自由度。
仿射变换
或
仿射变换包含一个可逆矩阵 A A 和一个平移向量,仿射变换可以应用于图像扭曲等场景。
相似变换
或
是一个包含尺度变化的二维刚体变换。上式中的向量 s s 指定了变换的尺度,是角度为 θ θ 的旋转矩阵, t=[tx,ty] t = [ t x , t y ] 在这里是一个平移向量。如果 s=1 s = 1 ,那么该变换能够保持距离不变。此时,变换为刚体变换,相似变化可以应用于图像配准等。
2、直接线性变换算法
单应性矩阵可以由两幅图像(或者平面)中对应点对计算出来。每个对应点可以写出两个方程,分别对应与
x
x
和坐标。因此,计算单应性矩阵
H
H
需要4个对应点对。
DLT(Direct Linear Transformation,直接线性变换)是给定4个或者更多对应点对矩阵,来计算单应性矩阵的算法。我们可以得到下面的方程:
或者
其中 A A 是一个具有对应点对二倍数量行数的矩阵。
我们可以使用SVD(Singular Value Decomposion,奇异值分解)算法找到的最小二乘解。
3、仿射变换
放射变换具有6个自由度,因此我们需要三个对应点对来估计矩阵
H
H
。通过将最后两个元素设置为0,即,仿射变换可以用上面的
DLT
D
L
T
算法估计得出。
4、对图像块应用放射变换,我们将其称为图像扭曲(或者放射扭曲)。
扭曲操作可以使用SciPy工具包中的ndimage包来完成。
5、图像配准是对图像进行变换,是变换后的图像能够在常见的坐标系中对齐。
6、创建全景图
在同一位置(即图像的照相机位置相同)拍摄的两幅或者多幅图像是单应性相关的,我们可以使用该约束将很多图像缝补起来,拼成一个大的图像来创建全景图。
7、RANSAC是“RANdom SAmple Consensus”(随机一致性采样)的缩写。给定点集之间的单应性矩阵,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。
8、拼接图像
估计出图像间的单应性矩阵(使用RANSAC算法),现在我们需要将所有的图像扭曲到一个公共的图像平面上。通常,这里的公共平面为中心图像平面。一种方法是创建一个很大的图像,比如图像中全部填充0,使其和中心图像平行,然后将所有的图像扭曲到上面,由于我们所有的图像是由照相机水平旋转拍摄的,因此我们可以使用一个较简单的步骤:将中心图像左边或者右边的区域填充0,以便为扭曲的图像腾出空间。