郎思祺,陳純毅,申忠業,胡小娟,于海洋
(長春理工大學 計算機科學技術學院,長春 130022)
蒙特卡羅路徑追蹤算法能夠渲染出具有真實感的三維場景圖像,但由于其方差收斂速度慢導致在低采樣率下會產生嚴重的噪聲問題.圖像去噪算法可以有效降低結果圖像中的噪聲[1,2],但在去噪的過程中往往會造成圖像細節的丟失,因此如何在短時間內進行去噪的同時盡可能保留圖像細節是圖形學中研究的熱點問題.
Rousselle等[3]利用非局部均值濾波器對圖像進行平滑去噪,但由于缺乏對場景特征信息的考量,導致結果圖像的細節存在一定程度缺失.一些方法根據從噪聲圖像中獲取的信息來設置濾波器參數,如深度、法線或反照率等輔助特征,這些額外的信息可以用于指導非局部均值濾波器和雙邊濾波器重構圖像.Yang等[4]對反照率特征圖進行預濾波,再通過結構相似性改進非局部均值濾波器權值,有效保留了結果圖像的細節,但在復雜場景下其算法的去噪效果不夠理想.Cao等[5]提出一種利用排序聚類的局部濾波框架,有效解決了去噪過程中的邊緣模糊問題.
為了進一步提升去噪效果,自適應渲染算法被提出[6],通過優化采樣點的分布并重構像素光照值,有效提升了結果圖像質量.Liu等[7]使用SURE作為無參考誤差估計度量,能夠較為準確地分配樣本,但由于濾波過平滑導致細節損失嚴重.Xing[8]通過估算相對均方誤差來指導自適應采樣,但由于誤差度量方法不夠先進導致沒有使去噪效果達到最優.Liu等[9]通過基于特征的重構來去除蒙特卡羅噪聲,但耗時較長.Xing[10]通過神經網絡預測濾波器最優重構參數,使最終圖像質量大幅提升,但其沒有考慮特征圖中的噪聲傳遞問題.Kuznetsov等[11]利用神經網絡預測采樣密度圖引導自適應采樣,但需要花費大量時間來訓練模型.Hasselgren等[12]將實時去噪與自適應采樣相結合,保護了高頻區域的圖像細節,獲得了高保真的渲染結果.
Xin等[13]利用深度卷積網絡對蒙特卡羅噪聲圖像進行快速重構,但在低采樣樣本下不能很好地保留場景細節,容易造成圖像模糊.Iik等[14]提出的深度學習方法有效減少了訓練時間,并能夠以每像素1個采樣點引導路徑追蹤算法.Gharbi等[15]提出一種新穎的樣本噴濺方法,雖然計算成本和存儲空間較大,但獲得了更好的結果.Huo等[16]提出兩個網絡分別用于指導自適應采樣和濾波重構,但在鏡面材質下去噪效果一般.Firmino等[17]通過SURE作為誤差估計度量,結合去噪后的圖像和原噪聲圖像進一步去噪,取得了不錯的效果.Fan等[18]提出了一種以實時幀速率對低采樣數下蒙特卡羅路徑追蹤圖像去噪的方法,大幅降低了去噪時間,但其算法占用的內存空間較大.Lin等[19]提出了一種新的去噪管道,通過處理3個尺度特征(像素、樣本和路徑)以保留清晰的圖像細節.Zheng等[20]提出一種集成去噪技術,結合了多個單獨的蒙特卡羅去噪器,但其算法效率較低.Yu等[21]提出了一種基于自我注意的蒙特卡羅去噪深度學習網絡,利用輔助特征引導自我注意機制進行圖像去噪.
上述去噪算法主要存在以下問題:在復雜場景下特征圖存在大量噪聲,由于缺少對特征圖的預處理導致噪聲傳遞到結果圖像;濾波重構階段運算時間長且濾波器收斂速度慢,無法在短時間內重構出具有高質量紋理細節的結果圖像.針對上述問題,本文提出一種視覺驅動梯度域濾波重構的自適應渲染算法.利用引導濾波器對特征圖進行預濾波,有效降低由于特征圖造成的噪聲傳遞問題;在濾波重構階段利用人眼視覺感知的局限性來降低算法消耗,通過顯著性閾值判斷,在人眼熱衷于觀看的區域利用改進后的雙邊濾波器進行濾波重構,非顯著區域利用均值濾波器重構,能夠在不降低圖像視覺觀看質量的同時有效提升算法效率.
本文提出的自適應渲染算法流程圖如圖1所示.其中算法的關鍵步驟為濾波重構階段和自適應采樣階段.濾波重構階段通過濾波器平滑濾波去除圖像噪聲,在數學上表現為降低均方誤差,濾波重構的關鍵是為濾波器設置合適的重構參數,通常重構參數越大去噪效果越好,但容易造成紋理細節的丟失,所以重構階段的關鍵是在去除噪聲和保留細節之間取得平衡.自適應采樣階段通過增加誤差較大區域的采樣樣本數目來去除圖像噪聲,對于邊角等高頻區域的像素分配更多樣本,使其在降低噪聲的同時保留圖像細節.

圖1 本文算法流程圖Fig.1 Flow diagram of the proposed algorithm
具體實施步驟如下:
步驟1.預渲染.利用蒙特卡羅路徑追蹤算法生成每像素采樣少量樣本的粗圖像,該階段獲取到的圖像含有大量噪聲,將此圖像作為算法的輸入;
步驟2.特征提取及預處理.從上一階段渲染的粗圖像中提取深度、法線、紋理等特征,同時對特征圖進行預濾波;
步驟3.濾波重構并計算誤差度量值.獲取圖像的視覺顯著性信息來驅動濾波器的選擇,對噪聲圖像進行濾波重構以去除噪聲,然后估計當前像素值和真實值的誤差;
步驟4.自適應分配樣本.根據像素誤差水平在每像素分配相應的采樣樣本;
步驟5.判斷是否還有剩余的樣本,如果沒有則結束渲染流程輸出結果圖像,否則繼續投射樣本進行渲染.
特征圖可以用于指導濾波器重構圖像,但在含有諸如運動模糊、景深等復雜渲染區域的場景下特征圖會產生大量噪聲.圖2展示了不同場景下的幾種特征圖,其中包括深度圖、法向量圖和紋理圖,可以看到特征圖在場景紋理細節豐富的區域含有較多噪聲.為了減少特征圖中噪聲對最終重構結果的影響,本文利用特征圖獲取到的梯度圖作為引導濾波器的引導圖,通過引導濾波器對初始探索場景得到的特征圖像進行預濾波.

圖2 特征圖和全局梯度圖Fig.2 Characteristic graph and global gradient graph
首先利用Sobel算子求出特征圖的局部梯度圖,然后將每個特征圖的局部梯度圖像gk歸一化后取最大值得到全局梯度圖像g,如公式(1)所示:
(1)

利用全局梯度圖像g作為引導濾波器的引導圖,對原始含噪特征圖進行預濾波.引導濾波器是一種用于保護邊緣細節的平滑濾波器,能夠有效去除含噪圖像噪聲,引導濾波器把窗口中的每個像素i都看作是引導圖像I在相同位置上的線性變化,公式上可以表示為[4]:
(2)


圖3 特征預處理Fig.3 Feature pre filtering
在濾波重構階段開始前,首先獲取圖像的視覺顯著性信息.視覺顯著性是指在某一場景中的元素吸引人眼注意力能力的強弱.本文采用RC算法對圖像進行顯著性檢測,圖4展示了不同場景下的顯著性圖.本文通過顯著性閾值過濾出顯著區域和非顯著區域,對于顯著性閾值的設置過大會使得到的顯著區域過小導致最終結果圖像細節描繪不佳;而顯著性閾值過小則會使顯著區域過大導致算法去噪的運算效率降低,經實驗將顯著性閾值t設置為0.1.

圖4 不同場景下的顯著性圖Fig.4 Saliency map under different scenes
對于篩選出的顯著區域即人眼視覺熱衷于關注的區域采用雙邊濾波器進行濾波重構,雙邊濾波器考慮了像素之間的距離關系和顏色值差異,使其能夠保留圖像的邊緣高頻信息.其中雙邊濾波器的參數wij定義為[8]:
(3)

(4)

(5)
與法向量或深度等其他特征相比,梯度特征與真實情況更為接近,能夠提取到更多細節,同時如果濾波器在梯度域收斂,則改進的雙邊濾波器在其他空間域也接近收斂.基于以上結論,本文引入梯度信息來加快濾波器的收斂速度以提高算法效率,使整個渲染算法能在更低的樣本下獲取到更高質量的結果圖像.
首先利用Sobel算子獲取圖像的梯度信息,再利用求得的梯度信息來改進雙邊濾波器,結合公式(3)和公式(5)可得:
i=
(6)

(7)

(8)
根據指數函數的泰勒級數展開,可將公式(8)改寫為:
(9)

在非顯著區域采用運算速度快的均值濾波器進行圖像濾波重構,均值濾波的公式如:
(10)

(11)
圖5所示是本文算法在濾波重構前后的對比圖,從框選區域標注的細節圖上可以看出,重構后結果圖像中的噪聲被有效移除,同時還保留了大量紋理細節.
自適應采樣階段通過對像素分配采樣樣本,能夠在進一步提升去噪效果的同時更好的表現圖像細節.在自適應采樣過程中,需要對估計的像素誤差值的準確率進行評估.使用SURE[17]來評估估計值和真實值之間的誤差:
(12)
(13)
其中wij表示基于濾波器的重構方法的參數,σc表示顏色域中樣本的標準差.最后像素的誤差度量值定義為:
(14)
式中ε設為0.01防止除零.由于人眼視覺系統在較黑暗的地方對噪聲更為敏感,所以在分母中加入光照值的平方,使更多樣本分配到黑暗區域.同時設置誤差度量值閾值,對誤差度量值不同的區域分配不同數目的樣本:
(15)
其中誤差度量值閾值φ{φ1,φ2,φ3}設置為{5×10-3,1×10-2,2×10-2},每像素可能分配到的采樣數α{α1,α2,α3,α4}分別設置為{1,2,4,8}.通過誤差度量值閾值判斷可以使每次迭代過程中將更多采樣樣本分配到誤差較大的區域,有效提升了去噪效率.
圖6展示了不同場景下的采樣點密度圖,可以看到在邊緣高頻區域的亮度更高,表示分配到了更多的樣本,從結果圖像可以看出,亮度更高的邊緣高頻區域渲染效果更好,紋理細節更為豐富.
實驗利用PBRT平臺進行渲染,實驗環境為Intel(R)Core(TM)-8700@3.20GHzCPU,8GB內存,測試場景選擇PBRT平臺官方通用場景.本文與傳統蒙特卡羅路徑追蹤渲染算法MC、多特征非局部均值濾波去噪算法MFNLM[4]和基于SURE的去噪算法PD[17]算法進行了對比.
公式(3)中σr指定為4,m設為3表示3種特征,其中法向量、紋理、和深度的標準差分別設為0.4、0.125和0.3.MFNLM算法以及PD算法的參數均遵照原文中提到的參數進行設置.評價標準是在同一采樣水平下的渲染結果圖像質量.其中客觀評價指標采用峰值信噪比PSNR(Peak Signal to Noise Ratio)和結構相似性SSIM(Structural Similarity),兩項指標數值越大越好.在算法效率方面,本文通過渲染時間來比較幾種算法的時間復雜度.
圖7所示為killeroos-moving場景的渲染結果對比圖,該場景分辨率為1024×1024.其中圖7(a)是本文算法的渲染結果,圖7(b)~圖7(e)是本文算法與其他算法的細節對比,所有方法均設置為每像素4個采樣點,圖7(f)參考圖像采用8192個采樣點.由于該場景中含有部分運動模糊區域,導致MC方法生成的圖像受噪聲影響嚴重,如圖7(b)所示MC算法的結果圖像產生了大量噪點,MFNLM算法利用結構相似性改進濾波器權值重構圖像,但是由于特征圖中的噪聲傳遞,導致圖7(c)結果圖像的去噪效果一般,PD算法的去噪效果優于MFNLM算法和MC算法,但在樣本較低的條件下無法處理高頻區域存在的噪聲問題.本文算法在濾波重構階段融合梯度信息進行濾波重構有效提高了結果圖像質量.表1展示了該場景下幾種算法的數據對比,MC算法由于存在大量噪聲,PSNR值很低,MFNLM算法和PD算法的PSNR值有一定提升,但沒有達到最優,從表中可以看到本文算法的PSNR值最高且渲染時間最短,在相同采樣數下能高效地渲染出與參考圖像更為接近的結果圖像.

表1 killeroos-moving場景數據對比Table 1 Comparison of data for scene killeroos-moving

圖7 killeroos-moving場景Fig.7 Comparison for scene killeroos-moving
圖8所示為bluesphere場景的渲染結果對比,該場景分辨率為800×800.圖8(a)是本文算法的渲染結果,圖8(b)~圖8(e)是本文算法與其他算法的細節對比,所有算法均設置為每像素8個采樣點,圖8(f)參考圖像采用8192個采樣點.如圖8(b)所示MC算法存在尖銳的噪聲,圖8(c)中MFNLM算法會模糊圖像細節,圖8(d)中PD算法的細節圖可以看出,在球體上的黑色高頻邊緣部分,PD算法造成了較大的細節損失.本文算法首先經過特征圖預處理,解決了由于特征圖而產生的噪聲傳遞問題,大幅降低了圖像噪聲.表2展示了該場景下幾種算法的數據對比,MFNLM算法在重構過程中由于濾波過平滑導致紋理細節損失嚴重,SSIM值較低,本文算法的PSNR相比于PD算法有大幅提升,在算法效率方面,由于本文通過視覺顯著性信息劃分濾波重構區域使得算法效率獲得較大提升,相比于PD算法運行時間降低7.6%,在視覺效果上本文算法也比PD算法具有更好的觀感.

表2 bluesphere場景數據對比Table 2 Comparison of data for scene bluesphere

圖8 bluesphere場景Fig.8 Comparison for scene bluesphere
圖9所示為teapot-metal場景的渲染結果對比,該場景分辨率為800×800.圖9(a)是本文算法的渲染結果,圖9(b)~圖9(e)是本文算法與其他算法的細節對比,所有算法均設置為每像素8個采樣點,圖9(f)參考圖像采用8192個采樣點.該場景的茶壺和地面紋理效果較為復雜,容易丟失細節.從圖9(c)細節框圖中可以看出,MFNLM算法在該場景下不能很好地表現出地面紋理細節,從圖9(d)中看到PD算法在茶壺把手位置產生了尖銳噪聲,且無法表現出優質的光照效果.MFNLM算法和PD算法由于缺少特征圖預處理,所以在高頻區域存在明顯噪聲.從圖9(e)中可以看到本文算法的去噪效果優于其他算法,同時表現出優質的紋理細節,與參考圖像最為接近.表3展示了幾種算法的數據對比,其中MC算法PSNR值最低,結果圖像效果很差,MFNLM算法去噪效果一般,PSNR值比較低,在該場景下本文算法的PSNR值高于PD算法,SSIM指標也有大幅提升,同時在渲染效率方面本文算法也優于其他算法.

表3 teapot-metal場景數據對比Table 3 Comparison of data for scene teapot-metal

圖9 teapot-metal場景Fig.9 Comparison for scene teapot-metal
本文算法雖然有效提升了渲染效率及質量,但也存在部分局限性.如圖9中teapot-metal場景的對比圖,PD算法對地面的描繪優于本文算法,其算法保留了更多地面紋理細節.通過更多實驗發現,在少部分場景下也同樣存在該問題,這是由于在視覺顯著性驅動濾波重構階段的區域劃分不夠優,部分復雜且視覺關注度較高的區域未能劃分為顯著區域,導致該部分區域僅通過均值濾波進行快速重構,雖然在算法效率上取得提升,但損失掉了部分紋理細節.在未來的工作中考慮通過深度學習的方法來劃分顯著區域以提升算法的魯棒性.
本文提出一種視覺驅動梯度域濾波重構的自適應渲染算法.首先通過引導濾波器對含噪特征圖進行預濾波以降低噪聲傳遞,然后利用視覺顯著性驅動融合梯度信息的雙邊濾波器對顯著區域進行高質量濾波重構,對于視覺顯著性較低區域進行快速均值濾波重構,最后使用SURE無偏估計作為誤差評價指標,引導更多采樣點分布在渲染復雜區域.實驗結果表明,本文算法能夠在短時間內渲染出具有高保真紋理細節的低噪聲圖像,本文算法在各項客觀評價指標上均優于所對比算法.