张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】
三、致敬“張正友標定”
? ? ? ? ?此處“張正友標定”又稱“張氏標定”,是指張正友教授于1998年提出的單平面棋盤格的攝像機標定方法。張氏標定法已經作為工具箱或封裝好的函數被廣泛應用。張氏標定的原文為“A Flexible New Technique forCamera Calibration”。此文中所提到的方法,為相機標定提供了很大便利,并且具有很高的精度。從此標定可以不需要特殊的標定物,只需要一張打印出來的棋盤格。So great! 這樣的方法讓人肅然起敬。所以玉米的這篇博客的題目是:致敬“張氏標定”。
? ? ? ? ?當然,此博的內容也是圍繞著“張氏標定”進行的,在這里,玉米主要介紹一下,“張氏標定”的數學思路。因為標定在整個基于標定攝像機的三維重建的幾何過程占有最重要最核心的地位。如下圖:
? ? ? ? ?從圖中明顯可以看出,標定得到的內參、外參和畸變系數,是雙目視覺進行圖片矯正,攝像機校正和3D恢復的基礎。沒有好的標定,雙目視覺系統就無法完成3D重建。
? ? ? ? 既然標定對雙目視覺如此重要,我們有必要對數學的深層含義多加理解。以張氏標定為例,讓我們挖開工具箱,看看其數學本質吧。因為張教授的論文中對標定方法的講述是循序漸進的,所以玉米在這里將按照張教授論文中的順序,為大家講述一下,張氏標定的脈絡。
1、標定平面到圖像平面的單應性
? ? ? ? 因為張氏標定是一種基于平面棋盤格的標定,所以想要搞懂張氏標定,首先應該從兩個平面的單應性(homography)映射開始著手。
? ? ? ? 單應性(homography):在計算機視覺中被定義為一個平面到另一個平面的投影映射。首先看一下,圖像平面與標定物棋盤格平面的單應性。
? ? ? ? 由上兩篇博文中講到的攝像機模型,肯容易得到:
? ? ? ? ?其中m的齊次坐標表示圖像平面的像素坐標(u,v,1),M的齊次坐標表示世界坐標系的坐標點(X,Y,Z,1)。A[R t]即是上面一篇博客推出的P。R表示旋轉矩陣、t表示平移矩陣、S表示尺度因子。A表示攝像機的內參數,具體表達式如下:
α=f/dx,β=f/dy,因為像素不是規規矩矩的正方形,γ代表像素點在x,y方向上尺度的偏差。
? ? ? ? ?這里還有一個“梗兒”,就是S。它只是為了方便運算,對于齊次坐標,尺度因子不會改變坐標值的。
因為標定物是平面,所以我們可以把世界坐標系構造在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平面)直線的垂直關系即可輕松推出。
? ? ? ? 2、旋轉向量的模為1,即|r1|=|r2|=1。這個也很容易理解,因為旋轉不改變尺度嘛。如果不信可以回到上一篇博客,找到個方向的旋轉矩陣化行列式算一下。
? ? ? ? 通過上面的式子可以將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、基于內參陣估算外參陣
?? ??? 通過上面的運算,我們已經獲得了攝像機的內參陣。那么對于外參陣,我們很容易通過下面的公式解得:
? ? ? ?對上面公式進行化簡,可以得到:
? ? ? ? 至此,玉米已經將張氏標定的主體數學框架已經講完了。介于篇幅關系(怕太長大機會讀的昏昏欲睡,哈哈)。但其實我們做了這么多推導,僅僅是為后面的極大似然參數估計提供初值。但當然這個初值也是不可或缺的,因為沒有這個初值,就無法估計出更為準確的參數。玉米將張氏標定中用于提高標定精度的極大似然算法,放到下一篇博客中進行講解。
?
還是老話:玉米才疏學淺,講解之中難免有紕漏,請大家諒解,并指正。
總結
以上是生活随笔為你收集整理的张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring framework源码下载
- 下一篇: [BZOJ 5074] 小B的数字