尊重別人的勞動成果就是對自己的尊重——聲明至上:轉載來源:https://zhuanlan.zhihu.com/p/30116734
前言
StereoVision也就是我們常說的立體視覺,可以說是計算機視覺的一個重要模塊。人類之所可以看到世界的各種各樣的物品,正是得益於我們的視覺系統。那么,我們要想讓機器人跟人一樣可以分辨物體,同樣的需要給機器人雙眼。我們肯定都有這樣的體驗,當我們看到一個物體的時候,我們其實是可以估計出這個物體是離我們比較近還是比較遠的,那我們需要給機器人的不僅僅是能夠識別物體的系統,而且這種系統同樣的要能夠判斷出障礙物距離有多遠,立體視覺系統的功能就能夠很好的滿足要求。
立體視覺原理
一般而言,立體視覺系統需要有兩個(或者兩個以上)攝像頭的支持,也就正如人類的雙眼一樣。下面首先介紹一下單目系統。
- 單目系統
O點為相機的光心,π是攝像頭的成像平面。從圖中可以看出,如果P點與Q點在同一條直線上,那么他們在圖像上的成像點就是同一個點,也就是 ,那么也就看不出來他們在距離上的差異(也就無法知道Q在前還是P在前)
- 雙目系統
正是在發現了單目系統的缺陷之后,我們將系統由一個攝像頭增加到兩個攝像頭,這樣也就構成了一個立體系統。如果我們可以在兩幅圖像中找到對應點,我們就可以通過三角測量的方法來求得深度。
從圖中可以很明顯的看出,在增加了一個攝像頭之后,P與Q在目標面T上的成像不在位於同一個點,而是有自己分別的成像點,也就是 與
。那么,在我們給出了Reference與Target之后,我們應該如何解決參考面與目標面之間的對應關系呢?
這個時候,就需要對極約束,對極約束意味着一旦我們知道了立體視覺系統的對極幾何之后,對兩幅圖像間匹配特征的二維搜索就轉變成了沿着極線的一維搜索。
圖中黑色實線為R平面一條極線,綠色為T平面一條極線。給定一幅圖像上的一個特征,它在另一幅圖像上的匹配視圖一定在對應的極線上(圖中將P,Q視為特征,可以看到在T上的成像在綠色直線上)
通常我們使用的立體視覺系統都是比較標准的系統,如圖所示。
一旦我們知道了對應點的搜索區域,就可以將其從2D降到1D,這樣就形成了更加方便的立體視覺,對應點都被約束再同一條極線上,也就是圖中的y直線。下面給出一個實際的示例(在理想情況下,我們希望兩個攝像頭的參數是完全一致的,並且兩個相機的位置是平行的)。
- 視差與深度計算原理
在我們已經確保兩個攝像頭的參數是完全一致的,並且兩者的位置是平行之后,我們的關注點就落到了如何計算物體的深度信息,這也是最重要最關鍵的地方。下面給出的是標准立體視覺系統下的計算原理。
我們假設 為空間中的一點,
為左邊攝像頭的光心,
為右邊攝像頭的光心,攝像頭的焦距為
(光心到成像平面的距離),成像平面在圖中用粉色線表示,
表示兩個攝像頭光心之間的距離,也稱為基線,
在左右兩個攝像機成像平面上的成像點分別為
與
,
與
為成像點的水平方向的距離(通常我們得到的是像素坐標系下的
坐標,其單位為像素,因此需要轉換為實際的物理長度,涉及到坐標系的轉換問題),
就是我們需要求的深度。
根據三角形相似定理( ):
,也就是我們通常所說的視差(disparity )。
我們可以發現,深度 是跟視差
成反比關系的,當視差
越小時,
越大,物體離立體視覺系統也就越遠, 當視差
越大,
越小,物體離立體視覺系統也就越近。這一點和我們人眼系統是一樣的,當我們觀察離我們比較近的物體的時候,視差很大,可以獲得的信息也就越多,當物體離我們很遠的時候,視差很小,我們獲得的信息也就很少了。
在圖像處理中,我們通常用灰度值來表示視差信息,視差越大,其灰度值也就越大,在視差圖像的視覺效果上表現出來就是圖像越亮,物體離我們越遠,其視差越小,灰度值也越小,視差圖像也就越暗。
本文主要參考Stefano Mattoccia教授的PPT:Stereo Vision:Algorithms and Applications