投影
透視投影(perspective projection)
透視投影屬于中心投影。透視投影圖簡稱為透視圖或透視疤剑,它是從某個投射中心將物體投射到單一投影面上所得到的圖形。透視圖與人們觀看物體時所產(chǎn)生的視覺效果非常接近,所以它能更加生動形象地表現(xiàn)建筑外貌及內(nèi)部裝飾捻浦。在已有實景實物的情況下,通過拍照或攝像即能得到透視圖桥爽;對于尚在設(shè)計朱灿、規(guī)劃中的建筑物則作圖(手工或計算機(jī))的方法才能畫出透視圖。透視圖以渲染钠四、配景盗扒,使之成為形象逼真的效果圖。由于是中心投影缀去,因此平行投影中的一些重要性質(zhì)(如平行性侣灶、定比性等)和作圖規(guī)律,在這里已不適用缕碎。
透視投影是用中心投影法將形體投射到投影面上褥影,從而獲得的一種較為接近視覺效果的單面投影圖。它具有消失感咏雌、距離感凡怎、相同大小的形體呈現(xiàn)出有規(guī)律的變化等一系列的透視特性,能逼真地反映形體的空間形象赊抖。
透視投影符合人們心理習(xí)慣统倒,即離視點(diǎn)近的物體大,離視點(diǎn)遠(yuǎn)的物體小氛雪,遠(yuǎn)到極點(diǎn)即為消失檐薯,成為滅點(diǎn)。它的視景體類似于一個頂部和底部都被切除掉的棱椎注暗,也就是棱臺坛缕。這個投影通常用于動畫、視覺仿真以及其它許多具有真實性反映的方面捆昏。
正交投影(orthographic projection)
投影線垂直于投影面的投影屬于正交投影 赚楚,也稱為平行投影。
相機(jī)模型
- 移動相機(jī)到拍攝位置骗卜,鏡頭對準(zhǔn)某個方向(視圖變換,view transform)
- 將拍攝對象一到場景中的某個位置(模型變換,model transform)
- 設(shè)置相機(jī)焦距或調(diào)整縮放比例(投影變換,projection transform)
- 對結(jié)果圖像拉伸或者壓縮宠页,變換為需要的圖片大小(視口變換,viewpoint transform)
齊次坐標(biāo)與仿射變換
我們將一個3維坐標(biāo)表示為列向量左胞,那么一個3*3
的矩陣乘以這個列向量就可以得到一個新的列向量。如下举户,三維笛卡爾坐標(biāo)與矩陣的乘法只能實現(xiàn)三維坐標(biāo)的縮放和旋轉(zhuǎn)烤宙,而無法實現(xiàn)坐標(biāo)平移。
所以我們將三維的笛卡爾坐標(biāo)添加一個額外坐標(biāo)俭嘁,實現(xiàn)坐標(biāo)平移躺枕,而且保持了三維向量與矩陣乘法具有的縮放和旋轉(zhuǎn)操作。這個就稱為齊次坐標(biāo)供填,而這種變換也稱為仿射變換(affine transformation)拐云,不屬于線性變換。
相機(jī)矩陣
幾何相機(jī)校正(Geometric camera calibration)
也稱為相機(jī)反切(camera resectioning)近她,主要用于估計圖像或者視頻攝像機(jī)的透鏡和圖像傳感器的相關(guān)參數(shù)叉瘩。使用這些參數(shù)可以糾正透鏡畸變,度量真實世界中物體的大小粘捎,或者相機(jī)在一個場景中的定位薇缅。因而可以被用于機(jī)器視覺,去檢測或者度量事物攒磨,也可用于機(jī)器人中泳桦,幫助導(dǎo)航系統(tǒng)和3D重建。
相機(jī)參數(shù)與相機(jī)矩陣分解
- 主要包含內(nèi)參(intrinsics)咧纠、外參(extrinsics)蓬痒、畸變系數(shù)(distortion coefficients)
- 估計參數(shù)需要3D世界坐標(biāo)及其對應(yīng)的2D圖像點(diǎn)
- 評估所估計相機(jī)參數(shù)的方法就是:首先畫出相機(jī)和校準(zhǔn)模式的相對位置;隨后計算投影誤差漆羔;最后計算參數(shù)的估算誤差
相機(jī)矩陣分解為兩個矩陣的乘積:內(nèi)參矩陣K
和外參矩陣[R|?RC]
其中梧奢,
3?3
的上三角陣K
描述了相機(jī)的內(nèi)參比如焦距。3?3
的旋轉(zhuǎn)矩陣R
的列表示相機(jī)參考幀的世界坐標(biāo)軸方向演痒。向量C
是世界坐標(biāo)系中的相機(jī)中心亲轨。那么向量t=?RC
就給出了相機(jī)坐標(biāo)系中的世界原點(diǎn)位置。我們需要做的就是求解這些參數(shù)鸟顺,當(dāng)然前提是我們已經(jīng)知道P
惦蚊。
內(nèi)參矩陣
內(nèi)參矩陣是將3D相機(jī)坐標(biāo)變換到2D齊次圖像坐標(biāo)。透視投影的一個理想模型就是針孔相機(jī)讯嫂,有縮放的效果成像為倒影蹦锋。市面上的相機(jī)都是透視投影。如下:
內(nèi)參矩陣如下:
內(nèi)參矩陣的每一個參數(shù)都有意義:
-
焦距的參數(shù):
fx,fy
焦距就是真空與圖像平面(投影屏幕)的距離欧芽,類似于人眼和視網(wǎng)膜莉掂,焦距的度量是針對像素的。針孔相機(jī)的fx,fy
有相同的值千扔。上圖中紅線部分就是焦距憎妙。但是在實際中库正,fx
和fy
一般不同,有一下幾個原因:- 數(shù)碼相機(jī)傳感器的缺陷
- 后處理中圖像被非均勻縮放
- 相機(jī)透鏡導(dǎo)致的無意的失真
- 相機(jī)使用了失真的格式厘唾,透鏡將寬屏場景壓縮到標(biāo)準(zhǔn)大小的傳感器中
- 相機(jī)校準(zhǔn)的誤差
主點(diǎn)偏移
x0,y0
相機(jī)的主軸是與圖像平面垂直且穿過真空的線褥符,它與圖像平面的焦點(diǎn)稱為主點(diǎn)。
主點(diǎn)偏移就是主點(diǎn)位置相對于圖像平面(投影面)的位置抚垃。上圖中喷楣,增加x0
的值相當(dāng)于把針孔向右移動,等價將投影面向左移動同時保持針孔位置不變讯柔。軸傾斜
軸傾斜會導(dǎo)致投影圖像的形變抡蛙。-
焦距-從像素到世界單元
內(nèi)參矩陣只關(guān)心相機(jī)坐標(biāo)和圖像坐標(biāo)之間的關(guān)系护昧,與相機(jī)的絕對尺寸無關(guān)魂迄。針對焦距和主點(diǎn)偏移使用響度單元可以表示相機(jī)的相對尺寸,換句話說就是投影面的位置與其尺寸(以像素為單位)相關(guān)惋耙。
另一種說法是內(nèi)參相機(jī)變換與相機(jī)的幾何均勻縮放無關(guān)捣炬,利用像素單元表示尺寸,可以捕捉到這種不變性绽榛。
可以使用相似三角形將像素單元轉(zhuǎn)換到世界單元中湿酸,前提是你知道世界單元中至少一個相機(jī)尺寸。比如你知道相機(jī)的投影面(數(shù)字傳感器)寬度為WW毫米灭美,圖片寬度(像素為單位)為w推溃,那就可以將焦距fx轉(zhuǎn)換為世界單元:
image.png
其它的參數(shù)fy,x0,y0
也可以被轉(zhuǎn)換為對應(yīng)的世界單元Fx,X0,Y0
:
- 2D變換中的相機(jī)內(nèi)參的計算
將內(nèi)參矩陣分解為切變(shear
,類似于將長方形壓成平行四邊形的變形方式)、縮放届腐,平移變換铁坎,分別對應(yīng)軸傾斜、焦距犁苏、主點(diǎn)偏移 :
image.png
第二個等式右邊三個矩陣依次是:2D平移硬萍、2D縮放、2D切變
另一種等價的分解是將切變放在縮放前面 :
有一點(diǎn)需要注意:內(nèi)參不影響可見性 —— 阻隔對象(occluded objects)在圖像空間中無法通過簡單的2D變換顯示出來围详。這里的occluded objects
就是那些你希望看到朴乖,但是由于某些原因看不到的對象,比如目標(biāo)跟蹤的時候助赞,一個目標(biāo)被另一個目標(biāo)遮擋了买羞。
外參矩陣
相機(jī)的外參矩陣描述的是世界坐標(biāo)中相機(jī)的位置,及其指向方向雹食。有兩個成分:旋轉(zhuǎn)矩陣R
和平移向量t
畜普。它們并非恰好對應(yīng)相機(jī)的旋轉(zhuǎn)和平移。
外參矩陣以剛體變換矩陣的形式可以記為:左邊一個3?3
旋轉(zhuǎn)矩陣婉徘,右邊一個3?1
的平移列向量 :
常見的做法是在底部增加一行(0,0,0,1)
漠嵌,這使得矩陣為方形的咐汞,允許我們進(jìn)一步將矩陣分解為旋轉(zhuǎn)和平移矩陣:
這個矩陣描述的就是如何將世界坐標(biāo)系中的點(diǎn)變換到相機(jī)坐標(biāo)系中,向量t
描述的是世界坐標(biāo)系原點(diǎn)在相機(jī)坐標(biāo)系中的位置儒鹿,R
的列代表的是相機(jī)坐標(biāo)系中世界坐標(biāo)系軸的方向化撕。
從上可以發(fā)現(xiàn),外參主要作用就是描述世界坐標(biāo)系到相機(jī)坐標(biāo)系的轉(zhuǎn)換约炎。與我們經(jīng)常想的相機(jī)坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換剛好相反植阴。
求解外參矩陣
實際中,直接指定相機(jī)的姿態(tài)比指定世界坐標(biāo)系中的點(diǎn)如何轉(zhuǎn)換到相機(jī)坐標(biāo)系中更加自然圾浅,通過建立一個剛體變換矩陣描述相機(jī)姿態(tài)掠手,然后對其取逆即可建立相機(jī)的外參矩陣。
因而可以這樣做:定義一個描述相機(jī)中心在世界坐標(biāo)系中的位置的向量C
狸捕,然后讓Rc
代表相機(jī)在世界坐標(biāo)系旋轉(zhuǎn)到當(dāng)前姿態(tài)需要的旋轉(zhuǎn)矩陣喷鸽。那么描述相機(jī)姿態(tài)的變換矩陣就是(Rc|C)
。同樣在底部添加一個行向量(0,0,0,1)
灸拍,那么外參矩陣就是相機(jī)姿態(tài)矩陣的逆做祝。
倒數(shù)第三個等式變換到倒數(shù)第二個等式,使用的轉(zhuǎn)置是因為Rc
是正交陣,此外鸡岗,平移矩陣的逆就是他的負(fù)數(shù)平移向量混槐,進(jìn)而可以得到外參矩陣參數(shù)和相機(jī)姿態(tài)是直接相關(guān):