該論文的目的是增強RGBD中的深度信息。利用的是shading-based方法,大體過程是通過光照模型渲染出深度圖的亮度圖,然後與真實RGB圖片的亮度進行各種比較(梯度啊,亮度差啊之類的)。因爲光照渲染是與3d點的法向量有關,而法向量又與RGBD圖片中的深度信息有關,上面說的各種比較就能夠將誤差傳播到3D點的法向量,最後傳播到深度信息。這樣就完成了深度信息的增強。
論文的效果很吊,可惜沒有開源。這裏只能記錄一下理論相關的東西。
那麼,既然是shading-based我們就需要先進行光照估計。
光照估計
論文使用的是2階球面諧波光照模型:
其中,i、j是像素座標, 是反射率。 是2階球面諧波的第k個係數(總共9個), 是2階球面諧波方程,n是3D點的法向量。
2階球面諧波的9個方程計算公式如下:
由於是對RGBD圖片進行增強,因此我們已經預先知道了每個3D點的xyz座標,也就知道了其對應的法向量。同時,先忽略反射率係數,那麼現在需要求的就只有光照係數 。光照係數的求解只要最小化以下函數就可:
其中, 是RGB圖片在i、j位置的亮度值。而最優化上面這個式子等同於解決一個線性方程組:
那麼光照係數可以用下式求解:
作者爲了使求解的光照係數更具有穩定性,加入一個約束項: 。意思是要求當前幀的光照係數要儘量與前一幀的光照係數( )變化不要太大。這樣就等於要解下面的線性方程:
其中 是一個9*9的單位矩陣,感覺上面式子有點錯誤,應該是在 後面少乘了個 。
求解出光照係數後,就可以求解反射率 了:
直接將RGB圖片的亮度 除於 就ok了。
深度圖增強
利用 Gauss-Newton,最小化下式就可以獲取增強後的深度圖 :
其中D是深度圖, 是梯度約束, 是平衡約束, 是深度約束, 是時間尺度上的平滑約束。具體的:
上面式子中, 表示3D點,可以通過深度圖D計算得到:
其實就是RGBD轉點雲的計算公式。 是RGBD圖片的中心點, 是相機焦距。
而法向量計算公式爲:
在 中, 是前一幀增強後的法向量,c(i,j)是當前幀i,j位置點與前一幀的對應點,可以利用ICP計算得到。
論文還對 進行了改進,以及 Gauss-Newton的優化等。
實驗結果
項目主頁:http://gvv.mpi-inf.mpg.de/projects/RealTimeSFS/
分別是rgb圖片,設備獲取的初始點雲,增強後的點雲。