我發(fā)現(xiàn)認(rèn)識的大佬都有寫博客的習(xí)慣,今天我建立了這個文集帖蔓,從現(xiàn)在開始我也開始對機(jī)器視覺及相關(guān)領(lǐng)域的學(xué)習(xí)過程做一些筆記和整理,同時記下自己的心得體會瞳脓,作為記錄塑娇,同時也分享給大家。
本文按照張正友的原文順序劫侧,進(jìn)行一些解讀或筆記記錄埋酬。
第一部分:相機(jī)標(biāo)定的動機(jī)
相機(jī)標(biāo)定在3D視覺中是非常重要的一個步驟,因?yàn)槲覀円獜囊恍?D圖像中獲取待測物的3D信息烧栋。目前的相機(jī)標(biāo)定方法大致可以分為兩大類:
① 攝影測量標(biāo)定:此類方法一般需要通過觀察三維尺寸已知且精度非常高的待測物來實(shí)現(xiàn)写妥,一般情況下該方法的待測物包含了兩個或三個相互正交的平面,有時候平面還需要進(jìn)行精度較高的變換劲弦。這類方法標(biāo)定效率高耳标,但成本也高。
② 相機(jī)自檢校標(biāo)定法:這類方法不需要任何標(biāo)定物邑跪,只需要調(diào)整相機(jī)次坡,從不同角度取拍攝某靜態(tài)畫面呼猪,此畫面一般能提供2個相機(jī)內(nèi)參解析的約束條件。如果相機(jī)內(nèi)參不變砸琅,那么三幅畫面就可以讓我們同時解得相機(jī)內(nèi)參和用于3D重構(gòu)的外參宋距。這類方法非常靈活,但是不夠成熟症脂。
第二部分:基本方程
2.1 相機(jī)針孔模型回顧
在另一篇文章中我會對針孔模型進(jìn)行詳細(xì)的講解谚赎,這里只作簡要回顧。針孔模型鏈接:
根據(jù)相機(jī)針孔原理诱篷,可以推導(dǎo)出空間3D點(diǎn)M的坐標(biāo)和它的像素坐標(biāo)之間的關(guān)系如下所示
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
式中:壶唤,表示像素坐標(biāo)系下的坐標(biāo);
棕所,表示世界坐標(biāo)系下的坐標(biāo)闸盔;s為尺度因子;R為世界坐標(biāo)系與圖像坐標(biāo)系的旋轉(zhuǎn)矩陣琳省,t為世界坐標(biāo)系與圖像坐標(biāo)系的平移向量迎吵,R和t中的參數(shù)均被稱為相機(jī)的外部參數(shù),簡稱外參针贬;矩陣A被稱為內(nèi)參矩陣击费,如下所示:
矩陣A中,為光軸與像平面焦點(diǎn)在像素坐標(biāo)系下的坐標(biāo)桦他,將它成為主點(diǎn)蔫巩;α和β是圖像u軸和v軸上的尺度因子,γ為像素兩軸非正交項(xiàng)快压。
2.2 模型平面和像面之間的單應(yīng)性矩陣 Homography?
OK批幌,單應(yīng)性什么意思呢?這里對單應(yīng)性做一丟丟的解釋:Homography其實(shí)就是一個變換(3*3矩陣)嗓节,目的是將一張圖中的點(diǎn)映射到另一張圖中對應(yīng)的點(diǎn),單應(yīng)性變換是對齊次坐標(biāo)下點(diǎn)的線性變換皆警,單應(yīng)性矩陣約束強(qiáng)拦宣,是點(diǎn)到點(diǎn)的一一對應(yīng)。
假設(shè)待測平面是在世界坐標(biāo)系Z=0處信姓,那么通過(1)式可以得到:
因此可以得到鸵隧,世界坐標(biāo)系(Z=0)平面下的點(diǎn)M及其在像平面中的像坐標(biāo)關(guān)系可以用如下的單應(yīng)性矩陣H聯(lián)系起來:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 其中,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
2.3 相機(jī)內(nèi)參約束條件
若給定模型平面(即世界坐標(biāo)系下Z=0的平面)下的一幅圖像意推,那么對應(yīng)的單應(yīng)性矩陣就可以被寫出來豆瘫,將該單應(yīng)性矩陣設(shè)為,從(2)式可以得到:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中λ為任意實(shí)數(shù)赡茸。(為什么這里λ可以為任意實(shí)數(shù)仍秤?主要是因?yàn)辇R次坐標(biāo)有規(guī)模不變性。這就要從齊次坐標(biāo)講起了,后面我會寫一篇專門說說其次坐標(biāo)和歐氏空間的關(guān)系)
由于旋轉(zhuǎn)矩陣的三個向量具有空間正交特性贺拣,且任意一行或一列對應(yīng)的向量模都為1,因此可以得到:矗愧,
御吞,而
(此處令λ=1),因此可以得到下式:
上述兩個式子即為給定一個單應(yīng)性矩陣瓦哎,針對相機(jī)內(nèi)參的兩個約束條件砸喻。由于一個單應(yīng)性矩陣包含了8個變量(由于齊次坐標(biāo)的規(guī)模不變性,可以任意設(shè)置(2)中尺度參數(shù)蒋譬,那么矩陣H中的參數(shù)可以由9個變?yōu)?個)割岛,并且待求的外部參數(shù)一共有6個(3個旋轉(zhuǎn)和三個平移),因此我們只能得到2個內(nèi)參的約束條件犯助。
2.4 幾何解釋
先請移步看一下這一小節(jié)的基礎(chǔ):絕對圓錐曲線~~
模型平面在相機(jī)坐標(biāo)系下可以寫為(這里還沒明白癣漆,請各路大神明白了幫忙補(bǔ)充~):
當(dāng)w=0時,表示無窮遠(yuǎn)處的點(diǎn)也切;w=1時與之相反扑媚。此平面與無窮遠(yuǎn)處的平面相交為一條線。由于/
/
相互正交雷恃,因此
疆股,
,又因?yàn)闊o窮遠(yuǎn)處w=0倒槐,因此可以很容易看出點(diǎn)
和
都在這條無窮遠(yuǎn)處的相交線上旬痹。并且任意一個在該線上的點(diǎn)都可以用這兩個點(diǎn)的線性組合來表示,如下:
接下來計(jì)算絕對圓錐曲線和該交線的交點(diǎn)讨越,根據(jù)定義两残,無窮遠(yuǎn)處絕對圓錐曲線上的點(diǎn)滿足:
,即
把跨,則b=±ai人弓,那么交線與絕對圓錐曲線的交點(diǎn)為:
這兩個點(diǎn)的像點(diǎn)為:
由于無窮遠(yuǎn)交線是在相機(jī)坐標(biāo)系下表示的,個人理解該交線是以相機(jī)主點(diǎn)為圓心的弧線着逐,因此無窮遠(yuǎn)處的點(diǎn)在像平面上的投影只與相機(jī)內(nèi)參(含尺度因子崔赌,只不過由于齊次坐標(biāo),尺度因子的值不影響結(jié)果)有關(guān)耸别,旋轉(zhuǎn)矩陣為單位矩陣健芭,即不發(fā)生旋轉(zhuǎn),秀姐,
慈迈,而平面在世界坐標(biāo)系Z=0處,根據(jù)(2)式省有,
沒有對世界坐標(biāo)起作用痒留,因此可以省略谴麦,那么(2)可以寫為:
并且已經(jīng)知道,因此:
展開后為:
這個式子中的實(shí)部和虛部都必須為0狭瞎,因此可以得到(3)和(4)式细移。(why只有一組,不應(yīng)該還有一組么....有誰明白的幫忙解釋一下......)
3 解決相機(jī)標(biāo)定問題
這一小節(jié)主要詳細(xì)講解如何實(shí)現(xiàn)對相機(jī)的標(biāo)定熊锭。
3.1 閉合解
令:
矩陣B是對稱矩陣弧轧,其中有6個參數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
假設(shè)H的第i列為:,那么可以得到:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中:
【這個過程可以用maple去驗(yàn)證~】
再把前文的2個約束條件拿出來看一下:
那么這兩個式子可以簡潔地寫為:
若我們有n幅圖像碗殷,那么一共就有2n個方程精绎。
如果n=1,就只能得到2個方程锌妻,此時只能假設(shè)主點(diǎn)坐標(biāo)已知代乃,且γ=0,來求解α和β仿粹;如果n=2搁吓,那么就能得到4個方程,但是相機(jī)內(nèi)參A中有5個參數(shù)吭历,此時可以令γ=0堕仔,從而求解其他四個主要參數(shù);如果n≥3晌区,我們就可以解得b中的所有參數(shù)摩骨。
一旦b確定下來,就能夠解得矩陣A中的所有相機(jī)內(nèi)參朗若。
A已知后恼五,每幅圖像的外參也就能同時確定下來。
其中:
3.2 最大似然估計(jì)
假設(shè)我們獲取了n幅標(biāo)定板圖像哭懈,每個圖像上有m個點(diǎn)灾馒,那么可以獲取下式的極小值得到最大似然估計(jì):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中,為點(diǎn)
在第i幅圖像的投影點(diǎn)遣总。
首先要獲得A的估計(jì)值你虹,然后利用上面的描述的求解方法,獲得,
彤避,然后利用LM迭代優(yōu)化方法,使得上式最小化夯辖。
3.3 徑向畸變
假設(shè)理想狀態(tài)下琉预,像素坐標(biāo)為(u,v),對應(yīng)的實(shí)際坐標(biāo)為蒿褂,理想狀態(tài)下的坐標(biāo)為相機(jī)針孔模型得到的坐標(biāo)圆米。其對應(yīng)的圖像坐標(biāo)為(x,y)和
卒暂。那么根據(jù)畸變:
將(令γ=0)和
帶入可以得到:
對于每個圖像上的每個點(diǎn),可以寫為:
在已經(jīng)估計(jì)出A中的參數(shù)后娄帖,我們可以獲得理性情況下的坐標(biāo)(u,v)也祠,然后我們就可以用上式來估計(jì)畸變參數(shù)k1和k2。
如果有n幅圖像近速,每幅圖像上有m個點(diǎn)诈嘿,那么總共能獲得2mn個方程:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其中D為2mn*2的矩陣。削葱。其最小二乘解為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
當(dāng)畸變參數(shù)估計(jì)完成后奖亚,我們就可以將非線性優(yōu)化調(diào)整為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
標(biāo)定流程:
1 打印出一張標(biāo)定圖并貼到一個平面上; 2 通過移動相機(jī)或者標(biāo)定平面采集不同位置析砸、不同方向的標(biāo)定板圖像昔字;3 特征點(diǎn)檢測;4 估算內(nèi)參首繁,然后得到外參作郭;5 估算畸變系數(shù);6 優(yōu)化所有參數(shù)弦疮。
Matlab有自帶的CameraCalibration標(biāo)定工具箱夹攒,可以直接用,很方便挂捅。
本文有很多內(nèi)容都是基于本人的理解芹助,若理解有誤,歡迎指正闲先!
原文出處:A flexible new technique for camera calibration - IEEE Journals & Magazine