1. 程式人生 > >映象矩陣(Reflection)

映象矩陣(Reflection)

        映象(反射)矩陣是n維空間中的沿n-1維平面的一種矩陣變換,常見的應用場景是在2維空間影象處理、3維空間物體場景變換。先直觀看看映象變換的效果:

                                                 

        直觀的感受了映象變換的效果之後,接下來我們看看這個變換的數學表示式是什麼樣的。首先n維度空間的映象變換是基於某個n-1維度平面(對於2維度就是某條直線)來說的,線性代數的知識知道n維空間的n-1維平面存在法向量,假設u=(u_{1},u_{2},...,u_{n})是要做映象平面的單位法向量,單位法向量||u||=1,定義映象矩陣Q=I-2uu^{T}

        1. Q是對稱和標準正交的,\because

 Q^{T}=(I-2uu^{T})^{T}=I-2uu^{T}\therefore Q是對稱的。\becauseQ^{T}Q=I-4uu^{T}+4uu^{T}uu^{T}=I\thereforeQ是標準正交的。如果對矩陣運算背後的原理不太熟悉,我們也可以將Q展開:

        Q=I-2uu^{T}=\begin{bmatrix} 1-2u_{1}^{2} &-2u_{1}u_{2} &... &-2u_{1}u_{n} \\ -2u_{2}u_{1}&1-2u_{2}^{2} &... &-2u_{2}u_{n} \\ ...& ... & ... &... \\ -2u_{n}u_{2} & -2u_{n}u_{2} &... & 1-2u_{n}^{2} \end{bmatrix}

        由Q的矩陣展開形式,很明顯看到Q_{ij}=Q_{ji}=-2u_{i}u_{j},i\neq j,所以Q是對稱的。標準正交:q_{i},q_{j}是Q的兩列,由標準正交的定義,需要滿足如下條件:

        q_{i}q_{j}=\begin{cases} 0& \text{ if } x\neq j \\ 1& \text{ if } x=j \end{cases}

        q_{i}q_{j}=(1-2u_{i}^2)^{2}+4u_{i}^2u_{1}^2+...+4u_{i}^{2}u_{n}^2

                =1+4u_{i}^4-4u_{i}^2+4u_{i}^2u_{1}^2+...+4u_{i}^{2}u_{n}^2

                =1+4u_{i}^2(u_{1}^{2}+...+u_{n}^{2})-4\overset{||u||^{2}=1}{\rightarrow}

                =1 (i=j)

         q_{i}q_{j}=(1-2u_{i}^2)(-2u_{i}u{j})+(1-2u_{j}^{2})(-2u_{j}u_{i})+4u_{i}u_{j}u_{1}^2+...4u_{i}u_{j}u_{k}^2...+4u_{i}u_{j}u_{n}^2,k\neq i,j

                      =-4u_{i}u_{j}+4u_{i}u{j}(u_{1}^2+...+u_{n}^2)

                      =0

         2.Q^{2}=Q^{T}Q=I,這條性質反應了映象的特點,映象兩次等於原空間。

        上面是映象矩陣的定義和它的一些性質和推導,那麼我們再做一點深層次的思考:為什麼映象的表達會是一個矩陣變換,如果我做旋轉是不是也是一個矩陣變換?首先,問題2的答案:YES,2維空間的旋轉的變換矩陣是:\begin{bmatrix} cos\Theta & -sin\Theta \\ sin\Theta& cos\Theta \end{bmatrix}

        對於問題1,矩陣變換的本質可以理解成座標系的變換,對於映象和旋轉我們都是對原座標系中的向量(座標系中的點可以表示成原點指向該點的向量)用新的座標系中的基進行了表示。比如二維直角座標系x0y的座標基向量是(1,0)和(0,1),如果用矩陣表示:\begin{bmatrix} 1 &0 \\ 0 &1 \end{bmatrix},基向量就是矩陣的列向量,(1,1)點這個座標系下的座標(x,y)由方程組\begin{bmatrix} 1 &0 \\ 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} 1\\ 1 \end{bmatrix}求得(x,y)=(1,1)因為在原座標系下,假設我們對(1,1)點做沿x軸做映象,這裡的映象很簡單,x軸和原座標系相同,y軸與原座標系反號,所以映象之後新的座標系基向量是(1,0)和(0,-1)(如果你通過上面的映象公式可以求得同樣的答案,u=(0,1)),新的座標系的矩陣表示\begin{bmatrix} 1 &0 \\ 0 &-1 \end{bmatrix}

,原座標系下(1,1)點在新座標系下的座標有方程組\begin{bmatrix} 1 &0 \\ 0 &-1 \end{bmatrix}\begin{bmatrix} x\\ y \end{bmatrix}=\begin{bmatrix} 1\\ 1 \end{bmatrix}求得(x,y)=(1,-1),和我們直觀認知一樣:

                                                     

        最後我們說說2維度空間和3維空間的映象矩陣的表示式,首先是2維空間,對於2-D空間的某個條直線做映象,假設該直線的單位法向量u(x,y),由Q=I-2uu^{T}計算得到2-D空間的映象矩陣:

        Q_{2d}=\begin{bmatrix} 1-2x^{2} &-2xy \\ -2xy& 1-2y^{2} \end{bmatrix}

        對於3-D空間的某平面做映象:

        Q_{3d}=\begin{bmatrix} 1-2x^{2} &-2xy &-2xz \\ -2xy& 1-2y^{2} &-2yz \\ -2xz& -2yz &1-2z^{2} \end{bmatrix}