相機矩陣(Camera Matrix)

投影

透視投影(perspective projection)

透視投影屬于中心投影。透視投影圖簡稱為透視圖或透視,它是從某個投射中心將物體投射到單一投影面上所得到的圖形。透視圖與人們觀看物體時所產(chǎn)生的視覺效果非常接近,所以它能更加生動形象地表現(xiàn)建筑外貌及內(nèi)部裝飾。在已有實景實物的情況下,通過拍照或攝像即能得到透視圖;對于尚在設(shè)計、規(guī)劃中的建筑物則作圖(手工或計算機)的方法才能畫出透視圖。透視圖以渲染、配景,使之成為形象逼真的效果圖。由于是中心投影,因此平行投影中的一些重要性質(zhì)(如平行性、定比性等)和作圖規(guī)律,在這里已不適用。
透視投影是用中心投影法將形體投射到投影面上,從而獲得的一種較為接近視覺效果的單面投影圖。它具有消失感、距離感、相同大小的形體呈現(xiàn)出有規(guī)律的變化等一系列的透視特性,能逼真地反映形體的空間形象。
透視投影符合人們心理習(xí)慣,即離視點近的物體大,離視點遠的物體小,遠到極點即為消失,成為滅點。它的視景體類似于一個頂部和底部都被切除掉的棱椎,也就是棱臺。這個投影通常用于動畫、視覺仿真以及其它許多具有真實性反映的方面。


perspective.png

正交投影(orthographic projection)

投影線垂直于投影面的投影屬于正交投影 ,也稱為平行投影。


orthographic.png

相機模型

  • 移動相機到拍攝位置,鏡頭對準某個方向(視圖變換,view transform)
  • 將拍攝對象一到場景中的某個位置(模型變換,model transform)
  • 設(shè)置相機焦距或調(diào)整縮放比例(投影變換,projection transform)
  • 對結(jié)果圖像拉伸或者壓縮,變換為需要的圖片大小(視口變換,viewpoint transform)

齊次坐標與仿射變換

我們將一個3維坐標表示為列向量,那么一個3*3的矩陣乘以這個列向量就可以得到一個新的列向量。如下,三維笛卡爾坐標與矩陣的乘法只能實現(xiàn)三維坐標的縮放和旋轉(zhuǎn),而無法實現(xiàn)坐標平移。

matirx.png

所以我們將三維的笛卡爾坐標添加一個額外坐標,實現(xiàn)坐標平移,而且保持了三維向量與矩陣乘法具有的縮放和旋轉(zhuǎn)操作。這個就稱為齊次坐標,而這種變換也稱為仿射變換(affine transformation),不屬于線性變換。
matrix.png


相機矩陣

幾何相機校正(Geometric camera calibration)

也稱為相機反切(camera resectioning),主要用于估計圖像或者視頻攝像機的透鏡和圖像傳感器的相關(guān)參數(shù)。使用這些參數(shù)可以糾正透鏡畸變,度量真實世界中物體的大小,或者相機在一個場景中的定位。因而可以被用于機器視覺,去檢測或者度量事物,也可用于機器人中,幫助導(dǎo)航系統(tǒng)和3D重建。

相機參數(shù)與相機矩陣分解

  1. 主要包含內(nèi)參(intrinsics)、外參(extrinsics)、畸變系數(shù)(distortion coefficients)
  2. 估計參數(shù)需要3D世界坐標及其對應(yīng)的2D圖像點
  3. 評估所估計相機參數(shù)的方法就是:首先畫出相機和校準模式的相對位置;隨后計算投影誤差;最后計算參數(shù)的估算誤差

相機矩陣分解為兩個矩陣的乘積:內(nèi)參矩陣K和外參矩陣[R|?RC]

image.png

其中,3?3的上三角陣K描述了相機的內(nèi)參比如焦距。3?3的旋轉(zhuǎn)矩陣R的列表示相機參考幀的世界坐標軸方向。向量C是世界坐標系中的相機中心。那么向量t=?RC就給出了相機坐標系中的世界原點位置。我們需要做的就是求解這些參數(shù),當然前提是我們已經(jīng)知道P。

內(nèi)參矩陣

內(nèi)參矩陣是將3D相機坐標變換到2D齊次圖像坐標。透視投影的一個理想模型就是針孔相機,有縮放的效果成像為倒影。市面上的相機都是透視投影。如下:


image.png

內(nèi)參矩陣如下:


matrix.png

內(nèi)參矩陣的每一個參數(shù)都有意義:

  • 焦距的參數(shù):fx,fy
    焦距就是真空與圖像平面(投影屏幕)的距離,類似于人眼和視網(wǎng)膜,焦距的度量是針對像素的。針孔相機的fx,fy有相同的值。上圖中紅線部分就是焦距。但是在實際中,fxfy一般不同,有一下幾個原因:

    1. 數(shù)碼相機傳感器的缺陷
    2. 后處理中圖像被非均勻縮放
    3. 相機透鏡導(dǎo)致的無意的失真
    4. 相機使用了失真的格式,透鏡將寬屏場景壓縮到標準大小的傳感器中
    5. 相機校準的誤差
  • 主點偏移x0,y0
    相機的主軸是與圖像平面垂直且穿過真空的線,它與圖像平面的焦點稱為主點。
    主點偏移就是主點位置相對于圖像平面(投影面)的位置。上圖中,增加x0的值相當于把針孔向右移動,等價將投影面向左移動同時保持針孔位置不變。

  • 軸傾斜
    軸傾斜會導(dǎo)致投影圖像的形變。

  • 焦距-從像素到世界單元
    內(nèi)參矩陣只關(guān)心相機坐標和圖像坐標之間的關(guān)系,與相機的絕對尺寸無關(guān)。針對焦距和主點偏移使用響度單元可以表示相機的相對尺寸,換句話說就是投影面的位置與其尺寸(以像素為單位)相關(guān)。
    另一種說法是內(nèi)參相機變換與相機的幾何均勻縮放無關(guān),利用像素單元表示尺寸,可以捕捉到這種不變性。
    可以使用相似三角形將像素單元轉(zhuǎn)換到世界單元中,前提是你知道世界單元中至少一個相機尺寸。比如你知道相機的投影面(數(shù)字傳感器)寬度為WW毫米,圖片寬度(像素為單位)為w,那就可以將焦距fx轉(zhuǎn)換為世界單元:


    image.png

其它的參數(shù)fy,x0,y0也可以被轉(zhuǎn)換為對應(yīng)的世界單元Fx,X0,Y0:

image.png

  • 2D變換中的相機內(nèi)參的計算
    將內(nèi)參矩陣分解為切變(shear,類似于將長方形壓成平行四邊形的變形方式)、縮放,平移變換,分別對應(yīng)軸傾斜、焦距、主點偏移 :
    image.png

第二個等式右邊三個矩陣依次是:2D平移、2D縮放、2D切變
另一種等價的分解是將切變放在縮放前面 :


image.png

有一點需要注意:內(nèi)參不影響可見性 —— 阻隔對象(occluded objects)在圖像空間中無法通過簡單的2D變換顯示出來。這里的occluded objects就是那些你希望看到,但是由于某些原因看不到的對象,比如目標跟蹤的時候,一個目標被另一個目標遮擋了。

外參矩陣

相機的外參矩陣描述的是世界坐標中相機的位置,及其指向方向。有兩個成分:旋轉(zhuǎn)矩陣R和平移向量t。它們并非恰好對應(yīng)相機的旋轉(zhuǎn)和平移。
外參矩陣以剛體變換矩陣的形式可以記為:左邊一個3?3旋轉(zhuǎn)矩陣,右邊一個3?1的平移列向量 :

image.png

常見的做法是在底部增加一行(0,0,0,1),這使得矩陣為方形的,允許我們進一步將矩陣分解為旋轉(zhuǎn)和平移矩陣:

image.png

這個矩陣描述的就是如何將世界坐標系中的點變換到相機坐標系中,向量t描述的是世界坐標系原點在相機坐標系中的位置,R的列代表的是相機坐標系中世界坐標系軸的方向。
從上可以發(fā)現(xiàn),外參主要作用就是描述世界坐標系到相機坐標系的轉(zhuǎn)換。與我們經(jīng)常想的相機坐標系到世界坐標系的轉(zhuǎn)換剛好相反。

求解外參矩陣

實際中,直接指定相機的姿態(tài)比指定世界坐標系中的點如何轉(zhuǎn)換到相機坐標系中更加自然,通過建立一個剛體變換矩陣描述相機姿態(tài),然后對其取逆即可建立相機的外參矩陣。
因而可以這樣做:定義一個描述相機中心在世界坐標系中的位置的向量C,然后讓Rc代表相機在世界坐標系旋轉(zhuǎn)到當前姿態(tài)需要的旋轉(zhuǎn)矩陣。那么描述相機姿態(tài)的變換矩陣就是(Rc|C)。同樣在底部添加一個行向量(0,0,0,1),那么外參矩陣就是相機姿態(tài)矩陣的逆。

image.png

倒數(shù)第三個等式變換到倒數(shù)第二個等式,使用的轉(zhuǎn)置是因為Rc是正交陣,此外,平移矩陣的逆就是他的負數(shù)平移向量,進而可以得到外參矩陣參數(shù)和相機姿態(tài)是直接相關(guān):

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 最近翻閱關(guān)于從2D視頻或者圖片中重構(gòu)3D姿態(tài)的文章及其源碼,發(fā)現(xiàn)都有關(guān)于攝像機參數(shù)的求解,查找了相關(guān)資料,做...
    予汐閱讀 6,517評論 0 3
  • 引言 請不要質(zhì)疑你的眼睛,文章的題目就是“3D圖形學(xué)基礎(chǔ)理論”??赡苡腥艘苫罅?,作為一個 iOS 開發(fā)者為什么要...
    ZhengYaWei閱讀 8,872評論 5 36
  • 1、概述 前面幾篇關(guān)于OpenGLES的文章: OpenGL ES 2.0 顯示圖形(上) OpenGL ES 2...
    高丕基閱讀 4,903評論 3 5
  • 兩個人沒有解開怒火怎么會冒火 很奇怪我們倆個從未向?qū)Ψ桨l(fā)過火 為了和你保持同樣的氣息 我屏住呼吸等待著你的吸氣 為...
    許你一世諾言閱讀 177評論 0 1
  • 高考出來了,幾家歡喜幾家愁。 過一本線不多的報考似乎有些尷尬,不太好選擇。 其實軍校就是一個不錯的選擇。 我有一個...
    花癡_halou閱讀 268評論 1 3

友情鏈接更多精彩內(nèi)容