雙目視覺之立體校正

2021-10-04 17:06:32 字數 2819 閱讀 6198

引言

當兩個像平面式完全行對準的,計算立體視差是最簡單的。但是兩台攝像機幾乎不可能有準確的共面和行對準成像平面,完美的對準結構在真實的立體系統中幾乎不存在。因此,立體校正的目的是對兩台攝像機的影象平面重投影,使得它們精確落在同乙個平面上,而且影象的行完全地對準到前向平行的結構上。

對準後的兩個影象平面後的結果有八項,左右攝像機各四項(畸變向量、旋轉矩陣、校正後的攝像機矩陣、未校正後的攝像機矩陣)

計算校正項的兩種演算法

hartley演算法(使用基本矩陣來生成非標定立體視覺)非標定的立體校正

hartley演算法目的是找到將極點對映到無窮遠處的單應矩陣,同時使兩幅立體影象之間的計算誤差最小化,實現這種演算法要通過匹配兩幅影象之間的對應點實現,通過這種方法,就可以繞過計算兩個攝像機的攝像機內引數,因為這樣的內引數資訊隱含在匹配點之中

hartley演算法的優缺點

1) 優點:通過觀察場景中的點簡便地進行線粒體標定

2) 缺點:場景影象的比例未知

立體重建具有非唯一性,如果物體的大小未知,那麼不同大小物體可以看起來相同,這取決於它們與攝像機之間的距離,如果攝像機引數未知,那麼不同投影可以看起來相同—例如,在焦距和主點不同的情況下

演算法描述(假設已知基本矩陣)

使用基本矩陣,通過關係

計算左右兩個極點

先求第乙個單應矩陣hr ,他將右極點對映到無窮遠(1,0,0)t處的二維齊次點。由於乙個單應矩陣有7個約束,使用其中的三個進行無窮遠處的對映,剩下的四個自由度進行選擇矩陣hr ,這四個自由度大都容易導致混亂,因為hr 的大多數選擇將導致高度扭曲的影象。為了找到乙個較好的hr ,我們在影象中選擇一點產生扭曲的可能性最小,僅允許剛性旋轉和平移。對於這一點的乙個合理的選擇是影象原點,進一步假設極點er = (k,0,1)t落在x軸上,而下述矩陣就會實現將這樣的乙個點對映到無窮遠。

在有影象上選擇乙個感興趣的點(這裡選擇原點),計算點到影象原點的平移矩陣t和將極點指向(er )t = (k,0,1)的旋轉矩陣r,則需要的單應性矩陣就是hr = grt。

接下來就是搜尋匹配的單應矩陣hl ,他將左極點傳送到無窮遠,並保證兩幅影象的行對準。通過步驟2中的三個約束可以容易地將座機帶你轉到無窮遠。為了能夠行對準,依靠地依據就是行對準使兩幅影象地所有匹配點據距離和最小。也就是說,搜尋地hl ,使得左右匹配點地總的視差最小,也就是

最小,則這兩個單應性矩陣就定義了立體校正。

bouguet演算法(使用兩台攝像機的旋轉和平移引數)標定立體校正

演算法概覽

給定立體影象間地旋轉矩陣和平移矩陣(r,t),bouguet的演算法目的是使兩影象中的每一幅重投影次數最小化,同時使得觀測面積最大化。為了使影象重投影畸變最小,將右攝像機影象平面旋轉到左攝像機影象平面的旋轉矩陣r被分離成兩部分,稱左右攝像機的兩個合成旋轉矩陣r1和r2。每個攝像機都旋轉一半,這樣地旋轉可以讓攝像機共面但是行不對準。為了計算將左攝像機極點變換到無窮遠並使極線水平對準地rrect。建立乙個由極點el方向開始的旋轉矩陣。

演算法描述

讓主點(cx,cy)作為左影象的原點,極點的方向就是兩台攝像機投影中心之間的平移向量方向:

下乙個向量e2必須與e1正交,因此最好的選擇就是選擇與主光線正交的方向(通常沿著影象平面)。這可以通過計算e1和主光線方向的叉積來得到,然後將他歸一化到單位向量:

這樣就可以求出第三個向量e3,它可以通過e1和e2的叉積得到:

此時,將左攝像機的極點轉換到無窮遠處的矩陣如下:

這個矩陣將左影象繞著投影中心旋轉,使得極線變成水平,並且極點在無窮遠處。兩台攝像機的行對準通過下述公式實現:

計算校正後的左右攝像機矩陣mrect_l和mrect_r,但是與投影矩陣pl和pr一起返回:

其中αl 和αr 是畫素畸變比例,在現代計算機中幾乎等於0。投影矩陣將齊次座標中的三維點轉換成齊次座標系下的二維點:

則螢幕座標為(x/w,y/w)。如果給定螢幕座標和攝像機內引數矩陣,二維點同樣可以重投影到三維中,重投影矩陣如下:

上述公式中,除cx』外的所有引數都是來自左影象,cx』是主點在右影象上的x座標。如果主光線在無窮遠處相交,那麼cx = cx』,並且遊俠的項為0。給定乙個二維其次點和其關聯的視差d,可以將此點投影到三維中:

因此三維座標就是(x/w,y/w,z/w),在這裡d還是乙個未知數,在下節將會進行介紹

由上面三篇文章就可以得到如下效果:

opencv3雙目視覺中的立體校正原理

校正過程中兩個影象平面均旋轉一半的r,這樣可以使重投影畸變最小,此時兩個攝像機影象平面共面 畸變校正後光軸也平行 但是行不對準 極點是兩個相機座標系原點的連線和影象平面的交點,要想使得極點處於無窮遠處 即行對準 就必須兩個攝像機的影象平面和兩個相機座標系原點的連線平行 可以計算rre 1 共面 將相...

輪子 雙目立體校正(C OpenCV)

在對雙目相機進行標定之後,將在ubuntu系統中進行開發。首先要做的是編寫基礎程式從雙目相機中實時的獲取原始影象並對其進行矯正。依照 slam開發之雙目標定 matlab 標定了一波,標定結果給出如下 左相機內參 使用前需要對齊進行轉置 stereoparams.cameraparameters1....

OpenCV 雙目視覺 定標 校正 測距

在 opencv 機器視覺庫中,有許多有趣實用的應用,目標識別,顏色識別,物體檢查和測量等。這裡和大家分享機器視覺中重要的乙個點 雙目機器視覺測距。本場 chat 首先會帶領大家對雙目攝像頭定標,然後校正攝像,再通過程式設計實現三維重建,最後和大家進行雙目測距,測出物體到攝像頭的實際距離,正常誤差小...