柳喆俊
同濟(jì)大學(xué)藝術(shù)與傳媒學(xué)院,上海 200092
環(huán)幕影像是指呈現(xiàn)在圓柱體(或圓柱體局部)表面的環(huán)形影像。得益于出眾的沉浸感與視覺效果,環(huán)幕影像不僅被廣泛應(yīng)用于科技館、博物館、博覽會和各種商業(yè)活動中,而且目前絕大多數(shù)“4D 影院”、“5D 影院”實(shí)際上也是以立體環(huán)幕影像作為視覺核心的。
環(huán)幕影像本身并非新鮮事物,已經(jīng)有很多成功范例和成熟解決方案了,尤其在2010 年上海世博會期間,環(huán)幕影像在眾多世博展館內(nèi)大方異彩,吸引了數(shù)以萬計的觀眾駐足贊嘆。
但令人遺憾的是,時至今日環(huán)幕影像還是以“高端”的姿態(tài)固步于有限的場館之內(nèi),具備豐富經(jīng)驗(yàn)、能夠進(jìn)行環(huán)幕影像創(chuàng)作的藝術(shù)家寥寥無幾,這很大程度上限制了這類影視作品的普及。2011 年底,上??萍拣^召開了自主編創(chuàng)的4D 電影《重返二疊紀(jì)》的首映會,會上科技館的負(fù)責(zé)人不無遺憾地表示目前國內(nèi)大多數(shù)科技館、博物館都設(shè)立了4D 影院,但片源幾乎完全依賴進(jìn)口,翻來覆去只能放幾部老片子,影片的供應(yīng)遠(yuǎn)遠(yuǎn)跟不上觀眾和時代的需求。
目前國內(nèi)高校動畫、影視特效類的專業(yè)遍地開花,有些地方甚至到了供過于求的地步,為什么立體環(huán)幕影像的創(chuàng)作者卻如此難覓呢?據(jù)筆者調(diào)查,除了信息不對稱的因素以外,由于放映環(huán)幕影像需要造價高昂的特殊軟硬件環(huán)境,超出了大部分高校相關(guān)專業(yè)愿意接受的水平,因此學(xué)生在校期間很難有機(jī)會進(jìn)行這方面的學(xué)習(xí)和研究,畢業(yè)后會選擇創(chuàng)作這類特種影片的人肯定只是鳳毛麟角了。
傳統(tǒng)環(huán)幕影院建設(shè)成本之所以昂貴,主要因?yàn)橐韵氯齻€方面的原因:首先,要實(shí)現(xiàn)環(huán)幕投影必須進(jìn)行邊緣融合與幾何校正,專門用于邊緣融合與幾何校正的硬件設(shè)備(國產(chǎn))價格在20 至30 萬左右;其次,立體環(huán)幕影像需要提供多通道視頻信號,實(shí)現(xiàn)三通道立體投影就需要總共7 臺電腦(6 臺輸出視頻信號,另一臺作為服務(wù)器),即使每臺電腦采購成本在1 萬元左右,7 臺電腦的采購成本也要近10 萬元了;最后,大多數(shù)環(huán)幕影院都選擇使用價格昂貴的工程投影機(jī),每臺投影機(jī)在3-5 萬元左右,六臺投影機(jī)的采購總價高達(dá)20-30 萬元。再加上環(huán)幕本身的造價和安裝調(diào)試的費(fèi)用,要打造一個三通道立體環(huán)幕影院的成本大約在50-80 萬元——這顯然是一筆相當(dāng)可觀的投入。
筆者負(fù)責(zé)的“非平面影響實(shí)驗(yàn)室”建設(shè)項(xiàng)目總經(jīng)費(fèi)不到200 萬元,還需涵蓋立體視覺、4D 座椅、交互球幕、球幕影院等多個研究域。因此,在滿足創(chuàng)作與研究需求的前提下,必須盡可能降低三通道立體投影系統(tǒng)的造價。最后,經(jīng)過反復(fù)研究與不懈努力,該系統(tǒng)的總造價被控制在了15 萬元。
下面簡單列舉一下組成三通道立體投影系統(tǒng)的核心設(shè)備及它們的采購成本。(以下為2011 年時的采購價格,僅供參考。)
主控電腦:一臺,總價約1.5 萬元
監(jiān)視器:20 寸顯示器六臺,總價約1.5 萬元
投影機(jī):三洋1160c 投影機(jī),六臺,總價約9 萬元
環(huán)幕:直徑6 米120 度金屬弧形幕,約2.5 萬元
5.1聲道音響系統(tǒng):0.25 萬元
再加上偏振濾鏡、支架、線材、安裝等費(fèi)用,硬件部分的投入約為15 萬元,并且隨著時間的推移硬件成本還會逐步降低。相比較大多數(shù)立體環(huán)幕系統(tǒng)50-80 萬元的造價,這樣的建設(shè)成本相信大部分的院校都能比較輕松地接受。
在軟件系統(tǒng)上,本系統(tǒng)利用Quest3D 三維引擎內(nèi)的Render to Texture 與HLSL 編程功能完成了幾何校正與邊緣融合。鑒于本方法的普適性,您完全可以選擇自己熟悉的三維引擎組建,只需確保這個引擎支持“渲染至貼圖”功能與“可編程著色器”功能即可。
最后,需要特別指出的是,在主控電腦中所選用的顯卡為華碩EAH5870 EYEFINITY 6/6S/2GD5,因?yàn)樗菫閿?shù)不多的性能強(qiáng)大且能夠同時輸出六個數(shù)字視頻信號的顯卡,這樣的顯卡是組建低成本立體環(huán)幕投影系統(tǒng)的必要條件。
支持AMD Eyefinity 功能的顯卡最大的優(yōu)勢在于它不僅能夠同時輸出六個不同的影像,而且可以在驅(qū)動程序?qū)用鎸⒘鶄€畫面合并為一個完整的桌面。根據(jù)這個特點(diǎn),我們將六臺顯示器按照3x2 的形式組成分辨率為3072x1536 的矩陣,左眼畫面渲染至1-3 號顯示器/投影機(jī),右眼畫面渲染至4-6 號顯示器/投影機(jī),左右眼投影畫面以偏振技術(shù)加以區(qū)隔。
本系統(tǒng)的硬件設(shè)備連接圖如下:
圖1 設(shè)備連接圖
3.2.1 相機(jī)模型轉(zhuǎn)換
適用于環(huán)幕的影像分為預(yù)渲染影像(如動畫或影片)和實(shí)時影像兩大類,其中實(shí)時影像又包括二維和三維兩種,它們之間各有不同但其中難度最高的是本文所研究的實(shí)時三維影像。
由于常用的3D API(包括OpenGL 和DirectX)僅支持針孔相機(jī)模型,生成環(huán)幕影像只能通過多相機(jī)畫面拼接。相機(jī)數(shù)量越少拼接后圖像精度的損失越大,相機(jī)越多則消耗的運(yùn)算資源越多,因此必須在兩者之間取一個平衡點(diǎn)。對于本例中120度的環(huán)幕來說,水平方向上放置三個視錐左右相連的攝像機(jī)比較合適。雖然這三臺相機(jī)可以渲染出左右相連的畫面,但如果簡單地將它們左右拼在一起那么透視不連續(xù)的問題會明顯地表現(xiàn)出來,表現(xiàn)為直線在接縫處產(chǎn)生折角(見圖2)。
利用HLSL 語言調(diào)用GPU 的像素著色器(Pixel Shader),我們可以將三個畫面修正成連續(xù)的環(huán)幕影像,其核心代碼如下:
其中angH 為單個相機(jī)的水平視角,IN.UV 是原采樣點(diǎn)UV坐標(biāo),pi 為圓周率,H 和W 代表貼圖的UV 長度(其值為1),texCol 為Pixel Shader 返回的色彩值。
圖2 環(huán)幕影像修正效果
3.2.2 線性變換
理想情況下,投影方向應(yīng)垂直于該部分圓弧的弦,且分管環(huán)幕左、中、右側(cè)的投影機(jī)影像應(yīng)能完美地兩兩重疊。但事實(shí)上,由于投影機(jī)和環(huán)幕的安裝都不可能精確到分毫不差,并且為了降低成本我們選擇了并不支持“鏡頭平移”功能的商用投影機(jī),所以在進(jìn)行幾何校正時必須糾正這一偏差。
在進(jìn)行平面投影時,這樣的偏差通常由投影機(jī)內(nèi)置的“梯形校正”功能修正,但是在進(jìn)行環(huán)幕投影時必須利用程序解決。這首先是因?yàn)橥队皺C(jī)的“梯形校正”功能無法達(dá)到子像素級的精度,其次也是因?yàn)楹芏嗤队皺C(jī)僅能進(jìn)行垂直梯形校正而不能進(jìn)行水平梯形校正。另外,將所有校正操作都集成在同一的界面中也能大大提升調(diào)試效率。
由于投影機(jī)與環(huán)幕的相對位置、角度所引起的偏差可以通過一次線性變換完成修正。本系統(tǒng)允許用戶通過移動四個角點(diǎn)實(shí)時地影響修正結(jié)果,也即通過四個角點(diǎn)的坐標(biāo)實(shí)時計算出變換矩陣并完成變換。
本方案計算變換矩陣所采用的是Dong-Keun Kim 等人在A Planar Perspective Image Matching using Point Correspondences and Rectangle-to-Quadrilateral Mapping一文中的提出的計算公式,如下(原文公式中的一個小錯誤在此已修正):
得到變換矩陣后利用HLSL 對于圖像進(jìn)行重取樣,只需將IN.UV 與變換矩陣相乘即為新采樣坐標(biāo)。需要強(qiáng)調(diào)的是,按照上述公式求出的矩陣M 是將矩形變換至任意四邊形的變換矩陣,但由于矯正過程是一個對于渲染結(jié)果進(jìn)行重取樣的過程,因此應(yīng)當(dāng)直接使用M 而非其逆矩陣M-1。
圖3 變換矩形求解公式
3.2.3 非線性變換
目前市場上所能購買到的投影機(jī)都是為平面成像設(shè)計的,在平面上它們可以投射出4:3 或16:9 的矩形畫面(或至少是線性變換后的畫面)。但是在環(huán)幕或其它非平面投影對象表面,投影機(jī)形成彎曲影像是無法通過線性變換修正的,必須通過非線性變換才能使之與投影幕匹配,這是環(huán)幕幾何校正的核心步驟。
在這里我們假設(shè)環(huán)幕是理想的圓柱體局部,其矯正過程與相機(jī)模型轉(zhuǎn)換過程頗有可借鑒之處。假設(shè)用tpc、btc 來定義環(huán)幕頂部與底部的彎曲系數(shù),則非線性變換的核心算法如下:
3.2.4 融合帶生成
通常所謂的“邊緣融合”事實(shí)上包含融合帶生成和融合帶亮度修正兩個步驟。為了進(jìn)行邊緣融合,相鄰的兩個投影畫面必須有一定的重疊部分,且重疊部分的畫面內(nèi)容相同,稱為融合帶。假設(shè)左-中和中-右的畫面重疊部分寬度分別為edge1和edge2(以原始畫面寬度的百分比衡量),則在中間畫面生成融合帶的核心算法為:
其中IN.UV 是原采樣點(diǎn)UV 坐標(biāo),sourceMapSampler1至3 分別為左、中、右三張貼圖的采樣器,texCol 為Pixel Shader 返回的色彩值。
左右兩側(cè)融合帶的生成算法更為簡單,這里就不介紹了。
3.2.5 融合帶亮度..修正
融合帶亮度修正的目標(biāo)是使左右兩個投影畫面的重疊區(qū)域與非重疊區(qū)域亮度一致,具體實(shí)現(xiàn)方法是根據(jù)一定的函數(shù)曲線將畫面亮度沿著融合帶逐步降低,產(chǎn)生逐漸變暗的邊緣。最簡單的函數(shù)曲線是從100%到0%的一次函數(shù),但由于絕大多數(shù)投影機(jī)本身的伽馬值在2.2 左右而非1,因此插值曲線應(yīng)當(dāng)選擇冪函數(shù)而非一次函數(shù)。
融合帶指定位置的縱向亮度增益值y 與該位置的相對水平坐標(biāo)值x 之間的關(guān)系為:
y=xgamma(x ∈[0,1])
為了讓融合帶的亮度控制更為靈活,本系統(tǒng)依據(jù)Paul Bourke 的主張加入了另外兩個參數(shù)值center 和falloff,用以偏移亮度中心點(diǎn)與控制衰減速度,最終的HLSL 核心代碼如下(以左畫面為例):
其中IN.UV 是原采樣點(diǎn)UV 坐標(biāo),edge1 和edge2 表示融合帶寬度,falloff、center、gamma 分別表示衰減度、亮度中心偏移量與伽馬值,texCol 為Pixel Shader 返回的色彩值。
算法中調(diào)用的函數(shù)mapping()和multCalc()定義如下:
3.2.6 依序組合所有算法
最后,我們需要將所有的算法按照合理的順序串聯(lián)起來,依次執(zhí)行。每一步算法執(zhí)行完畢后,其結(jié)果都會利用Render to Texture 功能保存在貼圖中作為下一步運(yùn)算的基礎(chǔ)。本方案所采用的算法執(zhí)行流程如下圖所示:
圖4 算法執(zhí)行流程
根據(jù)以上幾何校正與邊緣融合的思路,本文作者在Quest3D 引擎中開發(fā)出了幾何校正+邊緣融合的模塊,并將之與實(shí)時渲染的三維程序相結(jié)合,測試結(jié)果如下:
圖5 實(shí)際效果測試(僅左眼畫面)
經(jīng)測試,在硬件搭建完畢的情況下幾何校正與邊緣融合模塊一般可以在10 分鐘以內(nèi)完成調(diào)試,拼接后的影像清晰銳利,沒有明顯的拼縫和疊影問題,可以滿足絕大部分影視與交互內(nèi)容的放映需求。
另外,得益于5870 GPU 強(qiáng)大的運(yùn)算能力,雖然程序運(yùn)行在3072x1536 這樣的超高分辨率下,并且?guī)缀涡Uc邊緣融合需要消耗大量的GPU 資源,但程序的流暢度并沒有受到嚴(yán)重影響,程序幀速率始終保持在50FPS 以上。當(dāng)然,測試用的游戲場景并不算太復(fù)雜,隨著畫面復(fù)雜程度與精美程度的提高,幾何校正與邊緣融合運(yùn)算對運(yùn)行速度的負(fù)面影響應(yīng)該會逐步顯現(xiàn)出來。
本文所提出的方法經(jīng)過實(shí)際檢驗(yàn)切實(shí)可行、效果良好,其優(yōu)點(diǎn)和缺點(diǎn)都非常明顯。
本方法的優(yōu)點(diǎn)在于,只需一臺電腦無需邊緣融合機(jī)便可實(shí)現(xiàn)三通道立體投影,相比較其它方案大幅降低了建設(shè)成本,也規(guī)避了多臺電腦間信號同步的復(fù)雜問題。它的缺點(diǎn)在于,由于需要利用GPU 進(jìn)行大量運(yùn)算以完成邊緣融合和幾何校正,因此會消耗可觀的運(yùn)算資源,如果顯示的內(nèi)容是復(fù)雜的實(shí)時渲染三維場景則幀速率會被顯著降低。另外,與使用邊緣融合機(jī)的方案相比,本方法需與特定的引擎結(jié)合使用,并不能做到軟件無關(guān)性。
在本文的基礎(chǔ)上,可以在以下幾個方面做進(jìn)一步的研究與探索。
首先,通過加入網(wǎng)格變形功能模塊讓像素級的幾何校正功能更為靈活,并且能夠應(yīng)對不規(guī)則的投影表面變形。
其次,設(shè)法提高執(zhí)行效率,讓幾何校正與邊緣融合所占用的運(yùn)算資源盡可能少,為主程序留出足夠的運(yùn)算機(jī)能。
最后,通過其它開發(fā)工具拓展本方法的適用范圍,使之與特定引擎無關(guān),實(shí)現(xiàn)桌面級的幾何校正與邊緣融合。
[1]Dong-Keun Kim,Byung-Tae Jang,Chi-Jung Hwang.A planar perspective image matching using point correspondences and rectangle-to-quadrilateral mapping,Proceedings of Fifth IEEE Southwest Symposium on Image Analysis and Interpretation,2002,4:87-91.
[2]Paul Heckbert,Projective Mappings for Image Warping,Fundamentals of Texture Mapping and Image Warping,Master's thesis CS Division,U.C.Berkeley,1989,6:17-21.
[3]Paul Bourke.Edge blending using commodity projectors.http://paulbourke.net/ texture_colour/edgeblend/,2004.
[4]呂冀,汪渤,高洪民.圖像失真矯正算法與應(yīng)用,微計算機(jī)信息,2008,12:280-281.
[5]陳子俊.環(huán)幕電影系統(tǒng)及其開發(fā)利用.影視技術(shù),2000,6:46-47.