雙目相機標定以及立體測距原理及OpenCV實現

2021-09-11 02:50:20 字數 1202 閱讀 9368

單目相機標定的目標是獲取相機的內參和外參,內參(1/dx,1/dy,cx,cy,f)表徵了相機的內部結構引數,外參是相機的旋轉矩陣r和平移向量t。內參中dx和dy是相機單個感光單元晶元的長度和寬度,是乙個物理尺寸,有時候會有dx=dy,這時候感光單元是乙個正方形。cx和cy分別代表相機感光晶元的中心點在x和y方向上可能存在的偏移,因為晶元在安裝到相機模組上的時候,由於製造精度和組裝工藝的影響,很難做到中心完全重合。f代表相機的焦距。

雙目標定的第一步需要分別獲取左右相機的內外引數,之後通過立體標定對左右兩幅影象進行立體校準和對其,最後就是確定兩個相機的相對位置關係,即中心距。

首先看一下雙目測距的基本原理:

假設有乙個點p,沿著垂直於相機中心連線方向上下移動,則其在左右相機上的成像點的位置會不斷變化,即d=x1-x2的大小不斷變化,並且點p和相機之間的距離z跟視差d存在著反比關係。上式中視差d可以通過兩個相機中心距t減去p點分別在左右影象上的投影點偏離中心點的值獲得,所以只要獲取到了兩個相機的中心距t,就可以評估出p點距離相機的距離,這個中心距t也是雙目標定中需要確立的引數之一。

當然這一切有乙個前提就是要在兩個相機成像上定位到同乙個點p上,就是要把左右兩個的點匹配起來,這就涉及到雙目校正的動作。如果通過一幅上乙個點的特徵在另乙個二維影象空間上匹配對應點,這個過程會非常耗時。為了減少匹配搜尋的運算量,我們可以利用極限約束使得對應點的匹配由二維搜尋空間降到一維搜尋空間。

這時候要用雙目校正把消除畸變後的兩幅影象在水平方向嚴格的對齊,使得兩幅影象的對極線恰好在同一水平線上,這樣一幅影象上任意一點與其在另一幅影象上的匹配點就必然具有相同的行號,只需要在該行進行一維搜尋就可匹配到對應點。

下邊opencv雙目相機校正的**是在自帶的程式stereo_calib.cpp基礎上修改的,位置在「xx\opencv\sources\samples\cpp\」,使用時拷貝目錄下的26張和stereo_calib.xml到當前工程目錄下,並在工程除錯->命令引數裡設定引數為:stereocalibration -w 9 -h 6 stereo_calib.xml

matlab雙目相機標定校正 工業相機雙目標定

為了得到中物體的深度資訊,引入雙目視覺,雙目標定在的基礎上,標定出左右攝像機座標系之間的相對關係。若對單目標定不了解,請先食用 林青春 工業相機單目標定 zhuanlan.zhihu.com 所涉及的專業名詞有對極幾何,本徵矩陣,基礎矩陣。雙目相機基於對極幾何的理論,本徵矩陣e包含在物理空間兩個攝像...

雙目測距步驟二 單 雙目標定

打算直接使用matlab來標定,畢竟opencv自帶的標定不太準確,數學工具還是要利用起來的。1 單目標定參考 已完成單目標定。具體的內外畸變引數部落格寫的很詳細了。程式執行示例 include opencv2 opencv.hpp include using namespace cv using ...

雙目視覺相機標定與立體視覺筆記1

做一下多目視覺標定和立體視覺的學習筆記。雙目視覺主要包括相機標定 畸變矯正 攝像機校正 匹配 3d恢復五個部分。相機標定的目的有兩個。第一,要還原攝像頭成像的物體在真實世界的位置就需要知道世界中的物體到計算機影象平面是如何變換的,相機標定的目的之一就是為了搞清楚這種變換關係,求解內外引數矩陣。第二,...