第三章 图像到图像的映射
单应性变换 是将一个平面内的点映射到另一个平面内的二维投影变换
也就是一个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,以便为扭曲后的图像腾出空间
此外还需要对单个图像边界上存在的边缘效应进行处理,需要由额外的操作对强度进行归一化,并对平移进行平滑场景转换