/ 導讀 /
雙目立體視覺(Binocular Stereo Vision)是機器視覺的一種重要形式,它是基于視差原理并利用成像設備從不同的位置獲取被測物體的兩幅圖像,通過計算圖像對應點間的位置偏差,來獲取物體三維幾何信息的方法。
1偽激光雷達-雙目立體相機
深度學習和計算機視覺在自動駕駛系統(tǒng)中已經非常流行且被廣泛應用。計算機視覺領域在過去的十年里得到了迅猛的發(fā)展,特別是在障礙物檢測方面。障礙物檢測算法,如YOLO或RetinaNet提供了二維邊界框,用邊界框給出了障礙物在圖像中的位置。
目前,大多數(shù)的目標檢測算法都是基于單目RGB攝像機的,不能返回每個障礙物的距離。為了能夠返回每個障礙物的距離,工程師們將相機與激光雷達(LiDAR,光探測和測距)傳感器進行融合,后者使用激光來返回深度信息。將計算機視覺信息和激光雷達輸出進行傳感器的融合。這種方法的問題是使用激光雷達,就會導致價格昂貴。所以經常有人使用的一個雙目攝像頭進行替代,并使用幾何信息來定義每個障礙物的距離,故可以將雙目相機獲取的數(shù)據(jù)稱之為偽激光雷達
雙目視覺利用幾何學來構建深度圖,并將其與目標檢測相結合以獲得三維距離。那么如何利用立體視覺實現(xiàn)距離估計?以下是雙目障礙物檢測的5步偽代碼:
標定 2 個攝像頭(內外參的標定)
創(chuàng)建極線約束
先構建視差圖,然后構建深度圖
然后將深度圖與障礙物檢測算法相結合
估計邊界框內像素的深度。
2相機內外參標定
每個攝像機都需要標定。相機的標定是指將三維世界中的[X,Y,Z]坐標的三維點轉換為具有[X,Y]坐標的二維像素。這里簡單的介紹一下針孔相機模型。顧名思義就是用一個針孔讓少量光線穿過相機,從而得到清晰的圖像。
針孔相機模型可以設置焦距,使得圖像更加的清晰。為了相機標定,我們需要通過攝像機坐標系計算世界坐標點到像素坐標的變換關系。
從世界坐標系到相機坐標的轉換稱為外參標定,外部參數(shù)稱為R(旋轉矩陣)和T(平移矩陣)。
從攝像機坐標到像素坐標的轉換稱為內參標定,它獲取的是相機的內部參數(shù),如焦距、光心等…
內參我們常稱之為K的矩陣。
內參標定,通常使用棋盤和自動算法獲得,如下圖我們在采集標定板時,將告訴算法棋盤上的一個點(例如世界坐標系點 0, 0 , 0)對應于圖像中的一個像素為(545,343)。
為此,相機標定必須用攝像機拍攝棋盤格的圖像,在得到一些圖像和對應的點之后,標定算法將通過最小化平方誤差來確定攝像機的標定矩陣。得到標定參數(shù)后為了得到校正后的圖像,需要進行畸變校正?;兛梢允菑较虻?,也可以是切向的?;冃U兄谙龍D像失真。
以下是攝像機標定返回的矩陣形式
f是焦距-(u?,v?) 是光學中心:這些是固有參數(shù)。
我認為每一個計算機視覺工程師都應該必須知道并掌握相機的標定,這是最基本且重要的要求。
在相機標定的過程中涉及到一些齊次坐標轉換的問題,這里簡單的介紹一下有兩個公式可以得到從世界坐標系到像素坐標系的關系:
(1)世界坐標系到相機坐標系的轉換(外參標定公式)
(2)相機坐標系到圖像坐標系的轉換(內參標定公式)
所以從三維空間坐標系到圖像坐標系下的關系可以總結為
但是我們知道這個公式是齊次坐標才可以這么寫,也就是需要將O_world從[X Y Z]修改為[X Y Z 1],加這個“1”后稱為齊次坐標。
3雙目視覺的對極幾何
我們知道雙目立體視覺是基于兩幅圖像來尋找深度的,人類的眼睛就像兩個相機,因為兩只眼睛從不同的角度觀察圖像,所以他們可以計算兩個視角之間的差異,并建立距離估計。下圖是一個雙目立體相機的例子
那么我們如何根據(jù)雙目立體相機如何估計深度?想象一下你有兩個攝像頭,一個左攝像頭和一個右攝像頭。這兩個攝像頭在同一Y軸和Z軸上對齊。那么唯一的區(qū)別是它們的X值。
根據(jù)上圖我們的目標是估計O點(代表圖像中的任何像素)的Z值,即距離。X是對齊軸,Y是高度值,Z是深度值,兩個藍色的平面圖對應于每個攝像頭的圖像。假設我們從從俯視的角度來考慮這個問題。
已知:
(1)xL對應于左側相機圖像中的點。xR是與左側圖像中該點的對應位置。(2)b是基線,是兩個攝像頭之間的距離。
針對左相機,如下圖,我們可以得到一個公式:Z = X*f / xL.
針對右相機,如下圖,我們可以得到另一個公式:Z = (X — b)*f/xR.
此時根據(jù)兩個公式我們可以計算出正確的視差d=xL-xR和一個物體的正確XYZ位置。
4視差和深度圖
什么是視差?視差是指同一個三維點在兩個不同的攝像機角度獲得的圖像中位置的差異。視差圖是指一對立體圖像之間明顯的像素差異或運動。要體驗這一點,試著閉上你的一只眼睛,然后快速地閉上它,同時打開另一只眼睛。離你很近的物體看起來會跳一段很長的距離,而離你較遠的物體移動很少,這種運動就是視差。
由于立體視覺,我們可以估計任何物體的深度,假設我們得到了正確的矩陣參數(shù),則可以計算深度圖或視差圖:
為了計算視差,我們必須從左邊的圖像中找到每個像素,并將其與右邊圖像中的每個像素進行匹配。這就是所謂的雙目相機的立體匹配的問題。為了解決像素匹配的問題,引入對極幾何約束,只需在對極線上搜索它,就不需要二維搜索,對應點一定是位于這條線上,搜索范圍縮小到一維。
之所以能夠引入對極約束,這是因為兩個相機是沿同一軸對齊的。以下是極線搜索的工作原理:
取左圖中這一行上的每個像素
在同一極線上比較左圖像像素和右圖像中的每個像素
選擇 cost 最低的像素
計算視差 d
5構建偽激光雷達效果
現(xiàn)在,是時候把這些應用到一個真實的場景中,看看我們如何使用雙目立體視覺來估計物體的深度。假設我們有以下兩張實際場景下的圖片,并且我們我們已經獲取了雙目相機的外參矩陣。
此時我們計算視差圖的步驟。將投影矩陣分解為攝像機內參矩陣
編輯:jq
-
RGB
+關注
關注
4文章
799瀏覽量
58568 -
計算機視覺
+關注
關注
8文章
1698瀏覽量
46030 -
深度學習
+關注
關注
73文章
5506瀏覽量
121265 -
自動駕駛系統(tǒng)
+關注
關注
0文章
65瀏覽量
6781
原文標題:自動駕駛汽車的偽激光雷達-雙目立體視覺
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論