本發(fā)明涉及圖形圖像處理方法,尤其涉及的是一種模擬人眼對(duì)焦的虛擬動(dòng)態(tài)景深變化處理方法,適用于在顯示屏或虛擬現(xiàn)實(shí)設(shè)備中。
背景技術(shù):
隨著硬件技術(shù)和軟件技術(shù)的發(fā)展,虛擬現(xiàn)實(shí)頭顯(head-mounted displays,HMDs)技術(shù)已經(jīng)開始向消費(fèi)者普及,并成為模擬沉浸式體驗(yàn)的首選設(shè)備。在沉浸式的體驗(yàn)中,最大程度上模擬還原人眼在現(xiàn)實(shí)生活中觀察事物的方式是提高虛擬現(xiàn)實(shí)頭顯用戶體驗(yàn)的關(guān)鍵。
現(xiàn)實(shí)生活中,人眼觀察事物時(shí)具有景深效果,即只有在對(duì)焦點(diǎn)前后一定范圍內(nèi)的物體能夠在人眼中形成清晰的圖像,距離人眼的對(duì)焦點(diǎn)過遠(yuǎn)或過近的物體在人眼看來是模糊的。景深是模擬人眼視覺效果的重要手段,能夠有效提高虛擬現(xiàn)實(shí)頭顯的沉浸式體驗(yàn)效果。然而現(xiàn)有的虛擬現(xiàn)實(shí)頭顯并沒有提供動(dòng)態(tài)景深感知的功能,其呈現(xiàn)給人眼的圖像無論遠(yuǎn)近都是清晰的,這極大地降低了用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
為了解決背景技術(shù)中存在的問題,本發(fā)明提供了一種模擬人眼對(duì)焦的虛擬動(dòng)態(tài)景深變化處理方法,用于在顯示屏或虛擬現(xiàn)實(shí)設(shè)備上模擬人眼的自動(dòng)對(duì)焦時(shí),畫面景深變化的過程。
本發(fā)明采用的技術(shù)方案是如圖1所示,包括以下步驟:
1)在人觀看虛擬現(xiàn)實(shí)場(chǎng)景的畫面過程中,獲得雙眼眼球在虛擬現(xiàn)實(shí)場(chǎng)景中的凝視位置;
2)根據(jù)雙眼眼球的凝視位置,實(shí)時(shí)對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中每一幀的圖像進(jìn)行處理獲得當(dāng)前幀下虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depthdesired(focal distance);
3)再根據(jù)期望對(duì)焦距離Depthdesired和虛擬鏡頭的內(nèi)參參數(shù)計(jì)算獲得彌散圓(CoC)半徑,然后根據(jù)彌散圓半徑構(gòu)建模糊效果,將模糊效果疊加到原虛擬現(xiàn)實(shí)場(chǎng)景的當(dāng)前幀中進(jìn)行顯示,完成景深變化處理。
所述步驟1)具體為:在人使用虛擬現(xiàn)實(shí)設(shè)備中,在虛擬現(xiàn)實(shí)設(shè)備的顯示屏顯示虛擬場(chǎng)景畫面,預(yù)先設(shè)定虛擬鏡頭光圈大小和鏡頭焦距等虛擬鏡頭的內(nèi)參參數(shù),并在人眼的正前方設(shè)置眼球跟蹤設(shè)備,眼球跟蹤設(shè)備可位于顯示屏的上方附近,通過眼球跟蹤設(shè)備實(shí)時(shí)獲得雙眼眼球的凝視位置信息。
所述步驟1)具體為:所述雙眼眼球的凝視位置為顯示屏幕的屏幕中心點(diǎn)。
所述步驟2)對(duì)于每一幀的虛擬現(xiàn)實(shí)場(chǎng)景圖像具體如圖2所示,是:
2.1)將雙眼眼球的凝視位置信息轉(zhuǎn)換到當(dāng)前幀顯示畫面的二維坐標(biāo),再將二維坐標(biāo)轉(zhuǎn)換成當(dāng)前幀虛擬現(xiàn)實(shí)場(chǎng)景的空間三維落點(diǎn)坐標(biāo)Pos;
2.2)在當(dāng)前幀虛擬現(xiàn)實(shí)場(chǎng)景中找到空間三維落點(diǎn)坐標(biāo)Pos所對(duì)應(yīng)的虛擬凝視對(duì)象,得到當(dāng)前幀下虛擬凝視對(duì)象與虛擬鏡頭之間的深度距離Depthcurrent;
2.3)通過深度距離Depthcurrent和上一幀虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depth′desired進(jìn)行計(jì)算,求得第一重對(duì)焦時(shí)間Time1refocus(單位為毫秒);
2.4)若Time1refocus小于毫秒,則將當(dāng)前幀下虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depthdesired和上一幀虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depth′desired的值設(shè)為與深度距離Depthcurrent相同,設(shè)置當(dāng)前幀標(biāo)志位flag的值為false,不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理;
若Time1refocus大于等于毫秒,則繼續(xù)下一步驟;
2.5)通過上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示是否是通過模糊效果疊加后進(jìn)行顯示進(jìn)行判斷處理:
A)若上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示是通過模糊效果疊加后顯示的,即當(dāng)前幀標(biāo)志位flag的值為false,則將當(dāng)前幀標(biāo)志位設(shè)置flag的值為true,根據(jù)第一重對(duì)焦時(shí)間Time1refocus計(jì)算虛擬現(xiàn)實(shí)場(chǎng)景中的參數(shù),不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理;
B)若上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示不是通過模糊效果疊加后顯示的,即標(biāo)志位flag的值為true,則計(jì)算求得第二重對(duì)焦時(shí)間Time2refocus,然后對(duì)第二重對(duì)焦時(shí)間Time2refocus進(jìn)行判斷:
若第二重對(duì)焦時(shí)間Time2refocus小于毫秒,則將當(dāng)前幀標(biāo)志位設(shè)置flag的值為true,根據(jù)第二重對(duì)焦時(shí)間Time2refocus計(jì)算虛擬現(xiàn)實(shí)場(chǎng)景中的參數(shù),不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理;
若第二重對(duì)焦時(shí)間Time2refocus大于等于毫秒,則將虛擬凝視對(duì)象的結(jié)束深度距離Depthend的值設(shè)置為與深度距離Depthcurrent相同,并利用以下公式計(jì)算求得Depthdesired;
Depthdesired=(Timenow-Timestart)×Δd+Depthstart
其中,Timenow表示當(dāng)前幀所在的時(shí)刻,Timestart表示對(duì)焦開始時(shí)間,Depthstart表示虛擬凝視對(duì)象的開始深度距離。
所述步驟2.3)第一重對(duì)焦時(shí)間Time1refocus的計(jì)算采用以下公式:
其中,Δt表示人眼生理結(jié)構(gòu)能達(dá)到的最小對(duì)焦時(shí)間,Δt為常量,具體實(shí)施可為40毫秒。
所述步驟B)第二重對(duì)焦時(shí)間Time2refocus的計(jì)算采用以下公式:
其中,Δt表示人眼生理結(jié)構(gòu)能達(dá)到的最小對(duì)焦時(shí)間,Δt為常量,具體實(shí)施可為40毫秒。
所述的虛擬現(xiàn)實(shí)場(chǎng)景中的參數(shù)包括對(duì)焦開始時(shí)間Timestart、虛擬凝視對(duì)象的開始深度距離Depthstart、虛擬凝視對(duì)象的結(jié)束深度距離Depthend和單位深度距離Δd的參數(shù)。
所述的對(duì)焦開始時(shí)間Timestart、虛擬凝視對(duì)象的開始深度距離Depthstart、虛擬凝視對(duì)象的結(jié)束深度距離Depthend和單位深度距離Δd具體是采用以下公式計(jì)算獲得:
Timestart=Timenow
Depthstart=Depth′desired
Depthend=Depthcurrent
其中,Timenow表示當(dāng)前幀所在的時(shí)刻,Timerefocus為重對(duì)焦時(shí)間,具體為第一重對(duì)焦時(shí)間Time1refocus或第二重對(duì)焦時(shí)間Time2refocus。
所述的虛擬凝視對(duì)象為虛擬現(xiàn)實(shí)場(chǎng)景的三維虛擬模型。
本發(fā)明的有益效果是:
本發(fā)明提出的方法能夠動(dòng)態(tài)監(jiān)測(cè)虛擬現(xiàn)實(shí)頭顯用戶眼睛的對(duì)焦距離,進(jìn)而可實(shí)時(shí)計(jì)算彌散圓半徑,通過對(duì)原有圖像添加模糊特效,能夠有效地模擬人眼在現(xiàn)實(shí)生活中觀察事物的景深效果,大大提升用戶的沉浸式體驗(yàn)。
附圖說明
圖1為本發(fā)明方法的流程圖。
圖2為本發(fā)明方法步驟(2)求期望對(duì)焦距離的流程圖。
圖3為一次對(duì)焦過程中對(duì)焦前的景深變化圖。
圖4為一次對(duì)焦過程中對(duì)焦后的景深變化圖。
圖5為一次對(duì)焦過程中的動(dòng)態(tài)景深變化過程之一的狀態(tài)圖。
圖6為一次對(duì)焦過程中的動(dòng)態(tài)景深變化過程之二的狀態(tài)圖。
圖7為一次對(duì)焦過程中的動(dòng)態(tài)景深變化過程之三的狀態(tài)圖。
圖8為一次對(duì)焦過程中的動(dòng)態(tài)景深變化過程之四的狀態(tài)圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施技術(shù)對(duì)本發(fā)明技術(shù)方案做進(jìn)一步詳細(xì)說明,以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。
本發(fā)明的實(shí)施例及其實(shí)施工作過程如下:
1)在人使用虛擬現(xiàn)實(shí)設(shè)備中,采用Unity3D引擎作為三維場(chǎng)景的顯示軟件,在虛擬現(xiàn)實(shí)設(shè)備的顯示屏顯示虛擬場(chǎng)景畫面,預(yù)先設(shè)定虛擬鏡頭的內(nèi)參參數(shù)(光圈大小為0.3,鏡頭焦距35mm),顯示刷新率為60Hz。并在人眼的正前方設(shè)置眼球跟蹤設(shè)備,眼球跟蹤設(shè)備可位于顯示屏的上方附近,通過眼球跟蹤設(shè)備實(shí)時(shí)獲得雙眼眼球的凝視位置信息。
2)根據(jù)雙眼眼球的凝視位置,實(shí)時(shí)對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中每一幀的圖像進(jìn)行處理:
2.1)將雙眼眼球的凝視位置信息轉(zhuǎn)換到當(dāng)前幀顯示畫面的二維坐標(biāo),再將二維坐標(biāo)轉(zhuǎn)換成當(dāng)前幀虛擬現(xiàn)實(shí)場(chǎng)景的空間三維落點(diǎn)坐標(biāo)Pos。
2.2)在當(dāng)前幀虛擬現(xiàn)實(shí)場(chǎng)景中找到空間三維落點(diǎn)坐標(biāo)Pos所對(duì)應(yīng)的虛擬現(xiàn)實(shí)場(chǎng)景的三維虛擬模型作為虛擬凝視對(duì)象,假如圖4為當(dāng)前幀,而人眼凝視對(duì)象在這一幀從第二排最左邊處的籃球變成圖7中第一排最近的籃球,那么可算出當(dāng)前幀下虛擬凝視對(duì)象(第一排最近的籃球)與虛擬鏡頭之間的深度距離Depthcurrent(1米)。
2.3)通過深度距離Depthcurrent和上一幀虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depth′desired(10米)進(jìn)行計(jì)算,一般來說,人眼的單位對(duì)焦時(shí)間Δt為40毫秒,但本實(shí)施例為了方便觀察,將Δt的取值設(shè)置得略微大一些,即計(jì)算中Δt取值為200毫秒。求得第一重對(duì)焦時(shí)間Time1refocus為180(單位為毫秒).
2.4)若Time1refocus小于17毫秒(1/60Hz=17毫秒),則將當(dāng)前幀下虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depthdesired和上一幀虛擬凝視對(duì)象與虛擬鏡頭之間的期望對(duì)焦距離Depth′desired的值設(shè)為與深度距離Depthcurrent相同,設(shè)置當(dāng)前幀標(biāo)志位flag的值為false,不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理;
若Time1refocus大于等于17毫秒,則繼續(xù)下一步驟。由于在本實(shí)施例中Time1refocus=32,所以繼續(xù)下一步驟。
2.5)通過上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示是否是通過模糊效果疊加后進(jìn)行顯示進(jìn)行判斷處理:
A)若上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示是通過模糊效果疊加后顯示的,即當(dāng)前幀標(biāo)志位flag的值為false,則將當(dāng)前幀標(biāo)志位設(shè)置flag的值為true,以第一重對(duì)焦時(shí)間Time1refocus作為重對(duì)焦時(shí)間Timerefocus計(jì)算虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)焦開始時(shí)間Timestart、虛擬凝視對(duì)象的開始深度距離Depthstart、虛擬凝視對(duì)象的結(jié)束深度距離Depthend和單位深度距離Δd等參數(shù)并覆蓋,不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理;由于在本實(shí)施例中flag=false,所以結(jié)束對(duì)當(dāng)前幀的處理,直接轉(zhuǎn)到步驟(3)。
B)若上一幀虛擬現(xiàn)實(shí)場(chǎng)景圖像的顯示不是通過模糊效果疊加后顯示的,即標(biāo)志位flag的值為true,則計(jì)算求得第二重對(duì)焦時(shí)間Time2refocus,計(jì)算中Δt為40毫秒,然后對(duì)第二重對(duì)焦時(shí)間Time2refocus進(jìn)行判斷:
若第二重對(duì)焦時(shí)間Time2refocus小于17毫秒,則將當(dāng)前幀標(biāo)志位設(shè)置flag的值為true,并以第二重對(duì)焦時(shí)間Time2refocus作為重對(duì)焦時(shí)間Timerefocus計(jì)算虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)焦開始時(shí)間Timestart、虛擬凝視對(duì)象的開始深度距離Depthstart、虛擬凝視對(duì)象的結(jié)束深度距離Depthend和單位深度距離Δd等參數(shù)并覆蓋,不對(duì)當(dāng)前幀進(jìn)行景深變化處理,并結(jié)束對(duì)當(dāng)前幀的處理。
若第二重對(duì)焦時(shí)間Time2refocus大于等于17毫秒,則將虛擬凝視對(duì)象的結(jié)束深度距離Depthend的值設(shè)置為與深度距離Depthcurrent相同,并計(jì)算求得Depthdesired。
3)利用L.McIntosh等人的算法(McIntosh,L.,Bernhard E.Riecke,and Steve DiPaola."Efficiently Simulating the Bokeh of Polygonal Apertures in a Post‐Process Depth of Field Shader."Computer Graphics Forum.Vol.31.No.6.Blackwell Publishing Ltd,2012.),再根據(jù)期望對(duì)焦距離Depthdesired和虛擬鏡頭的內(nèi)參參數(shù)計(jì)算獲得彌散圓(CoC)半徑,然后根據(jù)彌散圓半徑構(gòu)建模糊效果,將模糊效果疊加到原虛擬現(xiàn)實(shí)場(chǎng)景的當(dāng)前幀中進(jìn)行顯示,完成景深變化處理。
在本實(shí)施例中,第1幀到第11幀的動(dòng)態(tài)景深變化效果如圖5~圖8所示,由圖5到圖8按時(shí)間順序變化,圖5~圖8分別是第1、4、7、11幀的動(dòng)態(tài)景深變化效果。
采用本發(fā)明中的方法,實(shí)施例當(dāng)人眼觀察如圖3這樣的三維籃球場(chǎng)景時(shí),若將焦點(diǎn)由遠(yuǎn)處移至最近的籃球處,則會(huì)獲得圖4這樣對(duì)焦后的景深狀態(tài)圖。
圖中可見,當(dāng)眼球的凝視位置從后方的籃球轉(zhuǎn)移到前方的籃球時(shí),動(dòng)態(tài)景深技術(shù)會(huì)隨著時(shí)間和距離逐漸將焦點(diǎn)從后方的籃球轉(zhuǎn)移到前方的籃球,從而模擬出人眼的對(duì)焦效果。
以上是實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。