雙camera景深計算 (1)

2021-09-07 11:54:08 字數 2899 閱讀 8752

前面介紹了雙camera能實現的功能中其中很大的一類都是依賴於景深的計算。現在這類功能在手機上的應用也是相對成熟的。在這類功能中景深的計算是很重要的,如何計算景深,計算的準確性和效能都是決定最後能夠實現什麼樣功能的關鍵。

很多人都會說其實我們從一張**中也能看出哪個物體在前,哪個物體在後。這其實這是建立在我們大腦的一些視覺經驗的基礎上。比如近大遠小,又比如物體影子的位置。這些經驗確實很重要,但是在實際的計算機視覺中很難使用相同的方法,並且在很多情況即使人眼也沒有辦法分辨景深。比如說下面這個網上很熱的圖,哪個樓在前。

還有下圖這種情況,利用平面上的影象在特殊的視覺角度。造**的虛假3d視覺。

在僅僅從張中看在一條直線上的物體,很多不同距離的點再上對映的位置其實是乙個。如下圖的p和q。光從**無法得到距離資訊。

而在實際場景,人眼分辨景深主要是依靠雙目視覺分辨景深。這和雙camera分辨景深的原理一樣。主要方法是依靠三角定位的方法如下圖。不過需要注意的是,下面這個公式是基於兩個平行的完全相同的camera實現的。

從公式中可以得判斷z的距離中d和x的大小很關鍵.兩個攝像頭間的距離d很重要減少d的距離不僅會減少能測量的最大距離而且會減少相對景深間精度。而x的精度更多取決於畫素的大小。在實際計算中不會小於乙個畫素。

實際計算中有的時候會將最大和最小距離間分割成多個不同平面。每個平面之間的精度由演算法的實際精度決定。這樣可以較少一些在景深計算中誤差導致的精度的問題。

上面的公式是基於兩個平行的相同camera的。但是實際使用的時候實際上有很多問題。比如在上圖兩個camera計算景深中總有一部分場景不能相交。因此實際的為了景深計算兩個camera的fov設計會不一樣。主camera是用來取實際圖的,副camera的影象主要是用來參考計算景深。副camera的fov一般會大於主camera. 但是即使是這樣距離較近的物體依然有可能不同時在兩個camera影象當中。經過調整的計算景深範圍的關係如下圖。

但是這麼計算之後的問題是由於兩個攝像頭的成像和物體的放縮比不一樣。因此這麼做之後在計算距離的時候要考慮將影象的放縮比變換成一樣。實際上不僅是放縮比,包括畸變和姿勢差。這在計算景深的都是很重要的矯正。本篇文章不以校準和矯正為主要內容

通過在左右兩張圖計算出不同點差異的圖一般叫disparity map,這個圖上表示的是兩張圖上相同點的位移差異,但是由於三角定位中的位移差異和z成正比,因此很多時候disparity map 就直接被用作景深圖。多數時候這個圖是以灰度圖的形式進行儲存。

下圖是如何通關過 disparity map 重建3d場景的過程。

計算景深的常用幾個重要流程如下圖。其中最後一步是用來3d重建,現在很多場景中並不單獨使用。其中calibration和矯正是密切相關的,後面有機會我們可以單獨討論。本文主要討論如何計算兩張圖的立體相關性這部分。

另外乙個實際問題從圖上看我們找到x1和x2似乎很簡單。但是在實際圖中如何能找到兩個相同的點呢?當然全圖找可以,但是如果全圖尋找類似點的話精度或者這個問題其實也是雙camera演算法計算景深中的最重要演算法重要問題。在實際使用狀況下兩個相機的座標無任何約束關係,相機的內部引數可能不同,甚至是未知的。要刻畫這種情況下的兩幅影象之間的對應關係,需要引入乙個重要的概念對極幾何(epipolargeometry)。其中有兩個重要的概念兩個重要的概念——對極矩陣(epipolarmatrix)和基本矩陣(fundamentalmatrix)。這中間是描述兩個camera影象中點對應的規律的。

多數演算法在真正計算兩張圖之前首先要做的就是糾正兩個camera影象的之間的對應關係。將極線糾正到平行,這樣有利於後面的計算。

比較視窗裡面的資訊是否相同就可以使用很多影象匹配的方法了。比較簡單的如計算畫素亮度的ssd,絕對差等方法,也就是計算兩塊中相對的畫素間的差值的平方或者絕對值。當然也可以用其它更加魯棒的影象匹配演算法,比如opencv裡面的robustmatch演算法。網上有文章大家可以自己找來看看。這裡只是示意景深計算的過程。

ssd計算公式如下:

然後最簡單的方法就是選擇所有格仔計算結果e最小的d作為差異。

但是同時又有了新的問題。當w選取比較小的時候景深圖的雜訊依然很大,而w選取大的時候景深圖在x,y方向上的解析度犧牲又比較大。如何選擇w大小需要在實際使用中根據需求驚醒選擇。下面是同一張圖在w為3x3和20x20畫素的時候計算的結果。

即使是我們選擇了乙個較好的視窗,但是在很多情況就和下圖一樣得到的景深圖依然不能十分滿意。這是由於這個演算法本身很多時候還有很多誤判的時候。

景深圖的計算的改進和演算法中的預處理,影象匹配演算法,還有景深圖的後處理都有關係。下面是乙個傳統景深圖的演算法和改進演算法的比較。

景深概念與計算

先介紹幾個概念 1 焦點 focus 與光軸平行的光線射入凸透鏡時,理想的鏡頭應該是所有的光線聚集在一點後,再以錐狀的擴散開來,這個聚集所有光線的一點,就叫做焦點。2 瀰散圓 circle of confusion 在焦點前後,光線開始聚集和擴散,點的影象變成模糊的,形成乙個擴大的圓,這個圓就叫做瀰...

景深 攝影基礎理論(1)

在聚焦完成後,在焦點前後的範圍內都能形成清晰的像,這一前一後的距離範圍,便叫做景深。在鏡頭前方 調焦點的前 後 有一段一定長度的空間,當被攝物體位於這段空間內時,其在底片上的成像恰位於焦點前後這兩個瀰散圓之間。被攝體所在的這段空間的長度,就叫景深。下面是景深的計算公式。其中 容許瀰散圓直徑 f 鏡頭...

camera (2)雙攝的作用

這兩年手機的亮點越來越少,高階智慧型機現在基本都不再去比拼雷兔兔,而開始pk拍照效能。於是乎,這兩年各家紛紛開始做起了雙camera。那問題來了,雙camera到底能做什麼?1 雙camera可以測距,所以可以做距離相關的應用 如上圖,由於雙camera通過演算法,可以判斷被攝物體的距離,所以通過此...