3D 相片是這兩年比較熱門的研究方向,Facebook 已經支持分享 3D 相片。相信在不久的將來朋友圈、微博上也可以分享炫酷的 3D 照片
這篇論文作者來自弗吉尼亞理工學院、臺灣國立清華大學和 Facebook,作者提出了一種從 單張 RGB-D 圖像生成 3D 照相 的方法,效果炫酷、驚艷,目前代碼已在Github上開源。
開源鏈接:https://github.com/vt-vl-lab/3d-photo-inpainting
先展示下貓咪和高達的結果,鏡頭晃動、希區柯克等效果,毫無違和感。
文章方法對深度圖的質量要求并不高,只需要深度不連續處在彩色圖和深度圖中是合理對齊的即可。深度圖可以從 雙攝相機通過立體視覺的方式計算 得到,也可以借助 深度學習的方法從單張圖片估計 得到,因此應用到智能手機完全沒有問題,作者也對這兩種來源的深度圖進行了測試。
初始化階段首先將輸入的 RGB-D 圖的深度通道歸一化到 0-1 之間,并對深度圖進行雙邊中值濾波,以使得邊緣更加明顯,再基于此圖片生成初始 LDI。然后再根據給定閾值判斷相鄰像素的視差,找到深度不連續像素,并經過一些簡化、處理得到最終的深度不連續邊。
接下來每次選擇一條深度邊借助填補算法來修復背景,首先在深度不連續處斷開 LDI 像素連接,得到 (前景、背景) 輪廓像素,然后生成一個合成區域,使用洪水漫淹算法初始化顏色和深度值,再使用深度學習的方法填補該合成區域。
給定語境區域和合成區域,這里的目標是合成顏色值和深度值。將整個修復任務分解成三個子網絡:
- 邊修復網絡 (edge inpainting network)
- 顏色修復網絡 (color inpainting network)
- 深度修復網絡 (depth inpainting network)
首先將語境區域的邊作為輸入,使用邊修復網絡預測合成區域中的深度邊,先預測邊信息能夠推斷 (基于邊的) 結構 信息,有助于約束 (顏色和深度的) 內容 預測。然后使用修復的邊和語境區域的顏色作為輸入,使用顏色修復網絡預測顏色。最后再使用同樣的方法預測深度信息。
由于我本地機器沒有 GPU,使用 CPU 運行代碼,雖然也能跑,但運行時要消耗至少 12GB 內存,而且結果還不準確。故使用 Colab,簡單方便。下面是電源寶寶測試結果,感覺還湊合 。