基於物理的渲染—HDR Tone Mapping

在遊戲引擎渲染管線中,咱們對於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的對比結果:git

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

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

請輸入圖片描述
其中,左圖是採用線性縮放的結果,右圖是採用論文中的算法進行轉換的結果。能夠看到,在簡單的線性縮放結果中,許多細節部分丟失了;而論文算法轉換的結果則很好地保留了圖像的細節部分。接下來,咱們將對論文中的算法部分作詳細介紹。函數


1、初始光亮度映射

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

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

請輸入圖片描述

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

請輸入圖片描述

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

請輸入圖片描述

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

其中,Ld(x,y)表示通過非線性算子處理後的像素,Lwhite表示圖片中被映射到白色亮度的像素中的最小值。因爲是非線性的,對於亮度高的像素縮放更大,所以該公式可以防止線性縮放中沒法處理的過曝狀況。可是,這種簡單的算子一般容易致使細節丟失。做者觀察到,在傳統打印技術中,爲了提升打印結果的質量,一般會採用一種dodying-and-burning的方法。該方法的原理是根據打印內容的不一樣,在不一樣區域減小光亮度(dodying)或者增長光亮度(burning)。論文做者經過實驗,對比了簡單非線性映射以及dodying-and-burning處理後的結果,以下圖所示:
請輸入圖片描述it

其中,上排圖片中太陽被樹枝遮擋住,所以不包含高亮的區域,下面的圖片則包含高光反射。左邊一列圖片一樣是採用簡單非線性算子(Simple Operator)縮放,通過觀察能夠發現,下圖中的書中文字徹底被高光覆蓋。因而可知,簡單的非線性算子縮放會丟失不少細節。

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


2、自適應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。


3、實驗對比

論文做者將dodging-and-burning計算結果與前人的結果進行了對比實驗。以下圖所示:
請輸入圖片描述
請輸入圖片描述
請輸入圖片描述
其中,New operator表示了論文的實現結果。


4、總結

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


5、論文信息

做者信息:
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相關的計算機圖形學領域。正所謂問渠哪得清如許,爲有源頭活水來 ,但願你們在研發的過程當中不只知其然,還能知其因此然。

相關文章
相關標籤/搜索