參考:
為什么要引入齊次坐標(biāo)从诲,齊次坐標(biāo)的意義(一)
為什么要引入齊次坐標(biāo)奥额,齊次坐標(biāo)的意義(二)
用矩陣表述變換與齊次坐標(biāo)
柵格化
問(wèn)題:兩條平行線(xiàn)可以相交于一點(diǎn)
在歐氏幾何空間仰楚,同一平面的兩條平行線(xiàn)不能相交务甥,這是我們都熟悉的一種場(chǎng)景窒悔。
然而月劈,在透視空間里面度迂,兩條平行線(xiàn)可以相交藤乙,例如:火車(chē)軌道隨著我們的視線(xiàn)越來(lái)越窄,最后兩條平行線(xiàn)在無(wú)窮遠(yuǎn)處交于一點(diǎn)惭墓。
歐氏空間(或者笛卡爾空間)描述2D/3D幾何非常適合坛梁,但是這種方法卻不適合處理透視空間的問(wèn)題(實(shí)際上,歐氏幾何是透視幾何的一個(gè)子集合)腊凶,2維笛卡爾坐標(biāo)可以表示為(x,y)划咐。
如果一個(gè)點(diǎn)在無(wú)窮遠(yuǎn)處,這個(gè)點(diǎn)的坐標(biāo)將會(huì)(∞,∞)吭狡,在歐氏空間尖殃,這變得沒(méi)有意義。
平行線(xiàn)在透視空間的無(wú)窮遠(yuǎn)處交于一點(diǎn)划煮,但是在歐氏空間卻不能送丰,數(shù)學(xué)家發(fā)現(xiàn)了一種方式來(lái)解決這個(gè)問(wèn)題。
方法:齊次坐標(biāo)
簡(jiǎn)而言之弛秋,齊次坐標(biāo)就是用N+1維來(lái)代表N維坐標(biāo)器躏。
我們可以在一個(gè)2D笛卡爾坐標(biāo)末尾加上一個(gè)額外的變量w來(lái)形成2D齊次坐標(biāo),因此蟹略,一個(gè)點(diǎn)(X,Y)在齊次坐標(biāo)里面變成了(x,y,w)登失,并且有
X = x/w
Y = y/w
例如,笛卡爾坐標(biāo)系下(1挖炬,2)的齊次坐標(biāo)可以表示為(1揽浙,2,1)意敛,如果點(diǎn)(1馅巷,2)移動(dòng)到無(wú)限遠(yuǎn)處,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞)草姻,然后它的齊次坐標(biāo)表示為(1钓猬,2,0)撩独,因?yàn)?1/0, 2/0) = (∞,∞)敞曹,我們可以不用”∞"來(lái)表示一個(gè)無(wú)窮遠(yuǎn)處的點(diǎn)了,哈哈综膀。
為什么叫齊次坐標(biāo)澳迫?
我們把齊次坐標(biāo)轉(zhuǎn)化為笛卡爾坐標(biāo)的方法是前面n-1個(gè)坐標(biāo)分量分別除以最后一個(gè)分量即可。
轉(zhuǎn)化齊次坐標(biāo)到笛卡爾坐標(biāo)的過(guò)程中剧劝,我們有一個(gè)發(fā)現(xiàn)纲刀,例如:
你會(huì)發(fā)現(xiàn)(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對(duì)應(yīng)同一個(gè)Euclidean point (1/3, 2/3),任何標(biāo)量的乘積,例如(1a, 2a, 3a) 對(duì)應(yīng) 笛卡爾空間里面的(1/3, 2/3) 示绊。因此锭部,這些點(diǎn)是“齊次的”,因?yàn)樗麄兇砹说芽栕鴺?biāo)系里面的同一個(gè)點(diǎn)面褐。換句話(huà)說(shuō)拌禾,齊次坐標(biāo)有規(guī)模不變性。
證明:兩條直線(xiàn)可以相交
考慮如下方程組:
我們知道在笛卡爾坐標(biāo)系里面展哭,該方程組無(wú)解湃窍,因?yàn)镃 ≠ D,如果C=D,兩條直線(xiàn)就相同了。 讓我們?cè)谕敢暱臻g里面匪傍,用齊次坐標(biāo)x/w, y/w代替x ,y
現(xiàn)在我們有一個(gè)解(x, y, 0)您市,兩條直線(xiàn)相交于(x, y, 0),這個(gè)點(diǎn)在無(wú)窮遠(yuǎn)處役衡。
齊次坐標(biāo)的意義
:
使用齊次坐標(biāo)茵休,可以表示 平行線(xiàn)在透視空間的無(wú)窮遠(yuǎn)處交于一點(diǎn)。在歐氏空間手蝎,這變得沒(méi)有意義榕莺,所以歐式坐標(biāo)不能表示。即:齊次坐標(biāo)可以表示無(wú)窮遠(yuǎn)處的點(diǎn)
棵介。例如:
如果點(diǎn)(1钉鸯,2)移動(dòng)到無(wú)限遠(yuǎn)處,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞)邮辽,然后它的齊次坐標(biāo)表示為(1唠雕,2,0)吨述,因?yàn)?1/0, 2/0) = (∞,∞)岩睁,我們可以不用”∞"來(lái)表示一個(gè)無(wú)窮遠(yuǎn)處的點(diǎn)了。
——————————————————————————————————————————
平移變換表示的是位置變化的概念锐极。如下圖所示,一個(gè)圖像矩形從中心點(diǎn)[x1,y1]平移到了中心點(diǎn)[x2,y2]
處芳肌,整體大小和角度都沒(méi)有變化灵再。在x方向和y方向上分別平移了tx和ty大小。
顯然:
這對(duì)于圖像中的每一個(gè)點(diǎn)都是成立的亿笤。寫(xiě)成矩陣的形式就是:
我們?cè)侔亚懊娴目s放變換和旋轉(zhuǎn)變換的矩陣形式寫(xiě)出來(lái):
縮放變換:
旋轉(zhuǎn)變換:
我們注意到翎迁,縮放變換和旋轉(zhuǎn)變換都可以表示成矩陣乘法的形式。實(shí)際上净薛,圖像的幾何變換通常不是單一的汪榔,也就是說(shuō)經(jīng)常性的縮放、旋轉(zhuǎn)肃拜、平移一起變換痴腌。例如先放大2倍雌团,然后旋轉(zhuǎn)45度,然后再縮小0.5倍士聪。那么就可以表示成矩陣乘法串接的形式:
這樣锦援,不管有多少次變換,都可以用矩陣乘法來(lái)實(shí)現(xiàn)剥悟。但是平移變換呢灵寺?從前面看到,平移變換并不是矩陣乘法的形式区岗,而是矩陣加法的形式略板!
那能不能把縮放變換、旋轉(zhuǎn)變換慈缔、平移變換統(tǒng)一成矩陣乘法的形式呢叮称,這樣不管進(jìn)行多少次變換,都可以表示成矩陣連乘的形式胀糜,將極大的方便計(jì)算和降低運(yùn)算量颅拦。
這種方法就是“升維
”,引入“齊次坐標(biāo)
”教藻,將圖像從平面2D坐標(biāo)變成3D坐標(biāo)距帅。我們看看平移變換的矩陣形式:
將其升維,變成3維括堤,上式就可以表示成:
這是個(gè)非常優(yōu)美的地方碌秸,學(xué)習(xí)過(guò)矩陣乘法的同學(xué)可以算一下右邊的式子,是否最終結(jié)果與前面是一樣的悄窃。
這樣讥电,平移變換通過(guò)升維后的齊次坐標(biāo),也變成了矩陣乘法的形式轧抗。當(dāng)然縮放變換和旋轉(zhuǎn)變換的矩陣形式也得改一改恩敌,統(tǒng)一變成3維的形式。
縮放變換:
旋轉(zhuǎn)變換:
終于統(tǒng)一了横媚。以后所有的變換纠炮,不管怎樣變換,變換多少次灯蝴,都可以表示成一連串的矩陣相乘了恢口,這是多么的方便。
這就是`引入齊次坐標(biāo)的作用`穷躁,把各種變換都統(tǒng)一了起來(lái)耕肩,即 把縮放,旋轉(zhuǎn),平移等變換都統(tǒng)一起來(lái)猿诸,
都表示成一連串的矩陣相乘的形式婚被。保證了形式上的線(xiàn)性一致性。
簡(jiǎn)短的解釋?zhuān)?/p>
齊次坐標(biāo)就是將一個(gè)原本是n維的向量用一個(gè)n+1維向量來(lái)表示
两芳。
許多圖形應(yīng)用涉及到幾何變換摔寨,主要包括平移、旋轉(zhuǎn)怖辆、縮放是复。以矩陣表達(dá)式來(lái)計(jì)算這些變換時(shí),平移是矩陣相加竖螃,旋轉(zhuǎn)和縮放則是矩陣相乘淑廊,綜合起來(lái)可以表示為 x=R?X+t(注:因?yàn)榱?xí)慣的原因,實(shí)際使用時(shí)一般使用變化矩陣左乘向量)(R 旋轉(zhuǎn)縮放矩陣特咆,t 為平移矩陣季惩,X為原向量,x 為變換后的向量)腻格。
引入齊次坐標(biāo)的目的主要是合并矩陣運(yùn)算中的乘法和加法画拾,表示為x=P?X的形式。
即它提供了用矩陣運(yùn)算把二維菜职、三維甚至高維空間中的一個(gè)點(diǎn)集從一個(gè)坐標(biāo)系變換到另一個(gè)坐標(biāo)系的有效方法青抛。
另外,
齊次坐標(biāo)可以很好的區(qū)分向量和點(diǎn)酬核。即蜜另,(x, y, z, 1)是點(diǎn),(x, y, z, 0)是向量嫡意。