趙作林,黃心淵
(北京林業大學 信息學院,北京 100083)
立體顯示技術作為當今一個熱點技術受到越來越多的重視,各國科研人員研究出多種立體顯示方法,極大地豐富了人們的視覺體驗[1-2]。一般立體顯示技術的實現大多都基于計算機,在計算機屏幕上展示效果[3]。但是由于計算機不易移動的特點,大大降低了其便攜性和可操控性。因此,有必要在移動設備上進行立體顯示技術的相關研究,提高其靈活方便的特性,便于實時地進行即時性立體技術實現,從而為科學研究和實地應用提供一種簡單宜行的解決方案。
本文將設計一個基于Android平臺的圖像體視化系統,通過紅藍互補色眼鏡,實現圖像的立體顯示,使用戶可以通過移動設備隨時隨地體驗立體圖像。
根據研究,人眼在感知一個三維對象時,由于兩只眼睛的位置在水平上略有距離,所以觀測到的物體圖像也是略有差別的,因此通過視覺神經傳遞到大腦進行分析,可以感受到物體三維深度的變化,這就是立體視覺的原理。如果左右眼分別獨立地看到兩幅不同位置的圖像,就可以感受到立體空間感。通過紅藍眼鏡觀察圖像的立體效果采用的是濾色的方式來分開圖片,因此也被稱為分色技術,用戶帶上紅藍眼鏡后,左右眼分別只能看到圖像的左片和右片,從而產生立體視覺。
對于圖像,在讀取圖像數據后,要對其圖像數據進行修改,通過平移、柱面投影變換、球面投影變換,得到體視化圖像,然后通過互補色體視生成方法將變換得到的圖像對進行合成,從而生成需要的立體圖像[2]。
把一幅圖像分成奇數場和偶數場,假設奇數場為右通道,即右眼,偶數場為左通道,即左眼(下述兩種方法同理)。由于模擬的是負視差情形,因此成像點投影到平面的時候會出現右眼場景向左偏、左眼場景向右偏的情況,在這里將奇數場向左平移P/2像素(P為水平視差),偶數場向右平移P/2像素,如圖1所示,從而得到兩幅圖像,形成了稍有差異的體視圖像對。
景深感隨著偏移距離的增加而增強,但當偏移距離超出有效的區域,人的雙眼便不能將奇偶數場結合到一起。經過多次測試,當像素的偏移量超過圖像寬度(width)的5%的時候,人眼便不能很好地觀察到體視效果,從而得出水平時差與圖像寬度的關系公式,即P≤width×5%。

一幅平面圖像,分別通過左右眼視線投射到半圓柱面形狀的投影面上,得到兩幅圖像,組成體視圖像對,如圖2所示。

由于雙眼的垂直視差為零,并且半圓柱在y軸方向與成像面每行像素之間的垂直距離均相同,所以對于左(右)眼視圖來說,只需記錄雙眼對成像面中一行像素在半圓柱面上的投影點,其余行在半圓柱面上的投影點與其相同就可以。
設柱面投射到xoz面的方程為

式中:width是成像面的寬度,r是柱面橫截面的短半徑,d是成像面到柱面前凸面最近點的垂直距離。處理圖像平面的方程為

左右眼坐標方程分別為

式中:pz是兩視點距離。左視點對應奇數場(偶數場)投影后所得點x,坐標為

式中,h是投影前圖像上一點的x坐標值,0≤h<width。
根據式(5),可求得在柱面上的投影點坐標。為了取直線與半圓柱面的前凸面交點坐標,在h≤Xl時,公式取“+”號,h>Xl時,公式取“-”號。
同理可求得右視點在柱面上對圖像的偶數場(奇數場)的投影點,從而得到柱面投影的體視圖像對。
球面投影的原理和柱面投影基本相同。原理圖見圖3,由于雙眼的垂直視差為零,并且半圓柱在y軸方向與成像面每行像素之間的垂直距離均相同,所以對于左(右)眼視圖來說,設球面方程為

式中:width是成像面寬度,r是球面半徑。

成像面投影到xoz面是以原點為起點的x軸上一段長為width的直線,在xoy面是以原點為左下角的矩形,即

左右眼坐標方程分別為

式中:pz是兩視點距離,y'是成像面像素點的y坐標。左視點對奇數場(偶數場)投影后所得點x坐標同式(5),只是在c的取值上有所不同,即

根據式(5),同樣可求得在球面上的投影點坐標。為了取直線與球面的前凸面交點坐標,在h≤Xl時,公式取“+”號,h>Xl時,公式取“-”號。
同樣可求得右眼視線對于圖像在球面上的投影點,分別取兩幅圖像的奇偶行進行合成,即可得到體視圖像。
上面所述3種方法,都是在原圖的基礎上,生成另一副圖像,組成圖像對。在組成圖像對后,還要通過Alpha透明圖像合成的方法,將圖像對合成為體視圖像,方可通過紅綠眼鏡觀看到立體效果。
通過把圖像對分別只保留紅色和綠色通道,然后進行Alpha透明圖像合成。圖像合成技術很重要,其實質是將兩幅或兩幅以上的圖像信息融合在一起,在進行圖像合成的時候可以采用Alpha值的方法,Alpha透明圖像合成的方法介紹如下。
合成圖像的各點像素值是由用來制作合成圖的兩張圖像相應點的像素值按一定比例混合而成的,這個比例由Alpha值決定,具體計算公式如

式中:Pixel1ValR/G/B代表圖像1的當前像素點的灰度值;Pixel2ValR/G/B代表圖像2的當前像素點的灰度值;Alpha的取值范圍從0到255,表示兩個像素在最終合成的結果中所占的權重,通過修改Alpha的值,就可以改變合成后的圖像中用來合成的兩張圖像各自所占的比值,改變合成后的顯示效果。
本系統是在Eclipse集成開發環境中開發實現的,JDK版本為6.0,Android SDK版本為3.2。系統的整體框架圖如圖4所示。

1)平移方法代碼如下:

2)柱面投影方法及球面投影方法代碼。
柱面投影的原理和球面投影基本相同,所以只列出相對較復雜的球面投影的代碼,代碼如下:




通過平移方法、柱面投影方法及球面投影方法生成的立體圖像如圖5、圖6、圖7所示。



3種方法生成的體視化圖像,通過互補色眼鏡觀看雖然都能夠產生立體效果,但是效果略有不同。平移方法可以產生一定的景深感,柱面和球面變換方法可以解決水平觀察和非水平觀察的問題。通過平移方法產生的圖像對光軸平行,在遠處沒有聚焦點,所以生成的體視圖像在觀察位置水平移動或者頭部轉動時,都不能正確對焦,體視化效果較差。柱面投影方法和球面投影方法,光軸不再平行,而是交于屏幕前或后一點,兩眼觀察有重疊區域,這樣得到的體視圖像有聚焦點,觀察效果較好。
本文通過理論知識支撐與實際應用相結合的方法,闡明了體視化圖像生成的相關技術及原理,從而設計并實現了基于移動設備的圖像體視化系統。實驗證明,本文提出的基于移動設備的圖像體視化技術方法具有使用簡便,易于實現的特點,其體視效果明顯,易于觀察,對于體視技術在移動設備的應用和研究具有一定的指導意義。
[1]趙國英,黃心淵.三種體視圖像生成方法的比較研究[J].計算機工程,2002,28(7):182-184.
[2]吳瓊玉.基于圖像的視圖合成技術研究[D].國防科學技術大學,2006.
[3]楊枝靈,王開.Visual C++數字圖像獲取、處理及實踐應用[M].北京:人民郵電出版社,2003.
[4]高盟.3D立體影像制作的問題與探討[J].特技與動畫,2009(2):15-19.
[5]SON J Y,JAVIDI B,KWACK K D.Methods for displaying three di?mensional images[J].Proceedings of the IEEE,2006,94(3):502-523.