齊次座標是乙個相機標定問題的關鍵理論之一,所以就此問題分析一下。
單從定義上來講,齊次座標(投影座標)就是用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),它對於所有的笛卡爾座標系都是相同的,有點多維宇宙的感覺,其中乙個座標系就是乙個宇宙。
齊次座標在計算機圖形學中有重要應用,可以用來區分向量和點,上面已經解釋了點和向量的區別問題,其仿射變換主要應用如下:
在影象處理時,經常會對影象進行平移操作,就會採用矩陣的形式進行計算。通過對座標點進行齊次變換,可以將平移矩陣用3維方式進行表達,可以。
平移可表示為:
[ x2
y2]\begin x2\\ y2\end
[x2y2
]=[x1y
1]\begin x1\\ y1\end
[x1y1
]+[x0y
0]\begin x0\\ y0\end
[x0y0
]齊次變換後:
[ x2
y21]
\begin x2\\ y2\\1\end
⎣⎡x2y
21⎦
⎤=[ 10
x001
y000
1]\begin 1&0&x0\\ 0&1&y0\\0&0&1\end
⎣⎡100
010
x0y
01⎦
⎤*[ x1
y11]
\begin x1\\ y1\\1\end
⎣⎡x1y
11⎦
⎤旋轉對乙個點繞原點逆時針旋轉乙個角度,用矩陣的形式表達為:
縮放
深入理解REST(一)
1.什麼是 rest rest是representational state transfer的縮寫,於 r.fielding 的一篇博士 architectural styles and the design of network based software architectures rest...
深入理解DataAdapter(一)
ado.net有兩個核心元件 基於連線的data provider元件以及基於非連線的dataset元件。基於連線的data provider元件常用於實時地從資料庫中檢索資料。而基於非連線的dataset,似乎與資料庫沒有直接聯絡,僅僅用於在本地記憶體中儲存data provider提供的資料表或...
js深入理解 一
1if a b 兩者等價 a b alert hello word 2.給eval取別名var a 111 var b eval var c b a alert c 輸出 111 3.刪除元素 不能刪除 var語句宣告的變數 var o delete o.x alert o.x 輸出 undefin...