Tone Mapping
Tone Mapping
三月 10, 2011?BY?JIMMY·3 COMMENTS??? Tone Mapping原是攝影學(xué)中的一個(gè)術(shù)語(yǔ),因?yàn)榇蛴∠嗥鼙憩F(xiàn)的亮度范圍不足以表現(xiàn)現(xiàn)實(shí)世界中的亮度域,而如果簡(jiǎn)單的將真實(shí)世界的整個(gè)亮度域線性壓縮到照片所能表現(xiàn)的亮度域內(nèi),則會(huì)在明暗兩端同時(shí)丟失很多細(xì)節(jié),這顯然不是所希望的效果,Tone Mapping就是為了克服這一情況而存在的,既然相片所能呈現(xiàn)的亮度域有限則我們可以根據(jù)所拍攝場(chǎng)景內(nèi)的整體亮度通過(guò)光圈與曝光時(shí)間的長(zhǎng)短來(lái)控制一個(gè)合適的亮度域,這樣既保證細(xì)節(jié)不丟失,也可以不使照片失真。人的眼睛也是相同的原理,這就是為什么當(dāng)我們從一個(gè)明亮的環(huán)境突然到一個(gè)黑暗的環(huán)境時(shí),可以從什么都看不見(jiàn)到慢慢可以適應(yīng)周?chē)牧炼?#xff0c;所不同的是人眼是通過(guò)瞳孔來(lái)調(diào)節(jié)亮度域的。?
??? 而這個(gè)問(wèn)題同樣存在在計(jì)算機(jī)圖形上,為了讓圖像更真實(shí)的顯示在顯示器上,同樣需要Tone Mapping來(lái)輔助。?
??? 整個(gè)Tone Mapping的過(guò)程就是首先要根據(jù)當(dāng)前的場(chǎng)景推算出場(chǎng)景的平均亮度,再根據(jù)這個(gè)平均亮度選取一個(gè)合適的亮度域,再將整個(gè)場(chǎng)景映射到這個(gè)亮度域得到正確的結(jié)果。其中最重要的幾個(gè)參數(shù):?
??? Middle grey:整個(gè)場(chǎng)景的平均灰度,關(guān)系到場(chǎng)景所應(yīng)處在亮度域。?
??? Key:場(chǎng)景的Key將決定整個(gè)場(chǎng)景的亮度傾向,傾向偏亮亦或是偏暗。?
??? 首先我們需要做的是計(jì)算出整個(gè)場(chǎng)景的平均亮度,有很多種計(jì)算平均亮度的方法,目前常用的的是使用log-average亮度來(lái)作為場(chǎng)景的平均亮度,通過(guò)下面的公式可以計(jì)算得到:?
??? 其中Lw(x,y)是像素點(diǎn)x,y的亮度,N是場(chǎng)景內(nèi)的像素?cái)?shù),δ是一個(gè)很小的數(shù)用來(lái)應(yīng)對(duì)像素點(diǎn)純黑的情況。
???? 上面的公式用來(lái)映射亮度域,α即是前面所講的Key值,用來(lái)控制場(chǎng)景的亮度傾向,一般來(lái)說(shuō),會(huì)使用幾個(gè)特定的值,0.18是一個(gè)適中的Key,0.36或者0.72相對(duì)偏亮,0.09甚至0.045則是偏暗。完成映射的場(chǎng)景為了滿足計(jì)算機(jī)能顯示的范圍還要將亮度范圍再映射到[0,1]區(qū)間,可以通過(guò)下面的公式簡(jiǎn)單的得到[0,1]區(qū)間的亮度。?
??? 不過(guò)這樣得到的結(jié)果并不總是令人滿意的,所以一般擴(kuò)展為如下面的公式,公式中的參數(shù)Lwhite用來(lái)控制場(chǎng)景中的曝光,凡是亮度超過(guò)Lwhite的像素都會(huì)被置為純白。如果Lwhite的值非常大,則這個(gè)參數(shù)在公式中將不起任何作用,如果非常小則場(chǎng)景將變?yōu)閹缀跞住d即為我們所要的映射后的x,y像素點(diǎn)的亮度值。?
??? Tone Mapping一般作為HDR算法中的一部分存在,在使用中會(huì)靈活很多,但基本的原理都是相同的。
總結(jié)
以上是生活随笔為你收集整理的Tone Mapping的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity3d HDR和Bloom效果(
- 下一篇: 从Theano到Lasagne:基于Py