一、涉及函数及原理:
1、Haffine_from_points函数
计算单应性矩阵H,仿射变换,使得tp是fp经过仿射变换H得到的。该函数会返回给定对应点对的最优仿射变换。该函数是使用对应点对来计算过仿射变换矩阵。
- 仿射变换
仿射变换属于单应性变换,单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。仿射变换就是允许图像任意伸缩的变换,可以保持原来的线共点,点共线的关系不变,保持原来相互平行的线仍然平行,保持原来的中点仍然是中点,保持原来在一直线上几段线段之间的比例关系不变。但是仿射变换不能保持原来的线段长度不变,也不能保持原来的夹角角度不变。如下图:
仿射变换包含一个可逆矩阵A和一个平移向量t=[tx,ty]。
Haffine_from_points函数代码:
from pylab import *
def Haffime_from_points(fp,tp):
if fp.shape !=tp.shape:
raise RuntimeError('number of point do not match')
#对点进行归一化
#映射起始点
m = mean(fp[:2],axis=1)
maxstd=max(std(fp[:2],axis=1))+1e-9
C1 = diag([1