袁霞,張金沙,羅天
(成都索貝數碼科技股份有限公司,成都 610065)
隨著計算機視覺技術、圖形圖像等基礎技術的迅猛發展,增強現實技術也隨之被推向了研究熱潮,《“十三五”國家信息化規劃》綱要中將增強現實作為戰略性布局的前沿創新領域。增強現實是指在現實場景中疊加虛擬信息(虛擬的三維物體、圖片、視頻等)使之達到視覺上一致的效果,同時可進行實時人機交互。增強現實技術在廣播電影電視、游戲娛樂、軍事、醫療、建筑等領域有廣泛的應用。
增強現實技術的三大核心技術問題包括:幾何一致性、光照一致性和合成一致性。其中光照一致是指將虛擬物體疊加到真實場景中時,虛擬物體和現實物體有一致的光照視覺效果、正確的明暗關系和陰影表達。這就要求由計算機繪制的虛擬場景中的虛擬物體與自然場景中的真實物體之間互反射和陰影投射在視覺上一致。因此,光照一致性是虛實無縫融合中真實感表現的關鍵和前提。估計真實場景光照,并使用該光照繪制用以進行虛實融合的虛擬物體是解決增強現實中光照一致性問題的有效手段。目前,現有工作大多針對光照變化較小的場景展開研究,忽略了場景中光源亮度、顏色等屬性的變化,當真實場景中光照發生變化時,這些方法將無法獲得正確的虛實融合效果。少量工作,如Xing等人[1]提出的基于視頻幀的室外場景光照參數計算方法可在線更新場景光照,但是該方法光照模型過于簡單,忽略了來自周圍環境的間接光照因素,虛實合成結果真實感有待提高。另外,目前很少有工作研究室內場景動態光照估計方法,因此,有必要開展真實場景動態光照分布在線估計研究。
本文針對室內場景,提出了一套實用的動態光照采集方法。首先,利用鏡面球和普通LDR相機設計并搭建了用于采集場景動態光照的設備,基于該設備提出動態光照采集方案,該方案包含離線初始化和在線處理兩部分,離線階段主要通過光照采集設備獲取場景在特定光照條件下的HDR環境貼圖,并利用采集的貼圖計算場景中光源的位置、形狀、顏色等信息,在線處理階段則主要通過捕獲的LDR圖像實時更新包含直接光照因素和間接光照因素的場景負責光照分布,從而實現對于場景高質量動態光照的估計。與現有光照估計方法相比,本文的主要貢獻在于:①設計了一種用于獲取室內場景動態光照的設備并提出了基于該設備的場景動態光照采集方案;②提出了基于LDR圖像更新場景光照分布的算法;③采集的光照包含直接光照和間接光照因素,可生成具有較高真實感的虛實合成畫面。實驗結果驗證了本文方法的有效性。
根據光照環境的不同,將光照估計的研究工作分為室內光照估計和室外光照估計。一般來說,室外自然場景光照受環境、氣候、場景幾何信息等條件的影響而復雜多變,增加了其研究的難度和挑戰。室內場景相較于室外場景而言,光源、光照強度、場景幾何結構信息和物體表面的材質屬性等特征易于恢復,其研究的成本和難度相對小一些。受此先決條件的影響,國內外大量的研究工作集中在室內光照的估計及其在增強現實中的應用上。主流的光照估計大致可以分為以下四類:基于特殊設備采集的光照測量方法、基于圖像序列分析的方法、基于深度學習的光照估計方法以及基于物理材質信息的光照估計方法。
Debevec[2]在1998年提出的利用鏡面球采集環境光照的方法作為基于設備采集光照類方法的代表,后續諸多研究者在此基礎上進行了改進和優化。此方法利用普通相機或者魚眼相機拍攝多張不同曝光度的照片,根據文獻[3]合成高動態范圍圖片作為環境映照圖來存儲光照信息。Greene等人[4]等最早提出將環境映照技術作為全局光照信息渲染虛擬物體,可較好模擬物體表面鏡面反射和漫反射效果。Stao等人[5]利用場景的全景圖立體匹配技術實現對場景幾何的重建,然后通過采集場景的HDR全景圖實現對光照數據的獲取。Stumpfel等人[6]采用魚眼鏡頭拍攝天空。將采集得到的照片再通過數值矯正以獲取真正的亮度作為光照數據。這類基于設備采集光照的方法可以較為準確的記錄真實場景光照分布,但是在采集時要求場景完全靜止,同時采集速度難以達到實時,無法實現對于場景動態光照的采集。
一般利用圖像中的陰影、明暗等先驗線索來求解場景的幾何信息和光照參數。Haber等人[7]提出一種利用一組圖像序列來估計場景光照信息,結合多視覺幾何理論恢復場景幾何信息和反射系數。Lalonde等人[8]也采用了相似的技術手段來計算場景的光照和反射信息。但是上述方法用于估計光照的圖像均是在固定光照條件下采集。Karsch等人[10]通過用戶給予少量的離線交互信息對場景幾何信息重建,并求解物體的材質系數及光源的亮度。這類方法需要已知場景幾何信息或重建場景幾何信息,且需要離線視頻圖像序列數據的采集,計算復雜,實時性難以滿足要求。
近年來,一些學者開始利用深度學習技術來研究光照計算,Hold-Geoffroy等人[10]通過訓練神經網絡來預測輸入天空光全景圖的HDR環境映射圖,從而估計光照參數(天空光、太陽光)。Marc-Andre等人[12]提出了一種室內光照估計算法,利用帶深度的環境映射圖作為訓練數據訓練一個神經網絡來預測單張圖像的光照的位置、面積、強度和顏色等參數,并能根據空間變化的光照渲染更真實的三維物體到自然場景中。Leg?endre等人[13]提出了一種基于手機移動應用的深度學習估計光照的方法。但是,當前基于深度學習的方法均以單張圖像作為網絡的輸入,沒有考慮視頻幀間的聯系,用于恢復視頻序列中的動態光照時易產生較大誤差。
這類方法一般是利用物體表面材質信息、幾何等信息來求解光照。Sato等人[14]提出了一種根據陰影估計光照和反射信息的方法。Nishino等人[15]則利用物體表面點的亮度變化來將三維幾何模型分解為漫反射組件和高光反射組件,然后通過Cook-Torrance反射模型求解光照分布和反射參數。這類方法需要獲取場景幾何信息,計算過程較為復雜,難以實現實時計算。
綜上所述,在實際的工程應用中,現有場景光照估計技術存在一定的局限性,如需要用戶交互、計算效率低,沒有考慮場景光照變化等,難以將其應用于室內環境復雜、光照動態變化的增強現實相關的產品中。本文旨在探索一種能夠解決廣播電視電影制作領域的增強現實應用產品中的光照計算問題。這里的光照包含來直接光照和環境間接光照。
HDR圖像相較于LDR圖像,其優勢在于可以存儲更大范圍的亮度,因此常作為環境光照數據存儲的載體。但專業的HDR相機較為昂貴,難以在工程應用中普及。受文獻[2]的啟發,我們在場景中放置一個光照探頭用于捕獲場景的環境光照,利用普通相機對光照探頭拍攝不同曝光度的LDR圖片來生成HDR圖作為環境映照圖。由于僅從一個角度拍攝的鏡面球照片會丟失鏡面球正后方場景內容,且在邊緣區域造成圖像畸變,本文從兩個不同角度拍攝鏡面球并生成HDR圖,從而捕獲更加精確的場景光照信息。基于此,我們設計了一套光照數據捕獲裝置圖,如圖1所示。
(1)場景中放置一個光照探頭,一般為光滑鏡面球。
(2)以光照探頭為中心,分別在水平和垂直兩個方向放置相機。鏡面球與相機之間通過橫桿/豎桿連接,如圖1所示。
(3)調節相機、鏡面球的高度、水平/垂直距離,使得鏡面球在相機視口下清晰可見。
(4)固定相機與鏡面球的相對位置,完成調節后保持不動。
在光照采集時,將設備固定在虛擬物體放置處,捕獲過程中,設備需保持靜止狀態。

圖1 光照數據捕獲裝置圖
一般來說,室內周圍環境相對靜態稱其為環境光,也稱為間接光照。直接照射的光源稱為直接光照,如燈、窗戶等。本文討論的室內場景動態光照實時計算包含直接光照和間接光照的實時計算。需要說明的是本文方法重點研究對于光源顏色、亮度信息的更新方法,暫不考慮光源位置的變化。
本文提出了一種魯棒的室內場景動態光照實時估計技術。場景動態光照的估計分為離線和在線兩個階段,離線階段利用LDR相機從正前方和側面兩個角度以不同曝光度在特定光照條件先拍攝鏡面球圖像序列,從而生成場景HDR圖,借助圖像分割技術通過HDR圖計算場景中主要光源的位置、形狀、顏色信息。在線運行階段則基于實時拍攝的鏡面球LDR圖像更新場景直接和間接光照信息,進而實現對于場景動態光照的采集。
(1)場景環境貼圖采集
離線處理階段首先使用光照采集設備按照Debev?ec等人[2]的方法,通過拍攝不同曝光度的鏡面球照片獲取場景中所有可控光源全部開至最亮和所有可控光源全部關閉情況下的場景HDR環境貼圖,方便起見將其分別記為和。同時,以較低的相機曝光度獲取一張同采集MH open時光照相同,但所有光源均無過渡曝光現象的場景LDR環境貼圖。
(2)直接光源恢復
考慮到部分實時繪制引擎,如Unreal Engine,無法使用HDR環境貼圖作為直接光源使用,本文利用捕獲的HDR環境貼圖首先自動檢測光源,根據檢測結果對光源位置、形狀、顏色等進行初始化。
通過分割是從背景中提取目標物體的關鍵技術手段之一。考慮到場景中光源打開時,其位置中心處的光照亮度最亮,亮度強度由中心向周圍位置逐漸減弱。據此特征,可利用亮度信息來分割場景中的光源,從而提取光源在中的位置及范圍。分割的目標是從圖像中提取出。本文采用基于亮度優先的自適應閾值分割[16]方法。

如公式(1)所示,先將彩色圖像轉化為灰度圖G,G中的像素g(x,y)表示亮度信息,值越大,亮度越大。T為分割的閾值,當g(x,y)>T表示光源,反之則不是光源。閾值T的求解是從場景中分割光源的關鍵,本文采用Otsu算法來自適應求解T。該算法對于灰度圖可以取得較好的結果且算法效率高,其主要思路為:找到一個閾值T分割出目標與非目標兩類,使得兩類像素之間的方差最大。
為了消除噪聲的影響。對于分割后的二值圖像,先進行濾波去噪操作,再尋找圖像中各區域Fi,(i=1,2,…,n)的輪廓,計算其對應面積Si,當Si≤t時認為該區域不是光源;其中t為最小光源面積。當Si>t則被認為有效光源,負責忽略該區域。記最終保留的區域為Fi(i=1,2,…,m),Fi對應與光源Li
為計算光源信息,本文假設場景位于一個長方體盒子內,盒子的邊長可由用戶根據場景實際尺寸設定,光源則嵌在盒子各面上,光源采集設備則位于盒子底面中心處。對于Li,可計算其對應光源區域Fi的質心Pi,根據Pi在環境貼圖中的位置確定光源入射方向r,從盒子底面中心延r發射一條射線,其同盒子的交點即為Li的位置,光源朝向與其所在立方體表面方向相同,而形狀則為光源區域Fi的包圍盒對應于立方體盒子上的區域,光源的初始顏色則為環境貼圖區域Fi中像素R、G、B通道的平均值。
對于光照的更新主要分為對直接光源的更新和對周圍間接環境光照的更新。
(1)直接光源更新
為了實時監控光照的變化,在線運行時,光照采集設備需要以同采集時相同的曝光度采集場景當前LDR環境貼圖,由于曝光度較低,中一般也不存在過度曝光像素。通過比較兩張LDR圖中光源區域的信息,即可更新場景中的光源顏色,其計算公式如下:

其中為區域Fi中像素,‖Fi‖表示區域Fi中像素個數,λ對應于R、G、B三個顏色通道,和分別對應光源λ通道當前和初始顏色值,和則表示像素pj在圖像和中λ通道的值。在捕獲時,為獲得較低的曝光度,會采用很快的快門速度,因此可實現對于場景光源的實時更新。
(2)間接環境光照更新
光源的顏色、亮度也會造成周圍環境發生變化,為了更新場景間接光照,一種較為準確的方法是,在離線階段以正常曝光度采集一張光源全部調至最亮的LDR環境貼圖,在線運行時,使用與光源更新類似的方法,通過比較同曝光度下在線拍攝LDR環境貼圖同離線采集貼圖即可實現對于周圍環境光照的更新。但是,拍攝正常曝光的LDR貼圖會使用較慢的快門,大大降低了光照更新的效率,難以滿足實時要求。為此,本文提出了一種高效的近似環境光更新策略,沿用3.2(2)小節中的符號,首先計算光源的平均變化系數ω(λ):

將ω(λ)作為組合系數,通過線性組合和實現對于當前間接光照的更新,具體公式為:

其中為當前HDR光照環境貼圖,為環境貼圖中非光源區域的像素,λ對應于R、G、B三個顏色通道。
為了驗證算法得正確性,本文搭建了一套基于演播室場景AR應用,即在現實演播室場景中植入虛擬物體,并實時采集演播室的光照數據,用于渲染虛擬物體,使得虛擬物體更加逼真地融入到演播室場景中。圖2展示本文使用的光照采集設備,其中圖2(a)為光照捕獲裝置,其中標記為1、2的分別為水平/垂直兩個相機,標記為3的為光照探頭(光滑鏡面球),圖2(b)、2(c)分別兩個相機視角下的拍攝的光照探頭圖像。

圖2 場景光照采集裝置
圖3是通過光照捕獲裝置采集合成的環境映照圖,圖3(a)為場景中所有直接光源打開狀態下的環境映照圖,圖3(b)為場景中所有光源關閉狀態下的環境映照圖。

圖3 Tonemapping后的環境映照圖(經緯圖)
一般情況下,由于直接光源光照的強度遠遠大于場景周圍物體,所以通過亮度自適應閾值分割即可分割出直接光源,進而識別出光源并給每個直接光源標記編號。經過多次實驗數據對比,與真實場景光源位置的平均誤差在1.5%范圍內。圖4所示為識別出的直接光源和真值的對比。

圖4 識別的場景直接光源與真值對比
將計算的光照數據直接用于渲染虛擬物體,并與真實的背景進行合成,從而驗證本算法計算的光照數據的顏色、強度的正確性。在普通PC上(Intel Xeon CPU e5-1603v4@2.8GHz,NVIDIA P2000),本文算法采集光照的效率可以達到實時(20ms/frame)。本文實驗過程中對于虛擬物體的渲染采用Unreal Engine4引擎,將實時計算場景的光照傳送給渲染引擎,渲染虛擬物體;最終渲染輸出4K幅面的AR合成視頻幀率可達50fps。
本文搭建的演播室場景中,包含了普通面光源,以及色彩可自動改變的彩色光源;設計的內容為:虛擬汽車從大屏穿屏而出,演播室各光源的強度、色彩可以任意改變,虛擬汽車的光照效果隨著場景光照的變化而變化。圖5中僅紅色汽車為虛擬物體,其余部分為演播室實景。圖5.a和圖5.b分別為正常光照下虛擬汽車從大屏穿出后開到演播室的效果;圖5.c為場景光照變暗后,虛擬汽車的光照效果及其陰影也隨之變暗;圖5.d、圖5.e、圖5.f為場景光照任意改變顏色后,虛擬汽車材質表面及其陰影的變化效果,均能實時反映場景中光照顏色的變化。通過本文算法實時采集演播室場景光照,并用于渲染虛擬汽車,再將虛擬汽車植入演播室場景,從而保證了虛擬物體與真實演播室場景具備一致的光照視覺效果。

圖5 虛擬物體植入演播室場景(實時改變場景光照)
本文提出了一種室內場景動態光照在線采集方法。首先基于鏡面球和普通相機設計并搭建了一個光照采集設備,基于該設備在離線階段捕獲場景光源全開和全關條件下的場景HDR環境貼圖并估計場景中光源的位置、形狀、顏色信息,在線階段則通過設備獲取的當前場景LDR環境貼圖更新場景中直接光源和間接環境光照信息,進而實現對場景動態光照的采集。
但是,本文工作還存在不足之處,首先,本文工作無法處理光源位置發生變化時的動態光照采集;另外,算法對于環境光的更新存在一定誤差,還需要做進一步改進。