本文轉自徐飛翔的“投影相機,透視相機,弱透視相機和仿射相機的區別和聯系 ”
版權聲明:本文為博主原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接和本聲明
投影相機(projective camera)
相機說到底是一種從3D的現實世界中的點投影到2D平面上點的工具,那么作為這個投影,對其描述最為通用的莫過于在齊次坐標系下,用:
其中3D點和2D點
采用齊次坐標系描述[6]。不難知道,其非齊次坐標系表達為:
雖然變換矩陣是一個有著12個元素的矩陣,但是因為對于坐標而言,最重要的是比例關系,因此我們可以對
進行尺度縮放,不妨將其全部除以
,得到
在這個新的變換矩陣中,原先
?的位置變成了1,因此其實其自由度只有11,而不是12.(對于理解這里的尺度變化,我
們可以這樣認為,我們新投影出來的2D圖像的尺度大小是可以變化的,比如原先是 ,尺度變換后可能就變成了
,其比例還是一樣的,因此圖中點的坐標其實比例也是不變的)
我們把有這種關系的相機稱之為投影相機(projective camera),顯然,投影相機是非線性的[7],這里指的非線性是圖像顯示的尺寸大小和真實尺寸大小不成線性比例,具體見[7]討論。透視相機(perspective camera)
投影相機的一種特殊例子也是更為常見的例子是所謂的透視相機(perspective camera),這種相機的投影方式稱之為透視投影(perspective projection)或者是中心投影(central projection)。跟一般的,當其變換矩陣 的最左邊
矩陣是一個旋轉矩陣[8],并且這個旋轉矩陣的尺度放縮因子是
時,透視相機模型成為我們熟悉的針孔模型的表達[9],如:
其中最簡單的形式莫過于是
于是有了熟悉的針孔模型的表達:
注意到我們是對每個點的深度Z進行反比放縮的,這一點很重要,這個導致了透視相機的成像的非線性性,見[7]中的討論。
仿射相機(affine camera)
仿射相機也是投影相機的一種特殊情況,其變換矩陣為:
考慮到通常我們也會把 設置為一個常數,比如1,因此現在的自由度變成了8。
于是,投影后的坐標為:
注意到其分母是 是一個常數,因此其投影后的坐標 ( x , y ) 是一個只由
決定了的線性關系。這個很特殊,因為在這種情況下,通常透視關系之下不再保存的平行關系,也會在仿射相機中保留下來。一般性的透視關系中不保留平行關系的例子見[8]。因為其線性性,仿射相機可以用更簡單的,非齊次坐標系的表達方式,如:
其中 ,并且
是一個二維向量,表示圖像的中心。
在仿射相機中,從不同視角觀察到的圖像的點之間,可以通過一個簡單的 仿射變換進行轉換。
弱透視相機(weak perspective camera)
最常見的,對于相機的假設莫過于是假設其是弱透視相機(weak perspective camera)[10]了。弱透視相機是仿射相機的一種,其最簡單的形式是(9),其中的 Z a v e Z_{ave} Zave?是相機到物體的平均深度,對于某個場景而言,是一個常數; f 是焦距。
如果轉換成公式(8)的那種形式,那么有:
最終得到投影后的坐標為:
在弱透視相機中,我們用平均深度,一個常數 ?去代替了每個點的深度
,從而使得分析變得簡單。但是要滿足弱透視的要求,需要滿足幾個假設
沿著光軸上的,物體的深度的平均差別,也就是
,需要遠遠小于
?。
視角場(filed of view)(也就是觀察某個物體點的夾角,
必須足夠小。
下面給出證明。
在考慮所有點的深度情況下,我們在?的基礎上加上每個點的偏差
,并且利用泰勒展開,有:
當 時,只有零階項保留下來了,其他高階項都趨向于0,其在圖像上表現出來的誤差就體現在
?:
因此,當焦距 f 比較小時,視角場 足夠小,或者物體表面深度的差別
足夠小時,其弱透視模型都可以成立。
Reference
[1]. http://www.cse.iitd.ernet.in/~suban/vision/affine/node5.html
[2]. http://www.cse.iitd.ernet.in/~suban/vision/affine/node4.html
[3]. http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/UESHIBA1/node5.html
[4]. http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/UESHIBA1/node4.html
[5]. http://www.cse.iitd.ernet.in/~suban/vision/affine/node3.html
[6]. https://blog.csdn.net/LoseInVain/article/details/102756630
[7]. https://blog.csdn.net/LoseInVain/article/details/102869987
[8]. https://blog.csdn.net/LoseInVain/article/details/102756630
[9]. https://blog.csdn.net/LoseInVain/article/details/102632940
[10].https://blog.csdn.net/LoseInVain/article/details/102698703