深度相機原理揭祕--雙目立體視覺

深度相機原理揭祕--雙目立體視覺 

導讀算法

爲何非得用雙目相機才能獲得深度?dom

雙目立體視覺深度相機的工做流程函數

雙目立體視覺深度相機詳細工做原理學習

理想雙目相機成像模型優化

極線約束spa

圖像矯正技術3d

基於滑動窗口的圖像匹配blog

基於能量優化的圖像匹配圖片

雙目立體視覺深度相機的優缺點ip

---------------------------------------------------

基於雙目立體視覺的深度相機相似人類的雙眼,和基於TOF、結構光原理的深度相機不一樣,它不對外主動投射光源,徹底依靠拍攝的兩張圖片(彩色RGB或者灰度圖)來計算深度,所以有時候也被稱爲被動雙目深度相機。比較知名的產品有STEROLABS 推出的 ZED 2K Stereo Camera和Point Grey 公司推出的 BumbleBee。

ZED 2K Stereo Camera

爲何非得用雙目相機才能獲得深度?

說到這裏,有些讀者會問啦:爲何非得用雙目相機才能獲得深度?我閉上一隻眼只用一隻眼來觀察,也能知道哪一個物體離我近哪一個離我遠啊!是否是說明單目相機也能夠得到深度?

在此解答一下:首先,確實人經過一隻眼也能夠得到必定的深度信息,不過這背後其實有一些容易忽略的因素在起做用:一是由於人自己對所處的世界是很是瞭解的(先驗知識),於是對平常物品的大小是有一個基本預判的(從小到大多年的視覺訓練),根據近大遠小的常識確實能夠推斷出圖像中什麼離咱們遠什麼離咱們近;二是人在單眼觀察物體的時候其實人眼是晃動的,至關於一個移動的單目相機,這相似於運動恢復結構(Structure from Motion, SfM)的原理,移動的單目相機經過比較多幀差別確實能夠獲得深度信息。

可是實際上,相機畢竟不是人眼,它只會傻傻的按照人的操做拍照,不會學習和思考。下圖從物理原理上展現了爲何單目相機不能測量深度值而雙目能夠的緣由。咱們看到紅色線條上三個不一樣遠近的黑色的點在下方相機上投影在同一個位置,所以單目相機沒法分辨成的像究竟是遠的那個點仍是近的那個點,可是它們在上方相機的投影卻位於三個不一樣位置,所以經過兩個相機的觀察能夠肯定究竟是哪個點。

雙目相機肯定深度示意圖

雙目立體視覺深度相機簡化流程

下面簡單的總結一下雙目立體視覺深度相機的深度測量過程,以下:

一、首先須要對雙目相機進行標定,獲得兩個相機的內外參數、單應矩陣。

二、根據標定結果對原始圖像校訂,校訂後的兩張圖像位於同一平面且互相平行。

三、對校訂後的兩張圖像進行像素點匹配。

四、根據匹配結果計算每一個像素的深度,從而得到深度圖。

欲知詳情,且看下面詳細介紹。

雙目立體視覺深度相機詳細原理

1

理想雙目相機成像模型

首先咱們從理想的狀況開始分析:假設左右兩個相機位於同一平面(光軸平行),且相機參數(如焦距f)一致。那麼深度值的推導原理和公式以下。公式只涉及到初中學的三角形類似知識,不難看懂。

理想狀況下雙目立體視覺相機深度值計算原理

根據上述推導,空間點P離相機的距離(深度)z=f*b/d,能夠發現若是要計算深度z,必需要知道:

一、相機焦距f,左右相機基線b。這些參數能夠經過先驗信息或者相機標定獲得。

二、視差d。須要知道左相機的每一個像素點(xl, yl)和右相機中對應點(xr, yr)的對應關係。這是雙目視覺的核心問題。

2

極線約束

那麼問題來了,對於左圖中的一個像素點,如何肯定該點在右圖中的位置?是否是須要咱們在整個圖像中地毯式搜索一個個匹配?

答案是:不須要。由於有極線約束(名字聽着很嚇人)。極線約束對於求解圖像對中像素點的對應關係很是重要。

那什麼是極線呢?以下圖所示。C1,C2是兩個相機,P是空間中的一個點,P和兩個相機中心點C一、C2造成了三維空間中的一個平面PC1C2,稱爲極平面(Epipolar plane)。極平面和兩幅圖像相交於兩條直線,這兩條直線稱爲極線(Epipolar line)。P在相機C1中的成像點是P1,在相機C2中的成像點是P2,可是P的位置事先是未知的。

咱們的目標是:對於左圖的P1點,尋找它在右圖中的對應點P2,這樣就能肯定P點的空間位置,也就是咱們想要的空間物體和相機的距離(深度)。

所謂極線約束(Epipolar Constraint)就是指當同一個空間點在兩幅圖像上分別成像時,已知左圖投影點p1,那麼對應右圖投影點p2必定在相對於p1的極線上,這樣能夠極大的縮小匹配範圍。

根據極線約束的定義,咱們能夠在下圖中直觀的看到P2必定在對極線上,因此咱們只須要沿着極線搜索必定能夠找到和P1的對應點P2。

極線約束示意圖

細心的朋友會發現上述過程考慮的狀況(兩相機共面且光軸平行,參數相同)很是理想,相機C1,C2若是不是在同一直線上怎麼辦?

事實上,這種狀況很是常見,由於有些場景下兩個相機須要獨立固定,很難保證光心C1,C2徹底水平,即便是固定在同一個基板上也會由於裝配的緣由致使光心不徹底水平。以下圖所示。咱們看到兩個相機的極線不只不平行,還不共面,以前的理想模型那一套推導結果用不了了,這可咋辦呢?

非理想狀況下的極線

不急,有辦法。咱們先來看看這種狀況下拍攝的兩張左右圖片吧,以下所示。左圖中三個十字標誌的點,在右圖中對應的極線是右圖中的三條白色直線,也就是對應的搜索區域。咱們看到這三條直線並非水平的,若是進行逐點搜索效率很是低。

左圖中三個點(十字標誌)在右圖中對應的極線是右圖中的三條白色直線

3

圖像矯正技術

怎麼辦呢?把不理想狀況轉化爲理想狀況不就OK了!這就是圖像矯正(Image Rectification)技術。

圖像矯正是經過分別對兩張圖片用單應(homography)矩陣變換(能夠經過標定得到)獲得的,的目的就是把兩個不一樣方向的圖像平面(下圖中灰色平面)從新投影到同一個平面且光軸互相平行(下圖中黃色平面),這樣就能夠用前面理想狀況下的模型了,兩個相機的極線也變成水平的了。

圖像校訂示意圖

通過圖像矯正後,左圖中的像素點只須要沿着水平的極線方向搜索對應點就能夠了(開心)。從下圖中咱們能夠看到三個點對應的視差(紅色雙箭頭線段)是不一樣的,越遠的物體視差越小,越近的物體視差越大,這和咱們的常識是一致的。

圖像校訂後的結果。紅色雙箭頭線段是對應點的視差

上面講到的對於左圖的一個點,沿着它在右圖中水平極線方向尋找和它最匹配的像素點,提及來簡單,實際操做起來卻不容易。這是由於上述都是理想狀況下的假設。實際進行像素點匹配的時候會發現幾個問題:

一、實際上要保證兩個相機徹底共面且參數一致是很是困難的,並且計算過程當中也會產生偏差累積,所以對於左圖的一個點,其在右圖的對應點不必定剛好在極線上。可是應該是在極線附近,因此搜索範圍須要適當放寬。

二、單個像素點進行比較魯棒性不好,很容易受到光照變化和視角不一樣的影響。

4

基於滑動窗口的圖像匹配

上述問題的解決方法:使用滑動窗口來進行匹配。以下圖所示。對於左圖中的一個像素點(左圖中紅色方框中心),在右圖中從左到右用一個同尺寸滑動窗口內的像素和它計算類似程度,類似度的度量有不少種方法,好比 偏差平方和法(Sum of Squared Differences,簡稱SSD),左右圖中兩個窗口越類似,SSD越小。下圖中下方的SSD曲線顯示了計算結果,SSD值最小的位置對應的像素點就是最佳的匹配結果。

滑動窗口匹配原理示意圖

具體操做中還有不少實際問題,好比滑動窗口尺寸。滑動窗口的大小選取仍是頗有講究的。下圖顯示了不一樣尺寸的滑動窗口對深度圖計算結果的影響。從圖中咱們也不難發現:

小尺寸的窗口:精度更高、細節更豐富;可是對噪聲特別敏感

大尺寸的窗口:精度不高、細節不夠;可是對噪聲比較魯棒

不一樣尺寸的滑動窗口對深度圖計算結果的影響

雖然基於滑動窗口的匹配方法能夠計算獲得深度圖,可是這種方法匹配效果並很差,並且因爲要逐點進行滑動窗口匹配,計算效率也很低。

5

基於能量優化的圖像匹配

目前比較主流的方法都是基於能量優化的方法來實現匹配的。能量優化一般會先定義一個能量函數。好比對於兩張圖中像素點的匹配問題來講,咱們定義的能量函數以下圖公式1。咱們的目的是:

一、在左圖中全部的像素點和右圖中對應的像素點越近似越好,反映在圖像裏就是灰度值越接近越好,也就是下圖公式2的描述。

二、在 同一張圖片裏,兩個相鄰的像素點視差(深度值)也應該相近。也就是下圖公式3的描述。

能量函數

上述公式1表明的能量函數就是著名的馬爾科夫隨機場(Markov Random Field)模型。經過對能量函數最小化,咱們最後獲得了一個最佳的匹配結果。有了左右圖的每一個像素的匹配結果,根據前面的深度計算公式就能夠獲得每一個像素點的深度值,最終獲得一幅深度圖。

雙目立體視覺法優缺點

根據前面的原理介紹,咱們總結一下基於雙目立體視覺法深度相機的優缺點。

1

優勢

一、對相機硬件要求低,成本也低。由於不須要像TOF和結構光那樣使用特殊的發射器和接收器,使用普通的消費級RGB相機便可。

二、室內外都適用。因爲直接根據環境光采集圖像,因此在室內、室外都能使用。相比之下,TOF和結構光基本只能在室內使用。

2

缺點

一、對環境光照很是敏感。雙目立體視覺法依賴環境中的天然光線採集圖像,而因爲光照角度變化、光照強度變化等環境因素的影響,拍攝的兩張圖片亮度差異會比較大,這會對匹配算法提出很大的挑戰。以下圖是在不一樣光照條件下拍攝的圖片:

不一樣光照下的圖像對比

另外,在光照較強(會出現過分曝光)和較暗的狀況下也會致使算法效果急劇降低。

二、不適用於單調缺少紋理的場景。因爲雙目立體視覺法根據視覺特徵進行圖像匹配,因此對於缺少視覺特徵的場景(如天空、白牆、沙漠等)會出現匹配困難,致使匹配偏差較大甚至匹配失敗。

紋理豐富(左)和紋理缺少場景(右)

三、計算複雜度高。該方法是純視覺的方法,須要逐像素計算匹配;又由於上述多種因素的影響,須要保證匹配結果比較魯棒,因此算法中會增長大量的錯誤剔除策略,所以對算法要求較高,想要實現可靠商用難度大,計算量較大。

四、相機基線限制了測量範圍。測量範圍和基線(兩個攝像頭間距)關係很大:基線越大,測量範圍越遠;基線越小,測量範圍越近。因此基線在必定程度上限制了該深度相機的測量範圍。

本公衆號後續繼續推出一系列關於深度相機原理和技術應用文章,敬請關注。

注:轉載請註明來源,違者必究。

相關文章
相關標籤/搜索