第三章 图像到图像的映射

单应性变换 是将一个平面内的点映射到另一个平面内的二维投影变换

也就是一个1×3的列向量(作为x)与一个3行3列的矩阵(单应性矩阵)点乘得到另一个1×3的列向量(作为x')

需要注意的是对于x,使用的是齐次坐标形式,所谓齐次坐标也就是在原有数据维度的基础上加一,所增加的维度可以看做是尺度定义

单应性矩阵的自由度为8,原因为h9可以被设定为1,因为在齐次坐标形式下,ax与bx是相同的

坐标的归一化:也就是将尺度这个维度数字变为1

仿射变换 包含了一个可逆矩阵A和一个平移向量t,其单应性矩阵形式为[[A t],[0,1]]。特点是保持了尺度为1,可用于图像扭曲

相似变换 包含了尺度变换的二维刚体变换,[[sR t][0 1]] 其中R为旋转矩阵[cos(sigma) -sin(sigma)][sin(sigma) cos(sigma)],s指定了变换的尺度,等距变换+均匀缩放

等距变换 保持欧式距离不变,且sigama=1,保持长度、角度以及面积不变,也就是对图像旋转+平移

计算单应性矩阵需要4个对应点对

应用直接线性变换算法计算单应性矩阵(DLT)

仿射变换具有6个自由度,需要三个对应点估计矩阵

图像扭曲

对图像块应用仿射变换,称为图像扭曲

使用Scipy工具包中的ndimage.affine_transform(im,A,b,size)

线性变换A 平移向量b size用来指定输出图像的大小

图像配准

对图像进行变换,使变换后的图像能够在常见的坐标系中对齐。

实际上是寻找一个相似变换,在对应点之间建立映射

以人脸配准为例,根据眼睛和嘴的坐标(三点)计算出一个相似变换,然后将可以使用该变换的这些图像扭曲到一个归一化的坐标系中。

创建全景图

在同一位置拍摄的两幅或者多幅图像是单应性相关的,需要使用该约束将很多图像缝补起来,拼成一个大的图像来创建全景图像

RANSAC (Random Sample Consensus)随机一致性采样 是用来找到正确模型以拟合带有噪声数据的迭代方法,其基本思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点

1)在数据中随机选择几个点设定为内群

2)计算适合内群的模型

3)把其他刚才没有选到的点带入刚才建立的模型中,计算是否为内群

4)记下内群数量

5)重复以上步骤多次

6)比较哪次计算中内群数量最多,内群最多的那次所建的模型就是所求解

拼接图像:待估计出图像间的单应性矩阵后,需要将所有图像扭曲到一个公共的图像平面上,一般将中心图像左边或者右边的区域填充0,以便为扭曲后的图像腾出空间

此外还需要对单个图像边界上存在的边缘效应进行处理,需要由额外的操作对强度进行归一化,并对平移进行平滑场景转换