仿射变换矩阵通常是2x3的矩阵。
三个特点:
- 直线依然是直线
- 平行线依然平行
[ x ′ y ′ 1 ] = [ a 11 a 12 b 1 a 21 a 22 b 2 0 0 1 ] [ x y 1 ] x ′ = a 11 ∗ x + a 12 ∗ y + b 1 y ′ = a 21 ∗ x + a 22 ∗ y + b 2 \begin{gathered} \begin{bmatrix}x'\\y'\\1\end{bmatrix}=\begin{bmatrix}a11&a12&b1\\a21&a22&b2\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix} \\ x^{\prime}=a11*x+a12*y+b1 \\ y^{\prime}=a21*x+a22*y+b2 \end{gathered} x′y′1 = a11a210a12a220b1b21 xy1 x′=a11∗x+a12∗y+b1y′=a21∗x+a22∗y+b2
上面的式子表示2D点乘以一个矩阵后加上平移(b1,b2)。
透视变换是3x3的矩阵。
[ X Y Z ] = [ a 11 a 12 b 1 a 21 a 22 b 2 c 1 c 2 c 3 ] [ x y 1 ] \begin{bmatrix}X\\Y\\Z\end{bmatrix} = \begin{bmatrix} a11&a12&b1\\ a21&a22&b2\\ c1&c2&c3 \end{bmatrix} \begin{bmatrix}x\\y\\1\end{bmatrix} \\ XYZ = a11a21c1a12a22c2b1b2c3 xy1
z’ = 1
总的来说,仿射变换保持了更多的几何性质,适用于描述相对简单的几何变换,如平移、旋转、缩放和错切。而透视变换则更加灵活,能够描述更复杂的几何变换,如近大远小的透视效果。