摘 要 桶形失真是由于光線的傾斜度大引起的畫面呈桶形膨脹形狀的失真現象,該現象直接影響了移動VR中對圖像的分析理解。本文提出一種新的三維映射幾何模型,通過對圖像網格的預計算與近似值處理,最后在視頻編解碼器中進行圖像對比并計算圖像差值和PSNR,數據結果證明此方法很好地權衡了GPU的輸出質量和速度,并修正了失真圖像,從而取得更好的細節處理效果。
【關鍵詞】桶形失真 移動VR 預計算 近似值
1 引言
VR技術是利用計算機生成一種三維模擬環境,通過多種傳感設備實現用戶與該環境進行自然交互的技術。VR正從PC端向移動端進行擴展,研究基于移動設備上的VR應用具有重要的意義。移動端VR技術對圖像質量的要求相當高,因為GPU相比傳統的移動應用程序需要做更多的工作負載。工作負載增加的其中一個原因是移動端的圖像內容需要進行兩次渲染(每單位矩陣渲染一次)。另一個原因是GPU最后一次渲染使用了桶形失真過濾。這使得圖像處理器的工作負荷特別大,因此我們需要思考良策以降低負荷。
2 桶形失真
桶形失真是由于光線的傾斜度大引起的畫面呈桶形膨脹形狀的失真現象,該現象直接影響了移動VR中對圖像的分析理解。由于失真,圖像被壓縮,從而失去一部分圖像信息;而剩下的部分則意味著要用更高的分辨率進行填充。由于存在桶形失真,我們需要應用反向轉換,這樣VR移動端的屏幕發出的光線才比較適宜。目前,對桶形失真進行校正的方法主要有模式法和控制點法兩種。其中,模式法包括基于鏡頭相對目標姿態與位置模型的外參數地址修正法和基于鏡頭光學特性模型的內參數地址修正法;控制點法包括多項式地址修正法和有限元法兩種;本文提出一種新的三維映射幾何模型,通過對圖像網格的預計算與近似值處理,最后進行圖像紋理查找,此方法很好地權衡了GPU的輸出質量和速度,并修正了失真圖像,從而取得更好的細節處理效果。
3 設計思想及算法
3.1 失真模型
本文采用創建的是非零逆函數模型用于桶形失真,其以下逆函數可以進行計算:
α定義了失真量,而α由透鏡設計進行界定。p中的輸入值x和y在[-1, +1]之間是標準化,如圖1函數曲線所示。
α呈增長態勢的桶形失真圖如圖2所示,左圖代表桶形失真開始,右圖為最后圖像,中間為一段動態過程。
3.2 基于圖像網格的修正
該算法為在顯示圖2右圖最后圖像之前,在后期處理片段著色器中進行最后渲染的修正。修正包括兩部分:預計算和近似值。假設將VR內容渲染至每矩陣的幀緩沖對象中,使用OpenGL ES 3.0,頂點著色器和片段著色器的程序如圖3示。centre 允許將失真集中的部分稍微移出FBO的中間位置,通常透鏡并不完全集中到屏幕的左邊或右邊。這是可以使用的用來計算失真的最準確的方法。但對GPU而言,這種方法的成本非常高。由于我們僅處理兩個三角形到輸出一個矩形,一共6個點,因此頂點著色器運行很快。另外,片段著色器需要在屏幕上為每個像素進行轉換。所以對于1920×1080像素的顯示,要進行2073600次運算及紋理查找。很明顯,我們需要優化性能,于是在圖像網格基礎上進行預計算,需要在片段著色器之外進行轉換。我們可以使用多個矩形連接組成網格,而不是在顯示FBO時形成一個矩形。如果現在對網格進行預轉換,便可以得到以下信息,如圖3所示。這種方法的優點是,在初始化時間內以上工作只需要做一次。因為透鏡參數不會隨時間變化,因此可以反復利用每一幀上的網格。
優化的第二部分是近似值處理,由圖像網格的分辨率對其定義。網格點之間可以進行插補。網格分辨率越低產生的圖像質量則越高,而網格分辨率越高則運行速度會越快。例如:使用32×32像素的網格可以生成1920 x 1080像素的顯示:(1920, 1080) / 32 = (60, 33.75)。因此,有2040個矩形和12240個點組成了頂點。頂點著色器要處理的是12240個點,而不是6個。可以簡化片段著色器,如圖4所示。
簡化片段著色器后還需要進行紋理查找,但可避免轉換工作。我們節省了大量的功耗,且分辨率更高將節省更多的功耗。不過,在移動端VR GPU上,還有另一大優勢。由于頂點著色器可以在3D階段獨立運行,而3D階段由于要進行光柵化,因此要執行片段著色器。如果圖像對象填充率有限,將有更多的空間可以確保按時完成圖像的渲染。
4 實驗結果
在實驗階段我們嘗試進行量化。實驗采集的圖像網格大小是32×32像素與160*160像素,并且為每個輸出圖像創建了向前轉換,針對向前轉換圖像和原始非轉換圖像輸出的不同創建了差值圖像,如圖5所示。
可以看到,在差值圖像中有更多紅色。但可以用數值進行表述。在視頻編解碼器的圖像對比中,PSNR值(峰值信噪比)是已知的標準。通過使用ImageMagick,并計算圖像差值和PSNR,可以得得到表1。
PSNR值更高意味兩個圖像更接近。可以清楚地看到,使用32px作為圖像的網格參數與使用片段渲染生成的圖像非常接近。
5 總結
本文所提出的在移動VR中加速修正GPU桶形失真的方法具有數學模型精練、算法實現簡單等優點,通過使用正確的技巧,可以降低特定部分的GPU需求,并同時保持圖像的高質量。應用程序得以創建更豐富的對象或設備,以通過縮短喚醒GPU的時間,從而節省功耗。
參考文獻
[1]王雷,郭健,陳英革等.圖像桶形失真的一種校正方法[J].常熟理工學院學報,2007,21(04):104-107.
[2]何平,殷睿.基于弧面映射的圖像桶形失真幾何失真的校正方法[J].上海電氣技術,2009(06):26-27.
作者簡介
金益(1980-),女,江蘇省蘇州市人。副教授。研究方向為三維動畫、虛擬現實。
作者單位
蘇州市職業大學計算機工程學院 江蘇省蘇州市 215104