张正友标定算法解读(转)
一直以來想寫篇相機(jī)標(biāo)定方面的東西,最近組會上也要講標(biāo)定方面東西,所以順便寫了。無論是OpenCV還是matlab標(biāo)定箱,都是以張正友棋盤標(biāo)定算法為核心實現(xiàn)的,這篇PAMI的文章<<A Flexible New Technique for Camera Calibration>>影響力極大,張正友是zju的機(jī)械系出身,貌似現(xiàn)在是微軟的終身教授了,有點牛的。我就簡單的介紹下算法的核心原理,公式的推理可能有點多。。。
一 基本問題描述:空間平面的三維點與相機(jī)平面二維點的映射
假設(shè)空間平面中三維點: (齊次坐標(biāo),世界坐標(biāo)系)
相機(jī)平面二維點: (齊次坐標(biāo),相機(jī)坐標(biāo)系)
那么空間中的點是如何映射到相機(jī)平面上去呢?我們用一個等式來表示兩者之間關(guān)系:
(1)
注:A為相機(jī)內(nèi)參矩陣,R,t分別為旋轉(zhuǎn)和平移矩陣,s為一個放縮因子標(biāo)量。
我們把等式(1)再簡化下:
(2)
因為張正友算法選取的是平面標(biāo)定,所以令z=0,所以平移向量只有r1,r2即可。H就是我們常說的單應(yīng)性矩陣,在這里描述的是空間中平面三維點和相機(jī)平面二維點之間的關(guān)系。因為相機(jī)平面中點的坐標(biāo)可以通過圖像處理的方式(哈里斯角點,再基于梯度搜索的方式精確控制點位置)獲取,而空間平面中三維點可以通過事先做好的棋盤獲取。所以也就是說每張圖片都可以計算出一個H矩陣。
二 內(nèi)參限制
我們把H矩陣(3*3)寫成3個列向量形式,那么我們把H矩陣又可寫成:
(3)
注:lamda是個放縮因子標(biāo)量,也是s的倒數(shù)。
那么現(xiàn)在我們要用一個關(guān)鍵性的條件:r1和r2標(biāo)準(zhǔn)正交。
正交:(4)
單位向量(模相等): (5)
這個兩個等式是非常優(yōu)美的,因為它完美的與絕對二次曲線理論聯(lián)系起來了,這里就不展開了。
三 相機(jī)內(nèi)參的求解
我們令:
(6)
我們可知B矩陣是個對稱矩陣,所以可以寫成一個6維向量形式:
(7)
我們把H矩陣的列向量形式為:
(8)
那么根據(jù)等式(8)我們把等式(4)改寫成:
(9)
(10)
最后根據(jù)內(nèi)參數(shù)限制條件(等式(4)(5)):
(11)
即,(12)
V矩陣是2*6矩陣,也就是說每張照片可建立起兩個方程組,6個未知數(shù)。根據(jù)線性代數(shù)知識可知,解6個未知數(shù)需至少6個方程組,所以也就是說我們至少需要三張照片就求解未知數(shù)。b矩陣的解出,相機(jī)內(nèi)參矩陣A也就求解出,從而每張圖像的R,t也就根據(jù)等式(1)迎刃而解。
四 參數(shù)優(yōu)化
因為初始的參數(shù)已經(jīng)求解,所以我們將每張圖像的控制點根據(jù)求解的參數(shù)重投影回三維空間,最小化與真實值的差異,其實就是建立非線性最小化模型:
(13)
這里用的是Levenberg-Marquardt迭代算法。
至此,整個流程走完,至于相機(jī)畸變系數(shù)的求解本文也不具體展開了。
總結(jié)
以上是生活随笔為你收集整理的张正友标定算法解读(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《迷途之光》保姆级新手攻略-迷途之光新手
- 下一篇: 微信批量添加好友方法教程