張正友標定學習

2021-09-11 01:33:20 字數 4491 閱讀 5342

張正友標定學習

1)標定的理解:影象和三維空間的物體存在某一種對應關係,可以表示為x=mx,而其中的m就表示一種幾何模型,這個相機模型中的引數就是相機引數,所以確定相機引數(內參/外參)的過程就為標定。

2)從計算機視覺角度理解成像過程:

​ 簡化成像模型:薄透鏡針孔模型

圖 成像過程

如上圖所示,從計算機視覺理解成像過程就是座標系的轉換,具體如下圖所示

a)世界座標系到相機座標系

如下圖所示,即為從物體的座標(稱為世界座標)到相機座標變換的過程,它是一種剛體運動,可以用平移、旋轉來描述。

矩陣表示如下:

其中第乙個矩陣表示旋轉矩陣,第二個為平移矩陣。

b)相機座標系到影象座標系:

如上圖所示根據相似三角形我們可以得到相機座標系下的像點和物點的關係,用矩陣表示如下:

c)影象座標系到畫素座標系的變換

​ 從上圖中我們可以看出相機的光心經過投影後到達影象的中心位置,此時與左上角頂點的距離為ox,oy如下圖所示,當影象座標系和畫素座標系座標軸平行時候可以得到如下轉換公式:

​ 每個畫素沿 x 軸的實際物理尺寸大小是 dx,沿 y 軸的實際物理尺寸大小是dy ,單位值公釐,並且對於數字影象我們可以進行大小的縮放,則能得到兩個座標系間的關係。 ![捕獲](c:\users\rh wang\desktop\捕獲.png)

3)張正友標定:

該文中將標定大致分為了兩種:基於標定物的標定和自檢校標定

基於三維參照物標定法(3d reference object based calibration):通過相機觀測具有較高精度的已知三維資訊進行標定解算的方法。標定物一般由兩個或者三個正交的平面組成,該方法需要較為昂貴的標定裝置和精心設計的標定步驟。在攝影測量學裡,最經典的就是利用已知控制點通過共線方程(collinearity equation),使用後方交會法(resection method)或光束法(bundle method )求解。

基於二維平面標定法(2d plane based calibration):這該類方法中,使用相機對具有某種圖案的平面(planar pattern)在不同的方位進行觀測。

基於一維線標定法(1d line based calibration):使用一組共線的點進行標定解算,通常的使用相機觀測繞某一固定點移動的直線,例如懸掛在天花板上的一行小球等。

自檢校:不使用任何標定物,僅僅利用像點間的對應關係進行標定解算,因此也可稱之為:基於0維標定物的方法。通常做法是移動相機,對一靜態的場景進行成像,通過核線變換後,滿足兩個代數約束條件,繼而可以進行相機標定。雖然不需要標定物,但是卻需要大量的引數需要估算,由此也導致較多很難的數學問題。

張正友標定推導詳解:

張正友標定的基本思路:我們先通過標定物平面到像平面的對映可以求得單應性矩陣,由單應性矩陣計算b(與相機內參有關係),從而得到相機的內參,由內參計算出外參,至此相機引數的封閉解已經求得。由於雜訊等原因的存在,以及實際相機並不是針孔等原因,求得的封閉解只是理想情況下的相機引數,

若要的到更為準確的相機引數,還需要進行優化。因此將該封閉解作為最大似然估計的初始解,不斷進行迭代,求得能夠使得目標函式最小的相機引數的數值解。

​ i. 標定平面到影象平面的單應性(homography):

張正友標定是基於二維平面標定法(2d plane based calibration),單應性矩陣為其中乙個重要理論,即乙個平面到另乙個平面的對映(物體是共麵點成像,即所有物點都在同乙個平面上),張正友標定中的單應性矩陣為影象平面與標定物棋盤格平面的單應性。

將相機模型如下表示:

a表示攝像機的內引數,具體表示式如下:

因為標定物是平面,所以我們可以把世界座標系構造在z=0的平面上。然後進行單應性計算。令z=0可以將上式轉換為如下形式:

既然,此變化屬於單應性變化。那麼我們可以給a[r1 r2 t]乙個名字:單應性矩陣。並記h= a[r1 r2 t]。h是乙個三3*3的矩陣,並且有乙個元素是作為齊次座標。因此,h有8個未知量待解。如何該單應性矩陣如何計算並沒有給出?

通過至少四對匹配點(其中任意三個不共線)帶入如下公式中:

匹配點(標定板影象有一定的要求,要保證標定板上已知點的座標順序和影象中對應的座標不能亂序了)如下圖所示:

​ ii. 相機內參矩陣計算(封閉解)

將h用列向量表示為:

由於旋轉執行時剛體運動則r為正交矩陣,那麼可以知道r中的列向量兩兩正交,所以

由此可以得到:

h1,h2是通過單應性求解出來的。那麼未知量就僅僅剩下內參矩陣a了。內參陣a包含5個引數:α,β,u0,v0,γ。那麼如果我們想完全解出這五個未知量,則需要3個單應性矩陣。3個單應性矩陣在2個約束下可以產生6個方程。這樣可以解出全部的五個內參了。一張標定板影象可以計算出乙個單應性矩陣,每個單應性矩陣能提供兩個方程,而內引數矩陣包含5個引數,要求解,至少需要3個單應性矩陣。為了得到三個不同的單應性矩陣,我們使用至少三幅棋盤格平面的進行標定。通過改變相機與標定板之間的相對位置來得到三個不同的。並且不同位置拍攝有一定的限制(不一定是每張標定影象都是可以用的,不同位置拍攝的影象計算的單應性矩陣組成的大矩陣的要是滿秩的)

b是乙個對稱陣,所以b的有效元素只剩下六個(因為有三對對稱的元素是相等的,所以只要解得下面的6個元素就可以得到完整的b了),讓這六個元素構成向量b。

則可以得到:

利用約束條件可以得到:

這個方程組的本質和前面那兩個用h和a組成的約束條件方程組是一樣的。得到同樣的結論:如果我們想完全解出這五個未知量,則需要3個單應性矩陣。3個單應性矩陣在2個約束下可以產生6個方程。這樣可以解出全部的五個內參了。我們怎樣才能獲得三個不同的單應性矩陣呢?答案就是,用三幅標定物平面的**。我們可以通過改變攝像機與標定板間的相對位置來獲得三張不同的**。(當然也可以用兩張**,但這樣的話就要捨棄掉乙個內參了γ=0)

內參引數:

​ iii. 相機外參計算(封閉解)

基於內參估計外參:

由於雜訊的存在,這樣求解的矩陣r一般並不具備旋轉矩陣的特性,更好的求解方法是通過奇異分解(cholesky分解)的方法

其實我們做了這麼多推導,僅僅是為後面的極大似然引數估計提供初值。但當然這個初值也是不可或缺的,因為沒有這個初值,就無法估計出更為準確的引數,並且初始解較為準確使得我們方便。

iv.最大似然估計相機引數(數值解):

上述的推導結果是基於理想情況下的解,但由於可能存在高斯雜訊,所以使用最大似然估計進行優化。假設同一相機從n個不同的角度的得到了n幅標定板的影象,每幅影象上有m個像點。mij表示第i幅影象上第j個像點對應的標定板上的三維點,則

構造似然函式:

為了能夠讓l取得最大值,需要最小化下面的值

最大似然估計精確估計相機引數,使得如上公式的值最小情況下的相機引數,這是乙個非線性優化的過程,使用levenberg-marquardt (稱萊文貝格-馬夸特方法(levenberg–marquardt algorithm)能提供數非線性最小化(區域性最小)的數值解。)演算法解決求得關於相機內參的數值解。

​ v. 鏡頭畸變估計(徑向):

​ 為了取得好的成像效果,通常要在相機的鏡頭前新增透鏡。在相機成像的過程中,透鏡會對光線的傳播產生影響,從而影響相機的成像效果,產生畸變:

畸變(distortion)是對直線投影(rectilinear projection)的一種偏移。簡單來說直線投影是場景內的一條直線投影到上也保持為一條直線。畸變簡單來說就是一條直線投影到上不能保持為一條直線了,這是一種光學畸變(optical aberration),可能由於攝像機鏡頭的原因。畸變一般可以分為:徑向畸變、切向畸變。徑向畸變來自於透鏡形狀,切向畸變來自於整個攝像機的組裝過程。

a.徑向畸變:產生原因是光線在遠離透鏡中心的地方比靠近中心的地方更加彎曲徑向畸變主要包含桶形畸變和枕形畸變兩種。

通過如下公式糾正:

b.切向畸變:當成像儀被貼上在攝像機的時候,會存在一定的誤差,使得影象平面和透鏡不完全平行而產生切向畸變。也就是說,如果乙個矩形被投影到成像儀上時,可能會變成乙個梯形

通過如下公式糾正:

在以上的糾正公式中,(x, y)是畸變點在成像儀上的原始位置,r為該點距離成像儀中心的距離。

張氏標定法中只關注徑向畸變。因為在實際情況下,徑向畸變較小,所以其可以用主點(principle point)周圍的泰勒級數展開的前幾項進行描述。張氏標定法,利用泰勒級展開前兩項來確定徑向畸變的畸變係數。如下所示:

k1,k2表示徑向畸變的係數。徑向畸變的中心和相機的主心是在相同的位置(由相機模型得到,影象座標系到畫素座標系的轉換矩陣):

即得到畸變引數k1,k2後,可以先將影象進行去畸變處理,然後用去畸變後的影象座標估計相機的內引數。和上面類似利用最大似然估計取得最優解,使用lm的方法估計使得下面式子是最小值的引數值:

綜上張正友的標定流程如下:

張正友標定的一般流程:

1.列印圖案並將其貼上到平面上。

2.通過移動平面或相機拍攝不同方向的標定物的平面的一些影象。

3.檢測影象中的特徵點。

4.如矩陣推導部分所示,使用閉式解決方案估算五個內在引數和所有外部引數

5.通過最大似然估計來優化所有引數(使用封閉解求得的相機引數作為初值,會縮短迭代的次數),包括鏡頭失真引數。

張正友相機標定

1.關於資料說明 張正友標定2000 lm演算法1978 the levenberg marquardt algorithm,implementation and theory opencv 參考 其中關於calibratecamera函式可見 此函式會輸出乙個3x3內參矩陣,乙個5維畸變係數,n幅...

張正友標定法原理 張正友標定演算法原理詳解

擊上方 新機器視覺 選擇加 星標 或 置頂 重磅乾貨,第一時間送達 張正友標定 是指張正友教授1998年提出的單平面棋盤格的攝像機標定方法 1 文中提出的方法介於傳統標定法和自標定法之間,但克服了傳統標定法需要的高精度標定物的缺點,而僅需使用乙個列印出來的棋盤格就可以。同時也相對於自標定而言,提高了...

關於張正友標定法

關於演算法的實現最好參照一下 opencv2計算機視覺程式設計手冊 第191頁,講的非常好,事實上我們只需要有3d點和2d點的對應我們就可以計算出對應的相機矩陣了,但是一直讓我迷惑的是3d點如何得到。那麼張正友標定法事實上是建立了乙個棋盤模型,對這個棋盤模型進行了不同角度的拍照,這樣這些拍照imag...