周夢(mèng)滔,樓益民,胡娟梅,馮玉順,吳鋒民
(浙江理工大學(xué) 物理系 浙江省光場(chǎng)調(diào)控技術(shù)重點(diǎn)實(shí)驗(yàn)室,杭州 310018)
光場(chǎng)顯示技術(shù)能夠?yàn)橛^(guān)察者提供雙目視差、運(yùn)動(dòng)視差、單眼調(diào)焦、消隱等豐富的三維觀(guān)感,是距離全息顯示效果最近的一種非全息類(lèi)的3D 顯示技術(shù)[1-2]。光場(chǎng)顯示技術(shù)在工農(nóng)業(yè)生產(chǎn)、日常生活、軍事國(guó)防、游戲娛樂(lè)等各個(gè)領(lǐng)域都有廣泛的應(yīng)用,是一種平臺(tái)性技術(shù),所以備受關(guān)注。如何高效地采集光場(chǎng)信息數(shù)據(jù)是光場(chǎng)顯示技術(shù)中的重要環(huán)節(jié),也是3D 顯示的信息源頭。光場(chǎng)信息采集方法主要包括光學(xué)生成技術(shù)和數(shù)字渲染技術(shù)兩類(lèi)。光學(xué)生成技術(shù)包括相機(jī)陣列采集和光場(chǎng)相機(jī)采集技術(shù)等[3-4]。這類(lèi)方法可以采集真實(shí)場(chǎng)景的光場(chǎng)信息,但是采集系統(tǒng)復(fù)雜,需要精密校準(zhǔn)。數(shù)字渲染技術(shù)利用計(jì)算機(jī)生成光場(chǎng)信息,靈活方便且可以結(jié)合計(jì)算機(jī)圖形學(xué)技術(shù)實(shí)現(xiàn)特殊的藝術(shù)效果,是領(lǐng)域內(nèi)的研究熱點(diǎn)[5-6]。
數(shù)字渲染技術(shù)根據(jù)所處理的數(shù)據(jù)對(duì)象的不同可以分為基于圖像的渲染(Image Based Rendering,IBR)和基于模型的渲染(Model Based Rendering,MBR)。IBR 主要處理的數(shù)據(jù)對(duì)象是2D 的圖像數(shù)據(jù),而MBR主要處理的數(shù)據(jù)對(duì)象是3D 的模型數(shù)據(jù)。IBR 方法通過(guò)變形插值生成新視點(diǎn)圖像,提升了渲染速度。但是由于數(shù)據(jù)源中的空間信息不完備,會(huì)造成渲染質(zhì)量的下降。MBR 方法利用虛擬相機(jī)渲染生成新視點(diǎn)圖像,可以獲得高質(zhì)量的光場(chǎng)圖像,但是渲染效率有待提升。
MBR 算法主要包括單視點(diǎn)渲染法(Single Viewpoint Rendering,SVR)、多視點(diǎn)渲染算法(Multiple Viewpoint Rendering,MVR)、光線(xiàn)追蹤渲染算法(Ray Tracing Rendering,RTR)和并行多視點(diǎn)多邊形光柵化渲染算法(Parallel Multi-view Polygon Rasterization,PMPR)等[7]。1978年,IGARASHI Y 等提出計(jì)算生成光場(chǎng)圖像的方法,該方法逐視點(diǎn)、逐頂點(diǎn)的對(duì)光場(chǎng)圖像進(jìn)行渲染,其渲染時(shí)間隨著視點(diǎn)數(shù)目線(xiàn)性增加,存在大量冗余計(jì)算,效率較低[8]。1998年, HALLE M 提出了一種MVR 算法,該算法以SVR 為基礎(chǔ),利用不同視點(diǎn)圖像之間的相關(guān)性將渲染速度提升了一個(gè)數(shù)量級(jí),并且可以使用圖形處理器(Graphic Progressing Unit,GPU)硬件進(jìn)行加速計(jì)算[9]。2017年,邢樹(shù)軍等提出了一種基于逆向光線(xiàn)追蹤技術(shù)的高效RTR 算法,該算法直接對(duì)3D 場(chǎng)景中的光信息進(jìn)行逐光線(xiàn)地采樣,通過(guò)追蹤大量光線(xiàn)和場(chǎng)景的碰撞實(shí)現(xiàn)新視點(diǎn)圖像的渲染,獲得了逼真的效果,并且利用層次化包圍盒結(jié)構(gòu)顯著縮短了渲染時(shí)間。但是,由于RTR 算法的計(jì)算量巨大,尚未能實(shí)現(xiàn)復(fù)雜場(chǎng)景的實(shí)時(shí)渲染[10]。2020年,管延鑫等提出了一種PMPR 算法,這種算法利用幾何相關(guān)性和并行光柵化技術(shù)構(gòu)建了一種超多視點(diǎn)光場(chǎng)圖像的渲染管線(xiàn),進(jìn)一步提升了渲染速率[11]。在場(chǎng)景復(fù)雜度為200 萬(wàn)面片、總分辨率為7 680×4 320 的情況下,渲染速率達(dá)到60 幀/s,但由于該算法沒(méi)有考慮光照模型和紋理映射等因素,其渲染的圖像質(zhì)量受限,且不能和傳統(tǒng)的圖形硬件渲染管線(xiàn)相兼容。
上述渲染算法,無(wú)論是IBR 還是MBR 方法都需要先計(jì)算獲得多視點(diǎn)圖像,然后通過(guò)編碼將多視點(diǎn)圖像轉(zhuǎn)化為光場(chǎng)圖像[12-13],最后將這種光場(chǎng)圖像輸入到光場(chǎng)顯示系統(tǒng),實(shí)現(xiàn)深度正確的3D 顯示。為了簡(jiǎn)化渲染流程,進(jìn)一步提升渲染效率,本文提出了一種基于共軛透視相關(guān)相機(jī)的光場(chǎng)圖像快速渲染方法。通過(guò)構(gòu)建共軛透視相機(jī)利用一步渲染即可實(shí)現(xiàn)光場(chǎng)圖像的輸出,解決了深度反轉(zhuǎn)問(wèn)題;然后利用相鄰視點(diǎn)之間的圖像的透視相關(guān)性減少了重復(fù)計(jì)算,實(shí)現(xiàn)了光場(chǎng)圖像的快速渲染;最后搭建了與之匹配的光場(chǎng)顯示系統(tǒng),實(shí)現(xiàn)了虛擬場(chǎng)景的3D 顯示。所提算法省去了光場(chǎng)圖像的編碼過(guò)程,且具有渲染時(shí)間獨(dú)立于視點(diǎn)數(shù)的特點(diǎn),可以實(shí)現(xiàn)數(shù)以萬(wàn)計(jì)視點(diǎn)的光場(chǎng)信息的快速獲取。該算法還與現(xiàn)有的紋理、光照算法相兼容,大幅提升了渲染的質(zhì)量。
光場(chǎng)顯示包括信息采集和信息顯示兩個(gè)過(guò)程,如圖1 所示。信息采集過(guò)程首先讀取3D 模型數(shù)據(jù),然后設(shè)立M×N個(gè)虛擬相機(jī)陣列對(duì)顯示目標(biāo)的多視點(diǎn)圖像信息進(jìn)行采集,再通過(guò)圖像編碼將多視點(diǎn)信息轉(zhuǎn)化為光場(chǎng)圖像信息。最后將光場(chǎng)圖像輸入顯示系統(tǒng)實(shí)現(xiàn)目標(biāo)場(chǎng)景的3D 顯示。
圖1 傳統(tǒng)光場(chǎng)圖像的采集及顯示原理Fig.1 The recording and displaying principle of traditional light field image
光場(chǎng)信息的采集時(shí)間包括模型數(shù)據(jù)的讀取時(shí)間、多視點(diǎn)圖像的渲染時(shí)間、圖像編碼時(shí)間和圖像轉(zhuǎn)輸時(shí)間。其中從多視點(diǎn)圖像到光場(chǎng)圖像的編碼過(guò)程是為了匹配信息采集系統(tǒng)所記錄的光場(chǎng)參數(shù)和顯示系統(tǒng)輸出的光場(chǎng)參數(shù)之間的差異。目前對(duì)光場(chǎng)信息的獲取算法的優(yōu)化和提升主要集中在多視點(diǎn)圖像的獲取過(guò)程中。鮮有考慮多視點(diǎn)圖像采集和圖像編碼過(guò)程的同步優(yōu)化,從而限制了渲染效率的提升。
為提高渲染效率,利用光場(chǎng)采集和顯示信息之間的參數(shù)關(guān)系設(shè)計(jì)了一種共軛透視相機(jī),實(shí)現(xiàn)了光場(chǎng)圖像的一步采集,免去了圖像編碼過(guò)程。圖2 為不同相機(jī)的記錄視景體和投影視景體之間的關(guān)系,其中圖2(a)為傳統(tǒng)透視相機(jī)的視景體及其投影效果,在其視景體所張的立體角內(nèi)設(shè)置了近裁剪平面和遠(yuǎn)裁剪平面。在兩個(gè)裁剪平面之間的3D 物體以相機(jī)坐標(biāo)為投影中心在近裁剪平面上形成投影圖像。它所獲得的圖像與人眼觀(guān)察該場(chǎng)景獲得的圖像效果類(lèi)似,具有正透視關(guān)系,其透視投影矩陣為P,可表示為
圖2 記錄視景體與投影視景體間的關(guān)系Fig.2 Relationship of recording frustum and displaying frustum
式中,n為視錐體近面裁剪面的z坐標(biāo),f為遠(yuǎn)裁剪面的z坐標(biāo),r、t分別為視錐體近裁剪面上的x、y坐標(biāo)。這種投影方式獲得的圖像具有近大遠(yuǎn)小的比例關(guān)系和近景物體遮擋遠(yuǎn)景物體的消隱關(guān)系,光照模型一般為正常的馮氏模型[14]。圖2(b)為共軛透視相機(jī)的視景體及其投影效果。區(qū)別于傳統(tǒng)的透視相機(jī),在兩個(gè)裁剪平面之間的三維物體以相機(jī)坐標(biāo)為投影中心在遠(yuǎn)裁剪平面上形成投影圖像,其透視投影矩陣為Pc,可表示為
式中,r′、t′分別為視錐體遠(yuǎn)裁剪面上的x、y坐標(biāo)。這種相機(jī)所拍攝的物體具有近小遠(yuǎn)大的比例關(guān)系和遠(yuǎn)景物體遮擋近景物體的消隱關(guān)系,光照模型為馮氏光源的共軛光源。圖2(c)為光場(chǎng)顯示過(guò)程的投影視景體。對(duì)比圖2(b)可知,除了光線(xiàn)傳播方向相反外,圖2(c)的投影參數(shù)與圖2(b)完全相同。所以利用共軛透視相機(jī)可以直接獲得與顯示參數(shù)匹配的光場(chǎng)圖像。通常,光場(chǎng)圖像包含多個(gè)共軛透視投影相機(jī)渲染的圖像單元。其各個(gè)單元的圖像內(nèi)容和位置坐標(biāo)與投影顯示單元的圖像內(nèi)容和位置坐標(biāo)一一對(duì)應(yīng),所以利用共軛相機(jī)記錄的光場(chǎng)圖像可以省去圖像編碼步驟,直接輸入顯示系統(tǒng)合成3D 圖像。
隨著相機(jī)陣列規(guī)模的擴(kuò)大,所需計(jì)算的共軛透視投影圖像的數(shù)量也快速增加。為提升渲染效率,利用相鄰共軛相機(jī)之間的透視相關(guān)性對(duì)渲染過(guò)程進(jìn)行了加速。透視相關(guān)性描述的是一種從不同位置觀(guān)察到的靜態(tài)場(chǎng)景的圖像之間的相似性。這種相似性源于場(chǎng)景的幾何形態(tài)和紋理的變化與相機(jī)的位置之間存在的映射關(guān)系,這種關(guān)系在極平面坐標(biāo)系中更為明確[15]。
如圖3,對(duì)于空間中的一個(gè)3D 物點(diǎn)v0或者v1,其在相機(jī)陣列的像平面上記錄的多視點(diǎn)圖像在極平面坐標(biāo)系中可以用一條斜率為k的直線(xiàn)段進(jìn)行描述。其中k由物點(diǎn)的深度和相機(jī)的焦距確定。線(xiàn)段的兩個(gè)端點(diǎn)由左右兩個(gè)端點(diǎn)相機(jī)記錄的該點(diǎn)的圖像的坐標(biāo)確定。對(duì)于3D 空間中由v0和v1定義的一條直線(xiàn)段,其在相機(jī)陣列中記錄的圖像在極平面坐標(biāo)系中可以表示為由兩條不同斜率的直線(xiàn)和兩條邊緣平行線(xiàn)圍成的陰影區(qū)域,如圖3(c)。對(duì)于3D 空間中的多邊形,可以根據(jù)掃描線(xiàn)將其切割成一系列直線(xiàn)段,每一個(gè)直線(xiàn)段將在極平面坐標(biāo)系中形成一個(gè)類(lèi)似的陰影區(qū)域,這個(gè)區(qū)域定義為多邊形切片軌跡(Polygon Slice Track,PST)。根據(jù)上述映射關(guān)系利用對(duì)PST 的插值來(lái)代替矢量運(yùn)算從而加速光場(chǎng)圖像的渲染。
圖3 極平面坐標(biāo)系中三維物體的透視相關(guān)性Fig.3 Perspective coherence of three-dimensional objects in polar plane coordinate system
根據(jù)正常相機(jī)和共軛相機(jī)的深度映射關(guān)系和相鄰共軛相機(jī)間的透視相關(guān)性,利用應(yīng)用程序接口OpenGL 設(shè)計(jì)了一套基于共軛相機(jī)的透視相關(guān)性的渲染管線(xiàn),如圖4 所示,稱(chēng)之為共軛多視點(diǎn)渲染(Conjugate Multiple Viewpoint Rendering,CMVR)算法。該算法首先讀取3D 模型數(shù)據(jù),利用頂點(diǎn)緩沖對(duì)象(Vertex Buffer Objects,VBO)技術(shù)存儲(chǔ)解析后的模型的頂點(diǎn)數(shù)據(jù)(包括位置坐標(biāo)、索引坐標(biāo)、紋理坐標(biāo)、法向量等)。利用頂點(diǎn)著色器將頂點(diǎn)數(shù)據(jù)組裝成三角形傳入幾何著色器。在幾何著色器中將同一組三角形對(duì)象根據(jù)左右相機(jī)參數(shù)進(jìn)行坐標(biāo)系轉(zhuǎn)換,使其在屏幕坐標(biāo)系下生成兩組三角形對(duì)象,并將轉(zhuǎn)換后的兩組三角形對(duì)象的數(shù)據(jù)通過(guò)變換反饋技術(shù)(Transform Feedback,TFB)直接映射到本地端。接下來(lái)在本地端利用掃描線(xiàn)算法將三角形進(jìn)行切片處理,并根據(jù)掃描線(xiàn)的y值將三角形切片添加到掃描線(xiàn)切片列表中。當(dāng)所有三角形完成掃描線(xiàn)切片處理后,需要根據(jù)掃描線(xiàn)從下往上的方向?qū)η衅斜磉M(jìn)行排序處理。當(dāng)一行掃描線(xiàn)排序完成后,直接將當(dāng)前掃描線(xiàn)的數(shù)據(jù)利用VBO 技術(shù)直接傳遞給頂點(diǎn)著色器,在歸一化坐標(biāo)系(Normalized Device Coordinates,NDC)下將其組裝成線(xiàn)段供后續(xù)生成PST 使用。這樣做的好處是不需要保存所有掃描線(xiàn)切片列表的數(shù)據(jù),不僅節(jié)省了內(nèi)存硬件資源,也充分發(fā)揮了中央處理器(Central Progressing Unit,CPU)和GPU 之間的交互優(yōu)勢(shì),從而提升了算法的渲染效率。之后利用幾何著色器可生成新頂點(diǎn)的特性,根據(jù)透視相關(guān)性將頂點(diǎn)著色器傳入的線(xiàn)段切片端點(diǎn)v0和v1轉(zhuǎn)換成斜率為kv0和kv1的兩條直線(xiàn),其中斜率為kv0的直線(xiàn)的端點(diǎn)為v0R、v0L,斜率為kv1的直線(xiàn)的端點(diǎn)為v1R、v1L。當(dāng)PST 的四個(gè)頂點(diǎn)v0R、v0L、v1R和v1L生成后,將其組裝成三角形傳入片段著色器,并利用幀緩沖區(qū)(Frame buffer Objects,F(xiàn)BO)對(duì)PST 進(jìn)行離屏光柵化渲染。使用FBO 技術(shù)可以拓展默認(rèn)幀緩沖區(qū)的大小限制。當(dāng)掃描線(xiàn)切片列表中一條掃描線(xiàn)上所有的切片生成的PST在FBO1中光柵化完成后,得到當(dāng)前掃描線(xiàn)在極平面坐標(biāo)系下的極平面圖像(Epipolar Plane Image,EPI)。最后根據(jù)EPI 在光場(chǎng)圖中的位置將其傳入到FBO2,當(dāng)所有的掃描線(xiàn)完成EPI 的渲染并傳入FBO2后,就可將FBO2中得到的光場(chǎng)圖輸出到光場(chǎng)顯示設(shè)備實(shí)現(xiàn)3D 顯示。
圖4 基于共軛透視相關(guān)性的CMVR 算法的渲染管線(xiàn)流程Fig.4 Rendering pipeline flow of CMVR algorithm using conjugate perspective coherence
為了驗(yàn)證共軛透視相機(jī)的渲染效果,首先設(shè)計(jì)了單視角渲染實(shí)驗(yàn)。如圖5,所渲染的對(duì)象是一個(gè)賽車(chē)模型,渲染的分辨率為222×222。圖5(a)、(b)分別是傳統(tǒng)透視相機(jī)和共軛透視相機(jī)渲染的圖像。經(jīng)對(duì)比可知,圖5(a)具有正透視投影效果。最明顯的特征是相機(jī)拍攝到的是靠近相機(jī)一側(cè)的車(chē)門(mén)和車(chē)輪,即近景遮擋遠(yuǎn)景。而且靠近相機(jī)近裁剪面的車(chē)輪(左)大于遠(yuǎn)離相機(jī)近裁剪面的車(chē)輪(右),即近大遠(yuǎn)小。圖5(b)則相反。相機(jī)拍攝到的是遠(yuǎn)離相機(jī)一側(cè)的車(chē)門(mén)和車(chē)輪,包括圖5(a)中被遮擋的車(chē)尾和尾翼,即遠(yuǎn)景遮擋近景。而且靠近相機(jī)遠(yuǎn)裁剪面的車(chē)輪(右)小于遠(yuǎn)離相機(jī)遠(yuǎn)裁剪面的車(chē)輪(左),即近小遠(yuǎn)大。圖中的光照模型采用無(wú)限遠(yuǎn)光源。圖5(a)中的光線(xiàn)從靠近相機(jī)的一側(cè)射向遠(yuǎn)離相機(jī)的一側(cè)。圖5(b)中的光線(xiàn)是其共軛方向,即從遠(yuǎn)離相機(jī)的一側(cè)射向相機(jī)。上述特征說(shuō)明了共軛相機(jī)的有效性。
圖5 單視角渲染結(jié)果Fig.5 Single view rendering results
利用透視相關(guān)性可以加速光場(chǎng)圖像的渲染。為驗(yàn)證渲染算法的有效性,對(duì)圖5 中的車(chē)模型利用圖4 所示算法進(jìn)行了光場(chǎng)圖像的渲染實(shí)驗(yàn)。渲染結(jié)果如圖6。圖6(a)是其中一條掃描線(xiàn)的EPI 圖像。該圖由許多不同斜率的直線(xiàn)段構(gòu)成,每一條直線(xiàn)段都記錄了一個(gè)具有一定深度的3D 物點(diǎn),很好地體現(xiàn)出了相機(jī)之間的透視相關(guān)性。圖中的插圖分別為左右兩邊白色方框區(qū)域的放大圖,可以清楚地觀(guān)察到圖像由暗到明的漸變過(guò)程,說(shuō)明所提算法可以較好地渲染光照陰影效果。圖6(b)為利用CMVR 算法渲染的由18×10 個(gè)單元構(gòu)成的基元圖陣列(Elemental Image Arrays,EIA)形成的光場(chǎng)圖,右上角的插圖為白色方框區(qū)域的放大圖,該插圖與圖5(b)所示的視圖具有相同的視點(diǎn)、相同的分辨率和相同的相機(jī)參數(shù)。不同的是圖5(b)是由OpenGL 的渲染管線(xiàn)渲染的結(jié)果。為了定量評(píng)估渲染質(zhì)量,以圖5(b)為基準(zhǔn)計(jì)算了兩者的結(jié)構(gòu)相似度(Structure Similarity Index Measure,SSIM)。SSIM 是一種衡量?jī)煞鶊D像相似程度的指標(biāo),取值區(qū)間為0 到1,越接近1 說(shuō)明兩者差別越小,圖像質(zhì)量越高。結(jié)果顯示兩者之間的結(jié)構(gòu)相似度達(dá)到了0.94,說(shuō)明CMVR算法可以獲得與基于商業(yè)應(yīng)用程序接口的渲染管線(xiàn)相媲美的效果,很好地證明了CMVR 算法的有效性。
圖6 車(chē)模型的光場(chǎng)圖像渲染結(jié)果Fig.6 Rendering results of the light field image of the car model
為了驗(yàn)證光場(chǎng)圖的實(shí)際顯示效果的正確性,將光場(chǎng)圖輸入到如圖7 所示的光場(chǎng)顯示系統(tǒng)進(jìn)行顯示實(shí)驗(yàn)。該顯示系統(tǒng)主要由光源、LCD 顯示屏幕、透鏡陣列、散射屏構(gòu)成。光場(chǎng)顯示系統(tǒng)的具體參數(shù)如表1。其3D 顯示效果如圖8,其中圖8(a)~(e)分別顯示了3D 圖像的左、中、右、上、下五個(gè)視角的觀(guān)察效果。結(jié)果顯示3D圖像具有很好的水平視差和垂直視差,光場(chǎng)圖通過(guò)顯示系統(tǒng)在空間中合成了正確的3D 圖像,且具有良好的立體效果,證明了所提算法的正確性。
表1 顯示設(shè)備參數(shù)Table 1 Display device parameters
圖7 實(shí)驗(yàn)顯示系統(tǒng)與光路Fig.7 Experimental display system and light path
圖8 三維圖像的左、中、右、上、下五個(gè)視角的觀(guān)察效果Fig.8 Five perspective views of left, middle, right, top and bottom of the 3D image
所提算法在可編程O(píng)penGL 圖形渲染管線(xiàn)的基礎(chǔ)上,利用CPU 和GPU 之間的交互技術(shù)實(shí)現(xiàn)了多視點(diǎn)渲染,充分發(fā)揮了硬件優(yōu)勢(shì),大幅提高了渲染效率。為證明算法的效率優(yōu)勢(shì),將本算法與傳統(tǒng)SVR 算法進(jìn)行了比較,設(shè)計(jì)了兩個(gè)渲染實(shí)驗(yàn)。實(shí)驗(yàn)所用的個(gè)人電腦配置了Intel(R)Core(TM)i7-10510U CPU@1.80 GHz,8.00 GB RAM 和NVIDIA GeForce MX250 圖形顯卡。為了更清楚地分析兩種算法的渲染效率,主要對(duì)比了兩種算法的核心計(jì)算過(guò)程所需要的時(shí)間,實(shí)驗(yàn)中統(tǒng)計(jì)的時(shí)間不包含讀取模型的時(shí)間和保存渲染結(jié)果的時(shí)間,理論上兩種算法讀取同一模型和保存相同的數(shù)據(jù)所需要的時(shí)間是一樣的。
實(shí)驗(yàn)一測(cè)試了兩種算法對(duì)相同復(fù)雜度的幾何模型不同視點(diǎn)數(shù)目的光場(chǎng)圖的渲染性能,對(duì)比渲染時(shí)間隨著渲染視點(diǎn)數(shù)目變化而變化的趨勢(shì)。實(shí)驗(yàn)選用的Ball 模型包括55 140 個(gè)三角形、29 189 個(gè)頂點(diǎn)。如圖9 所示,通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),和預(yù)期一樣SVR 算法的渲染時(shí)間隨著視點(diǎn)數(shù)的增加而線(xiàn)性增加。但是利用其渲染不同分辨率的圖像所需的時(shí)間幾乎不發(fā)生變化,也就是說(shuō)SVR 算法對(duì)圖像分辨率不敏感。對(duì)于CMVR 算法,當(dāng)圖像分辨率一定時(shí),其渲染時(shí)間隨著視點(diǎn)數(shù)的增加而幾乎不變。因?yàn)橛蓡我朁c(diǎn)渲染實(shí)驗(yàn)對(duì)圖像分辨率不敏感的特性可知,在相同的條件下,光柵化不同分辨率的PST 的時(shí)間也幾乎是一個(gè)定值。即所提算法的渲染時(shí)間對(duì)視點(diǎn)數(shù)目不敏感,有利于密集視點(diǎn)光場(chǎng)圖的渲染。當(dāng)視點(diǎn)數(shù)目一定時(shí),CMVR 算法所需時(shí)間隨著圖像分辨的增加而增加。這是由于CMVR 算法需要將三角形處理成多邊形切片,當(dāng)分辨率增大時(shí),同一個(gè)三角形需要處理的切片數(shù)會(huì)增加,切片處理的時(shí)間隨之增加。因此CMVR 算法是受分辨率影響的。當(dāng)光柵化PST 減少的時(shí)間等于切片支出的時(shí)間時(shí),達(dá)到收支平衡,之后CMVR 算法開(kāi)始發(fā)揮出算法優(yōu)勢(shì)。
圖9 同一模型不同分辨率條件下兩種算法的渲染時(shí)間與視點(diǎn)數(shù)目的關(guān)系Fig.9 The relationship between the rendering time of the two algorithms and the number of viewpoints under the condition of different resolutions of the same model
實(shí)驗(yàn)二測(cè)試了兩種算法對(duì)相同圖像分辨率不同復(fù)雜度的幾何模型的渲染性能,同樣測(cè)試渲染時(shí)間隨著渲染視點(diǎn)數(shù)目變化而變化的趨勢(shì)。實(shí)驗(yàn)選用的car 模型包括5 207 個(gè)三角形、2 907 個(gè)頂點(diǎn),heart 模型包括14 979 個(gè)三角形、8 242 個(gè)頂點(diǎn),ball 模型的參數(shù)和實(shí)驗(yàn)一相同。如圖10 所示,對(duì)于SVR 算法,在相同圖像分辨率的情況下,對(duì)于所有不同的視點(diǎn)數(shù)目,算法所需的時(shí)間都隨著模型中頂點(diǎn)數(shù)量和三角形面片數(shù)量的增加而增加。因?yàn)殡S著模型復(fù)雜度的增加,所需的坐標(biāo)變換和光柵化等相關(guān)的計(jì)算量將隨之增加。故SVR 算法受模型復(fù)雜度的影響。對(duì)于CMVR 算法,在相同圖像分辨率的情況下,對(duì)于所有不同的視點(diǎn)數(shù)目,算法所需時(shí)間同樣都隨著模型復(fù)雜度的提高而增加。故CMVR 算法也受模型復(fù)雜度的影響。因?yàn)槿切蚊嫫脑黾訒?huì)導(dǎo)致需要處理的切片數(shù)量增加,所以切片的時(shí)間出現(xiàn)一定程度的增加,但是由于光柵化PST 的時(shí)間對(duì)視點(diǎn)數(shù)目不敏感,所以其渲染時(shí)間隨著視點(diǎn)變化基本趨于穩(wěn)定。同樣當(dāng)光柵化PST 減少的時(shí)間等于切片支出的時(shí)間時(shí),達(dá)到收支平衡。所以對(duì)于不同復(fù)雜度的模型,兩種算法的交點(diǎn)不同,也就是收支平衡點(diǎn)不同。過(guò)了平衡點(diǎn)之后,CMVR 算法繼續(xù)開(kāi)始發(fā)揮出算法優(yōu)勢(shì)。
圖10 不同模型同一分辨率條件下兩種算法的渲染時(shí)間與視點(diǎn)數(shù)目的關(guān)系Fig.10 The relationship between the rendering time of the two algorithms and the number of viewpoints under the condition of different models and the same resolution
本文提出并驗(yàn)證了一種基于共軛透視相關(guān)相機(jī)的光場(chǎng)圖像渲染方法。利用正常透視相機(jī)和共軛透視相機(jī)之間的深度映射關(guān)系省去了傳統(tǒng)光場(chǎng)圖生成過(guò)程中的圖像編碼流程,實(shí)現(xiàn)了深度正確的光場(chǎng)圖像的一步渲染。在此基礎(chǔ)上利用共軛透視相機(jī)之間的透視相關(guān)性進(jìn)一步提高了光場(chǎng)圖的生成效率。結(jié)合CPU 和GPU 混合編程技術(shù),利用可編程的OpenGL 圖形渲染管線(xiàn)實(shí)現(xiàn)了所提出的CMVR 算法。通過(guò)兩組對(duì)比實(shí)驗(yàn)證明CMVR 算法對(duì)視點(diǎn)數(shù)目不敏感,特別適合超多視點(diǎn)光場(chǎng)圖的生成。而且這種算法能夠兼容圖形學(xué)中的紋理、光照等技術(shù)實(shí)現(xiàn)逼真的渲染效果。最后利用自行搭建的光場(chǎng)顯示系統(tǒng)合成了虛擬模型的3D 圖像,其具有良好立體效果。所提出的CMVR 算法在提高渲染效率的同時(shí)可以實(shí)現(xiàn)逼真場(chǎng)景的渲染和顯示,有望在光場(chǎng)顯示領(lǐng)域推廣應(yīng)用。