【計算機視覺】攝像機標定2 原理篇
轉載 攝像機標定
http://blog.csdn.net/tiemaxiaosu/article/details/51728961
一、概述
1、攝像機標定內容
攝像機標定實際上是要求出6個外引數、5個內參數,即旋轉和平移矩陣 R 和 T 中的三個座標系旋轉角度和座標系平移量 (fu = f/Sx, fv = f/Sy, u0, v0, u),以及各種畸變係數 k1、k2、p1、p2、s1、s2 等。若不考慮離散後像素變形(不是矩形方塊)或者成像平面不與光軸正交,則可以不考慮畸變因子u。一般情況下,畸變係數只考慮徑向畸變係數,並設 k1 = k2 = k。
如果已知攝像機的內外引數,即矩陣M已知,對任何空間點W,知道它的世界座標[X Y Z 1]T,就可以求出其影象畫素座標系中該影象點w的座標(u, v)。反過來,如果已知空間某點的影象座標,即使已知內外引數,空間座標也不是唯一確定的,它對應空間的一條射線。
2、經典標定方法
經典標定方法主要包括透視變換法、張正友法、直接線性變換法、兩步法和雙平面法等。其中,直線線性變換是最優化演算法,兩步法進一步考慮了畸變補償,雙平面法合理運用了攝像機的成像模型。經典標定方法的標定流程如下:
1)佈置標定點,固定攝像機進行拍攝。
2)測量各標定點的像平面座標(u,v)。
3)將各標定點相應的像平面座標(u,v)及世界空間座標(X, Y, Z)代入攝像機模型式中,根據標定方法,求解攝像機內外引數。
二、攝像機標定的透視變換法
將透視變換矩陣和成像模型寫為:
式中,[X Y Z 1]T 是空間三維的世界座標向量;[u v 1]T 為相應的影象座標向量;mij為透視變換矩陣M的元素。式(5.95)包含如下三個方程:
在三個方程中,用第三個方程分別去除第一個方程和第二方程,整理消去 z 後,得到如下關於 mij 的線性方程,即
式(5.97)描述了三維世界座標點向量[X Y Z 1]T 與相應影象點向量[u v 1]T 之間的關係。如果已知三維世界座標和相應影象座標,將變換矩陣看作未知數,則共用12個未知數。對於每一個物體點,都有上述的兩個方程。因此,取6個物體點,就可以得到12個方程,表示成矩陣形式為:
其中
M 矩陣乘以任何不為零的數,不影響(X, Y, Z) 與(u, v) 的關係,一般設m34 = 1。標定時M 取樣點數為n,則共有2n 個方程,11個未知數,2n >= 11,方程沒有準確解,所以採用最小二乘法估計求出11個引數。由最小二乘法可得:
求出係數矩陣M後,可根據式(5.65),解得攝像機的內外引數。求矩陣M時,設m34=1,所求矩陣M與實際矩陣M相差一個m34因子。因此有如下關係式:
即
設ax = f/Sx,ay = f/Sy,為水平方向和垂直方向的尺度因子,則有
式中,MiT(i=1~3)為M矩陣的第i行的前3個元素組成的行向量;m14(i=1~3)為M矩陣第i行第4列元素;RiT(i=1~3)為旋轉矩陣R的第i行;Tx,Ty,Tz,分別為平移向量T的三個向量。比較上式兩邊可知,m34M3 = R3,由於R3 是正交單位矩陣的第3行,且|R3| = 1(向量的模),因此可以從m34|M3| = 1 求解
再由以下式子可以得出R3、u0、v0、ax、ay,有
式中,符合×表示向量積運算子。由以上求出的引數可進一步求出以下引數:
以上介紹了攝像機標定的透視變換法的計算過程,在用真實資料進行實驗時,需要注意以下問題:
1)矩陣M確定了空間點座標與它的影象點座標的關係。在許多應用場合,如立體視覺系統,計算矩陣M後,不必再分解出攝像機內外引數。
2)矩陣M由4個攝像機內部引數及R與T所確定。由矩陣R是正交單位矩陣可知,R和T的獨立變數數為6,因此矩陣M由10個獨立變數所確定
參考http://blog.csdn.net/kyjl888/article/details/71305573
攝像機定標
轉載http://www.sigvc.org/why/book/3dp/chap6.3.1.htm假設你現在已經拍攝了腳的多張各個角度的2D照片,那麼如何將這些照片轉化成一個3D數字化形狀呢?首先第一步,你要對攝像機進行定標,比如確定攝像機的焦距、擺放位置和角度等。
我們先來看看攝像機的成像模型[1]。攝像機的成像模型一般採用針孔模型(Pin-Hole Model),與我們中學時學的小孔成像是一個原理,如圖6-21所示。
圖6-21 兩千多年前,墨子和學生進行了世界上第一個小孔成像實驗 (圖片來源:大科技)
提示:其實兩千多年前我國古代的大思想家墨子就和學生進行了世界上第一個小孔成像實驗,並記錄到“景到(即,倒),在午(即,交叉)有端(即,小孔),與景長,說在端”。因此墨子被西方稱為“攝影光學理論和實踐的開創者,探索光影成像的第一人”。
如圖6-22左邊所示,為了把成像模型解釋清楚,我們來仔細看看攝像機的成像幾何關係。同時我們把成像平面放到了小孔的前面,這樣成像就是正立著的而不像上圖那樣倒立了。
圖6-22 左:針孔成像模型;右:影象座標系
—O點稱為攝像機的光心,由點O與Xc、Yc、Zc軸組成的直角座標系稱為攝像機座標系。
—I是成像平面(影象平面),我們把鏡頭對焦後,物體就成像在這個平面。影象平面構成了一個影象座標系,橫座標為x,縱座標為y。
—Xc軸和Yc軸與影象的x軸與y軸平行,Zc軸為攝像機的光軸,它與影象平面垂直。光軸與影象平面的交點,即為影象座標系的原點Oxy。
—OOxy的長度為攝像機焦距f。
一下子冒出這麼多術語,我們中場休息一下,給出本節的第1個公式來醒醒腦子。我們先仔細研究一下影象座標系。如圖6-22右邊所示,影象座標系以Oxy為原點,由x、y軸組成,單位是mm。然而,在實際的相機中,並不是以物理單位(如mm)來表示某個成像點的位置的,而是用畫素的索引。比如一臺相機的畫素是1600×1200,說明影象感測器(也就是以前的膠片)橫向有1600個捕捉點,縱向有1200個,合計192萬個。對於某個成像點,實際上都是這樣表示的:橫座標第u個點,縱座標第v個點(而不是橫座標xmm,縱座標y mm)。假設Oxy在u、v座標系中的座標為(),每一個畫素在x軸與y軸方向上的物理尺寸為寬dx mm,高dymm,則影象中任意一個畫素的索引座標與物理座標滿足下面的換算關係:
上面的這個方程組,分成了單獨兩個公式來寫,讓人感覺關聯不夠緊密(“本是一家人卻說兩家話”),因為實際上是要同時滿足的,因此我們把兩行合併成一個公式來寫:
(3)
上面的形式被稱作為矩陣形式。形象地說,矩陣(Matrix,沒錯,電影《黑客帝國》的英文片名就是這個單詞)就是將多個有關聯的元素用個大括號括在一起成為一個整體,以便直接對整體進行運算以分析出各個元素之間的內在關係。一個m×n的矩陣是一個由m行n列元素排列成的矩形陣列;當m=1或n=1時,則特稱為向量。上式左邊是個3×1的向量,右邊表示了一個3×3矩陣和一個3×1向量之間的相乘。改成矩陣寫法之後,將兩個公式濃縮成了一個公式,整體感是不是提升了很多?從上面也可以看出,與普通代數(傳統代數)不同,矩陣代數這種超凡代數描述的是多維而不僅是一維的代數;普通(一維)代數的乘法與乘子順序無關,,而矩陣代數通常情況下,即一般不滿足交換律;此外普通代數只有0沒有逆(倒數),而矩陣代數中,很多矩陣都沒有逆。
提示:有的讀者可能會問,上面的矩陣為什麼有3行呢?之前的公式不是隻有2個嗎?好問題!這是我偷偷塞了點料,把之前的座標(u,v)和(x,y)都轉成齊次座標(u,v,1)和(x,y,1)了。齊次座標(Homogeneous Coordinate)的好處是:即使乘個係數k(),仍對應於原來的同一個點,也即(u,v,1)與(k×u,k×v,k)對應於同一個點。同時,還便於幾何變換(旋轉、縮放、平移),只需用一個大一號的矩陣即可將變換矩陣的乘法(旋轉、縮放)和加法(平移)合併到一塊。此外,齊次座標還可表示不同的無窮遠點。
好,我們接著進行術語教學。之前我們定義了攝像機座標系,但由於攝像機可安放在環境中的任何位置,所以我們還要定義一個世界座標系來描述攝像機在環境中的位置,由Xw、Yw、Zw軸組成。攝像機座標系與世界座標系之間的關係可以用旋轉矩陣R與平移向量t來描述,即:
(4)
矩陣和向量用黑斜體表示,其中R為3×3的矩陣;t為3×1的向量;Mb為4×4的矩陣,其也被稱為攝像機外部引數矩陣。
知識點:你在高中學習的初等數學是研究常量、研究靜態的數學;而在大學裡學的高等數學是研究變數、研究運動的數學。下面我們再解釋一下空間、向量、矩陣的關係。
空間(Space)是高等數學的基礎概念,可被通俗地解釋為“存在一個集合,在這個集合上定義某某概念,然後滿足某些性質”。從拓撲空間開始,一步步可往上“升級”成更高階的空間。線性空間(又名向量空間,Vector Space)其實還是比較初級的,如果在裡面定義了範數(“長度”),就成了賦範(Normed)線性空間。賦範線性空間滿足完備性,就成了巴那赫(Banach)空間;若定義了角度,則為內積(Inner Product)空間。內積空間若同時滿足完備性,就得到希爾伯特(Hilbert)空間(見下面的6.4.2節)。
以我們日常生活在其中的三維歐幾里得(Euclidean)空間為例:1)由無窮多個位置點組成,2)這些點之間存在相對的關係,3)可在空間中定義長度、角度,4)這個空間可以容納運動。這裡我們所說的運動是從一個點到另一個點的“躍遷”跳躍式地運動(變換,Transform),而不是微積分意義上的“連續”性的運動。實際上,不管什麼空間,都必須容納和支援在其中發生的符合規則的運動(變換)。比如拓撲空間中有拓撲變換,線性空間中有線性變換,仿射空間中有仿射變換,其實這些變換都只不過是對應空間中允許的運動形式而已。
線上性空間中選定基(座標系)之後,向量刻畫物件,矩陣刻畫物件的運動,也即用矩陣與向量的乘法來施加運動。矩陣的本質是運動(變換)的描述,比如在一個線性空間中,只要我們選定一組基,那麼對於任何一個線性變換,都能夠用一個確定的矩陣來加以描述。
若矩陣與是同一個線性變換的兩個不同的描述(之所以會不同,是因為選定了不同的基,也就是選定了不同的座標系),則一定能找到一個非奇異矩陣,使得、之間滿足這樣的關係:。這就是相似矩陣的定義,即這兩個相似矩陣與實際上描述的是同一個線性變換,因此特徵值(Eigenvalue)相同。
從另一個角度來看,矩陣是由一組向量組成的,如果矩陣非奇異的話,那麼這一組向量是線性無關的,於是它們組成了度量線性空間的一個座標系。換言之,矩陣實際上描述了一個座標系。之所以矩陣既是運動,又是座標系,是因為物件的變換等價於座標系的變換。
此外,n階矩陣的行列式也有著明確的幾何意義:為n個組成向量按照平行四邊形法則所張成的一個n維立方體的體積(如果是2維,則為面積)。向量的線性相關性實際上表示了這些向量所張成的廣義平行四邊形面積(體積)為0,例如此時的向量共線(n=2情況下)或共面(n=3情況下)。反之,若線性無關,則體積(行列式)不為0。此外,我們也不難看出,行列式不為0的矩陣,是可逆的(非奇異),即可將一組線性無關的向量變換成另一組也保持無關性的向量。
如果一個n階矩陣雖不能保持n個向量的線性無關性,但它能保持r <n個向量的線性無關性,r就被稱作矩陣的秩,表示了能保持非0體積的幾何體的最大維數。
外圍的知識都介紹完了,好,我們現在正式開始介紹針孔模型。如圖6-22左邊所示,空間上任何一點P在影象上的投影位置p為光心O與P點的連線OP與影象平面的交點,這種關係也被稱為中心射影或透視投影。由幾何比例關係可輕易得出(先看下面公式的左邊):
ó (5)
其中(x,y)為p的影象座標,(Xc,Yc,Zc)為空間點P在攝像機座標系下的座標。同樣,上式的箭頭右邊為左邊的矩陣形式,左右兩邊是等價的。
我們將公式(3)和公式(4)代入公式(5),就可以得到P點在世界座標系下的座標(Xw,Yw,Zw)與其在影象平面的投影點p的座標(u,v)的關係:
其中,,;M=MaMb為3×4矩陣,稱為投影矩陣;Ma完全由、、、決定的攝像機內部結構(如焦距、光心)有關,稱為攝像機內部引數;Mb完全由攝像機相對於世界座標系的方位(如擺放位置和拍攝角度)決定,稱為攝像機外部引數。確定某一攝像機的內部和外部引數,就被稱為攝像機定標/標定(Calibration)。注意,很多情況下的攝像機定標僅指確定攝像機的內部引數。
由上式可以看出,如果已知攝像機的內參數Ma和外引數Mb(即定標好了),兩者直接一相乘就可得到投影矩陣M。投影矩陣M有什麼作用呢?對任意空間點P,如果已知它的世界座標系座標,根據M,就可求出它的影象點p的位置(u,v)。
單臺攝像機的定標
下面介紹一下攝像機定標的過程,如圖6-23左邊所示,我們在攝像機前放一個標定塊。所謂標定塊,就是每個特徵點的空間位置都被事先測定的基準塊,比如兩個點的距離都被精確做成了1.0000 cm(精確到小數點後若干位)。用相機拍攝標定塊的影象,就可以根據特徵點的影象座標(u,v)與真實三維空間座標(Xw,Yw,Zw)之間的關係,來計算攝像機的內外引數了。我們需要6個或以上特徵點,就可求解出投影矩陣M。但在實際應用中,我們通常使用了幾十個特徵點以減少可能的誤差。此外,我們常用圖6-23右邊的平面標定塊來進行標定[71],標定時先平放著拍一張正面照片,然後再用個小物件輪流把每邊往空間上翹起來一點(即改變標定板的空間位置姿態),依次拍攝3幅以上照片即可。(不要小看了小小的標定板,比如一塊選材做工精良的大理石標定板定價需要幾千元,以保證工業級高精度、完全平面、不變形。選購時,比如要實現±10 mm的3D重建精度,可選擇1 mm精度的標定板。)
圖6-23 左:三維標定塊;右:二維標定板
提示:如果在定標時,環境不允許放置標定塊或標定板,或者經常需要改變攝像機的內參數(如調焦),這時就只能通過自標定(Self-Calibration)技術來獲取攝像機內參數,能利用到的資訊只有影象的空間對應點,並用數學上的絕對二次曲線(AC,Absolute Conic)作為虛擬標定物。絕對二次曲線是在射影空間中無窮遠平面上、全部由虛點構成的一條二次曲線,它的重要特性是它在影象平面的成像(IAC)不隨攝像機的位置姿態變化,即投影成像只與攝像機的內參數有關。自標定至少需要拍攝3幅影象。另外對於平面場景的自標定,可通過提取平行線段進行求解。由於自標定求解的非線性,所以一般適用於精度要求不高的場合。
如果攝像機內參數Ma已知,僅需要確定外引數(R、t),即由N個3D空間點與影象點的對應關係來確定世界座標系與攝像機座標系之間的歐氏變換,這個問題被稱為PNP問題(Perspective-N-Points)。當N≥6時,可線性唯一確定;但N=3,4,5時,一般情況下也可把解限定在有限的幾個候選上。
以上我們假設的都是線性攝像機模型,但如果使用廣角鏡頭(或全向攝像機),在遠離影象中心處會有較大的畸變,因此可能還需要進行非線性修正或建模,如對徑向畸變、離心修正、薄稜鏡畸變等非線性畸變進行修正。
兩臺攝像機的定標
好了,我們剛才對一臺攝像機的內外引數進行了標定。然而,對於從2D影象到3D形狀的重建,一臺攝像機(或僅拍一個角度的照片)是不夠的。從圖6-22中可以看出,已知影象點p的位置(u,v),即使知道攝像機的內外引數,空間座標(Xw,Yw,Zw)也不是能唯一確定的,實際上任何位於射線OP上的空間點的影象點都是p點。怎麼辦?再加一臺攝像機(或者用同一臺攝像機拍兩次)!用左右兩個攝像機進行立體視覺重建。
我們分別對左右兩臺攝像機單獨進行了定標,就得到了它們的內參數。我們在6.3.2節可以知道,在一般的立體視覺方法中,只需知道攝像機的內參數,以及用極線(Epipolar Line)描述的雙攝像機相對位置就足夠了。
下面我們對極線進行介紹。如圖6-24所示,用兩個攝像機同時獲得兩張影象I1與I2。如果p1和p2是空間同一點P在兩張影象上的投影點,我們稱p2為p1的對應點,反之亦然。我們指出,p1點的對應點p2不需要在I2整幅影象中搜索,它必然只位於I2的某一條直線上,該直線(圖中的l2)稱為影象I2上對應於p1點的極線。
圖6-24 用兩臺攝像機拍攝空間點
那麼如何找到極線呢?其實很簡單,它滿足一個幾何約束。如圖6-24所示,O1為左攝像機的光心,O2為右攝像機的光心,兩者的連線O1O2經過左右兩個影象平面時相交於兩個極點e1和e2。可以證明,I1(或I2)影象上的所有極線都相交於同一點e1(或e2),也即極線必然經過e1(或e2)。經推導可知,給定投影矩陣M1與M2,對於左攝影機的一個影象投影點座標p1,則它的對應點座標p2所在的極線是完全確定的,滿足如下方程:
(6)
其中,;反對稱矩陣,其秩為2。注意F是一個僅為3×3的矩陣,具有7個自由度,由投影矩陣M1與M2組合運算得到,這是立體視覺很重要的一個矩陣,稱為基本矩陣(Fundamental Matrix),其只與兩個攝像機的內參數和空間相對位姿有關,與外引數無關。
通過上式(6)還可以看出,無須費勁地求解出兩個攝像機的所有內外引數(即M1和M2),很多應用場合下這是不必要的,因為只需一個基本矩陣F就可以得到立體視覺的極線幾何約束關係。為了求解出基本矩陣F,我們至少需要兩幅影象中的7或8個對應點。
更廣義地,我們介紹影象平面間的單應矩陣(Homography Matrix)H的概念,具有8個自由度(實際上,前面提到的F由平面單應矩陣與極點唯一確定,即)。所謂單應可理解為:空間平面在兩個攝像機各自的射影變換(Projective Transformation,也被稱為直射變換Collineatory Transformation)下所生成的影象點具有一一對應的關係,即。單應矩陣H的一個典型應用就是對射影變換導致的影象變形進行矯正:我們只需先從變形影象中指定共面的4個點,對其手工矯正後得到4個新的點,於是就可求解出單應矩陣H