【学习笔记】仿射变换与透视变换
仿射变换
1 什么是仿射变换
仿射变换(Affine Transformation)其实是另外两种简单变换的叠加:一个是线性变换,一个是平移变换
仿射变换变化包括缩放(Scale、平移(transform)、旋转(rotate)、反射(reflection,对图形照镜子)、错切(shear mapping,感觉像是一个图形的倒影),原来的直线仿射变换后还是直线,原来的平行线经过仿射变换之后还是平行线,这就是仿射。
仿射变换中集合中的一些性质保持不变: (1)凸性 (2)共线性:若几个点变换前在一条线上,则仿射变换后仍然在一条线上 (3)平行性:若两条线变换前平行,则变换后仍然平行 (4)共线比例不变性:变换前一条线上两条线段的比例,在变换后比例不变
2 仿射变换数学表达
f(x) = Ax + b, x ∈ X
仿射变换是二维平面中一种重要的变换,在图像图形领域有广泛的应用,在二维图像变换中,一般表达为: $$ \left[\begin{array}{c} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{ccc} R_{00} & R_{01} & T_x \\ R_{10} & R_{11} & T_y \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] $$ 可以视为线性变换R和平移变换T的叠加
3 仿射变换的理解
要熟练应用仿射变换,则需先理解仿射变换,说白了就是要弄清楚上面的R,T矩阵各个参数代表什么含义,用图像来表达:

平移变换
不难想象,就是将x,y平移指定值,则R矩阵为单位矩阵,T矩阵为指定值,如上图中,第一行第二列图 $$ M=\left[\begin{array}{ccc} 1 & 0 & T_x \\ 0 & 1 & T_y \\ 0 & 0 & 1 \end{array}\right] $$
反射变换
见图最后一行,如相对x轴放射,则x不变,y变为相反号 $$ M=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1 \end{array}\right] $$
旋转变换
关于旋转矩阵,这里详细来看看,网上博客中,有朋友在疑惑旋转矩阵中,sin(θ)的负号位置问题,下面我谈谈我个人想法,若有错误请大家指点。为简单起见,只从一个点的旋转来看….具体请查看原作者博客原文
透视变换
1 什么是透视变换
透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping)。


2 透视变换的数学表达
透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面,其通用变换公式为: $$ \left[\begin{array}{c} X \\ Y \\ Z \end{array}\right]=\left[\begin{array}{lll} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{array}\right]\left[\begin{array}{l} x \\ y \\ z \end{array}\right] $$ 这两篇文章写得很好:(十四)透视变换-CSDN博客、透视变换(Perspective Transformation) - 知乎可以围观一下
