三維計算機視覺可以分為兩個主要問題:三維重建(3D Reconstruction)和三維理解(3D Understanding),前者側重于從圖片恢復出場景的幾何表示,后者側重于提取出場景中實體的空間關系和語義信息。三維重建已經是一個被深入研究的問題,其中涉及到的知識包括基礎的多視角幾何(Multiple view geometry),狀態估計(State Estimation),優化理論,到圖像處理/視覺中特征點檢測、圖形學中的幾何表示和處理等等。
基于視覺的三維重建將輸入的一系列圖片轉換為幾何模型。盡管三維重建可以幫助我們采集場景的幾何結構,對于三維測繪、自動駕駛等場景具有極大價值,但如果我們想要感受真實世界一樣,那么三維重建的結果遠遠不能滿足我們人眼的要求。同時,由于和真實世界的差距,利用三維重建出的模型訓練深度網絡也會產生一些泛化性的問題(Domain Gap)。這樣,逆渲染(Inverse Rendering)可以在三維重建的基礎上,進一步恢復出場景的光照、材質等信息,從而可以實現更具真實感的渲染。
什么是逆渲染呢?我們先說渲染是什么。渲染(Rendering)是圖形學的三大問題之一,除此之外還包括幾何(Geometry)和動畫(Animation)。給定一個虛擬三維場景的描述(包括模型、位置關系、光照等),渲染過程將3D的場景轉化為2D的圖片。而逆渲染則是渲染的逆過程,給定一系列照片,恢復出場景的幾何、光照和材質。
因此無論是三維重建和逆渲染,都可以視為圖片和場景之間的一個橋梁。在介紹其流程之前,我們先介紹下照片和場景的本質。
照片的本質
照片本質是三維世界在二維平面上的一個投影。我們通過相機中的圖像傳感器陣列來記錄場景中物體表面發出的光線的顏色(RGB)。因此圖片中的每一個像素對應了三維空間中的一個點,而這樣一個對應關系通過相機模型(Camera Model)來表達。相機模型有一系列相機參數,稱為相機的內參(Intrinsic)。最為常見的就是針孔相機模型(Pin-hole),全景相機(Omnidirectional)等等。
https://mphy0026.readthedocs.io/en/latest/calibration/camera_calibration.html
場景的本質
雖然我們一直說三維重建要恢復場景,那么到底如何表示場景呢?簡單來說,場景(Scene)可以由多個物體(Object)組成。場景可以通過物體本身的模型以及之間的相對位置關系來描述。我們可以對每個物體賦予一個坐標系,并且定義一個世界原點。這樣,無論是什么樣的物體,我們都可以通過坐標系之間的相對坐標系變換來表示,包括位置(Translation)和旋轉(Rotation)兩部分,簡稱位姿(Pose)。同樣的,作為拍攝場景的相機(Camera),也可以視作一個特殊的物體。
http://www.codinglabs.net/article_world_view_projection_matrix.aspx
不過通常來說,在三維重建中我們主要將場景中的所有物體視為一個整體,用單個模型來表示。對于一個模型,我們分成幾何結構(Geometry)、材質紋理(Texture/Material)及其映射關系來表示。對于幾何表示,我們主要關心的是物體的表面(畢竟里面看不到),因此我們可以用最基礎的Point Cloud,即一系列3D點的集合來表示。也可以再增加點與點之間的連接關系,通過一系列的面片來表示,也就是Mesh。
如何從照片恢復場景
由于逆渲染一定程度上包括了三維重建,我們先說說如何進行三維重建。經典的三維重建可以分為三步:
1)從多個視角的照片恢復出各視角的相機位姿,以及場景的稀疏結構——SfM
2)估計出各個視角的深度圖,從而得到單視角的點云——MVS
3)融合各個視角的點云,并進行表面重建——Surface Reconstruction
這一技術路線已經有相當成熟的開源工作和產品,如Colmap,RealityCapture等。
當然,深度學習方法也可以與經典方法結合,在某些情況下可以起到明顯作用。如SfM中的特征點檢測,利用深度網絡可以更好地處理紋理缺失、運動模糊的情況,或者MVS中利用深度模型進行深度估計。
同時近兩年端到端的表面重建方法效果上也逐漸超過了經典方法,如IDR、VolSDF,NeuS等,這些方法利用深度網絡來將輸入圖片直接嵌入進網絡中,進而提取出Mesh。
VolSDF
如何進一步恢復材質和光照
利用三維重建方法得到物體的幾何模型后,我們可以進一步通過逆渲染技術恢復出物體的材質、場景的光照,從而可以在新的光照條件下實現更具真實感的效果。
光照是場景中能量的來源。對于物體為中心的場景,常通過環境貼圖(Environmental Map)來表示。材質則決定了光線如何與物體表面進行作用,比如反射、散射或透射。光照、材質、幾何與圖片之間的映射關系,則通過渲染方程(Rendering Equation)來描述。
逆渲染可以分成兩個子問題:
1)光照恢復(Inverse Lighting)
2)材質恢復(Inverse Material)
對于光照恢復,經典方法通常構造一個最小二乘優化問題或以矩陣分解的方式來求解光照,使得該光照能呈現出與觀測到的照片相同的效果。但由于這一問題的病態性(ill-posed),導致多種光照設定都能呈現出相同的結果,因此需要一些特殊的正則化來保證光照的合理性。
而對于材質恢復,如果想要獲得較為準確的結果,則需要已知光照條件下求解。實際中通常會對物體在不同角度下打光,觀測物體表面的反射情況。
而隨著可微渲染(Differentiable Rendering)以及神經渲染(Neural Rendering)的爆發增長,我們可以利用渲染方程作為橋梁,直接優化未知的光照和材質參數,使得問題大大簡化。
PhySG
審核編輯 :李倩
-
虛擬化
+關注
關注
1文章
373瀏覽量
29814 -
深度學習
+關注
關注
73文章
5504瀏覽量
121246
原文標題:現實虛擬化:從三維重建到逆渲染(Inverse Rendering)
文章出處:【微信號:3D視覺工坊,微信公眾號:3D視覺工坊】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論