機器人視覺與感知

三維重建

三維重建是這樣一門手藝:拿來一個場景或物體的平面照片——或者深度測量資料——把它重新搭建成一個完整的三維模型,讓電腦能存進記憶體裡。一張照片是平的:它知道椅子在左上方某處,卻不知道座面離我們有多遠,也不知道椅背是怎樣向後彎過去的。重建找回了這缺失的第三個維度,把一疊二維視圖變成一個你可以轉著圈、從任意角度去看的形狀,就像雕塑家憑許多張照片重塑一張臉。

關鍵在於,任何單獨一張照片都是有歧義的——一個近處的小物體和一個遠處的大物體,可能投出一模一樣的影像——所以電腦需要更多線索。它從幾張在不同位置拍下的照片之間作比較來獲得線索(同一個點在不同視角裡看起來會錯開位置,這個錯位就洩露了深度,正像你的兩隻眼睛判斷距離),或者用一個能直接測距的深度感測器,或者把影像餵給一個訓練好的神經網路,它已經學會了真實表面通常長什麼樣。從這些線索出發,它推算出每個表面在空間中的位置,再把它們縫合成一個模型。

結果通常以一團三維點(點雲)的形式存下來,或者存成網格——一層由許多小三角形拼成的、披在形狀上的皮——有時還塗上原本的顏色,看上去就跟實物一樣。機器人無時無刻不依賴它:倉庫機器人重建眼前的貨架,好知道究竟該往哪裡伸手;無人機重建它正在巡檢的一棟樓;手術機器人重建身體內部,好讓自己移動時不會碰到任何東西。只要一台機器必須在真實、有實體的世界裡行動,先有一個三維模型,就能讓這個世界變得可以把握。

一架巡檢無人機繞著一座橋緩緩飛一圈,拍下數百張彼此重疊的照片;軟體隨後重建出這座橋的精細三維模型,工程師能在其中找出某條裂縫——相機曾從三個不同角度看見過它。

許多彼此重疊的二維照片,變成一個可以從任意一面查看的實體三維模型。

三維重建是目標——一個做好的模型;運動恢復結構和雙目立體視覺是達到這個目標的兩種方法。

又稱
3D modeling from imagesimage-based 3D modeling三维建模三維建模