概念
在图像处理中的空间变换(spatial transformation)分成两种情况,有仿射变换(Affine Transformation)及投影变换(Perspective Transformation)。
仿射变换是从一个二维坐标变换到另一个二维坐标,它是一种线性变换,保持了图像的平行性和平直性,即在变换之后,原先图像中的直线与平行线还是保持一致。只是位置存在变化。仿射变换包括平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)。
而投影变换则是指利用投影光束映射图像到投影面上,原始图像与变换后的图像存在着投影变换的关系。
对于数学上的表示而言,这两者都是一样的,始终存在着一个变换矩阵使得原图像与变换后的图像能够互相转换。
举个例子
如上图所示,假设f为原图像,g为变换后图像。
通过一定的变换关系,使得f变换到g。如果我们知道对应角点的坐标,则可以通过以下的式子进行推算。
matlab实现
以下为对应的matlab代码,只要设置对应的xs,ys,xd,yd,即可求出对应的矩阵c
m1 = [xs0,xs1,xs2,xs3;ys0,ys1,ys2,ys3;xs0*ys0,xs1*ys1,xs2*ys2,xs3*ys3;1,1,1,1];
m2 = [xd0,xd1,xd2,xd3;yd0,yd1,yd2,yd3];
% c is the transformation matrix from src to dest
c = m2*inv(m1);
由于矩阵的计算比较复杂,特别是求逆运算,后续将再提供对应C程序。