李學(xué)闊,溫佩賢,楊 林,方澤華,杜曉榮
(1.中山大學(xué) 物理學(xué)院,廣東 珠海 519000;2.金山網(wǎng)絡(luò)科技有限公司,廣東 珠海 519000)
近年來(lái),隨著游戲、影視、虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)等技術(shù)的發(fā)展,對(duì)計(jì)算機(jī)圖形質(zhì)量和渲染速度的要求也越來(lái)越高,如何使用有限的計(jì)算機(jī)硬件資源快速地渲染出復(fù)雜精細(xì)的場(chǎng)景、逼真的色彩和光影一直是計(jì)算機(jī)圖形學(xué)領(lǐng)域的研究熱門(mén)問(wèn)題。其中在全局光照模型的研究領(lǐng)域中,取得了不少成果。在早期的全局光照算法中,主要使用了文獻(xiàn)[1]中提到的光線(xiàn)追蹤算法,但該算法能表現(xiàn)鏡面反射或規(guī)則的折射光,追蹤漫反射光消耗大、效率低。在此之后,為了解決該算法的缺點(diǎn),研究人員不斷進(jìn)行改進(jìn),其中文獻(xiàn)[2]提出的基于蒙特卡洛概率隨機(jī)算法的光線(xiàn)追蹤,能夠從統(tǒng)計(jì)意義上很好地實(shí)現(xiàn)物體間漫反射的光照效果,然而只有當(dāng)采樣數(shù)為無(wú)限大時(shí),蒙特卡洛方法才是無(wú)誤差的,這將消耗大量的計(jì)算機(jī)硬件資源和時(shí)間。
隨著研究的不斷深入,越來(lái)越多的全局光照算法被提出,包括文獻(xiàn)[3-4]提到的輻射度算法,該算法可以實(shí)時(shí)計(jì)算面片形狀因子,但是對(duì)于面片數(shù)目較多的復(fù)雜場(chǎng)景,求解仍然非常耗時(shí)。文獻(xiàn)[5-6]提到的光子映射算法可以有效地模擬焦散結(jié)果,作為一種有偏方法,光子映射在有限的迭代次數(shù)或不合適的場(chǎng)景配置下,總存在偏差。文中提出了一種根據(jù)顏色采樣分布進(jìn)行降噪處理的優(yōu)化方法,該方法可以減少采樣數(shù),通過(guò)顏色采樣分布來(lái)有效去除噪聲,提高算法的性能以及畫(huà)面表現(xiàn)。
為了模擬真實(shí)的場(chǎng)景光照,傳統(tǒng)的光線(xiàn)追蹤算法被提出,它能夠有效地追蹤光線(xiàn)的運(yùn)動(dòng)軌跡,從而在屏幕上呈現(xiàn)出真實(shí)的渲染效果,但傳統(tǒng)的光線(xiàn)追蹤算法只能夠追蹤鏡面反射或規(guī)則的折射光,追蹤漫反射光消耗太大,效率低下,對(duì)輝映、焦散等效果不能很好地模擬。傳統(tǒng)光線(xiàn)追蹤算法流程如下所述:
(1)從視點(diǎn)出發(fā),經(jīng)過(guò)投影屏幕上的每一個(gè)像素點(diǎn)向場(chǎng)景發(fā)射一條虛擬的光線(xiàn),開(kāi)始進(jìn)入(2),若遞歸跟蹤返回不相交信息,則該像素點(diǎn)的顏色渲染為背景色;若遞歸跟蹤返回相交信息,該像素點(diǎn)的顏色即為遞歸跟蹤光線(xiàn)得到的顏色。
(2)進(jìn)入遞歸跟蹤,若遞歸深度超過(guò)預(yù)設(shè)閾值或者不和任何場(chǎng)景物體相交,則停止遞歸,返回不相交信息,否則求光線(xiàn)與場(chǎng)景物體最近的交點(diǎn),進(jìn)入(3)。
(3)根據(jù)當(dāng)前交點(diǎn)所在的物體表面材質(zhì)信息,計(jì)算其入射光線(xiàn),向其入射光線(xiàn)的反方向繼續(xù)跟蹤,若返回(2)繼續(xù)遞歸仍然相交,則該交點(diǎn)的顏色根據(jù)該點(diǎn)物體表面的反射率對(duì)該點(diǎn)自身顏色和遞歸得到的顏色加權(quán)得到;若返回(2)繼續(xù)遞歸不相交,則該交點(diǎn)的顏色為該點(diǎn)自身的顏色。
圖1展示了傳統(tǒng)光線(xiàn)追蹤算法的效果。
圖1 傳統(tǒng)光線(xiàn)追蹤渲染效果
傳統(tǒng)的光線(xiàn)追蹤算法有一些突出的缺點(diǎn),例如只能追蹤表面屬性單一情況下的光線(xiàn),不考慮漫反射等。于是有研究人員通過(guò)模型的修正來(lái)解決這些問(wèn)題,事實(shí)上一個(gè)物體表面的屬性通常以混合的形式存在,例如20%概率的光線(xiàn)會(huì)進(jìn)行鏡面反射,30%概率的光線(xiàn)會(huì)進(jìn)行折射,50%概率的光線(xiàn)會(huì)發(fā)生漫反射,通過(guò)蒙特卡洛采樣算法,每次按照概率決定光線(xiàn)的反射屬性,把半球積分方程進(jìn)行近似簡(jiǎn)化,能夠用少量相對(duì)重要的采樣來(lái)模擬積分。蒙特卡洛光線(xiàn)追蹤已經(jīng)是一個(gè)較為完備的渲染方案,它極大地解決了傳統(tǒng)光線(xiàn)追蹤的缺陷和效率問(wèn)題,相對(duì)于普通光線(xiàn)追蹤,蒙特卡洛光線(xiàn)追蹤引入了更為復(fù)雜的漫反射模型,增加了需要跟蹤的光線(xiàn)數(shù)量,但同時(shí)它使用的采樣算法減少了需要跟蹤的光線(xiàn)數(shù)量,其核心效率取決于其采樣模型。
渲染方程及其在計(jì)算機(jī)圖形學(xué)中的應(yīng)用在1986年被James Kajiya提出[7],蒙特卡洛光線(xiàn)追蹤也同時(shí)在該文章中被提出,作為一種數(shù)值計(jì)算方法來(lái)計(jì)算渲染方程積分。大概十年后,Lafortune對(duì)該方法提出了許多改進(jìn),包括雙向光線(xiàn)追蹤[8]。Eric Veach和Leonidas J. Guibas提出的Metropolis light transport[9]通過(guò)擾亂先前找到的光線(xiàn)路徑來(lái)提高在復(fù)雜場(chǎng)景的渲染效率。Delbracio M使用了一種resampling[10]的方式提高光線(xiàn)追蹤效果。Moon B等使用了圖像濾波[11]的方式,Bako S,Vogels T,Wong K M等人使用了時(shí)域?yàn)V波[12-14]的方式,Schied C和Chaitanya C R等人使用了深度學(xué)習(xí)[15-18]的方法去除噪聲。
基于顏色采樣分布降噪處理的蒙特卡洛光線(xiàn)追蹤算法是將降低蒙特卡洛采樣率后的噪聲圖像經(jīng)過(guò)像素點(diǎn)采樣、擴(kuò)展到像素塊、平均降噪等步驟,獲得降噪后的圖像,整體流程如圖2所示。
圖2 算法整體流程
不同于傳統(tǒng)圖像處理中的去除噪聲,在蒙特卡洛光線(xiàn)追蹤的渲染場(chǎng)景中,擁有更多的可用信息,每個(gè)像素點(diǎn)的顏色是通過(guò)多條光線(xiàn)的路徑追蹤計(jì)算出來(lái)的,場(chǎng)景中的幾何信息、光線(xiàn)路徑、光線(xiàn)與物體的碰撞等信息可用被存儲(chǔ)起來(lái),為去除噪聲提供有用信息。
正如Veach[19]指出的那樣,光線(xiàn)傳輸問(wèn)題可以用空間路徑來(lái)描述,全局光照可以通過(guò)計(jì)算光線(xiàn)傳輸?shù)拿織l路徑估量。在路徑積分公式中,每個(gè)像素的顏色
u(x)=(ur(x),ug(x),ub(x))
(1)
可以由
(2)
(3)
那么蒙特卡洛誤差n(x)可以表示為:
(4)
圖3截取了兩個(gè)rgb值有較大差異的像素點(diǎn),并畫(huà)出了它們的顏色分布圖,由于較強(qiáng)的光照,第一個(gè)像素點(diǎn)較亮,若僅僅對(duì)比像素點(diǎn)顏色,不可能將它們判斷為相似的像素點(diǎn),而通過(guò)結(jié)合了渲染采樣信息的顏色分布圖可以發(fā)現(xiàn),這兩個(gè)像素點(diǎn)其實(shí)有著共同的顏色分布特性,而這個(gè)結(jié)論不可能由通過(guò)對(duì)比它們的平均值得到。
圖3 像素顏色采樣分布
為了得到更好的效果,對(duì)比像素塊之間的相似度而不是通過(guò)對(duì)比單一像素的相似度,那么除噪將會(huì)通過(guò)平均相似像素塊的顏色來(lái)實(shí)現(xiàn),因此能夠得到更為柔和的除噪效果。給定在像素點(diǎn)x和像素點(diǎn)y的采樣顏色cx和cy,以及它們對(duì)應(yīng)的顏色分布h(x)=(h1(x),h2(x),…,hnB(x))和h(y)=(h1(y),h2(y),…,hnB(y)),可以基于卡方距離公式[20]做如下定義:
dχ2(Cx,Cy)=
(5)
其中,nx=∑ihi(x),ny=∑ihi(y)。k(x,y)為hi(x)+hi(y)中的非空顏色分布,以上表示的為像素點(diǎn)間的相似度距離,下面將其擴(kuò)展為邊長(zhǎng)為2ω+1的像素塊。
(6)
對(duì)于每個(gè)像素點(diǎn)x,定義Nk(x)為滿(mǎn)足dχ2(Px,Py)≤k的所有像素點(diǎn)y的集合,那么經(jīng)過(guò)除噪后的顏色可以表示為:
(7)
上式只對(duì)像素塊的中心點(diǎn)進(jìn)行平均,若要對(duì)整個(gè)像素塊進(jìn)行平均,則計(jì)算出除噪后的像素塊:
(8)
至此,已經(jīng)計(jì)算出除噪后的像素塊,再通過(guò)它來(lái)計(jì)算每個(gè)像素點(diǎn),因?yàn)槊總€(gè)像素塊包含2ω+1個(gè)像素,反過(guò)來(lái)每個(gè)像素點(diǎn)被2ω+1個(gè)像素塊所包含,那么最終的除噪圖像可以由下式得到:
(9)
基于前兩小節(jié)的闡述,可以得到程序的大體框架如算法1所示。
ALGORITHM 1:Single-Scale Ray Histogram Fusion
2:n←0 //auxiliary counter at each pixel in the image
3:for every pixelido
4:Pi←patch centered at pixeli
5:Wi←search window with sizebfor pixeli
6:c←0 andV←0
7: for everyj∈Wido
8:Qj←patch centered at pixelj
9:d←ChiSquareDistance(h(Pi),h(Qj))
10: ifd 12:c←c+1 13: end if 14: end for 15:V←V/c 16:n(Pi)←n(Pi)+1// +1 for each pixel inPi (Pi))./n(Pi) 18:end for 使用C++語(yǔ)言進(jìn)行程序編寫(xiě),實(shí)驗(yàn)運(yùn)行在以下環(huán)境:CPU Intel i7 主頻2.40 GHz,內(nèi)存8 G?;诿商乜宓墓饩€(xiàn)追蹤算法的采樣率決定了畫(huà)面質(zhì)量,當(dāng)物體表面屬于漫反射屬性時(shí),基于蒙特卡洛的光線(xiàn)追蹤算法向隨機(jī)方向發(fā)射一定數(shù)量的光線(xiàn)進(jìn)行采樣,光線(xiàn)的數(shù)量決定著畫(huà)面的真實(shí)度,發(fā)射的光線(xiàn)數(shù)量越多,效率越低,但畫(huà)面越真實(shí),而發(fā)射的光線(xiàn)數(shù)量越少,畫(huà)面失真越嚴(yán)重,噪聲越多。因此在實(shí)際應(yīng)用中,采樣率是一個(gè)需要調(diào)整平衡的重要參數(shù),通過(guò)調(diào)整采樣率來(lái)平衡實(shí)際渲染效果的性能和質(zhì)量。 峰值信噪比(PSNR)是一種評(píng)價(jià)圖像的有效標(biāo)準(zhǔn),它的公式為: (10) 其中n表示每個(gè)采樣值的比特?cái)?shù),MSE指的是Mean Square Error。PSNR的單位為dB。圖4根據(jù)采樣數(shù)與渲染耗時(shí)和PSNR的關(guān)系數(shù)據(jù)繪制,闡述了隨著每個(gè)像素點(diǎn)采樣數(shù)的增加,渲染耗時(shí)呈指數(shù)級(jí)增加,而畫(huà)面真實(shí)度逐漸提高。 圖4 采樣數(shù)(spp:sample per pixel)與渲染耗時(shí)和PSNR的關(guān)系 圖5中,球表面為100%漫反射屬性,圖5(a)只隨機(jī)發(fā)射一條光線(xiàn),圖5(b)隨機(jī)發(fā)射五條光線(xiàn),圖5(c)隨機(jī)發(fā)射二十條光線(xiàn)??梢园l(fā)現(xiàn),蒙特卡洛概率采樣方法的采樣率越高,渲染出來(lái)的圖像越接近真實(shí)場(chǎng)景,噪聲越低。 圖5 不同采樣率下的蒙特卡洛光線(xiàn)追蹤 圖6對(duì)比了固定8 spp下未除噪、非局部均值除噪、基于顏色分布除噪三種渲染效果。 圖6 未除噪、非局部均值除噪、基于顏色分布除噪的渲染效果對(duì)比 圖7根據(jù)未除噪、基于顏色分布除噪、非局部均值除噪三種情況下的PSNR進(jìn)行對(duì)比數(shù)據(jù)繪制,表明基于顏色分布的除噪方法能夠比非局部均值除噪算法更好地得到真實(shí)的渲染圖像。 圖7 未除噪、基于顏色分布除噪、非局部均值除噪的PSNR對(duì)比 在基于顏色分布的除噪方法中,隨著式子dχ2(Px,Py)≤k中k閾值的增大,除噪效果更為明顯。圖8分別列出k=0.1,k=0.3,k=0.7以及k=1.0的除噪效果(固定5 spp采樣率)。但隨著k的增大,過(guò)多的像素會(huì)被融合,因此得到的渲染圖像會(huì)趨于模糊,雖然像素顏色值的方差會(huì)減小,但k過(guò)大會(huì)引入新的誤差,導(dǎo)致MSE值反而變大。式(10)中的MSE可以化簡(jiǎn)為除噪后像素顏色值的方差加上除噪后的像素顏色偏差,如下式所示: 圖8 基于顏色分布的除噪效果 (11) 圖9 MSE與k的關(guān)系曲線(xiàn) 文中介紹了使用光線(xiàn)追蹤方法實(shí)現(xiàn)的全局光照算法,闡述了傳統(tǒng)的光線(xiàn)追蹤算法以及基于蒙特卡洛概率采樣算法的光線(xiàn)追蹤的優(yōu)缺點(diǎn),提出了一種基于顏色采樣分布降噪處理的蒙特卡洛光線(xiàn)追蹤的方法。在實(shí)驗(yàn)中通過(guò)設(shè)置不同的采樣率以及物體表面反射屬性占比,對(duì)比了不同情況下的渲染效果以及渲染效率。實(shí)驗(yàn)結(jié)果表明,使用基于顏色采樣分布降噪處理的蒙特卡洛光線(xiàn)追蹤的方法除噪效果更為明顯,可以在更小的采樣數(shù)下有效提升畫(huà)面表現(xiàn),從而提高整個(gè)算法的性能。3 實(shí)驗(yàn)及運(yùn)行結(jié)果
4 結(jié)束語(yǔ)