一、图形变换数学基础

1.图形变换数学基础

1.1 矢量计算、表示

1).矢量长度 :

∣ V ∣ 2 = ( x 1 x 1 + ⋯ + z 1 z 1 ) 1 / 2 {\left| {\rm{V}} \right|_2}{\rm{ = (}}{{\rm{x}}_1}{{\rm{x}}_1}{\rm{ + }} \cdots {\rm{ + }}{{\rm{z}}_1}{{\rm{z}}_1}{{\rm{)}}^{1/2}} V2=(x1x1++z1z1)1/2
2).数乘矢量
α V = ( α x 1 , α y 1 , α z 1 ) \alpha {\rm{V = (}}\alpha {{\rm{x}}_1}{\rm{,}}\alpha {{\rm{y}}_1},\alpha {{\rm{z}}_1}) αV=(αx1,αy1,αz1)
3).矢量点积
V 1 ⋅ V 2 = ∣ V 1 ∣ ∣ V 2 ∣ c o s θ = x 1 x 2 + y 2 y 2 + y 3 y 3 {V_1} \cdot {V_2} = \left| {{V_1}} \right|\left| {{V_2}} \right|cos\theta = {x_1}{x_2} + {y_2}{y_2} + {y_3}{y_3} V1V2=V1V2cosθ=x1x2+y2y2+y3y3
\qquad\qquad (点积满足交换和分配律: V 1 V 2 = V 2 V 1 , V 1 ⋅ ( V 2 + V 3 ) = V 1 V 2 + V 1 V 3 {V_1}{V_2} = {V_2}{V_1},{V_1} \cdot ({V_2} + {V_3}) = {V_1}{V_2} + {V_1}{V_3} V1V2=V2V1,V1(V2+V3)=V1V2+V1V3
4).矢量叉积
V 1 ⋅ V 2 = ∣ i j k x 1 y 1 z 1 x 2 y 2 z 2 ∣ = ( y 1 z 2 − z 1 y 2 , z 1 x 2 − x 1 z 2 , x 1 y 2 − y 1 x 2 ) {{V}_{1}}\cdot {{V}_{2}}=\left| \begin{matrix} i & j & k \\ {{x}_{1}} & {{y}_{1}} & {{z}_{1}} \\ {{x}_{2}} & {{y}_{2}} & {{z}_{2}} \\ \end{matrix} \right|=\left( {{y}_{1}}{{z}_{2}}-{{z}_{1}}{{y}_{2}},{{z}_{1}}{{x}_{2}}-{{x}_{1}}{{z}_{2}},{{x}_{1}}{{y}_{2}}-{{y}_{1}}{{x}_{2}} \right) V1V2= ix1x2jy1y2kz1z2 =(y1z2z1y2,z1x2x1z2,x1y2y1x2)
\qquad\qquad (叉积满足反交换和分配律: V 1 ⋅ V 2 = − V 2 ⋅ V 1 , V 1 ⋅ ( V 2 + V 3 ) = V 1 V 2 + V 1 V 3 {{V}_{1}}\cdot {{V}_{2}}=-{{V}_{2}}\cdot {{V}_{1}},{V_1} \cdot ({V_2} + {V_3}) = {V_1}{V_2} + {V_1}{V_3} V1V2=V2V1,V1(V2+V3)=V1V2+V1V3)

1.2 矩阵计算、表示

1).乘法 C m × n = A m × p ⋅ B p × n , C i j = ∑ k = 1 P a i k ⋅ b k j {{C}_{m\times n}}={{A}_{m\times p}}\cdot {{B}_{p\times n}},{{C}_{ij}}=\sum\limits_{k=1}^{P}{{{a}_{ik}}\cdot {{b}_{kj}}} Cm×n=Am×pBp×n,Cij=k=1Paikbkj
2).矩阵转置性质 ( A T ) T = A , ( M T A M ) T = M T A T ( M T ) T = M T A M {{({{A}^{T}})}^{T}}=A,\\{{\left( {{M}^{T}}AM \right)}^{T}}={{M}^{T}}{{A}^{T}}{{\left( {{M}^{T}} \right)}^{T}}={{M}^{T}}AM (AT)T=A,(MTAM)T=MTAT(MT)T=MTAM
\qquad 对称阵: A + A T A+{{A}^{T}} A+AT
\qquad 反对称阵: A − A T A-{{A}^{T}} AAT
\qquad 证明: ( A − A T ) T = ( − A T ) T + A T = − A + A T = − ( A − A T ) {{\left( A-{{A}^{T}} \right)}^{T}}={{\left( -{{A}^{T}} \right)}^{T}}+{{A}^{T}}=-A+{{A}^{T}}=-\left( A-{{A}^{T}} \right) (AAT)T=(AT)T+AT=A+AT=(AAT)
3).矩阵的逆
\qquad 定义:A,B均为n阶方阵,I为n阶单位阵
\qquad 满足 A B = B A = I , 则 B = A − 1 AB=BA=I,则B={{A}^{-1}} AB=BA=I,B=A1,称AB互逆。
4).Matrix operation properties

  1. 加法交换律和结合律
    A + B = B + A A + ( B + C ) = ( A + B ) + C \begin{aligned} A+B & =B+A \\ A+(B+C) & =(A+B)+C \end{aligned} A+BA+(B+C)=B+A=(A+B)+C
  2. 数乘矩阵,分配律和结合律 a ( A + B ) = a A + a B a ( A ⋅ B ) = ( a ⋅ A ) ⋅ B = A ⋅ a B \begin{array}{c} a(A+B)=a A+a B \\ a(A \cdot B)=(a \cdot A) \cdot B=A \cdot a B \end{array} a(A+B)=aA+aBa(AB)=(aA)B=AaB
  3. 矩阵乘法的结合律 A ( B ⋅ C ) = ( A ⋅ B ) C A(B \cdot C)=(A \cdot B) C A(BC)=(AB)C
  4. 矩阵乘法对加法的分配律 ( A + B ) C = A C + B C C ( A + B ) = C A + C B \begin{array}{l} (A+B) C=A C+B C \\ C(A+B)=C A+C B \end{array} (A+B)C=AC+BCC(A+B)=CA+CB
  5. 矩阵乘法不具备交换律 A ⋅ B ≠ B ⋅ A A \cdot B \neq B \cdot A AB=BA

1.3 线性方程组求解

{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n \left\{\begin{array}{l} a_{11} x_1+a_{12} x_2+\cdots+a_{1 n} x_n=b_1 \\ a_{21} x_1+a_{22} x_2+\cdots+a_{2 n} x_n=b_2 \\ \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \cdots \\ a_{n 1} x_1+a_{n 2} x_2+\cdots+a_{n n} x_n=b_n \end{array}\right. a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯an1x1+an2x2++annxn=bn
表示AX=B,A为系数矩阵(方阵)。解为
X = A − 1 B X={{A}^{-1}}B X=A1B
解判定:
a) r ( A ) = r ( [ A ∣ B ] ) = n r(A)=r([A\left| B \right.])=n r(A)=r([AB])=n, \qquad 有唯一解
b) r ( A ) = r ( [ A ∣ B ] ) < n r(A)=r([A\left| B \right.])<n r(A)=r([AB])<n, \qquad 有无穷多解
c) r ( A ) ≠ r ( [ A ∣ B ] ) r(A)\ne r([A\left| B \right.]) r(A)=r([AB]), \qquad \qquad 无解

2. 二维几何变换

2.1 平移

  • ( x , y ) 向方向 ( d x , d y ) 平移后的坐标为 ( x , y ) \left( x,y \right)向方向\left( dx,dy \right)平移后的坐标为\left( x,y \right) (x,y)向方向(dx,dy)平移后的坐标为(x,y)
    x ′ = x + d x y ′ = y + d y \begin{align} & x'=x+dx \\ & y'=y+dy \\ \end{align} x=x+dxy=y+dy
  • 矩阵表示
    [ x ′ y ′ 1 ] = [ 1 0 d x 0 1 d y 0 0 1 ] [ x y 1 ] = T [ x y 1 ] \left[ \begin{matrix} x' \\ y' \\ 1 \\ \end{matrix} \right]=\left[ \begin{matrix} 1 & 0 & dx \\ 0 & 1 & dy \\ 0 & 0 & 1 \\ \end{matrix} \right]\left[ \begin{matrix} x \\ y \\ 1 \\ \end{matrix} \right]=T\left[ \begin{matrix} x \\ y \\ 1 \\ \end{matrix} \right] xy1 = 100010dxdy1 xy1 =T xy1
    eg.translation (1,1).
    在这里插入图片描述

2.2 旋转

  • 绕原点旋转
    [ x ′ y ′ 1 ] = [ x cos ⁡ θ − y sin ⁡ θ x sin ⁡ θ + y cos ⁡ θ 1 ] = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ x y 1 ] = R ( θ ) [ x y 1 ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{c} x \cos \theta-y \sin \theta \\ x \sin \theta+y \cos \theta \\ 1 \end{array}\right]=\left[\begin{array}{ccc} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] = R(\theta)\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = xcosθysinθxsinθ+ycosθ1 = cosθsinθ0sinθcosθ0001 xy1 =R(θ) xy1
    eg.rotato 45 degrees around(0,0).
    在这里插入图片描述

  • ( x 0 , y 0 ) \left( {{x}_{0}},{{y}_{0}} \right) (x0,y0)旋转,分三个步骤:a.平移。b.旋转。c.反平移。其中 ( d x , d y ) = ( x 0 , y 0 ) \left( {{d}_{x}},{{d}_{y}} \right)=\left( {{x}_{0}},{{y}_{0}} \right) (dx,dy)=(x0,y0).
    [ x ′ y ′ 1 ] = [ 1 0 d x 0 1 d y 0 0 1 ] [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0 0 0 1 ] [ 1 0 − d x 0 1 − d y 0 0 1 ] [ x y 1 ] = T ′ R ( θ ) T [ x y 1 ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{lll} 1 & 0 & d x \\ 0 & 1 & d y \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{ccc} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{ccc} 1 & 0 & -d x \\ 0 & 1 & -d y \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right]=T^{\prime} R(\theta) \mathrm{T}\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = 100010dxdy1 cosθsinθ0sinθcosθ0001 100010dxdy1 xy1 =TR(θ)T xy1
    eg. rotato 45 degrees around(0.5,0.5).
    在这里插入图片描述

2.3 缩放

  • 原点缩放, 缩放系数 ( S x , S y ) ({{S}_{x}},{{S}_{y}}) (Sx,Sy)
    [ x ′ y ′ 1 ] = [ S x ⋅ x S y ⋅ y 1 ] = [ S x 0 0 0 S y 0 0 0 1 ] [ x y 1 ] = S [ x y 1 ] \left[\begin{array}{c} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{c} S_x \cdot x \\ S_y \cdot y \\ 1 \end{array}\right]=\left[\begin{array}{ccc} S_x & 0 & 0 \\ 0 & S_y & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right]=S\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = SxxSyy1 = Sx000Sy0001 xy1 =S xy1
    eg.
    在这里插入图片描述
  • 定点 ( x 0 , y 0 ) ({{x}_{0}},{{y}_{0}}) (x0,y0)缩放, 缩放系数 ( S x , S y ) ({{S}_{x}},{{S}_{y}}) (Sx,Sy).分三步:a.Translation ( − x 0 , − y 0 ) \left( -{{x}_{0}},-{{y}_{0}} \right) (x0,y0).b Scale c.Reverse translation ( x 0 , y 0 ) \left( {{x}_{0}},{{y}_{0}} \right) (x0,y0)
    eg.
    在这里插入图片描述

2.4 Summary

对于二维齐次坐标变换形式
[ a b c d e f g h i ] \left[\begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i \end{array}\right] adgbehcfi

  • [ a b d e ] \left[\begin{array}{ccc}a & b \\d & e \end{array}\right] [adbe]可以对图形进行缩放、旋转、对称、错切等变换
  • [ c f ] \left[\begin{array}{ccc} c \\ f \end{array}\right] [cf]完成图像平移操作
  • [ g h ] \left[\begin{array}{ccc}g & h \end{array}\right] [gh] 对图像做投影变换
  • [ i ] \left[\begin{array}{ccc}i \end{array}\right] [i]对图像整体做缩放变换

2.5 其他常见变换

1. 对称变换

[ x ′ y ′ 1 ] = [ a x + b y d x + e y 1 ] = [ a b 0 d e 0 0 0 1 ] [ x y 1 ] \left[\begin{array}{c} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{c} a x+b y \\ d x+e y \\ 1 \end{array}\right]=\left[\begin{array}{lll} a & b & 0 \\ d & e & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = ax+bydx+ey1 = ad0be0001 xy1
该变换只有在a,b,d,e取0,1特定值时,能产生特定效果。如

  • x ′ = x , y ′ = − y x'=x,y'=-y x=x,y=y,变换与x轴对称.(a=-1,e=-1,b=d=0)
  • 与y轴对称,同理。
  • y = x y=x y=x对称, x ′ = y , y ′ = x x'=y,y'=x x=y,y=x
  • 与原点对称,同理。

2. 错切(错位)变换

  • 沿x轴错切,y不变,x随(x,y)变化, S H x SH_x SHx关于x的函数。
    [ x ′ y ′ 1 ] = [ x + S H x ⋅ y y 1 ] = [ 1 S H x 0 0 1 0 0 0 1 ] [ x y 1 ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{c} x+S H_x \cdot y \\ y \\ 1 \end{array}\right]=\left[\begin{array}{ccc} 1 & S H_x & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = x+SHxyy1 = 100SHx10001 xy1
  • 沿y轴错切,同理

3. 仿射变换

该变换可由5种特殊的一般变换形式而组合。(平移,比例,旋转,对称,错切)
[ x ′ y ′ 1 ] = [ a x + b y + e c x + d y + f 1 ] = [ a b e c d f 0 0 1 ] [ x y 1 ] \left[\begin{array}{l} x^{\prime} \\ y^{\prime} \\ 1 \end{array}\right]=\left[\begin{array}{c} a x+b y+e \\ c x+d y+f \\ 1 \end{array}\right]=\left[\begin{array}{lll} a & b & e \\ c & d & f \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{l} x \\ y \\ 1 \end{array}\right] xy1 = ax+by+ecx+dy+f1 = ac0bd0ef1 xy1
eg.对任意一直线 l 1 A x + B y + C = 0 l_1Ax+By+C = 0 l1Ax+By+C=0做坐标对称变化。可以依次5个步骤完成变换。原始坐标为 P ( x , y ) P(x,y) P(x,y),变换后坐标为 P ′ ( x ′ , y ′ ) P'(x',y') P(x,y).
变换矩阵为 T = T 5 ⋅ T 4 ⋅ T 3 ⋅ T 2 ⋅ T 1 T=T_5 \cdot T_4 \cdot T_3 \cdot T_2 \cdot T_1 T=T5T4T3T2T1:

  • T 1 T_1 T1平移变换,使得 l 1 l_1 l1的x轴截点(-C/A,0)与原点重合
  • T 2 T_2 T2旋转变换,使得 l 1 l_1 l1与x轴重合, θ = arctan ⁡ ( − A / B ) \theta =\arctan (-A/B) θ=arctan(A/B),(这里不考虑B=0,需要则自行考虑)。
  • T 3 T_3 T3对称变换,做绕x轴的对称变换。
  • T 4 T_4 T4旋转变换的逆变换,对于 T 2 T_2 T2来说 θ ′ = − θ \theta'=-\theta θ=θ
  • T 5 T_5 T5平移变换的逆变换,相对于 T 1 T_1 T1

即可求的 P ′ = T P P'=TP P=TP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值