1.從計(jì)算的角度, 統(tǒng)一計(jì)算
圖像的縮放變換和旋轉(zhuǎn)變換绿饵,可以用矩陣乘法的形式來表達(dá)變換后的像素位置映射關(guān)系。那么瓶颠,對于平移變換呢拟赊?平移變換表示的是位置變化的概念。如下圖所示粹淋,一個圖像矩形從中心點(diǎn)[x1,y1]平移到了中心點(diǎn)[x2,y2]處吸祟,整體大小和角度都沒有變化。在x方和y方向上分別平移了tx和ty大小桃移。
此時有:
這對于圖像中的每一個點(diǎn)都是成立的屋匕。寫成矩陣的形式就是:
縮放變換和旋轉(zhuǎn)變換的矩陣形式:
縮放變換:
旋轉(zhuǎn)變換:
縮放變換和旋轉(zhuǎn)變換都可以表示成矩陣乘法的形式。實(shí)際上借杰,圖像的幾何變換通常不是單一的过吻,也就是說經(jīng)常性的縮放、旋轉(zhuǎn)蔗衡、平移一起變換纤虽。例如先放大2倍,然后旋轉(zhuǎn)45度绞惦,然后再縮小0.5倍逼纸。那么就可以表示成矩陣乘法串接的形式:
這樣,不管有多少次變換济蝉,都可以用矩陣乘法來實(shí)現(xiàn)杰刽。但是平移變換呢?從前面看到堆生,平移變換并不是矩陣乘法的形式专缠,而是矩陣加法的形式!
那能不能把縮放變換淑仆、旋轉(zhuǎn)變換涝婉、平移變換統(tǒng)一成矩陣乘法的形式呢,這樣不管進(jìn)行多少次變換蔗怠,都可以表示成矩陣連乘的形式墩弯,將極大的方便計(jì)算和降低運(yùn)算量
這種方法就是“升維”吩跋,引入“齊次坐標(biāo)”,將圖像從平面2D坐標(biāo)變成3D坐標(biāo)渔工。我們看看平移變換的矩陣形式:
將其升維锌钮,變成3維,上式就可以表示成:
這樣引矩,平移變換通過升維后的齊次坐標(biāo)梁丘,也變成了矩陣乘法的形式。當(dāng)然縮放變換和旋轉(zhuǎn)變換的矩陣形式也得改一改旺韭,統(tǒng)一變成3維的形式氛谜。
縮放變換:
旋轉(zhuǎn)變換:
終于統(tǒng)一了。以后所有的變換区端,不管怎樣變換值漫,變換多少次,都可以表示成一連串的矩陣相乘了织盼,這是多么的方便
這就是引入齊次坐標(biāo)的作用杨何,把各種變換都統(tǒng)一了起來,即 把縮放沥邻,旋轉(zhuǎn)危虱,平移等變換都統(tǒng)一起來,都表示成一連串的矩陣相乘的形式谋国。保證了形式上的線性一致性
2.從表示的角度, 解決了歐式空間中,無窮遠(yuǎn)點(diǎn)無法表示的問題
問題:兩條平行線可以相交于一點(diǎn)
在歐氏幾何空間槽地,同一平面的兩條平行線不能相交,這是我們都熟悉的一種場景芦瘾。
然而捌蚊,在透視空間里面,兩條平行線可以相交近弟,例如:火車軌道隨著我們的視線越來越窄缅糟,最后兩條平行線在無窮遠(yuǎn)處交于一點(diǎn)
歐氏空間(或者笛卡爾空間)描述2D/3D幾何非常適合,但是這種方法卻不適合處理透視空間的問題(實(shí)際上祷愉,歐氏幾何是透視幾何的一個子集合)窗宦,2維笛卡爾坐標(biāo)可以表示為(x,y)
如果一個點(diǎn)在無窮遠(yuǎn)處,這個點(diǎn)的坐標(biāo)將會(∞,∞)二鳄,在歐氏空間赴涵,這變得沒有意義。
平行線在透視空間的無窮遠(yuǎn)處交于一點(diǎn)订讼,但是在歐氏空間卻不能髓窜,數(shù)學(xué)家發(fā)現(xiàn)了一種方式來解決這個問題
方法:齊次坐標(biāo)
簡而言之,齊次坐標(biāo)就是用N+1維來代表N維坐標(biāo)
我們可以在一個2D笛卡爾坐標(biāo)末尾加上一個額外的變量w來形成2D齊次坐標(biāo),因此寄纵,
一個點(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)移動到無限遠(yuǎn)處,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞)山宾,然后它的齊次坐標(biāo)表示為(1至扰,2鳍徽,0)资锰,因?yàn)?1/0, 2/0) = (∞,∞),我們可以不用”∞"來表示一個無窮遠(yuǎn)處的點(diǎn)了
為什么叫齊次坐標(biāo)阶祭?
我們把齊次坐標(biāo)轉(zhuǎn)化為笛卡爾坐標(biāo)的方法是前面n-1個坐標(biāo)分量分別除以最后一個分量即可
轉(zhuǎn)化齊次坐標(biāo)到笛卡爾坐標(biāo)的過程中绷杜,我們有一個發(fā)現(xiàn),例如
你會發(fā)現(xiàn)(1, 2, 3), (2, 4, 6) 和(4, 8, 12)對應(yīng)同一個Euclidean point (1/3, 2/3)濒募,任何標(biāo)量的乘積鞭盟,例如(1a, 2a, 3a) 對應(yīng) 笛卡爾空間里面的(1/3, 2/3) 。因此瑰剃,這些點(diǎn)是“齊次的”齿诉,因?yàn)樗麄兇砹说芽栕鴺?biāo)系里面的同一個點(diǎn)。換句話說晌姚,齊次坐標(biāo)有規(guī)模不變性.
證明:兩條直線可以相交
考慮如下方程組:
我們知道在笛卡爾坐標(biāo)系里面粤剧,該方程組無解,因?yàn)镃 ≠ D,如果C=D,兩條直線就相同了挥唠。 讓我們在透視空間里面抵恋,用齊次坐標(biāo)x/w, y/w代替x ,y
現(xiàn)在我們有一個解(x, y, 0),兩條直線相交于(x, y, 0)宝磨,這個點(diǎn)在無窮遠(yuǎn)處
齊次坐標(biāo)的意義:
使用齊次坐標(biāo)弧关,可以表示 平行線在透視空間的無窮遠(yuǎn)處交于一點(diǎn)。在歐氏空間唤锉,這變得沒有意義世囊,所以歐式坐標(biāo)不能表示。
即:齊次坐標(biāo)可以表示無窮遠(yuǎn)處的點(diǎn)窿祥。例如:
如果點(diǎn)(1株憾,2)移動到無限遠(yuǎn)處,在笛卡爾坐標(biāo)下它變?yōu)?∞,∞)壁肋,然后它的齊次坐標(biāo)表示為(1号胚,2籽慢,0),因?yàn)?1/0, 2/0) =(∞,∞)猫胁,我們可以不用”∞"來表示一個無窮遠(yuǎn)處的點(diǎn)了
參考:
[1]https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95230246
[2]https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95228010