1. 程式人生 > >基於物理的渲染—HDR Tone Mapping

基於物理的渲染—HDR Tone Mapping

TE 包含 反射 HR AC ogr 轉換成 repr BE

在遊戲引擎渲染管線中,我們對於R、G、B通道顏色信息的數值範圍通常設置在[0,1]之間(或者是[0,255])。其中,0代表沒有光亮度,1代表顯示器能夠顯示的最大光亮度。這個表示方式雖然直接易懂,但它並不能反映真實世界中光亮度的情況。在真實世界的光照環境中,光亮強度有時候會超過顯示器能夠顯示的最大亮度。而且,人眼在觀察真實世界的物體時,會根據光照強度進行自我調節。因此,更加真實的渲染方式是讓顏色值超過1。這種光照計算方式或環境光照圖就是我們常常在遊戲引擎中看到的HDR(High Dynamic Range)光照或者HDR環境貼圖。但是,采用HDR渲染出來的亮度值會超過顯示器能夠顯示最大值。此時,我們需要將光照結果從HDR轉換為顯示器能夠正常顯示的LDR。這一過程我們通常稱之為Tone Mapping。下圖是Unity引擎對采用HDR渲染的圖片使用了Tone Mapping和沒有使用Tone Mapping的對比結果:

技術分享圖片
其中,上圖是沒有使用Tone Mapping的結果,下圖是使用了Tone Mapping的結果。可以看到,在沒有使用Tone Mapping的渲染結果中,有很大一部分像素的光亮度是超過了顯示器能夠顯示的最大值。在視覺上,這些地方變得過曝了。而在使用了Tone Mapping的渲染結果中,像素光亮度變得正常,視覺上也更加真實。

今天我們要介紹的這一篇論文是於2002年發表在Siggraph會議上的論文“Photographic Tone Reproduction for Digital Images”。這篇論文提出了一種新的Tone Mapping的方法,使得經過該方法轉換的結果從視覺上看起來更加接近真實世界的物體。首先,我們來看看這篇論文的結果圖,如下圖所示:

技術分享圖片
其中,左圖是采用線性縮放的結果,右圖是采用論文中的算法進行轉換的結果。可以看到,在簡單的線性縮放結果中,許多細節部分丟失了;而論文算法轉換的結果則很好地保留了圖像的細節部分。接下來,我們將對論文中的算法部分做詳細介紹。


一、初始光亮度映射

首先,文章作者對整個圖像做了一個光亮度的映射,其作用類似於設置相機的曝光。這一操作實際就是對每一個像素做固定縮放。根據前人對Tone Mapping的研究結論,論文作者認為光亮度的log平均值能夠反映圖片中像素光亮度的特征。因此,作者用該值對每個像素作縮放。

若用Lω(x,y)表示像素(x,y)的光亮度,則log平均值可表示為:

技術分享圖片

其中,N 表示像素個數,δ 是一個用於避免奇異值的常數。縮放後的光亮度 L(x,y) 可用如下公式表示:

技術分享圖片

其中,α 是一個縮放參數,被稱為Key Value,不同的 α 值對應了不同的縮放程度,如下圖所示:

技術分享圖片

但是,僅僅做簡單線性縮放是不夠的。對於光亮度變化不是很大的圖片,這種方法可以將像素的光亮度很好地壓縮到一定範圍,但是對於大多數圖片,絕大部分像素光亮度是在某一個範圍之內,而少數高亮的像素比平均值高太多,很容易產生過曝,如:光源、高光反射等。因此,通常在經過線性縮放之後,還需要利用非線性的算子對圖像進行處理。文中作者列舉了一種常用的算子:
技術分享圖片

其中,Ld(x,y)表示經過非線性算子處理後的像素,Lwhite表示圖片中被映射到白色亮度的像素中的最小值。由於是非線性的,對於亮度高的像素縮放更大,因此該公式能夠防止線性縮放中無法處理的過曝情況。但是,這種簡單的算子通常容易導致細節丟失。作者觀察到,在傳統打印技術中,為了提高打印結果的質量,通常會采用一種dodying-and-burning的方法。該方法的原理是根據打印內容的不同,在不同區域減少光亮度(dodying)或者增加光亮度(burning)。論文作者通過實驗,對比了簡單非線性映射以及dodying-and-burning處理後的結果,如下圖所示:
技術分享圖片

其中,上排圖片中太陽被樹枝遮擋住,因此不包含高亮的區域,下面的圖片則包含高光反射。左邊一列圖片同樣是采用簡單非線性算子(Simple Operator)縮放,經過觀察可以發現,下圖中的書中文字完全被高光覆蓋。由此可見,簡單的非線性算子縮放會丟失很多細節。

論文作者在經過觀察和測試之後,基於dodging-and-burning方法,提出了一種自適應的dodging-and-burning方法,下面我們將詳細說明。


二、自適應dodging-and-burning

自適應dodging-and-burning的特點是,找出對比度大的邊緣包圍的區域,然後對該區域進行處理。因此,作者提出利用高斯核卷積的方法來找出這些區域。對於不同的縮放系數 s,在不同的像素點(x,y),計算高斯核函數 Ri(x,y,s)與圖像 L(x,y)的卷積。則卷積結果 Vi(x,y,s)可表示為:

技術分享圖片

其中,Ri(x,y,s)可表示為:

技術分享圖片

然後,論文作者定義了一個誤差函數,計算不同 αi 參數的卷積結果之差,來衡量圖像局部像素的光亮度分布。則誤差函數 V 可以表示為:

技術分享圖片

通過對不同的縮放參數 s 進行計算,找出符合如下公式的參數:

技術分享圖片

其中,? 是一個閾值,sm 是對每個像素計算出的縮放參數。當我們獲得每一個像素的縮放參數後,對每一個像素進行不同的縮放計算:

技術分享圖片

從而獲得最終的Tone Mapping結果。下圖顯示了計算過程:
技術分享圖片

其中,左圖顯示了計算縮放參數的過程,Center表示內圈高斯計算的範圍,Surround表示外圈高斯計算的範圍。右圖顯示了用不同縮放參數進行縮放後的結果。通過觀察可以發下,當縮放太小時無法有效地提取出圖像細節,而縮放太大時會出現黑色的Artifacts。


三、實驗對比

論文作者將dodging-and-burning計算結果與前人的結果進行了對比實驗。如下圖所示:
技術分享圖片
技術分享圖片
技術分享圖片
其中,New operator表示了論文的實現結果。


四、總結

論文作者提出了一種新的Tone Mapping的算法,它通過對dodging-and-burning打印技術的觀察和分析,對於不同的區域采用不同的縮放系數,提出了自適應dodging-and-burning的方法,能夠將高動態圖轉換成低動態圖時防止高亮部分過曝,並且能達到在亮部和暗部都能保持細節的目的。


五、論文信息

作者信息:
Erik Reinhard,著名計算機圖形學學者,目前在Technicolor Research and Innovation做研究工作;
Michael Stark,計算機圖形學研究者,曾就讀於美國猶他大學;
Peter Shirley,著名計算機圖形學大牛,真實感渲染專家,猶他大學客座教授,NVidia首席科學家;
James Ferwerda,著名計算機圖形學學者,羅徹斯特理工學院副教授。

論文鏈接:
http://www.cmap.polytechnique.fr/~peyre/cours/x2005signal/hdr_photographic.pdf

這是侑虎科技第225篇原創文章,歡迎轉發分享,未經作者授權請勿轉載。如果您也有任何獨到的見解或者全新的發現也歡迎聯系我們,一起探討。(QQ群465082844)


關於惟學無際

【惟學無際】是UWA在2017年推出的全新研究型專欄,我們將為大家推薦極具實際價值的學術論文,並梳理其中的研究背景、實現原理和執行方法等。內容專註於遊戲、VR和AR相關的計算機圖形學領域。正所謂問渠哪得清如許,為有源頭活水來 ,希望大家在研發的過程中不僅知其然,還能知其所以然。

基於物理的渲染—HDR Tone Mapping