雙目視覺廣泛應用在機械人導航,精密工業測量、物體識別、虛擬實境、場景重建,勘測領域。
什麼是雙目視覺?
雙目視覺是模擬人類視覺原理,使用計算機被動感知距離的方法。從兩個或者多個點觀察乙個物體,獲取在不同視角下的影象,根據影象之間畫素的匹配關係,通過三角測量原理計算出畫素之間的偏移來獲取物體的三維資訊。
得到了物體的景深資訊,就可以計算出物體與相機之間的實際距離,物體3維大小,兩點之間實際距離。目前也有很多研究機構進行3維物體識別,來解決2d演算法無法處理遮擋,姿態變化的問題,提高物體的識別率。
圖1 雙目視覺演算法流程
標定的目的是獲取相機的內參(焦距,影象中心,畸變係數等)和外參(r(旋轉)矩陣t(平移)矩陣,用於對其兩個相機)。目前比較常用的方法為張正友的棋盤格標定方法,opencv和matlab上均有實現。但是一般為了獲取更高的標定精度,採用工業級的(60*60格仔)玻璃面板效果會更好。並且有人也建議使用matlab,因為精度包括視覺化效果會更好一些,並且matlab的結果儲存為xml,opencv也可以直接讀入,但是步驟相對於opencv的麻煩了一些。這是matlab標定工具箱的連線:
步驟為:
(1)左攝像頭標定,獲取內外引數。
(2)右引數攝像頭標定獲取外參。
(3)
雙目標定,獲取相機之間的平移旋轉關係。
圖2 matlab雙目視覺標定
矯正的目的是得到的參考圖與目標圖之間,只存在x方向上的差異。提高視差計算的準確性。
矯正分為兩個步驟
l 畸變矯正
圖3 畸變矯正
l 將相機轉化為標準形式
圖4 轉換為標準形式
因為矯正部分,會對影象所有點的位置進行重新計算,因而演算法處理的解析度越大耗時越大,而且一般需要實時處理兩張影象。而且這種演算法並行化強標準化程度較高,建議使用ive進行硬化,類似opencv中的加速模式,先得到對映map,再並行化使用對映map重新得到畫素位置。opencv中的矯正函式為cvstereorectify。
雙目匹配是雙目深度估計的核心部分,發展了很多年,也有非常多的演算法,主要目的是計算參考圖與目標圖之間畫素的相對匹配關係,主要分為區域性和非區域性的演算法。一般有下面幾個步驟。
l 匹配誤差計算
l 誤差整合
l 視差圖計算/優化
l 視差圖矯正
一般區域性演算法,使用固定大小或者非固定大小視窗,計算與之所在一行的最優匹配位置。如下圖為最簡單的區域性方式,求一行最佳對應點位置,左右檢視x座標位置差異為視差圖。為了增加雜訊,光照的魯棒性可以使用固定視窗進行匹配,也可以對影象使用lbp變換之後再進行匹配。一般的匹配損失計算函式有:sad,ssd,ncc等。一般採用最大視差也可以限制最大搜尋範圍,也可以使用積分圖和boxfilter進行加速計算。目前效果較好的區域性匹配演算法為基於guided filter的使用boxfilter和積分圖的雙目匹配演算法,區域性演算法易於並行化,計算速度快,但是對於紋理較少的區域效果不佳,一般對影象分割,將影象分為紋理豐富和紋理稀疏的區域,調整匹配窗大小,紋理稀疏使用小視窗,來提高匹配效果。
圖5 基於線性搜尋的視差計算
非區域性的匹配演算法,將搜尋視差的任務看做最小化乙個確定的基於全部雙目匹配對的損失函式,求該損失函式的最小值即可得到最佳的視差關係,著重解決影象中不確定區域的匹配問題,主要有動態規劃(dynamicprogramming),信任傳播(blief propagation),圖割演算法(graphcut)。目前效果最好的也是圖割演算法,opencv中提供的圖割演算法匹配耗時很大。
圖割演算法主要是為了解決動態規劃演算法不能融合水平和豎直方向連續性約束的問題,將匹配問題看成是利用這些約束在影象中尋求最小割問題。
圖6 基於圖割(左),動態規劃(中),相關性計算(右)的效果。
因為考慮到全域性能量最小化,非區域性演算法一般耗時較大,不太好使用硬體加速。但是對於遮擋,紋理稀疏的情況解決的較好。
得到了匹配點之後,一般通過左右視線一致性的方式,檢測和確定具有高置信度的匹配點。很類似前後向光流匹配的思想,只有通過左右視線一致性檢驗的點才認為是穩定匹配點。這樣也可以找出因為遮擋,雜訊,誤匹配得到的點。
那麼我們如何得到視差和深度資訊呢?
圖7 視差深度獲取示意
關於視差圖的後處理,一般採用中值濾波的方法,對當前點的灰度值使用鄰域畫素的中值來代替,這種方法可以很好去除椒鹽雜訊。可以去除因為雜訊或者弱紋理匹配失敗的孤立點。
雙目視覺演算法簡介
雙目視覺廣泛應用在機械人導航,精密工業測量 物體識別 虛擬實境 場景重建,勘測領域。什麼是雙目視覺?雙目視覺是模擬人類視覺原理,使用計算機被動感知距離的方法。從兩個或者多個點觀察乙個物體,獲取在不同視角下的影象,根據影象之間畫素的匹配關係,通過三角測量原理計算出畫素之間的偏移來獲取物體的三維資訊。得...
雙目視覺 1
雙目視覺廣泛應用在機械人導航,精密工業測量 物體識別 虛擬實境 場景重建,勘測領域。什麼是雙目視覺?雙目視覺是模擬人類視覺原理,使用計算機被動感知距離的方法。從兩個或者多個點觀察乙個物體,獲取在不同視角下的影象,根據影象之間畫素的匹配關係,通過三角測量原理計算出畫素之間的偏移來獲取物體的三維資訊。得...
雙目視覺焦距 雙目視覺系統的原理和設計
雙目立體視覺是機器視覺的一種重要形式,它是基於視差原理並由多幅影象獲取物體三維幾何資訊的方法。雙目立體視覺系統一般由雙攝像機從不同角度同時獲得被測物的兩幅數字影象,或由單攝像機在不同時刻從不同角度獲得被測物的兩幅數字影象,並基於視差原理恢復出物體的三維幾何資訊,重建物體三維輪廓及位置。雙目立體視覺原...