一、什么是齊次坐標和齊次坐標系
齊次坐標
齊次坐標是一個相機標定問題的關鍵理論之一,所以就此問題分析一下。
單從定義上來講,齊次坐標(投影坐標)就是用N+1維來代表N維坐標(點和向量),也可說用齊次坐標來表示笛卡爾坐標,具體的數學表達式可以這樣寫:
在直角坐標系點坐標(x,y)末尾加上一個額外的變量w,一個點(X,Y)在齊次坐標里面變成了(x,y,w),并且有
X = x/w
Y = y/w
這也就解決了笛卡爾坐標系無法表示無窮遠點的問題,按照人的視覺,兩條平行線在無窮遠處會相交,采用直角坐標系無法對這一現象進行描述,而當w趨近于0時,(X,Y)趨向無窮大,其齊次坐標就可表示為(x,y,0),解決了這一問題。
于此同時衍生了另外一個問題,笛卡爾坐標和齊次坐標轉換的問題:
(1) 笛卡爾坐標轉換成齊次坐標,需要考慮坐標是點還是向量的問題,如果(x,y)是個點,就可變為(x,y,1);而如果(x,y)是個向量,則變為(x,y,0)
(2) 齊次坐標轉換成笛卡爾坐標,如果是(x,y,2),則其笛卡爾坐標為(x/2,y/2);
如果是(x,y,0),其笛卡爾坐標仍為(x,y)。
齊次坐標(針對二維)因此有如下定義:
- 投影平面上的任何點都可以表示成 (X, Y, Z),稱之為該點的’齊次坐標或投影坐標,其中 X、Y 及 Z 不全為 0。
- 以齊次坐標表表示的點,若該坐標內的數值全乘上一相同非零實數,仍會表示該點。
- 相反地,兩個齊次坐標表示同一點,當且僅當其中一個齊次坐標可由另一個齊次坐標乘上一相同非零常數得取得。
- 當 Z 不為 0,則該點表示歐氏平面上的 (X/Z, Y/Z)。
- 當 Z 為 0,則該點表示一無窮遠點。
- 三元組 (0, 0, 0) 不表示任何點。原點表示為 (0, 0, 1)。
齊次坐標系
那怎么從空間上去理解齊次坐標系呢?
有個說法挺有意思,我們想象在宇宙中有一個絕對坐標系,對于我們現在使用的笛卡爾坐標系,其原點位于(0,0)點,當然同時也就還有無數的相同的坐標系,只不過它們的原點不同,對于笛卡爾坐標系中的點(x,y),它對于所有的笛卡爾坐標系都是相同的,有點多維宇宙的感覺,其中一個坐標系就是一個宇宙。
二、齊次坐標的作用
看了不少文章,基本都有這么一句話來概況其作用:齊次坐標表示是計算機圖形學的重要手段之一,它既能夠用來明確區分向量和點,同時也更易用于進行仿射(線性)幾何變換。
齊次坐標在計算機圖形學中有重要應用,可以用來區分向量和點,上面已經解釋了點和向量的區別問題,其仿射變換主要應用如下:
2.1 "平移矩陣"擴展為3維
在圖像處理時,經常會對圖像進行平移操作,就會采用矩陣的形式進行計算。通過對坐標點進行齊次變換,可以將平移矩陣用3維方式進行表達,可以。
平移可表示為:
[x2y2]\begin{bmatrix} x2\\ y2\end{bmatrix}[x2y2?]=[x1y1]\begin{bmatrix} x1\\ y1\end{bmatrix}[x1y1?]+[x0y0]\begin{bmatrix} x0\\ y0\end{bmatrix}[x0y0?]
齊次變換后:
[x2y21]\begin{bmatrix} x2\\ y2\\1\end{bmatrix}???x2y21????=[10x001y0001]\begin{bmatrix} 1&0&x0\\ 0&1&y0\\0&0&1\end{bmatrix}???100?010?x0y01????*[x1y11]\begin{bmatrix} x1\\ y1\\1\end{bmatrix}???x1y11????
2.2 旋轉,縮放
旋轉
對一個點繞原點逆時針旋轉一個角度,用矩陣的形式表達為:
縮放
參考文章:
關于齊次坐標系的理解
齊次坐標的理解
齊次坐標變換