1. 程式人生 > >計算機視覺方向簡介(一)| 從全景圖恢復三維結構

計算機視覺方向簡介(一)| 從全景圖恢復三維結構

有什麼用?

2017年初,整個全景相機產業經歷了一輪小爆發。除了像Insta 360、德圖等幾家創業公司外,小米、努比亞等幾家傳統手機廠商在2017年4月份也相繼釋出了自己的消費級全景相機,緊接著,Facebook、Google網際網路巨頭也相繼釋出了自己的第2代專業級全景相機。詳情參考《全景相機哪家強?》。到目前為止,市面上已有幾十種消費級全景相機產品。全景相機的價格也逐漸趨向平民化。

全景相機硬體在快速發展,但是拍攝的全景圖除了傳統的自拍、VR影視製作外,還缺乏更多實用的應用場景。本文介紹的就是全景圖在室內三維結構方面的應用:用單張室內全景圖來對室內場景進行三維結構恢復。

什麼原理?

輸入:一張水平方向360°(不要求垂直方向180°)的全景室內圖片。

輸出:無需人工互動,自動輸出室內的三維結構(由線段和超像素面片組成)。

演算法流程示意圖如下所示:

(a) 是輸入的室內全景圖。可以從網際網路上下載或者自己使用全景相機拍攝。
(b) 從全景圖中提取的線段。紅綠藍不同顏色線段表示該線段屬於不同的三維空間座標軸方向。
(c) 全景圖經過超畫素過分割的結果。圖中純紅色部分表示水平方向的平面,如地面或者天花板;條紋狀的紅色區域表示垂直的平面,如牆壁。
(d) 根據以上資訊自動推斷出的全景圖對應的深度圖。
(e) 由線段(黑色線條)和超像素面片重建的室內三維結構(兩個不同視角)。

這裡寫圖片描述
演算法流程示意圖

演算法的核心是構建一個約束圖結構,圖的頂點由不同自由度的有向線段和超畫素構成,而它們之間的幾何關係構成約束圖的邊。通過迭代優化約束圖結構可以推斷出全景圖對應的深度圖,然後根據深度圖資訊將線段和超像素面進行空間重建從而得到室內的三維結構。

效果怎麼樣?

從視覺效果來看,該演算法在室內環境簡單(如曼哈頓結構、障礙物少,牆壁邊界明顯)的場景下效果還不錯,如下:

這裡寫圖片描述
較好的效果示例

但是在某些複雜室內環境下,很容易受到室內物體的誤導,比如長沙發大面積遮擋住了牆壁和地面的分界線,比如牆壁和地面顏色接近導致分界線不明顯,比如室內牆壁的大幅的掛畫會被誤認為是門外場景。部分恢復失敗的例子如下圖所示:

這裡寫圖片描述
失敗案例

執行速度:

作者提供了C++程式碼,在配置為Intel Core i5 CPU (3.1/3.3GHz)的電腦上,一張全景圖推斷出室內三維結構(不包括預處理步驟)時間需要1分鐘。

有什麼參考資料?

論文:
Yang H, Zhang H. Efficient 3D Room Shape Recovery from a Single Panorama[C]// Computer Vision and Pattern Recognition. IEEE, 2016:5422-5430.

注:本文首發於微信公眾號:計算機視覺life。原創不易,轉載請註明來源,侵權必究。