1、圖像座標:我想和世界座標談談(A) 算法
玉米竭力用輕鬆具體的描述來說述雙目三維重建中的一些數學問題。但願這樣的方式讓你們以一個輕鬆的心態閱讀玉米的《計算機視覺學習筆記》雙目視覺數學架構系列博客。這個系列博客旨在捋順一下已標定的雙目視覺中的數學主線。數學推導是有着幾分枯燥的,但奇妙的計算機視覺世界是創建在嚴密的數學架構之上的。因此對數學框架的理解是理解雙目視覺的必由之路。不過請你們放心,接下來玉米會以儘可能有趣,儘可能更接地氣兒的方式,闡釋一下本身對雙目視覺數學或者說是投影幾何的理解。 spring
先來張《計算機視覺:算法與應用》中的3D重建示例圖鎮樓! 網絡
好吧,如今言歸正傳,來看看幾何學上世界是怎樣投影進攝相機裏的吧!接下來讓咱們來看一下本系列博客的第一「搏」: 架構
圖像座標:我想和世界座標談談(A) 框架
首先,我先解釋一下這個題目吧。題目的字面意義是說:圖像座標系想和世界座標系談談。這裏麪包含着兩個問題: 函數
A、談話對象:視覺系統的三大座標系:世界座標系,攝像機座標系和圖像座標系。這是玉米在本文《我想和世界座標談談 (A)》中想要和你們分享的內容。其中主要包含:三大座標系的位置、做用和應用場景。 工具
B、談話方式:兩個不一樣的座標系之間該如何溝通呢?玉米將在《我想和世界座標談談(B)》中和你們分享一下剛體變換和透視 投影變換。連起兩個座標系之間這不在一個參考系的「世界上最遠的距離」。 學習
好吧,下面讓咱們來揭開三大座標系的廬山真面目。 優化
上圖是三個座標的示意簡圖,經過它你們能夠對三個座標有一個直觀的認識。下面來看看三個座標系的骨子裏藏了什麼。 .net
世界座標系(XW,YW,ZW):其是目標物體位置的參考系。除了無窮遠,世界座標能夠根據運算方便與否自由放置。在雙目視覺中世界座標系主要有三個用途:一、標定時肯定標定物的位置二、做爲雙目視覺的系統參考系,給出兩個攝像機相對世界座標系的關係,從而求出相機之間的相對關係三、做爲重建獲得三維座標的容器,盛放重建後的物體的三維座標。世界座標系是將看見中物體歸入運算的第一站。
攝像機座標系(XC,YC,ZC):其是攝像機站在本身角度上衡量的物體的座標系。攝像機座標系的原點在攝像機的光心上,z軸與攝像機光軸平行。它是與拍攝物體發生聯繫的橋頭堡,世界座標系下的物體需先經歷剛體變化轉到攝像機座標系(旋轉和平移),而後再和圖像座標系發生關係。它是圖像座標與世界座標之間發生關係的紐帶,溝通了世界上最遠的距離。哈哈
圖像座標系(x,y)米/(u,v)像素 :其是以攝像機拍攝的二維照片爲基準創建的座標系。用於指定物體在照片中的位置。玉米更傾向將(x,y)稱爲連續圖像座標或空間圖像座標,將(u,v)稱爲離散圖像座標系或者是像素圖像座標系(雖然這樣的稱呼未經考證,但更能傳達兩者的物理意義)。
(x,y)座標系的原點位於攝像機光軸與成像平面的焦點O’(u0,v0)上,單位爲長度單位(米)。(u,v)座標系的原點在圖片的左上角(實際上是存儲器的首地址)如上圖所示,單位爲數量單位(個)。(x,y)主要用於表徵物體從攝像機座標系向圖像座標系的透視投影關係。而(u,v)則是實實在在的,咱們能從攝像機中獲得的真實信息。
(x,y)與(u,v)存在以下轉換關係:
dx表明x軸方向一個像素的寬度,dy表明y軸方向上一個像素的寬度。dx、dy爲攝像機的內參數。(u0,v0)稱爲圖像平面的主點,也是攝像機的內參數。其實至關於對x軸和y軸的離散化。其能夠運用齊次座標,將上式寫成矩陣形式,以下:
(1)式運用了齊次座標,初學者可能會感到有些迷惑。你們會問:怎樣將普通座標轉換爲齊次座標呢?齊次座標能帶來什麼好處呢?
玉米在這裏對齊次座標作一個通俗的解釋。此處只講怎麼將普通座標改寫爲齊次座標及爲何引入齊次座標。這裏只作一個通俗但不太嚴謹的表述。力求簡單明瞭。針對齊次座標的嚴謹的純數學推導,可參見「周興和版的《高等幾何》---1.3拓廣平面上的齊次座標」。玉米曾詳細讀過《高等幾何》這本書,但以爲離計算機視覺有點遠,是講純數學的投影關係的,較爲生澀難懂。
齊次座標能夠理解爲在原有座標後面加一個「小尾巴」。將普通座標轉換爲齊次座標,一般就是在增長一個維度,這個維度上的數值爲1。如圖像座標系(u,v)轉換爲(u,v,1)同樣。對於無窮遠點,小尾巴爲0。注意,給零向量增長小尾巴,數學上無心義。
那麼,爲何計算機視覺在座標運算時要加上這個「小尾巴」呢?
玉米看來有兩點緣由:
一、 將投影平面擴展到無窮遠點。如對消隱點(vanishing point)的描述。
二、 使得計算更加規整
如式(1)若是用普通座標來表達的話,會是下面的樣子:
這樣的運算形式會給後與運算帶來必定的麻煩,因此齊次座標是一個更好的選擇。
齊次座標還有一個重要的性質,伸縮不變性。即:設齊次座標M,則αM=M。
玉米才疏學淺,筆記中若有紕漏指出,但願你們不吝指出。玉米在這裏拜謝啦!
玉米將在這篇博文中,對圖像座標與世界座標的這場對話中涉及的第二個問題:談話方式,進行總結。世界座標是怎樣變換進攝像機,投影成圖像座標的呢?
玉米作了一個簡單的圖示,在這裏作一個提綱。圖中顯示,世界座標系經過剛體變換到達攝像機座標系,而後攝像機座標系經過透視投影變換到達圖像座標系。能夠看出,世界座標與圖像座標的關係創建在剛體變換和透視投影變換的基礎上。爲了獎勵剛體變和透視投影變換溝通了「世界上最遠的距離」,玉米在圖上獎勵了他們兩朵小紅花。哈哈
首先,讓咱們來看一下剛體變換是如何將世界座標系與圖像座標系聯繫起來的吧。這裏,先對剛體變換作一個介紹:
剛體變換(regidbody motion):三維空間中, 當物體不發生形變時,對一個幾何物體做旋轉, 平移的運動,稱之爲剛體變換。
由於世界座標系和攝像機座標都是右手座標系,因此其不會發生形變。咱們想把世界座標系下的座標轉換到攝像機座標下的座標,以下圖所示,能夠經過剛體變換的方式。空間中一個座標系,總能夠經過剛體變換轉換到另一個個座標系的。轉一轉,走一走,就到另一個座標系下了。之前多是面朝大海,通過平移旋轉,最終可能只能面朝冰山了,哈哈
下面讓我來看一下,兩者之間剛體變化的數學表達。
其中,XC表明攝像機座標系,X表明世界座標系。R表明旋轉,T表明平移。R、T與攝像機無關,因此稱這兩個參數爲攝像機的外參數(extrinsic parameter)能夠理解爲兩個座標原點之間的距離,因其受x,y,z三個方向上的份量共同控制,因此其具備三個自由度。
R則爲分別繞XYZ三軸旋轉的效果之和。以下面所示:
R=r1*r2*r3.其由三個方向的θ控制,故具備三個自由度。
好了,剛體變換就講完了。你們應該都瞭解,世界座標系到攝像機座標系之間的轉換過程了吧。
接下來,讓咱們看看攝像機座標下的座標如何投影到圖像座標系下,最終變爲照片中的一個像素。這其中包含兩個過程:一是從攝像機座標到「空間圖像座標」(x,y)所發生的透視投影;二是從「連續圖像座標」到「離散圖像座標」(u,v)。後者咱們已經在第一篇博文中解釋過。因此在這裏,主要介紹一下透視投影。
透視投影(perspective projection): 用中心投影法將形體投射到投影面上,從而得到的一種較爲接近視覺效果的單面投影圖。有一點像皮影戲。它符合人們心理習慣,即離視點近的物體大,離視點遠的物體小,不平行於成像平面的平行線會相交於消隱點(vanish point)。
囉嗦這麼多,其實你們看看示意圖,看看公式,秒懂。
以圖中B(XB,YB)點爲例,在小孔成像攝像機模型下(幾何分析的最經常使用模型)。這裏的f爲攝像機的焦距,其屬於攝像機的內參數(intrinsic parameter)。其在成像平面上的投影點b(xb,yb)的座標利用簡單的類似三角形比例關係很容易求出:
上面兩式也闡明瞭攝像機座標與圖像座標之間的透視投影關係。
好吧,如今玉米已經把圖像座標與世界座標之間的這場對話所需經歷的三個波折的過程加以瞭解釋。即:剛體變換、透視投影、(x,y)換(u,v)(ps.這個在上一篇博文中講過)。接下來玉米用一張圖把三個過程鏈接起來。實現從世界座標(X,Y,Z)到(u,v)之間的轉換。讓圖像座標與世界座標直接對話。
下圖中的轉換關係,都是用齊次座標表達的,你們會發現這樣的表達很是整潔。
其實這張圖顯示的過程還有一個名字:攝像機模型(camera model)。其實也就是攝像機的幾何模型了。
將三者相乘,能夠把這三個過程和在一塊兒,寫成一個矩陣:
P就是世界座標到圖像座標的直接聯繫人,P就表示了一個投影相機,有下面公式:
注意在表示齊次座標時,須要在符號上面加個小帽子。除去齊次座標控制位P23,P具備11個自由度。
攝像機模型及其中涉及的座標系等,是弄清3D重建幾何框架的基礎。能夠把它們視爲基本運算關係。後面對於三維重建幾何框架的推導,都是要用到三個基本座標系和攝像機模型的。
到這裏玉米就順利搭建起了圖像座標與世界座標間的這場對話。若有紕漏還請你們擔待,並指正!
此處「張正友標定」又稱「張氏標定」,是指張正友教授於1998年提出的單平面棋盤格的攝像機標定方法。張氏標定法已經做爲工具箱或封裝好的函數被普遍應用。張氏標定的原文爲「A Flexible New Technique forCamera Calibration」。此文中所提到的方法,爲相機標定提供了很大便利,而且具備很高的精度。今後標定能夠不須要特殊的標定物,只須要一張打印出來的棋盤格。So great! 這樣的方法讓人肅然起敬。因此玉米的這篇博客的題目是:致敬「張氏標定」。
固然,此博的內容也是圍繞着「張氏標定」進行的,在這裏,玉米主要介紹一下,「張氏標定」的數學思路。由於標定在整個基於標定攝像機的三維重建的幾何過程佔有最重要最核心的地位。以下圖:
從圖中明顯能夠看出,標定獲得的內參、外參和畸變係數,是雙目視覺進行圖片矯正,攝像機校訂和3D恢復的基礎。沒有好的標定,雙目視覺系統就沒法完成3D重建。
既然標定對雙目視覺如此重要,咱們有必要對數學的深層含義多加理解。以張氏標定爲例,讓咱們挖開工具箱,看看其數學本質吧。由於張教授的論文中對標定方法的講述是按部就班的,因此玉米在這裏將按照張教授論文中的順序,爲你們講述一下,張氏標定的脈絡。
一、標定平面到圖像平面的單應性
由於張氏標定是一種基於平面棋盤格的標定,因此想要搞懂張氏標定,首先應該從兩個平面的單應性(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。
這也是張氏標定採用四個角點的棋盤格做爲標定物的一個緣由。
在這裏,咱們能夠將單應性矩陣寫成三個列向量的形式,即:
二、利用約束條件求解內參矩陣A
從上面可知,應用4個點咱們能夠得到單應性矩陣H。可是,H是內參陣和外參陣的合體。咱們想要最終分別得到內參和外參。因此須要想個辦法,先把內參求出來。而後外參也就隨之解出了。咱們能夠仔細的「觀摩」一下下面的式子。
從中能夠得出下面兩個約束條件,這兩個約束條件都是圍繞着旋轉向量來的。
一、r1,r2正交 得:r1r2=0。這個很容易理解,由於r1,r2分別是繞x,y軸旋轉的。應用高中立體幾何中的兩垂直平面上(兩個旋轉向量分別位於y-z和x-z平面)直線的垂直關係便可輕鬆推出。
二、旋轉向量的模爲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。
三、基於內參陣估算外參陣
經過上面的運算,咱們已經得到了攝像機的內參陣。那麼對於外參陣,咱們很容易經過下面的公式解得:
對上面公式進行化簡,能夠獲得:
至此,玉米已經將張氏標定的主體數學框架已經講完了。介於篇幅關係(怕太長大機會讀的昏昏欲睡,哈哈)。但其實咱們作了這麼多推導,僅僅是爲後面的極大似然參數估計提供初值。但固然這個初值也是不可或缺的,由於沒有這個初值,就沒法估計出更爲準確的參數。玉米將張氏標定中用於提升標定精度的極大似然算法,放到下一篇博客中進行講解。
仍是老話:玉米才疏學淺,講解之中不免有紕漏,請你們諒解,並指正。
順着張教授的意思,玉米先在這裏爲你們從概念上講述一下極大似然估計。
極大似然估計是一種估計整體未知參數的方法。它主要用於點估計問題。所謂點估計是指用一個估計量的觀測值來估計未知參數的真值。說穿了就一句話:就是在參數空間中選取使得樣本取得觀測值的機率最大的參數。
咱們定義似然函數:
整體分佈爲離散型的:(p是已知的分佈律)
整體分佈爲連續性的:(f爲機率密度函數)
極大似然法就是在的可取範圍內,挑選出來的使L達到最大的未知參數的估計值
。
若是在內:,那麼
就稱爲極大似然估計值。
列了這麼一大圈兒概念,估計你們看的都昏昏入睡了。玉米在這裏用通俗點兒的方式解釋一下極大似然估計:
對不少實驗,咱們能夠觀察到樣本,但影響樣本的參數倒是未知的。那咱們就得對樣本進行估計。既然咱們要去估計,那麼就想要估計的準。極大似然法就只在機率分佈的觀念下,指導咱們估計的更準的方法。現實世界中,存在着一條廣泛規律:與現實相差越遠的機率越小。這就至關於人羣中,非主流老是比主流要少同樣,誤差大的老是佔少數。因此,可能發生的機率越大就會越接近真實值。極大似然法就是應用這種思想,認爲可能性最大的就是最優的估計值。即極大似然估計值就是最接近真實值的參數值。
那麼,極大似然爲何有這麼一個別致的名字呢?什麼是似然呢?是由於估計值不是隨機變量,因此不能把它的可能性稱爲機率,那麼數學家們就想了這樣(likelihood)一個名字來表明可能性。
極大似然法的一些概念上的問題玉米就講到這裏了。下面然玉米帶這你們分析一個具體問題:張教授在張氏標定法中所用的極大似然估計。
首先來看一下,爲何標定的內外參數能夠用極大似然法進行估計:
由於咱們是假定圖像上的角點是被噪聲干擾的,且咱們認爲這些噪聲是高斯噪聲。那麼對於噪聲的幅度就是給觀測值形成的偏差。但高斯噪聲的機率密度咱們是已知的,因此咱們能夠用前面所述的極大似然估計的思想去「猜」真值。
那麼接下來咱們就須要構造一個似然函數,而後尋找其最大值了。張教授在文章中直接略過推導,直接給出了公式:
說當此式取得最小值時,就是參數的最大似然估計值。
玉米在這裏爲你們講一下本身的理解:
設,角點附近的噪聲服從高斯分佈
則:角點mij的樣本值服從以下,機率密度函數:
如今構造,似然函數:
如今讓L取得最大值,則可令下式最小:
那麼怎麼令上面這個目標函數達到最小值呢,張氏標定法運用了能夠用來解決多參數非線性系統優化問題的Levenberg-Marquardt算法。對於該方法,詳細的介紹你們能夠參照《The levenberg-marquardt algorithm, implementation andtheory》一文進行深刻了解。這裏給出下載本文的連接:
http://link.springer.com/chapter/10.1007%2FBFb0067700
那麼張氏標定法在不考慮鏡頭畸變的狀況下的,獲取攝像機內外參數的數理推導過程。玉米就爲你們講到這裏了。下面一篇博文,玉米會給你們分析一下,張氏標定法是怎樣分析攝像機的非線性畸變的。
仍是老話:玉米才疏學淺,講解之中不免有紕漏,請你們諒解,並指正。
這一博文,是玉米後補上的。由於以爲前面用了三篇博文來描述張氏標定法,略顯散亂。在這裏總結一下,使條理清晰一點。另外關於張氏標定所得參數也還有兩點須要澄清。下面這個總結,其實也是在「A Flexible New Technique forCamera Calibration」中出現的。
1、張氏標定的過程:
1. 打印一張棋盤格,把它貼在一個平面上,做爲標定物。
2. 經過調整標定物或攝像機的方向,爲標定物拍攝一些不一樣方向的照片。
3. 從照片中提取特徵點(如角點)。
4. 估算理想無畸變的狀況下,五個內參和全部外參。
5. 應用最小二乘法估算。實際存在徑向畸變下的畸變係數。
6. 極大似然法,優化估計,提高估計精度。
經過這樣的過程,咱們就得到了具備高估計精度的五個內參,三個外參和兩個畸變係數。利用這些信息,咱們能夠進行畸變矯正、圖像校訂和最終的三維信息恢復。
2、如下是對於張氏標定求得的內參,須要注意的一點:
經過張氏標定,咱們並不能獲得:焦距(f)和像素的物理尺寸(sx,sy)兩個參數。由於咱們在求解內參陣A時,求解出的是α和β。
α=f/ sx,β= f/ sy 。分別表明焦距長度上,x軸和y軸像素的個數。
雖然,沒有求得焦距,但這並不影響,咱們在三維座標恢復時,進行三角運算。由於彼時,咱們的計算中用到的也是α和β。
你們可能會有疑問,既然咱們沒法獲得焦距(f)和像素的物理尺寸(sx,sy)兩個參數。那麼在opencv中,調用的cvCalibrateCamera2時返回的參數中是包含焦距(f)的。Opencv的這個函數也是用了張氏標定法。爲何能夠獲得f呢?
答案是這條opencv函數對內參陣作了簡化,其認爲γ=0即像素的物理尺寸(sx,sy)兩個參數相等。而後統一約掉物理尺寸s。獲得的B陣以下:
這樣咱們就能夠解出f了。
張氏標定的精確度可達到0.5個像素,這樣的指標已經能夠知足絕大多數的應用了。因此如此簡單的方法,獲得了這麼高的精度。這樣的方法是值得人們膜拜的。在此,在次向張正友教授致敬!
在此,玉米又對張氏標定法進行了一個總結。張氏標定的原理分析就到此爲止了。可是它的做用還會延續到下面兩篇博文中。
玉米才疏學淺,文中若有紕漏,請你們批評指正。
這篇博文中,讓玉米和你們一塊兒瞭解一下,張氏標定是怎樣過渡到立體標定的?在這裏主要以雙目立體視覺進行分析。對於雙目立體視覺,咱們有兩個攝像頭。它們就像人的一雙眼睛同樣,從不一樣的方向看世界。兩隻眼睛中的圖像的視差,讓咱們對世界有了三維的認識。
那麼,想要知道視差,首先應該知道雙目視覺系統中兩個攝像頭之間的相對位置關係。咱們能夠經過同時對兩個攝像頭進行標定,分別獲得兩者相對同一座標系的旋轉矩陣和平移矩陣。得到這兩個矩陣的過程,就是立體標定的過程。也便是:從張氏標定走向立體標定!
兩攝像頭之間的旋轉矩陣和平移矩陣能夠由下式求出:
其中,R爲兩攝像頭間的旋轉矩陣,T爲兩攝像頭間的平移矩陣。Rr爲右攝像頭通過張氏標定獲得的相對標定物的旋轉矩陣,Tr爲右攝像頭經過張氏標定獲得的相對標定物的平移向量。Rl爲左攝像頭通過張氏標定獲得的相對相同標定物的旋轉矩陣,Tl爲左攝像頭通過張氏標定獲得的相對相同標定物的平移向量。
兩個式子是能夠經過數學代換推導來的。但玉米以爲對這樣有明顯物理意義而且空間過程簡單的計算式。物理上的空間想象,比純代數代換,要生動的多。而且有利於你們揣摩整個物理過程。
在玉米眼裏,這兩個式子是這樣的:
對於R,首先用T把左攝像機座標系平移到右攝像機座標系上(即兩座標系遠點重合)。而後在同一參考系下的兩個旋轉矩陣相乘,表示世界座標先向右旋轉到Rr ,再向左旋轉Rl。那麼兩次旋轉後獲得的旋轉,就是有攝像機旋轉到左攝像機所需的旋轉矩陣R。
對於T,那就更容易理解了,先用R對左座標系旋轉一下,把左右兩攝像機調成平行,而後直接平移向量相減,即獲得。兩攝像機之間的平移向量T。
上面求得的R和T就是立體標定獲得的參數了。
那麼運用的立體標定所得的參數了,下一步咱們該作什麼呢?答案是:立體校訂。
在介紹立體校訂的具體方法以前,讓咱們來看一下,爲何要進行立體校訂?
由於當兩個圖像平面是徹底共面行對準時,計算立體視差是最簡單的。可是,在現實的雙目立體視覺系統中,是不存在徹底的共面行對準的兩個攝像機圖像平面的。因此咱們要進行立體校訂。立體校訂的目的就是,把實際中非共面行對準的兩幅圖像,校訂成共面行對準。以下面示意圖所示。(共面行對準是指:兩攝像機圖像平面在同一平面上,且同一點投影到兩個攝像機圖像平面時,應該在兩個像素座標系的同一行)
有了上述鋪墊,下面讓玉米給你們陳述一下基於立體標定所獲參數的立體校訂的數學原理,或者說是幾何原理。但玉米在這裏,主要和你們分享一下,如此校訂的物理意義。
立體校訂應該分兩步走:
一、 將兩個圖像平面拉回同一平面。
這一步,該怎麼作呢?玉米相信,通過這麼多鋪墊,你們應該早就內心有數了。這一步很簡單。能夠這樣:兩個平面在方向上 之間不是相差一個旋轉矩陣R嗎,那麼咱們讓兩個相機個旋轉一半,但需注意兩者的旋轉,應該是反向的。以下式所示:
上面的這個公式是玉米根據物理意義本身總結的。rl 、rr 分別表明左攝像機和右攝像機爲達到共面所需的旋轉矩陣。rl、rr程度 相同,但旋轉方向相反。左右相機分別經歷了這樣的旋轉以後,兩者就已經共面了。你們應該明白了吧?
二、 旋轉圖像使得同行對準
玉米在這裏先爲你們展現一個,校訂成功的圖吧。
你們能夠像小學時候寫看圖說話做文同樣,觀察一下圖中校訂前和校訂後左右兩攝像機的圖像到底發生了什麼本質的變 化。
玉米的答案是:左右兩圖分別繞光軸做了旋轉,旋轉事後兩攝像機的主點連線平行像素座標的行線。
玉米的答案也是本身對行對準的理解,比較通俗。這與不少書上用極幾何術語描述的有些不一樣,你們能夠思考一下,玉米 說的有沒有道理。
好,既然已經明確了,要達到行對準,圖像所需發生的變化。那麼就讓咱們用數學表達式來表達它們吧。
玉米畫了一個簡單的示意圖,畫的醜你們不要見笑。
紅色的線表示的是校訂後的行線,其是左右對準的。你們能夠看到,從原圖像的行線轉到校訂後圖像的行線,左圖像轉動了α,右圖像轉動了θ。那麼怎樣來肯定兩個旋轉角度呢?
你們能夠回憶一下,咱們在本系列博文中的第二篇中講述剛體變換時,把旋轉矩陣按不一樣軸分解的方法。能夠看作是沿光軸旋轉,旋轉目的是與主點連線平行。先以左圖像爲例:
那麼咱們設旋轉矩陣爲Rh ,
則Rh能夠表示爲以歸一化T(平移向量):e1爲旋轉的指針,則隨之e2爲e1與光軸的叉積,e3爲e2與e1的叉積:
你們能夠進一步算一下:
咱們發現,其實行對準就是繞e3方向,轉了α。一樣的,對右圖就是轉了θ。
經過上面的推導,咱們就把立體標定與立體校訂中的數學思想理清楚了。其實,立體匹配是有不少種方法的,玉米在裏只是介紹了立體校訂的基本原理。其餘方法中,有一些能夠不依賴標定參數,若是你們想要對立體校訂進行深刻研究,你們能夠搜索一些經典論文進行深刻學習。如:A. Fusiello, E. Trucco, and A. Verri.寫的 Acompact algorithm for rectification of stereo pairs.等等
截止目前對於三維重建的全部準備工做,都已完成。幾何框架也僅剩下最後一步:立體成像。(由於本系列博文只介紹雙目視覺的幾何架構,因此跳過匹配不談)玉米在下一篇博文中將與你們分享一下,幾何脈絡的最終果實:立體成像。這也是咱們對於雙目視覺幾何框架推導和理解的最終目標。
玉米才疏學淺,文中若有紕漏,請你們批評指正!
咱們前面花了七篇博文作鋪墊,咱們所作的一切努力都是爲了最後的這一擊——立體成像。由於玉米的這個系列文章是對雙目視覺幾何框架的總結。此處跳過匹配,假設左右圖像點的完美匹配的。只看在幾何上,三維座標是如何被還原的。相對來講,最後的這一步,比前面是要輕鬆許多的,由於咱們前面已經作了大量的工做。這些工做使得最後的這一步,由不可能稱爲可能,由複雜變得簡單,吧啦吧啦。好吧,閒話少說,讓咱們一塊兒來見證這一時刻吧。
此處咱們按opencv中cvcalibratecamera2()函數獲得的焦距f進行三維座標的求解。
請你們看下面示意圖(莫怪,玉米的圖一貫畫的醜):
根據最簡單的類似三角形關係,咱們就能夠求出,物點座標(X,Y,Z)。
首先,
其中,s爲像素的物理尺寸,d就是兩個攝像機間的視差,d=(uL-uR)s。
咱們獲得的這個三維座標,至關因而在右攝像機的攝像機座標系上的。
那麼重建就是透視投影的逆過程,咱們能夠把這個過程表示成矩陣形式。咱們定義Q爲反投影矩陣。那麼依照上式:
齊次座標形式的三維座標恢復,矩陣形式以下:
至此,玉米的《計算機視覺學習筆記》雙目視覺幾何框架系列文章順利收尾。但願這八篇博文對你們,尤爲是計算機視覺的初學者有所幫助。
在行文過程當中,玉米引用了網絡上的一些圖片,但大多找不到出處,因此未給出引用表。如這些圖片的主人,發現了本身的圖片在這個博客上,請和玉米聯繫,玉米會將引用出處,從新給出!
本系列博文中涉及的數學運算頗多,玉米才疏學淺,中間如有理解上的錯誤,懇請你們批評指正!
轉載自大神博客:
http://blog.csdn.net/onthewaysuccess/article/details/40709745
侵刪。