剛體變換 Rigid transformation 是由一個 3D 旋轉與 3D 位移表達:把一個3D空間的點 (x, y, z) ,先對於原點坐旋轉,再位移一段。我們可以用矩陣表示:
舉個例子,假使我們想要繞著 z 軸旋轉 30 度,那麼旋轉矩陣就會長得像以前數學課本裡變得那樣
以我們熟悉的2D平面旋轉再3D位移就會如下圖
而我們要表達相機在 3D 空間中的姿態,就可以透過一個3D旋轉和3D位移表達,也就是相機在3D空間中的位置和朝向。
前面介紹的投影和空間轉換的矩陣公式,都有一個相似的樣貌,先對 (x, y, z) 乘上一個矩陣,再加上一個向量矩陣,而齊次座標是一種更有效率的表達方式,可以用一個矩陣乘法,取代掉這個先乘後加的兩步驟。
概念上就是替原本的三維數據增加一個維度,比如說我們可以把 (x, y, z) 補上 1,寫成:
這樣原本的 3D 空間轉換就會變為,如果讀者把最右邊的矩陣乘法展開,就會發現跟原本的公式是一樣的都是對於 (x, y, z) 先做旋轉,再加上一個位移
因此我們可以用這個加上相機位置,剛剛 代表相機的姿態或轉換。同理,我們也可以把針孔投影寫成以下的形式
請注意,這邊與 3D 空間轉換有一點不同,我們自己新增的維度在經過計算之後不是 1,而這時候就要統一除以最後一個維度的值,讓最後一個維度變回 1,這就是齊次座標的定義。例如這裡真正的 ,才會與我們前面定義的相同。
齊次座標的功用還不只如此,還可以表達3D空間中的其他變化,例如放大縮小,Affine 轉換之類的。