虛擬現實—立體顯示技術研究
發布時間:2010-06-17
中心議題:
虛擬現實(VirtualReality)是一種新興的、極有應用前景的計算機綜合性技術。采用以計算機技術為核心的現代高科技生成逼真的視覺、聽覺、觸(chu)覺(jiao)一(yi)體(ti)化(hua)的(de)特(te)定(ding)範(fan)圍(wei)的(de)虛(xu)擬(ni)環(huan)境(jing)。立(li)體(ti)顯(xian)示(shi)是(shi)虛(xu)擬(ni)現(xian)實(shi)的(de)關(guan)鍵(jian)技(ji)術(shu)之(zhi)一(yi),它(ta)使(shi)人(ren)在(zai)虛(xu)擬(ni)世(shi)界(jie)裏(li)具(ju)有(you)更(geng)強(qiang)的(de)沉(chen)浸(jin)感(gan),立(li)體(ti)顯(xian)示(shi)的(de)引(yin)入(ru)可(ke)以(yi)使(shi)各(ge)種(zhong)模(mo)擬(ni)器(qi)的(de)仿(fang)真(zhen)更(geng)加(jia)逼(bi)真(zhen)。研(yan)究(jiu)立(li)體(ti)成(cheng)像(xiang)技(ji)術(shu)並(bing)利(li)用(yong)現(xian)有(you)的(de)微(wei)機(ji)平(ping)台(tai),結(jie)合(he)相(xiang)應(ying)的(de)軟(ruan)硬(ying)件(jian)係(xi)統(tong)在(zai)平(ping)麵(mian)顯(xian)示(shi)器(qi)上(shang)顯(xian)示(shi)立(li)體(ti)視(shi)景(jing)。
立體視覺概述
據研究,人的大腦能從以下4個方麵獲得深度(距離)線索:靜態圖像中的深度線索、由運動造成的深度線索、生理上的深度線索以及雙目視差線索,這裏僅研究雙目視差線索。當用雙眼看同一景物時,由於左、右眼在空間所處位置不同,兩隻眼晴的視角會有所不同,看到的圖像也不一樣,會有視差,如圖1asuoshi。juyoushichadeshuangyantuxiangjingdanaoronghe,kechanshenghanyoulitishenduxinxidelitituxiang。yibanjiangshuangmusuojiandeyiduijuyoushichadeerweituxiangchengweilitituxiangdui。ruomofangchanshengzheyiduipingmiantuxiang,bingcaiqujishucuoshi,shizuoyanzhinengkanjianyoubiandetuxiang,eryouyanzhinengkanjianzuobiandetuxiang,zerenleideshijiaoxitongjiuhuironghegaierweikongjianzhongyiduishaoyouchabiedetuxiang,congershengchengjuyoulitiganshoudetuxiang。genjutouyingmian、人眼以及觀察對象之間的相對位置,可有正視差(圖1b)、負視差(圖1c)和零視差(圖1d)之分。
[page]
雙中心投影算法
由以上研究可知,立體圖像對的產生是由於左、右you眼yan觀guan察cha到dao的de物wu體ti透tou視shi結jie果guo不bu同tong。因yin此ci在zai立li體ti顯xian示shi的de視shi景jing仿fang真zhen中zhong設she置zhi兩liang隻zhi虛xu擬ni的de眼yan睛jing,一yi個ge獲huo取qu左zuo眼yan的de圖tu像xiang,另ling一yi個ge獲huo取qu右you眼yan的de圖tu像xiang,分fen別bie將jiang左zuo右you眼yan的de圖tu像xiang傳chuan送song給gei相xiang應ying的de眼yan睛jing。因yin此ci。在zai立li體ti顯xian示shi中zhong,需xu要yao采cai用yong包bao含han兩liang個ge視shi點dian的de透tou視shi投tou影ying方fang法fa一yi雙shuang中zhong心xin投tou影ying算suan法fa。圖tu2為雙中心投影。

左視點Leye和右視點Reye均位於X軸上,兩視點間的距離為e,兩視點連線中心為坐標原點,則左視點的坐標為(-e/2,0,0),右視點的坐標為(+e/2,0,0)。投影平麵平行於XY平麵,到左右視點的距離均為d。三維空間中一點P(xp,yp,zp)在左視點投影中的坐標為(xl,yl,zl),在右視點投影中的坐標為(xr,yr,zr),則zl=zr=d。點P(xp,yp,zp)和Reye投影線的參數方程為:

在投影平麵上z=d,可得

將式(2)帶入式(1)得點P在投影平麵的坐標(xr,yr):

同理,點P和Leye的投影線在投影平麵上的投影點坐標是:

可得水平視差:

由此可見,當zp>d時,0<E<e,此時為正視差;當zp<d時,E<0,此時為負視差;而當zp=d時,E=0,此時為零視差。采用雙中心投影算法,設置雙視點就可獲取三維空間中物體的左右眼圖像,從而生成立體圖像對。
[page]
OpenGL實現立體顯示
開放性圖形庫OpenGL(OpenGraphicLibrary)是一個三維計算機圖形和模型庫。它獨立於操作係統和硬件環境,適用於從個人計算機到工作站的廣泛計算機環境。
OpenGLzaisanweizhenshigantuxingzhizuozhongjuyouyouxiudexingneng,yonggaituxingkubujinnengfangbiandizhizuochugaozhiliangdejingzhicaisetuxiang,hainengchuangzaochugaozhiliangdedonghuaxiaoguo。jiezhuWindows編程環境還可控製模型的人機交互。由於其開放性和高度的可重用性,目前已成為業界標準。
1立體圖像對的繪製
按上述投影算法計算出立體圖像對後,應用OpenGL繪製立體圖像對,分別用紅、綠兩種顏色繪製右眼和左眼的圖像。以一個變長為10cm,中心點在原點的正方體為例,設兩視點間距離e為5cm,投影麵距高觀察者d為40cm,考察正方體的一個頂點(5,5,5),由上述投影算法可得:xr=32cm,xl=48cm,yl=yr=4040cm,zr=zl=d=40cm對8個頂點分別計算後,連接相應的立體透視投影點,即可得該立方體的立體圖像對。用數組vertex[8][3]存儲頂點,數組translatevertexr[8][3]存儲右眼投影計算後坐標,數組translatevertexl[8][3]存儲左眼投影計算後的坐標,對相應的點進行投影計算:

使用OpenGL的de透tou視shi投tou影ying變bian換huan,需xu設she置zhi前qian後hou裁cai剪jian麵mian到dao觀guan察cha者zhe的de距ju離li及ji前qian裁cai剪jian麵mian的de寬kuan度du和he高gao度du等deng。前qian裁cai剪jian麵mian的de寬kuan度du用yong該gai寬kuan度du與yu高gao度du的de比bi值zhi表biao示shi,取qu顯xian示shi窗chuang口kou的de寬kuan度du和he高gao度du之zhi比bi。
[page]
doubleNear.Far;//前後裁剪麵距觀察者的距離
intratio=width/height;//顯示屏的寬和高之比
ViewHeight2=Near*tan(radians);//計算視野的高度
ViewWidth2=ViewHeight2*ratio;//計算視野的寬度
計算右眼的視野範圍;
left=-ViewWidth2-0.5*e*0.3;
right=ViewWidth2-0.5*e*0.3;
投影並繪製模型:
glFrustum(left,right,bottom,top,Near,Far);
glDrawBuffer(GL_BACK_RIGHT);//使用右後緩存
gluLookAt(0+e/2。0,5。0+d/2,0,-5,0,1,0);
//確定右眼位置
glColor3f(1.0,0.0,0.0);//用紅色繪製
draw();//計算立體圖像對並繪製
同理繪製左眼的圖像,如圖3所示。

2雙緩存區的使用
OpenGL提供雙緩存技術,支持兩個完整顏色緩存的硬件或軟件。繪製一個緩存時,顯示另一個緩存中的內容。每繪製好一幀便交換緩存;這樣剛才被顯示的緩存被用來繪製,而用來繪製的緩存被顯示。這樣,當顯示器刷新時,緩存區進行交換,畫麵就不會閃爍。
OpenGL也支持立體觀察,實現左顏色緩存和右顏色緩存,它們分別用於左立體圖像和右立體圖像。可在初始化時,分別使用參數PFD_DOUBLEBUFFER和PFD_STERE-O_DONTCARE支持立體顯示和雙緩存。使用雙緩存時,通常隻繪製後緩存,使用函數glDrawBuffer()還可指定將立體圖像渲染到具體的某個緩存。
例如,繪製右眼圖像時使用右後緩存區glDrawBuffer(GL_BACK_RIGHT),繪製左眼時使用左後緩衝區glDraw-Buffer(GL_BACK_LEFT)。
3立體圖像的觀察
使用簡單的濾光鏡就可觀察有立體感的圖像。其原理是:由於濾光片(實驗中使用紅、綠濾光片)吸收其他光線,隻讓相同顏色的光線通過,因此左、youyangetouguobutongyansedeguang。dangshiyonglvguangjingguanchajisuanjipingmushangdelitituxiangduishi,jiuhuikandaojuyoushenduganshoudetuxiang。zaishiyanzhongfaxian,shuaxinpinlvduituxianglitixiaoguodexingchengjuyouzhongyaozuoyong。shuaxinpinlvguodi,youyurenyansuoweichidetuxiangyixiaoshi,bunengdedaosanweilitiganshou;刷新頻率過高就會出現一隻眼睛可看到兩幅圖像的現象。將顯示的刷新頻率設置合適,在程序中設置圖像刷新頻率設置為50Hz,利用紅綠濾光鏡觀察模型的立體成像,得到較明顯的立體視覺效果。
根據立體顯示原理,采用雙目視差算法對物體進行立體顯示,利用OpenGLshengchenglitituxiangdui,bingjiezhuhonglvlvguangyanjingguancha,dedaolejiaohaodelitishijiaoxiaoguo。litixianshijishudeyinruzengqianglerenzaixunihuanjingzhongdechenjingan,keguangfanyingyongyujianzhuwuheshijingmanyou、虛擬戰爭演練場和各種模擬訓練等多種場合。
- 立體視覺概述
- OpenGL實現立體顯示
- 雙中心投影算法
- 立體圖像對的繪製
虛擬現實(VirtualReality)是一種新興的、極有應用前景的計算機綜合性技術。采用以計算機技術為核心的現代高科技生成逼真的視覺、聽覺、觸(chu)覺(jiao)一(yi)體(ti)化(hua)的(de)特(te)定(ding)範(fan)圍(wei)的(de)虛(xu)擬(ni)環(huan)境(jing)。立(li)體(ti)顯(xian)示(shi)是(shi)虛(xu)擬(ni)現(xian)實(shi)的(de)關(guan)鍵(jian)技(ji)術(shu)之(zhi)一(yi),它(ta)使(shi)人(ren)在(zai)虛(xu)擬(ni)世(shi)界(jie)裏(li)具(ju)有(you)更(geng)強(qiang)的(de)沉(chen)浸(jin)感(gan),立(li)體(ti)顯(xian)示(shi)的(de)引(yin)入(ru)可(ke)以(yi)使(shi)各(ge)種(zhong)模(mo)擬(ni)器(qi)的(de)仿(fang)真(zhen)更(geng)加(jia)逼(bi)真(zhen)。研(yan)究(jiu)立(li)體(ti)成(cheng)像(xiang)技(ji)術(shu)並(bing)利(li)用(yong)現(xian)有(you)的(de)微(wei)機(ji)平(ping)台(tai),結(jie)合(he)相(xiang)應(ying)的(de)軟(ruan)硬(ying)件(jian)係(xi)統(tong)在(zai)平(ping)麵(mian)顯(xian)示(shi)器(qi)上(shang)顯(xian)示(shi)立(li)體(ti)視(shi)景(jing)。
立體視覺概述
據研究,人的大腦能從以下4個方麵獲得深度(距離)線索:靜態圖像中的深度線索、由運動造成的深度線索、生理上的深度線索以及雙目視差線索,這裏僅研究雙目視差線索。當用雙眼看同一景物時,由於左、右眼在空間所處位置不同,兩隻眼晴的視角會有所不同,看到的圖像也不一樣,會有視差,如圖1asuoshi。juyoushichadeshuangyantuxiangjingdanaoronghe,kechanshenghanyoulitishenduxinxidelitituxiang。yibanjiangshuangmusuojiandeyiduijuyoushichadeerweituxiangchengweilitituxiangdui。ruomofangchanshengzheyiduipingmiantuxiang,bingcaiqujishucuoshi,shizuoyanzhinengkanjianyoubiandetuxiang,eryouyanzhinengkanjianzuobiandetuxiang,zerenleideshijiaoxitongjiuhuironghegaierweikongjianzhongyiduishaoyouchabiedetuxiang,congershengchengjuyoulitiganshoudetuxiang。genjutouyingmian、人眼以及觀察對象之間的相對位置,可有正視差(圖1b)、負視差(圖1c)和零視差(圖1d)之分。
[page]雙中心投影算法
由以上研究可知,立體圖像對的產生是由於左、右you眼yan觀guan察cha到dao的de物wu體ti透tou視shi結jie果guo不bu同tong。因yin此ci在zai立li體ti顯xian示shi的de視shi景jing仿fang真zhen中zhong設she置zhi兩liang隻zhi虛xu擬ni的de眼yan睛jing,一yi個ge獲huo取qu左zuo眼yan的de圖tu像xiang,另ling一yi個ge獲huo取qu右you眼yan的de圖tu像xiang,分fen別bie將jiang左zuo右you眼yan的de圖tu像xiang傳chuan送song給gei相xiang應ying的de眼yan睛jing。因yin此ci。在zai立li體ti顯xian示shi中zhong,需xu要yao采cai用yong包bao含han兩liang個ge視shi點dian的de透tou視shi投tou影ying方fang法fa一yi雙shuang中zhong心xin投tou影ying算suan法fa。圖tu2為雙中心投影。

左視點Leye和右視點Reye均位於X軸上,兩視點間的距離為e,兩視點連線中心為坐標原點,則左視點的坐標為(-e/2,0,0),右視點的坐標為(+e/2,0,0)。投影平麵平行於XY平麵,到左右視點的距離均為d。三維空間中一點P(xp,yp,zp)在左視點投影中的坐標為(xl,yl,zl),在右視點投影中的坐標為(xr,yr,zr),則zl=zr=d。點P(xp,yp,zp)和Reye投影線的參數方程為:

在投影平麵上z=d,可得

將式(2)帶入式(1)得點P在投影平麵的坐標(xr,yr):

同理,點P和Leye的投影線在投影平麵上的投影點坐標是:

可得水平視差:

由此可見,當zp>d時,0<E<e,此時為正視差;當zp<d時,E<0,此時為負視差;而當zp=d時,E=0,此時為零視差。采用雙中心投影算法,設置雙視點就可獲取三維空間中物體的左右眼圖像,從而生成立體圖像對。
[page]
OpenGL實現立體顯示
開放性圖形庫OpenGL(OpenGraphicLibrary)是一個三維計算機圖形和模型庫。它獨立於操作係統和硬件環境,適用於從個人計算機到工作站的廣泛計算機環境。
OpenGLzaisanweizhenshigantuxingzhizuozhongjuyouyouxiudexingneng,yonggaituxingkubujinnengfangbiandizhizuochugaozhiliangdejingzhicaisetuxiang,hainengchuangzaochugaozhiliangdedonghuaxiaoguo。jiezhuWindows編程環境還可控製模型的人機交互。由於其開放性和高度的可重用性,目前已成為業界標準。
1立體圖像對的繪製
按上述投影算法計算出立體圖像對後,應用OpenGL繪製立體圖像對,分別用紅、綠兩種顏色繪製右眼和左眼的圖像。以一個變長為10cm,中心點在原點的正方體為例,設兩視點間距離e為5cm,投影麵距高觀察者d為40cm,考察正方體的一個頂點(5,5,5),由上述投影算法可得:xr=32cm,xl=48cm,yl=yr=4040cm,zr=zl=d=40cm對8個頂點分別計算後,連接相應的立體透視投影點,即可得該立方體的立體圖像對。用數組vertex[8][3]存儲頂點,數組translatevertexr[8][3]存儲右眼投影計算後坐標,數組translatevertexl[8][3]存儲左眼投影計算後的坐標,對相應的點進行投影計算:

使用OpenGL的de透tou視shi投tou影ying變bian換huan,需xu設she置zhi前qian後hou裁cai剪jian麵mian到dao觀guan察cha者zhe的de距ju離li及ji前qian裁cai剪jian麵mian的de寬kuan度du和he高gao度du等deng。前qian裁cai剪jian麵mian的de寬kuan度du用yong該gai寬kuan度du與yu高gao度du的de比bi值zhi表biao示shi,取qu顯xian示shi窗chuang口kou的de寬kuan度du和he高gao度du之zhi比bi。
[page]
doubleNear.Far;//前後裁剪麵距觀察者的距離
intratio=width/height;//顯示屏的寬和高之比
ViewHeight2=Near*tan(radians);//計算視野的高度
ViewWidth2=ViewHeight2*ratio;//計算視野的寬度
計算右眼的視野範圍;
left=-ViewWidth2-0.5*e*0.3;
right=ViewWidth2-0.5*e*0.3;
投影並繪製模型:
glFrustum(left,right,bottom,top,Near,Far);
glDrawBuffer(GL_BACK_RIGHT);//使用右後緩存
gluLookAt(0+e/2。0,5。0+d/2,0,-5,0,1,0);
//確定右眼位置
glColor3f(1.0,0.0,0.0);//用紅色繪製
draw();//計算立體圖像對並繪製
同理繪製左眼的圖像,如圖3所示。

2雙緩存區的使用
OpenGL提供雙緩存技術,支持兩個完整顏色緩存的硬件或軟件。繪製一個緩存時,顯示另一個緩存中的內容。每繪製好一幀便交換緩存;這樣剛才被顯示的緩存被用來繪製,而用來繪製的緩存被顯示。這樣,當顯示器刷新時,緩存區進行交換,畫麵就不會閃爍。
OpenGL也支持立體觀察,實現左顏色緩存和右顏色緩存,它們分別用於左立體圖像和右立體圖像。可在初始化時,分別使用參數PFD_DOUBLEBUFFER和PFD_STERE-O_DONTCARE支持立體顯示和雙緩存。使用雙緩存時,通常隻繪製後緩存,使用函數glDrawBuffer()還可指定將立體圖像渲染到具體的某個緩存。
例如,繪製右眼圖像時使用右後緩存區glDrawBuffer(GL_BACK_RIGHT),繪製左眼時使用左後緩衝區glDraw-Buffer(GL_BACK_LEFT)。
3立體圖像的觀察
使用簡單的濾光鏡就可觀察有立體感的圖像。其原理是:由於濾光片(實驗中使用紅、綠濾光片)吸收其他光線,隻讓相同顏色的光線通過,因此左、youyangetouguobutongyansedeguang。dangshiyonglvguangjingguanchajisuanjipingmushangdelitituxiangduishi,jiuhuikandaojuyoushenduganshoudetuxiang。zaishiyanzhongfaxian,shuaxinpinlvduituxianglitixiaoguodexingchengjuyouzhongyaozuoyong。shuaxinpinlvguodi,youyurenyansuoweichidetuxiangyixiaoshi,bunengdedaosanweilitiganshou;刷新頻率過高就會出現一隻眼睛可看到兩幅圖像的現象。將顯示的刷新頻率設置合適,在程序中設置圖像刷新頻率設置為50Hz,利用紅綠濾光鏡觀察模型的立體成像,得到較明顯的立體視覺效果。
根據立體顯示原理,采用雙目視差算法對物體進行立體顯示,利用OpenGLshengchenglitituxiangdui,bingjiezhuhonglvlvguangyanjingguancha,dedaolejiaohaodelitishijiaoxiaoguo。litixianshijishudeyinruzengqianglerenzaixunihuanjingzhongdechenjingan,keguangfanyingyongyujianzhuwuheshijingmanyou、虛擬戰爭演練場和各種模擬訓練等多種場合。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 1200餘家企業齊聚深圳,CITE2026打造電子信息產業創新盛宴
- 掌握 Gemini 3.1 Pro 參數調優的藝術
- 築牢安全防線:電池擠壓試驗機如何為新能源產業護航?
- Grok 4.1 API 實戰:構建 X 平台實時輿情監控 Agent
- 電源芯片國產化新選擇:MUN3CAD03-SF助力物聯網終端“芯”升級
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
MHL
Micrel
Microchip
Micron
Mic連接器
Mi-Fi
MIPS
MLCC
MMC連接器
MOSFET
Mouser
Murata
NAND
NFC
NFC芯片
NOR
ntc熱敏電阻
OGS
OLED
OLED麵板
OmniVision
Omron
OnSemi
PI
PLC
Premier Farnell
Recom
RF
RF/微波IC
RFID




