其中m的齊次座標表示影象平面的畫素座標(u,v,1),m的齊次座標表示世界座標系的座標點(x,y,z,1)。a[r t]即是上面一篇部落格推出的p。r表示旋轉矩陣、t表示平移矩陣、s表示尺度因子。a表示攝像機的內引數,具體表示式如下:
α=f/dx,β=f/dy,因為畫素不是規規矩矩的正方形,γ代表畫素點在x,y方向上尺度的偏差,f為相機的焦距,u0與v0代表投影平面原點對應的畫素座標。
這裡還有乙個「梗兒」,就是s。它只是為了方便運算,對於齊次座標,尺度因子不會改變座標值的。
現在我們的目的就是要求相機的內外參!
因此引入張正友標定(較為常用的一種標定方法)
2023年,微軟研究院的張正友提出了基於移動平面模板的相機標定方法。此方法是介於傳統標定方法和自標定方法之間的一種方法,傳統標定方法雖然精度高裝置有較高的要求,其操作過程也比較繁瑣,自標定方法的精度不高,張正友標定演算法克服了這兩者的缺點同時又兼備二者的優點,因此對辦公、家庭的場合使用的桌面視覺系統(dvs)很適合。
理論基礎
1、標定平面到影象平面的單應性
因為標定物是平面,所以我們可以把世界座標系構造在z=0的平面上。然後進行單應性計算。令z=0可以將上式轉換為如下形式:
既然,此變化屬於單應性變化。那麼我們可以給a[r1 r2 t]乙個名字:單應性矩陣。並記h= a[r1 r2 t]。
那麼現在就有:
大家可以分析一下,h是乙個三3*3的矩陣,並且有乙個元素是作為齊次座標。因此,h有8個未知量待解。
(x,y)作為標定物的座標,可以由設計者人為控制,是已知量。(u,v)是畫素座標,我們可以直接通過攝像機獲得。對於一組對應的(x,y)-à(u,v)我們可以獲得兩組方程。
現在有8個未知量需要求解,所以我們至少需要八個方程。所以需要四個對應點。四點即可算出,影象平面到世界平面的單應性矩陣h。
這也是張氏標定採用四個角點的棋盤格作為標定物的乙個原因。
在這裡,我們可以將單應性矩陣寫成三個列向量的形式,即:
2、利用約束條件求解內參矩陣a
從上面可知,應用4個點我們可以獲得單應性矩陣h。但是,h是內參陣和外參陣的合體。我們想要最終分別獲得內參和外參。所以需要想個辦法,先把內參求出來。然後外參也就隨之解出了。我們可以仔細的「觀摩」一下下面的式子:
從中可以得出下面兩個約束條件,這兩個約束條件都是圍繞著旋轉向量來的。
1、r1,r2正交 得:r1r2=0。這個很容易理解,因為r1,r2分別是繞x,y軸旋轉的。應用高中立體幾何中的兩垂直平面上(兩個旋轉向量分別位於y-z和x-z平面)直線的垂直關係即可輕鬆推出。
通過上面的式子可以將r1,r2代換為h1,h2與a的組合進行表達。即 r1=h1a-1,r2=h2a-1.根據兩約束條件,可以得到下面兩個式子:
大家從上面兩個式子是不是看出一點端倪了。式子中,h1,h2是通過單應性求解出來的那麼未知量就僅僅剩下,內參矩陣a了。
內參陣a包含5個引數:α,β,u0,v0,γ。那麼如果我們想完全解出這五個未知量,則需要3個單應性矩陣。3個單應性矩陣在2個約束下可以產生6個方程。這樣可以解出全部的五個內參了。大家想一下,我們怎樣才能獲得三個不同的單應性矩陣呢?
答案就是,用三幅標定物平面的**。我們可以通過改變攝像機與標定板間的相對位置來獲得三張不同的**。(當然也可以用兩張**,但這樣的話就要捨棄掉乙個內參了γ=0)
這裡,大家應該就明白我們在張氏標定法時為什麼要不斷變換標定板的方位了吧。
下面在對我們得到的方程做一些數學上的變化,這些變化都是簡單的運算變化了,相信大家動動筆,一算就可以算出。這些變化都是為了運算方便的,所以也沒什麼物理意義。
首先令
很容易發現b是乙個對稱陣,所以b的有效元素只剩下六個(因為有三對對稱的元素是相等的,所以只要解得下面的6個元素就可以得到完整的b了),讓這六個元素構成向量b。
接下來在做一步純數學化簡:
可以計算得:
利用約束條件可以得到下面,方程組:
這個方程組的本質和前面那兩個用h和a組成的約束條件方程組是一樣的。在此重複一遍解釋:如果我們想完全解出這五個未知量,則需要3個單應性矩陣。3個單應性矩陣在2個約束下可以產生6個方程。這樣可以解出全部的五個內參了。大家想一下,我們怎樣才能獲得三個不同的單應性矩陣呢?答案就是,用三幅標定物平面的**。我們可以通過改變攝像機與標定板間的相對位置來獲得三張不同的**。(當然也可以用兩張**,但這樣的話就要捨棄掉乙個內參了γ=0)
通過至少含乙個棋盤格的三幅影象,應用上述公式我們就可以估算出b了。得到b後,我們通過cholesky
分解 ,就可以輕鬆地得到攝像機的內參陣a。
3、基於內參陣估算外參陣
通過上面的運算,我們已經獲得了攝像機的內參陣。那麼對於外參陣,我們很容易通過下面的公式解得:
對上面公式進行化簡,可以得到:
至此,已經將張氏標定的主體數學框架已經講完了。
說明:
1、cholesky分解:具體詳見
2、部落格參考:
三維重建學習之旅(二)相機標定之(1)
我們為什麼要進行相機的標定?相機標定的原理是什麼?相機的標定在三維重建過程中所起到的作用是什麼?一般使用什麼方法來進行相機的標定?這些問題都是筆者在剛接觸標定時產生的疑問。筆者作為新手知道新手想要了解到什麼,怎麼解釋才更通俗易懂。我們先想象一下,相機是如何將現實中的物體呈現在二維上的?剛體變換 re...
深度相機三維重建
筆者近日學習kinect開發,需要得到指定物體的三維座標,在查閱了眾多資料之後,也有了一點點自己的看法。由於kinect是一款rgb d相機,能夠很容易獲得相應的深度資訊,而至於深度資訊,推薦一篇知乎專欄 然後應該如何處理得到的深度資訊呢,筆者覺得主要有三個步驟 1.首先應該將深度相機的深度影象和色...
基於slam的三維重建 SLAM 三維重建相關資源
有人問不知道去 找slam 三維重建相關資源,1 跟蹤slam前沿動態 更新的很頻繁 track advancement of slam 2 很全視覺slam資料大全,包括 the list of vision based slam visual odometry open source proje...