1. 程式人生 > >MVG學習筆記(9) --2D投影平面

MVG學習筆記(9) --2D投影平面

2.2 2D投影平面

  眾所周知,平面中的一個點可以用IR2\mathcal{\rm IR}^2中的座標對(x,y)(x,y)表示。 因此,通常用IR2\mathcal{\rm IR}^2識別平面。 將IR2\mathcal{\rm IR}^2視為向量空間,座標對(x,y)(x,y)是向量 - 將點標識為向量。 在本節中,我們將介紹平面上點和線的齊次座標表示方法。

行向量和列向量

  我們考慮向量空間之間的線性對映,並將這些對映表示為矩陣。

  通常情況下,矩陣和向量的乘積是另一個向量,這個像被我們稱為對映下的像。

相信大家應該線上性代數學過像與原像的概念

  這引出了“列”和“行”向量之間的區別,因為矩陣可以在右側乘以列向量而在左側乘以行向量。

  例如:

[abcd][cd]\left[ \begin{matrix} a & b \\ c & d\end{matrix} \right] \left[ \begin{matrix} c \\ d \end{matrix} \right]

[cd][abcd] \left[ \begin{matrix} c & d \end{matrix} \right]\left[ \begin{matrix} a & b \\ c & d\end{matrix} \right]

  預設情況下,幾何實體將由列向量表示。 諸如 x\rm x 的粗體符號總是表示列向量,並且其轉置是行向量xT\rm x^T。 根據慣例,平面中的點將由列向量(x,y)T(x,y)^{\rm T}表示,而不是其轉置,行向量(x,y)(x,y)。 我們記x=(x,y)T{\rm x} = (x,y)^{\rm T},該等式的兩邊代表列向量。

點和線

線的齊次表示

  平面中的線由諸如ax+by+c=0ax+by+c=0的等式表示,aabbcc的不同選擇產生不同的線。因此,線可以自然地由向量(a,b,c

)T(a,b,c)^{\rm T}表示。

  線和向量(a,b,c)T(a,b,c)^{\rm T}之間的對應關係不是一對一的,因為對於任何非零常數kk,線ax+by+c=0ax+by+c=0(ka)x+(kb)y+(kc)=0(ka)x+(kb)y+(kc)=0是同一條直線。 因此對於任何非零kk,向量(a,b,c)T(a,b,c)^{\rm T}k(a,b,c)Tk(a,b,c)^{\rm T}表示相同的線。

  實際上,通過整體縮放相關的兩個這樣的向量被認為是等價的。 在這種等價關係下的等價類向量被稱為齊次向量。 任何特定的向量(a,b,c)T(a,b,c)^{\rm T}都是等價類的代表。IR3\mathcal{\rm IR}^3中的向量等價類集合 - (0,0,0)T(0,0,0)^{\rm T}形成投影空間IP2\mathcal{\rm IP}^2。 符號-(0,0,0)T(0,0,0)^{\rm T}表示排除了與任何行不對應的向量(也就是沒有一條直線可以通過這個向量表示)。

點的齊次表示

  當且僅當ax+by+c=0ax+by+c=0時,我們可以說,點x=(x,y)T{\rm x} = (x,y)^{\rm T}位於線l=(a,b,c)T{\rm l}=(a,b,c)^{\rm T}上。這可以用表示向量的內積來表示點,即(x,y,1)(a,b,c)T=(x,y,z)l=0(x,y,1)(a,b,c)^{\rm T}=(x,y,z) {\rm l}=0; 也就是說,IR2\mathcal{\rm IR}^2中的點(x,y)T(x,y)^{\rm T}通過加最後一維座標為1從而表示為三維向量。

  注意,對於任何非零常數kk和線l\rm l,等式(kx,ky,k)l=0(kx,ky,k){\rm l}=0當且僅當(x,y,z)l=0(x,y,z) {\rm l}=0時,因此,考慮k的變化值的向量集(kx,ky,k)T(kx,ky,k)^{\rm T}是在IR2\mathcal{\rm IR}^2中的點(x,y)T(x,y)^{\rm T}的表示。

  因此,正如線一樣,點也可以由齊次矢量表示。

  表示點的任意齊次向量具有x=(x1,x2,x3)T{\rm x}=(x_1,x_2,x_3)^{\rm T}的形式,表示在IR2{\rm IR}^2中的點(x1/x3,x2/x3)T(x_1/x_3,x_2/x_3)^{\rm T}

   因此,作為齊次向量的點也是IP2\rm IP^2的元素。

  一個有一個簡單的方程來確定一個點何時在一條線上,即

結論1  x\rm x在直線l\rm l上當且僅當xTl=0\rm x^Tl=0

  值得注意的是xTl\rm x^Tl是兩個向量x\rm xl\rm l的內積或標量積,即xTl=lTx=xl\rm x^Tl=l^Tx=x\cdot l

  一般我們更喜歡lTx\rm l^Tx,偶爾也會用\cdot去表示內積。

  要注意,我們把x=(x1,x2,x3)T{\rm x}=(x_1,x_2,x_3)^{\rm T}稱為點的齊次座標,這是三維向量。把(x,y)T(x,y)^{\rm T}稱為非齊次座標,這是二維向量。

自由度

  為指定一個點,我們必須提供兩個值,就是它的xx-座標和yy-座標。那麼對於直線呢?這裡一條直線,也是由兩個引數指定(兩個獨立的比率{a:b:c}\{a:b:c\}),因而有兩個自由度。

  有人疑惑道,這不是三個未知的引數麼,怎麼會說是兩個自由度。這裡,我們可以把c看成是已知量,即為1。考慮到前面說的齊次座標的等價性。我們可以把表示直線的(a,b,c)T(a,b,c)^{\rm T}化成等價的齊次座標表達(a/c,b/c,1)T(a/c,b/c,1)^{\rm T},這裡值得注意的是其中cc不等於0才會成立。當然了,我們這裡是取cc不等於0為例子。前面的意思是這兩個獨立的比率是兩兩之間的,只要存在兩個比率,就能確保出a,b,ca,b,c三個數字,這兩個比率就是自由