Tips
MVS: Multi-View Stereo
Abstract
- 思路:一般的局部立體方法是一個具有整形數值視察(disparity)的支持鏡頭進行匹配,其中有一個隱藏的假設:再支持區域的像素中具有恆定的視差。這個假設在傾斜的表面是不成立的。
- 每個像素有一個單獨的3D平面。
- 除了PatchMatch的空間傳播方法外,還有
- 在立體中左右視圖傳播的圖傳播。
- 時間傳播,從視頻的前和連續幀中傳播平面。
- 傾斜支持窗口可以用來計算全球立體方法的代價,允許明確的遮擋處理,可以處理大的非紋理區域。
- 重構了高度傾斜的表面,並以亞像素精度實現了視差細節。
Introduction
原來局部立體匹配中,恆定時差不太可能發生的原因有二:
- 支持的窗口包含與中心像素位於不同表面的像素。
- 窗口捕捉到傾斜的表面,不是fronto-parallel。
- [ ] ??? 這篇論文提出了一種基於PatchMatch的算法,有效地解決了在每個像素點找到一個“好的”傾斜支持平面的問題。與其他局部算法相比,算法沒有構建完整的cost-volume,這在本論文算法中是不可能的,因為標簽空間包含了無限個3D平面。相反,算法巧妙地遍歷了其中的一部分。這使得一次優化成為可能,平面以及分配給平面的像素能夠聯合估計,這有效地繞過了錯失正確平面的問題。PatchMatch本身就是一個近似稠密的最近鄰算法。這篇論文利用隨機搜索和傳播的PatchMatch思想來尋找平面極線上的最近鄰。這使得能夠處理傾斜的表面和亞像素精度。
Algorithm
對於兩張圖像中的每個像素\(p\), 尋找一個平面\(f_p\),視差公式:
\[d_p = a_{f_p}p_x+b_{f_p}p_y+c_{f_p} (1) \]
總的優化函數如下:
\[f_p = argmin_{f\in\xi}m(p,f)(2) \]
其中\(\xi\)表示所有可能的平面,它的大小是無限的。
代價公式如下:
\[m(p,f)=\sum_{q\in W_p}w(p,q)\rho(q, q-d_p) \]
其中\(W_p\)表示以像素\(p\)作為中心的方形窗口。但是與現有方法不同,\(W_p\)不再是2D的,而是3D的。權重函數\(w(p,q)\)用來解決邊緣育肥問題,並且實施自適應支持權重的思想,它通過像素之間的顏色來計算他們之間的相似性:
\[w(p,q) = e^{-||I_p-I_q||} \]
其中,\(||I_p-I_q||\)計算像素\(p\)和\(q\)在RGB空間的L1距離。
現在來關注\(\rho(q,q')\)部分,首先根據平面\(f\)計算像素\(q\)的視差,並且從\(q\)的x坐標減去這個視差得到在另一張圖上的匹配點\(q'\),函數\(\rho(q,q')\)用來計算像素\(q\)和\(q'\)之間的不相似性:
\[\rho(q,q')=(1-\alpha)min(||I_q-I_{q'}||,\tau_{col})+\alpha min(||-||,\tau_{grad}) \]
2.2 PatchMatch計算視差
隨機初始化
給兩張圖像的一個像素的一個隨即平面。
- Somehow,得到一個隨機平面的一個點\(P(x_0, y_0, z_0)\)。
- 然后計算平面法向量\(n=(n_x, n_y, n_z)\)
- \(a_f=-n_x/n_z\)
- \(b_f=-n_y/n_z\)
- \(c_f=(n_xx_0 + n_yy_0+n_zz_0)/n_z\)
迭代和傳播
四種步驟。(1). spatial propagation, (2). view propagation, (3). temporal propagation, (4). plane refinement。
首先處理左圖的所有像素,然后處理右圖的所有像素。
- 在奇數次迭代中,從左上角的像素開始,逐行遍歷。
- 在偶數次迭代中,顛倒順序。
Search
簡單三步驟
- 初始化:兩張圖A和B,將A圖中的每一個像素,隨機賦予一個偏移量,在B圖中找到一個與之對應。
- 傳播:每個像素檢查來自相鄰塊的便宜是否提供了更好的匹配,如果是則采用鄰居的偏移量。
- 搜索:每一個像素點在以現在的偏移量位中心的同心圓內部,找到一個更加匹配的偏移量。
搜索的半徑以圖片為尺寸,然后以1/2的收斂速度減少,直到半徑為1.