Tone Mapping


Tone Mapping原是攝影學中的一個術語,因為打印相片所能表現的亮度范圍不足以表現現實世界中的亮度域,而如果簡單的將真實世界的整個亮度域線性壓縮到照片所能表現的亮度域內,則會在明暗兩端同時丟失很多細節,這顯然不是所希望的效果,Tone Mapping就是為了克服這一情況而存在的,既然相片所能呈現的亮度域有限則我們可以根據所拍攝場景內的整體亮度通過光圈與曝光時間的長短來控制一個合適的亮度域,這樣既保證細節不丟失,也可以不使照片失真。人的眼睛也是相同的原理,這就是為什么當我們從一個明亮的環境突然到一個黑暗的環境時,可以從什么都看不見到慢慢可以適應周圍的亮度,所不同的是人眼是通過瞳孔來調節亮度域的。
    而這個問題同樣存在在計算機圖形上,為了讓圖像更真實的顯示在顯示器上,同樣需要Tone Mapping來輔助。
    整個Tone Mapping的過程就是首先要根據當前的場景推算出場景的平均亮度,再根據這個平均亮度選取一個合適的亮度域,再將整個場景映射到這個亮度域得到正確的結果。其中最重要的幾個參數:
    Middle grey:整個場景的平均灰度,關系到場景所應處在亮度域。
    Key:場景的Key將決定整個場景的亮度傾向,傾向偏亮亦或是偏暗。
    首先我們需要做的是計算出整個場景的平均亮度,有很多種計算平均亮度的方法,目前常用的的是使用log-average亮度來作為場景的平均亮度,通過下面的公式可以計算得到:
tone1
    其中Lw(x,y)是像素點x,y的亮度,N是場景內的像素數,δ是一個很小的數用來應對像素點純黑的情況。

tone2
tonekey     上面的公式用來映射亮度域,α即是前面所講的Key值,用來控制場景的亮度傾向,一般來說,會使用幾個特定的值,0.18是一個適中的Key,0.36或者0.72相對偏亮,0.09甚至0.045則是偏暗。完成映射的場景為了滿足計算機能顯示的范圍還要將亮度范圍再映射到[0,1]區間,可以通過下面的公式簡單的得到[0,1]區間的亮度。
tone3
    不過這樣得到的結果並不總是令人滿意的,所以一般擴展為如下面的公式,公式中的參數Lwhite用來控制場景中的曝光,凡是亮度超過Lwhite的像素都會被置為純白。如果Lwhite的值非常大,則這個參數在公式中將不起任何作用,如果非常小則場景將變為幾乎全白。Ld即為我們所要的映射后的x,y像素點的亮度值。
tone4
    Tone Mapping一般作為HDR算法中的一部分存在,在使用中會靈活很多,但基本的原理都是相同的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM