自動駕駛汽車的偽激光雷達-雙目立體視覺

來源 | 點云PCL


導讀:雙目立體視覺(Binocular Stereo Vision)是機器視覺的一種重要形式,它是基于視差原理并利用成像設備從不同的位置獲取被測物體的兩幅圖像,通過計算圖像對應點間的位置偏差,來獲取物體三維幾何信息的方法。


自動駕駛汽車的偽激光雷達-雙目立體視覺的圖1

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖2


偽激光雷達-雙目立體相機

深度學習和計算機視覺在自動駕駛系統中已經非常流行且被廣泛應用。計算機視覺領域在過去的十年里得到了迅猛的發展,特別是在障礙物檢測方面。障礙物檢測算法,如YOLO或RetinaNet提供了二維邊界框,用邊界框給出了障礙物在圖像中的位置。

目前,大多數的目標檢測算法都是基于單目RGB攝像機的,不能返回每個障礙物的距離。為了能夠返回每個障礙物的距離,工程師們將相機與激光雷達(LiDAR,光探測和測距)傳感器進行融合,后者使用激光來返回深度信息。將計算機視覺信息和激光雷達輸出進行傳感器的融合。這種方法的問題是使用激光雷達,就會導致價格昂貴。所以經常有人使用的一個雙目攝像頭進行替代,并使用幾何信息來定義每個障礙物的距離,故可以將雙目相機獲取的數據稱之為偽激光雷達

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖3
單目與雙目的比較

雙目視覺利用幾何學來構建深度圖,并將其與目標檢測相結合以獲得三維距離。那么如何利用立體視覺實現距離估計?以下是雙目障礙物檢測的5步偽代碼:
  1. 標定 2 個攝像頭(內外參的標定)
  2. 創建極線約束
  3. 先構建視差圖,然后構建深度圖
  4. 然后將深度圖與障礙物檢測算法相結合
  5. 估計邊界框內像素的深度。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖4


相機內外參標定

每個攝像機都需要標定。相機的標定是指將三維世界中的[X,Y,Z]坐標的三維點轉換為具有[X,Y]坐標的二維像素。這里簡單的介紹一下針孔相機模型。顧名思義就是用一個針孔讓少量光線穿過相機,從而得到清晰的圖像。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖5

針孔相機模型可以設置焦距,使得圖像更加的清晰。為了相機標定,我們需要通過攝像機坐標系計算世界坐標點到像素坐標的變換關系。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖6
 相機標定過程

  • 從世界坐標系到相機坐標的轉換稱為外參標定,外部參數稱為R(旋轉矩陣)和T(平移矩陣)。
  • 從攝像機坐標到像素坐標的轉換稱為內參標定,它獲取的是相機的內部參數,如焦距、光心等…
  • 內參我們常稱之為K的矩陣。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖7

內參標定,通常使用棋盤和自動算法獲得,如下圖我們在采集標定板時,將告訴算法棋盤上的一個點(例如世界坐標系點 0, 0 , 0)對應于圖像中的一個像素為(545,343)。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖8

為此,相機標定必須用攝像機拍攝棋盤格的圖像,在得到一些圖像和對應的點之后,標定算法將通過最小化平方誤差來確定攝像機的標定矩陣。得到標定參數后為了得到校正后的圖像,需要進行畸變校正。畸變可以是徑向的,也可以是切向的。畸變校正有助于消除圖像失真。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖9
圖像的畸變校正

以下是攝像機標定返回的矩陣形式

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖10

f是焦距-(u?,v?) 是光學中心:這些是固有參數。

我認為每一個計算機視覺工程師都應該必須知道并掌握相機的標定,這是最基本且重要的要求。

在相機標定的過程中涉及到一些齊次坐標轉換的問題,這里簡單的介紹一下有兩個公式可以得到從世界坐標系到像素坐標系的關系:

(1)世界坐標系到相機坐標系的轉換(外參標定公式)

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖11

(2)相機坐標系到圖像坐標系的轉換(內參標定公式)

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖12

所以從三維空間坐標系到圖像坐標系下的關系可以總結為

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖13

但是我們知道這個公式是齊次坐標才可以這么寫,也就是需要將O_world從[X Y Z]修改為[X Y Z 1],加這個“1”后稱為齊次坐標。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖14

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖15


雙目視覺的對極幾何

我們知道雙目立體視覺是基于兩幅圖像來尋找深度的,人類的眼睛就像兩個相機,因為兩只眼睛從不同的角度觀察圖像,所以他們可以計算兩個視角之間的差異,并建立距離估計。下圖是一個雙目立體相機的例子

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖16

那么我們如何根據雙目立體相機如何估計深度?想象一下你有兩個攝像頭,一個左攝像頭和一個右攝像頭。這兩個攝像頭在同一Y軸和Z軸上對齊。那么唯一的區別是它們的X值。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖17

根據上圖我們的目標是估計O點(代表圖像中的任何像素)的Z值,即距離。X是對齊軸,Y是高度值,Z是深度值,兩個藍色的平面圖對應于每個攝像頭的圖像。假設我們從從俯視的角度來考慮這個問題。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖18

已知:
(1)xL對應于左側相機圖像中的點。xR是與左側圖像中該點的對應位置。
(2)b是基線,是兩個攝像頭之間的距離。

針對左相機,如下圖,我們可以得到一個公式:Z = X*f / xL.

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖19

針對右相機,如下圖,我們可以得到另一個公式:Z = (X — b)*f/xR.

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖20

此時根據兩個公式我們可以計算出正確的視差d=xL-xR和一個物體的正確XYZ位置。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖21


視差和深度圖

什么是視差?視差是指同一個三維點在兩個不同的攝像機角度獲得的圖像中位置的差異。視差圖是指一對立體圖像之間明顯的像素差異或運動。要體驗這一點,試著閉上你的一只眼睛,然后快速地閉上它,同時打開另一只眼睛。離你很近的物體看起來會跳一段很長的距離,而離你較遠的物體移動很少,這種運動就是視差。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖22

由于立體視覺,我們可以估計任何物體的深度,假設我們得到了正確的矩陣參數,則可以計算深度圖或視差圖:

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖23
  視差圖

為了計算視差,我們必須從左邊的圖像中找到每個像素,并將其與右邊圖像中的每個像素進行匹配。這就是所謂的雙目相機的立體匹配的問題。為了解決像素匹配的問題,引入對極幾何約束,只需在對極線上搜索它,就不需要二維搜索,對應點一定是位于這條線上,搜索范圍縮小到一維。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖24

之所以能夠引入對極約束,這是因為兩個相機是沿同一軸對齊的。以下是極線搜索的工作原理:
  1. 取左圖中這一行上的每個像素
  2. 在同一極線上比較左圖像像素和右圖像中的每個像素
  3. 選擇 cost 最低的像素
  4. 計算視差 d

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖25

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖26


構建偽激光雷達效果

現在,是時候把這些應用到一個真實的場景中,看看我們如何使用雙目立體視覺來估計物體的深度。假設我們有以下兩張實際場景下的圖片,并且我們我們已經獲取了雙目相機的外參矩陣。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖27

此時我們計算視差圖的步驟。將投影矩陣分解為攝像機內參矩陣??, 以及外參??, ??. 使用我們在前面介紹的兩個步驟估計深度,將得到左右圖像的視差圖。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖28

從視差再到到深度圖的計算,由于我們有兩個視差圖,它基本上告訴我們兩個圖像之間像素的偏移。對于每臺相機,我們都有一個投影矩陣P_left 和 P_right

為了估計深度,我們需要利用投影矩陣P來估計K,R和t。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖29

一個名為cv2.decomposeProjectMatrix()的OpenCV函數可以這樣做,將從P得到K、R和t;

現在是時候生成深度圖了。深度圖將使用另一幅圖像和視差圖來告訴我們該圖像中每個像素的距離。

過程如下:
  1. 獲取焦距?? 從?? 矩陣
  2. 計算基線?? 使用平移向量中的相應值??

使用之前的公式和計算的視差圖d計算圖像的深度圖:

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖30

我們對每個像素進行計算,得到如下

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖31

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖32


估計障礙物的深度

現在我們有一個每個攝像頭的深度圖!假設我們將其與障礙物檢測算法(如YOLO)相結合。對于每個障礙物,該算法將返回一個包含4個數字的邊界框:[x1;y1;x2;y2]。這些數字表示框的左上點和右下點的坐標。假設我們在左邊的圖像上運行這個算法,并且使用左邊的深度圖。

如下圖在這個邊界框中,我們可以取最近的點。知道這一點后,可以通過深度圖知道了圖像中每個點的距離,而且邊界框中的第一個點也就是相機到障礙物的距離。

自動駕駛汽車的偽激光雷達-雙目立體視覺的圖33
雙目測距實例

所以利用立體視覺,我們不僅知道圖像中的障礙物,還知道障礙物與我們的距離!這個障礙物離我們28.927米遠!

與使用激光雷達相比,它保持相對便宜的價格,并且仍然提供出色的性能。我們稱之為“偽激光雷達”,因為它可以取代激光雷達的功能:探測障礙物,分類,以及三維視覺定位等領域。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP