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