張正友相機標定算法解讀


張正友標定算法解讀

  一直以來想寫篇相機標定方面的東西,最近組會上也要講標定方面東西,所以順便寫了。無論是OpenCV還是matlab標定箱,都是以張正友棋盤標定算法為核心實現的,這篇PAMI的文章《A Flexible New Technique for Camera Calibration》影響力極大,張正友是浙江大學的機械系出身,貌似現在是微軟的終身教授了。我就簡單的介紹下算法的核心原理,公式的推理可能有點多。

一 基本問題描述:空間平面的三維點與相機平面二維點的映射。

假設空間平面中三維點:(齊次坐標,世界坐標系)。

  相機平面二維點:(齊次坐標,相機坐標系)。

那么空間中的點是如何映射到相機平面上去呢?我們用一個等式來表示兩者之間關系:

(1)

注:A為相機內參矩陣,R,t分別為旋轉和平移矩陣,s為一個放縮因子標量。

我們把等式(1)再簡化下:

(2)

因為張正友算法選取的是平面標定,所以令z=0,所以平移向量只有r1,r2即可。H就是我們常說的單應性矩陣,在這里描述的是空間中平面三維點和相機平面二維點之間的關系。因為相機平面中點的坐標可以通過圖像處理的方式(哈里斯角點,再基於梯度搜索的方式精確控制點位置)獲取,而空間平面中三維點可以通過事先做好的棋盤獲取。所以也就是說每張圖片都可以計算出一個H矩陣。

二 內參限制

我們把H矩陣(3*3)寫成3個列向量形式,那么我們把H矩陣又可寫成:

(3)

注:lamda是個放縮因子標量,也是s的倒數。

那么現在我們要用一個關鍵性的條件:r1和r2標准正交。

正交:(4)

單位向量(模相等): (5)

這個兩個等式是非常優美的,因為它完美的與絕對二次曲線理論聯系起來了,這里就不展開了。

三 相機內參的求解

我們令:

(6)

我們可知B矩陣是個對稱矩陣,所以可以寫成一個6維向量形式:

(7)

我們把H矩陣的列向量形式為:

(8)

那么根據等式(8)我們把等式(4)改寫成:

(9)

(10)

最后根據內參數限制條件(等式(4)(5)):

(11)

即,(12)

V矩陣是2*6矩陣,也就是說每張照片可建立起兩個方程組,6個未知數。根據線性代數知識可知,解6個未知數需至少6個方程組,所以也就是說我們至少需要三張照片就求解未知數。b矩陣的解出,相機內參矩陣A也就求解出,從而每張圖像的R,t也就根據等式(1)迎刃而解。

四 參數優化

因為初始的參數已經求解,所以我們將每張圖像的控制點根據求解的參數重投影回三維空間,最小化與真實值的差異,其實就是建立非線性最小化模型:

(13)

這里用的是Levenberg-Marquardt迭代算法。

至此,整個流程走完,至於相機畸變系數的求解本文也不具體展開了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM