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