雙camera景深計算(2)
來自專欄 All in Camera4 人贊了文章
本文系微信公眾號《大話成像》,知乎專欄《all in camera》原創文章
大話成像讀者QQ交流群 :237427716 大話計算機視覺QQ交流群:651805282
本站教學視頻大話成像之《數字成像系統》32講已上線淘寶,搜索關鍵字『大話成像』即可找到,或使用鏈接
PC用戶: https://item.taobao.com/item.htm?id=568925736204:
手機用戶可使用鏈接: 複製這條信息¥adMo0tqbc2N¥後打開手淘
請購買了視頻的讀者加入QQ群:679050565,群名稱:數字成像系統課程,驗證消息請輸入購買課程時候的個人ID。
作者:Zhang Eric
接著上一篇的說,其實在雙攝像頭的景深計算過程中如果只是按照上一篇文章介紹最簡單的處理辦法是 一定得不到一個理想的景深圖。並且在處理速度上也得不到一個理想的結果。其實這個和雙目視覺上一般存在的一些和預想不同的視覺差情況相關的。
如區域太過平坦或者花紋接近很難判斷是不是最匹配。
反光的表面的光斑
反光有虛影的表面
大物體邊緣的背景信息不一致
觀察角度變化導致的長度變化
甚至觀察角度變化導致的一些形變
這些問題其實就是當兩張圖像上點不能簡單的判斷對應的時候演算法如何處理。
其實在介紹這些問題之前。圖片拍攝過程中的雜訊也是關鍵問題。上一篇文章中最後處理的不滿意的一個主要原因就是雜訊引起的。
有些朋友也有過回復其實一個簡單的策略就是針對原圖或者景深圖進行濾波減少對生成景深圖的影響。在實際處理中可以對原圖做預處理也可以對生成的景深圖做處理。目前效果好的就是美顏那篇文章中提到的雙邊濾波。原因很簡單,保邊濾噪。
解決上面,有一類思路是對之前生成的景深圖進行後處理 。這個時候就要看下面的這個公式。其實公式本身很簡單,Edata代表我們匹配的結果,Esmooth代表一般景深場景下的連續性。也就是說兩者都在景深的評價過程中都應該考慮。這其實是符合多數的圖像的常識的。在考慮到景深圖的平滑性之後景深圖的質量有了很大的提升。
因此基於一般性的常識,很多研究針對景深的後處理提出了一些演算法
? Dynamic Programming!
? Scanline Optimization!
? Graph Cuts!
? Belief Propagation, …!
下面就是Graph Cut的處理,其主要思想還是減少景深圖中小塊的區域。但是其實這種做法是可以減少很多小的雜訊,但是在某些細節部分也會帶來一些誤判。導致物品的邊緣發生變化。
另外就是根據State-of-art 的原則,假設所有一個顏色都是出於一個平面。每次分析的時候根據顏色對窗口中的像素進行權重的分配。這樣確實能夠解決一些邊緣的問題。
但是在一些情況下如下面的人臉和斜面的狀況下,還是很容易出現景深的判斷錯誤。一般景深判斷演算法很難處理這類問題。
另外就是之前提到的背景信息不同問題的。這類問題使用不同權重的方法可以得到一定程度的改善。
還有個不錯的方法是通過不同方向的掃描線的方法來進行。其方法是根據不同方向下判斷線的連續性來進行景深圖的處理。最後綜合成一張最後的景深圖。相對這個步驟比較多 ,大家有興趣可以參照下
H. Hirschmüller. Stereo vision in structured environments by consistent semi-global matching.這篇文章。
另外有一些演算法的思路通過以左右兩張圖片分別做為參考圖片,分別計算景深。然後取兩者中較小的。這樣可以解決掉很大一部分誤判。但是相對來說運算時間增加了一倍。
目前還有一類針對改善景深圖的方法是通過調整評價窗口的大小,位置甚至形狀來實現。之前的簡單的方法是採用參考點在中心部位取window.其實也可以可以根據顏色去取參考點出於邊上的點。
又或者可以通過多個子窗口去評價,子窗口的的排列可以根據實際圖形的情況。比如取相同顏色的區域。
最後甚至還可以根據不同狀況下來調整用來採樣的窗口大小。
但是大家可以注意到上面的改進演算法都有一個特徵,增加演算法的複雜程度。於是也有很多人研究怎麼樣減少運算量。其中一種方法是通過整張圖累加到計算點的和來代替之前的計算兩張圖的差的方法。方法很簡單,但是如果圖像比較大容易出現溢出的狀況。大家有興趣可以看下
F. Crow, Summed-area tables for texture mapping, Computer Graphics,
還有些數學很好的專家,推算出如何通過減少運算量實現一樣的Box-Filtering運算結果 。M. Mc Donnel.Box-filtering techniques. Computer Graphics and Image Processing
現在有很多演算法都根據實際使用的平台通過GPU進行演算法的優化。更好的整體解決方案公司甚至通過FPGA或者定製晶元來進行景深計算的速度問題。隨著技術的發展相信更精確的速度更快的景深計算方案會不斷的出來。
景深計算在物體識別,AR增強領域是個最基礎的研究。這篇文章中介紹一些方法都是一些比較基礎的方法。實際上還有很多思路來解決一些單獨方面的問題。其實現在如何計算景深的研究還在發展,前一段時間還看到一些論文利用深度學習來進行景深計算的改進,從論文的效果來看不錯。但是在實際產品使用中往往是多種方法結合來使用。而且在最終的成效果和運行時間上進行平衡。
本文參考Stereo Vision: Algorithms and Applications Stefano Mattoccia Department of Computer Science (DISI) University of Bologna
歡迎大家關注我們的公眾號大話成像和大話計算機視覺,並加入我們的兩個QQ交流群交流一些工作學習中的問題 。
推薦閱讀: