“廣義Gamma”的產(chǎn)生,原因有二:
- 人眼對(duì)自然亮度感知是非線性的。(韋伯定律)
- 我們用來(lái)記錄/展示畫面的媒介上,灰階預(yù)算是有限的。(無(wú)論紙張還是屏幕)
為了在灰階預(yù)算有限的前提下,協(xié)調(diào)
自然亮度和
主觀灰階感受這二者的映射關(guān)系,Gamma就產(chǎn)生了。
第一節(jié):韋伯定律韋伯定律,即感覺(jué)的差別閾限隨原來(lái)刺激量的變化而變化,而且表現(xiàn)為一定的規(guī)律性,用公式來(lái)表示,就是△Φ/Φ=C,其中Φ為原刺激量,△Φ為此時(shí)的差別閾限,C為常數(shù),又稱為韋伯率。
解釋成人人都懂的大白話就是:
人對(duì)自然界刺激的感知,是非線性的,外界以一定的比例加強(qiáng)刺激,對(duì)人來(lái)說(shuō),這個(gè)刺激是均勻增長(zhǎng)的。為什么會(huì)有韋伯定律?人不是物理測(cè)量?jī)x器,我們用感知是不可能測(cè)出某事物具體的物理量的,但是我們可以
通過(guò)比較,來(lái)感知世界。
以光為例,若在一小黑屋中,點(diǎn)亮了一支蠟燭A,這支蠟燭對(duì)屋內(nèi)的貢獻(xiàn)是顯著的,在視覺(jué)上也感受到極大的明度提升。但是若是屋內(nèi)已經(jīng)點(diǎn)亮了1000支蠟燭,此時(shí)再點(diǎn)亮一支蠟燭B的話,從物理能量貢獻(xiàn)上,這支新蠟燭B與蠟燭A的物理貢獻(xiàn)是一樣大的,但是在人的視覺(jué)中,B引起的“明度”
變化,遠(yuǎn)遠(yuǎn)不如A。
為什么?很好理解?。簩?duì)于某事物,同樣的變化量△a,總量少的時(shí)候,變化顯著,容易被人感知,事物總量大了,再變化同樣的△a,就不那么容易被察覺(jué)了。
正因?yàn)槲覀冊(cè)诤芏鄷r(shí)候不需要知道事物客觀的物理量,而是要描述它們的增減關(guān)系,所以必須是靠比較來(lái)描述,才比較合理,以等比數(shù)列增加的物理量,對(duì)人的感知來(lái)說(shuō),是均勻的,比如:
- 音樂(lè)的音階,是符合十二平均律的,音調(diào)的頻率以等比數(shù)列增加,人聽(tīng)起來(lái)是均勻升調(diào)。兩個(gè)八度之間頻率翻一倍。
- 聲音的強(qiáng)度是按照“分貝”來(lái)描述,倍數(shù)增加的音量聽(tīng)起來(lái)是均勻增加的。
- 拍照片,描述明亮程度用的是“檔”,曝光物理上大一倍,認(rèn)為是亮了一個(gè)級(jí)別。
- 里氏地震級(jí)數(shù),每增加一級(jí),釋放的物理能量大32倍。
類似這樣的例子太多太多了。
另外有一個(gè)家喻戶曉的笑話,實(shí)際上直戳這類描述體系的反直覺(jué)之處,絕大多數(shù)人根本沒(méi)意識(shí)到,我們以為是均勻增加的量,其實(shí)不是線性增加的。
笑話是這樣講的:據(jù)說(shuō)人所能感受到的疼痛分為了10級(jí),1級(jí)是被蚊子叮了,10級(jí)呢,是孕婦分娩。有人就問(wèn)了,那什么是11級(jí)疼痛呢?答“11級(jí)疼痛就是孕婦分娩的時(shí)候被蚊子叮了”。哈哈一笑之余,有人質(zhì)疑過(guò)這個(gè)說(shuō)法嗎?
現(xiàn)在你懂了韋伯定律,就知道所謂“分娩的時(shí)候被蚊子?!辈豢赡苁?1級(jí)疼痛,由于分娩已經(jīng)是10級(jí)劇痛,此時(shí)被蚊子叮所帶來(lái)的感受變化量微乎其微,疼痛程度仍然是10級(jí)。那么什么是11級(jí)疼痛呢?一定是“N個(gè)孕婦分娩的痛苦以科技手段讓同一個(gè)人同時(shí)承受”,才是11級(jí)。
第二節(jié):中灰對(duì)于中灰的定義,我不敢妄下,我只說(shuō)我個(gè)人的解釋:
“中灰就是人眼能分辨的所有灰階的中間點(diǎn)。”怎么理解?我一直以
《粉刷匠的故事》,來(lái)解釋中灰的意義:
假如你是一位粉刷匠,你擁有充足的白油漆和充足的黑油漆,那么現(xiàn)在要求你完成一個(gè)任務(wù):
把黑白油漆混合成各種不同灰度的油漆,并且把它們排成一排,直到形成黑到白的均勻過(guò)渡。在理想的情況下,會(huì)發(fā)生什么樣的情況?你會(huì)不斷地調(diào)出灰色的油漆,并且把它和已有的油漆相比較,如果它是一個(gè)新灰色,你就會(huì)把它插入隊(duì)列,如果是重復(fù)的灰色(肉眼難以分辨,達(dá)到了你灰階分辨能力的極限),你就會(huì)把它丟掉。
最終,功夫不負(fù)有心人,你面前的灰階將會(huì)形成從黑到白的均勻過(guò)渡,此時(shí)的灰油漆種類將會(huì)是幾百個(gè)甚至更多,那么最中間那一個(gè),就是中灰的油漆:
這里粉刷匠為了管理這些好不容易調(diào)出來(lái)的灰油漆,把它們賦予了合理的編號(hào),根據(jù)油漆在隊(duì)列中的位置,粉刷匠定義純黑油漆編號(hào)為0.0,純白油漆編號(hào)為1.0,那么中灰油漆的編號(hào)自然落在了0.5上。與此同時(shí)我們還可以得到的推論就是:不管油漆的總數(shù)有多少,編號(hào)0.0-0.5之間的油漆種類數(shù)目,和編號(hào)0.5-1.0之間的數(shù)目是一樣的,因?yàn)閺亩x上,中灰就是隊(duì)伍的最中間那個(gè)顏色。我們繼續(xù)定義比中灰暗叫暗區(qū),比中灰亮叫亮區(qū),那么(在低動(dòng)態(tài)范圍下,)
人眼可分辨的暗區(qū)灰階的數(shù)目和亮區(qū)灰階的數(shù)目是一樣多的。這樣的一個(gè)連續(xù)的灰階體系可謂完美,用來(lái)描述畫面再好不過(guò)了。
第三節(jié):物理反射率檢測(cè)面對(duì)這樣一個(gè)完美的從黑到白過(guò)渡的油漆顏料體系,我們?nèi)绻z測(cè)一下中灰油漆的反射率,再把它和純白油漆的反射率相比較。若我們定義白油漆的反射率是100%,黑油漆的反射率是0%,你會(huì)發(fā)現(xiàn),中灰油漆的反射率不是直覺(jué)中的50%,而是一個(gè)在20%上下徘徊的數(shù)值。
生活中早有這種類似的東西,比如攝影師的灰卡,反射率是白卡的18%:
(據(jù)簡(jiǎn)單的搜索,灰卡的反射率是白卡的18%還涉及其他原因,18%實(shí)際上是17.68的近似值,而17.68是312.5的平方根,具體請(qǐng)閱讀
相機(jī)拍攝使用灰卡的方法)
在本文中,我舉灰卡的例子不是想告訴你們中灰色的物理反射率已有定論,事實(shí)上它沒(méi)有也不可能有,在不同顯示媒介和不同的光照的情況下,心目中中灰所對(duì)應(yīng)的反射率是不太一樣的。我舉這個(gè)例子只是想拿一個(gè)大家看得見(jiàn)摸得著,并且符合國(guó)際標(biāo)準(zhǔn)的參照物,來(lái)說(shuō)明:
人心目中看起來(lái)中灰的色塊,其物理亮度值大約在白色塊的20%左右。
根據(jù)韋伯定律,這件事是好理解的,下圖是非常粗略的示意圖:
此圖原點(diǎn)是黑色,1,1點(diǎn)是白色,你可以這么理解此圖:當(dāng)整體環(huán)境較暗,微小的亮度增長(zhǎng)也會(huì)在人的心目中是顯著的明度提升,當(dāng)物理亮度達(dá)到白色的20%左右的時(shí)候,人的心目中已經(jīng)感受到中灰色的概念。而剩下的一半高光區(qū)的灰階,需要用白色80%的物理能量才能照亮成白色。
這一節(jié)你只需要記住一個(gè)結(jié)論,雖然不太精確,但是絕對(duì)不會(huì)錯(cuò)得太離譜,這是我個(gè)人輔助理解Gamma校正的法寶:
視覺(jué)感受的中灰色是白色反射率的20%左右。(注:白色為低動(dòng)態(tài)顏色1.0)再換成更不精確但更好用的話就是:自然界的0.2,在心目中的地位是0.5。
第四節(jié):“灰階預(yù)算很緊張!”我管這個(gè)故事叫
《灰色蠟筆的故事》粉刷匠改行了,他要去做蠟筆,這個(gè)蠟筆的要求很特殊,是灰階蠟筆。蠟筆不像油漆可以調(diào)出連續(xù)的顏色,而是只能調(diào)出離散的,有代表性的幾個(gè)灰階。
現(xiàn)在如果生產(chǎn)一套暢銷蠟筆,但是灰階預(yù)算超緊張,只允許你放進(jìn)去3支不同灰階的蠟筆,你會(huì)選擇哪幾個(gè)有代表性的灰色進(jìn)行生產(chǎn)呢?
我想最合理選擇的就是黑、白、中灰了吧,用它們可以盡可能多的描述畫面的灰階過(guò)渡,而這三支筆,借用之前的編號(hào)體系,他們的灰階編號(hào)分別為:0.0、0.5、1.0。反射率分別
約為:0%、20%、100%
現(xiàn)在放寬要求,這套蠟筆可以是4色一盒,那么編號(hào)0.0、0.33、0.66、1.0的四支蠟筆入選。反射率分別
約為:0%、9%、40%、100%
如果是5色一盒呢?則編號(hào)0.0、0.25、0.5、0.75、1.0的蠟筆入選。反射率分別
約為:0%、5%、20%、53%、100%
有人要問(wèn)了,老韓你先等會(huì)兒吧,不同灰度蠟筆的物理反射率你是怎么知道的?
查這張曲線圖啊,從縱坐標(biāo)挑選蠟筆的顏色,橫坐標(biāo)上就是它相對(duì)于白色的反射率了,中灰是20%左右的情況下,其他的數(shù)據(jù)位置也都是可以推算的:
那么這張曲線圖是不是準(zhǔn)確,可就非常關(guān)鍵了。曲線圖是靠什么定義的呢?我們來(lái)到下一節(jié):
第五節(jié):廣義Gamma兄弟們,我不賣關(guān)子了,上文這個(gè)0-1區(qū)間的曲線,就是所謂的Gamma曲線。我們?nèi)舳x黑是0,白是1,那么在0-1區(qū)間,我們是可以用一個(gè)
冪函數(shù)來(lái)描述客觀自然數(shù)值和主觀心理感知的對(duì)應(yīng)關(guān)系的(等比數(shù)列通項(xiàng)公式就是冪函數(shù)):
Gamma取值不同的時(shí)候,冪函數(shù)圖像是如下規(guī)律:
Gamma=1,斜45°直線,不校正,輸出=輸入;
Gamma大于1,曲線下壓,輸出值小于輸入值;
Gamma小于1,曲線上拱,輸出值大于輸入值。
生產(chǎn)蠟筆的時(shí)候,我們輸入一個(gè)主觀概念:“我想要一支編號(hào)0.5的蠟筆”,輸出了一支蠟筆,其反射率是20%左右。那這個(gè)Gamma是大于1的下壓Gamma,它把0.5映射成了0.2。
欣賞蠟筆畫的時(shí)候,輸入眼睛的亮度正比于顏料在畫紙上實(shí)際的物理反射率,“輸出值”就是我們心目中主觀感受的灰階。此時(shí)的Gamma上拱,小于1,可以把自然界的0.2的反射率,映射成心目中的0.5灰階。
看懂了嗎?廣義Gamma實(shí)際上描述的就是自然現(xiàn)實(shí)的物理量和主觀視覺(jué)灰階的映射關(guān)系。這個(gè)關(guān)系是非線性映射。
從這個(gè)觀點(diǎn)看的話,廣義Gamma無(wú)處不在,而且極具啟發(fā)性:
我們最熟悉的鉛筆素描,使用黑色鉛筆涂抹暗部,白色是由白紙留白形成,那么其畫面上的中灰部,鉛筆覆蓋率是多少?答案是80%,留下20%的紙面,這20%的反光,在我們心目中看起來(lái)是中灰色的概念。
此時(shí)灰階和誰(shuí)形成了Gamma關(guān)系?“心目中的灰階”對(duì)應(yīng)“鉛筆涂抹的工作量”。也就是說(shuō),人們只憑目測(cè),天生就可以把自然界的畫面,映射成正確的顏料覆蓋率,在這個(gè)過(guò)程中,全憑視覺(jué)的主觀判斷。視覺(jué)感受主導(dǎo)了一切。說(shuō)白了,
媒介上的灰階分布,人是通過(guò)目測(cè)來(lái)調(diào)的。
第六節(jié):數(shù)字?jǐn)z影和屏幕第四節(jié)中,3色一套、5色一套的蠟筆我們?nèi)绻氲妹靼?,那么推廣到我們生產(chǎn)一盒256色的灰階蠟筆,它們的反射率和蠟筆編號(hào)的映射關(guān)系,我們也是能想明白的:
蠟筆反射率=蠟筆編號(hào)^Gamma
256色的蠟筆想得明白的話,這256個(gè)灰階和電腦屏幕的像素有區(qū)別嗎?沒(méi)有任何區(qū)別。紙張是畫面媒介,屏幕也是畫面媒介,區(qū)別只是反射率變成了像素的光強(qiáng)。
屏幕光強(qiáng)=灰階編號(hào)^Gamma
為了把事兒說(shuō)明白,我們先把8位每通道圖像的數(shù)值,換算到0-1區(qū)間。8位圖上0是黑,255是白,中灰色是128。換算以后,黑是0,白是1,中灰是0.5。
要注意,8位每通道圖像,灰階預(yù)算極其有限,僅有256個(gè),如同一盒256色的灰階蠟筆。
當(dāng)我們?cè)谟脭?shù)字相機(jī)拍照的時(shí)候,相當(dāng)于對(duì)自然界采樣,并把數(shù)據(jù)編碼到圖像文件中。
假設(shè)光照適宜的場(chǎng)景中有一個(gè)中灰色的物體,反射率是白紙的0.2,我們采樣到它的時(shí)候,應(yīng)當(dāng)把0.2的物理能量用0.454的Gamma放大到0.5的灰階地位記錄下來(lái),這樣一來(lái),暗部區(qū)域就分配到128個(gè)灰階了。我們充分地利用了存儲(chǔ)空間。
如果在拍照的時(shí)候不進(jìn)行Gamma校正,那么中灰物體會(huì)被映射為0.2記錄下來(lái),那么此時(shí),暗部?jī)H分配到50個(gè)灰階,暗部采樣嚴(yán)重不足,高光采樣冗余。
來(lái)到屏幕上,也就是文件解碼端,此時(shí)屏幕從計(jì)算機(jī)中讀到一個(gè)0-1的漸變,也就是從黑到白的均勻過(guò)渡,圖片如下:
其中左端的色彩值是0,中間的色彩值是128(0.5),右邊是1.0的純白。解碼后,屏幕要以什么樣的亮度顯示這些像素呢?最左邊像素關(guān)燈不顯示,是黑色,中間以白色21.8%的亮度顯示,右邊像素全開,顯示100%白色。這樣的一個(gè)圖片,在我們心目中看起來(lái)是均勻的灰度漸變。
此時(shí)屏幕的解碼Gamma是2.2,這個(gè)Gamma,會(huì)把0.5映射成0.218。
從這個(gè)角度來(lái)看。其實(shí)眼睛跟“照相機(jī)”真的挺像,我們看見(jiàn)自然界0.2的東西,就把它映射成0.5的地位,記到腦子里了。
總結(jié)總結(jié)段要說(shuō)三個(gè)問(wèn)題:
- 2.2怎么來(lái)的
- 為什么一直強(qiáng)調(diào)低動(dòng)態(tài)圖像
- 如果灰階預(yù)算不緊張,會(huì)怎么樣
Gamma=2.2怎么來(lái)的?是實(shí)踐中目測(cè)調(diào)整出來(lái)并最終確定的,其實(shí)說(shuō)良心話,只要是0.5中灰對(duì)應(yīng)白色的20%左右,畫面看起來(lái)都是靠譜的,所以當(dāng)年的Gamma特別多種多樣,在2.2上下浮動(dòng)(1.8-2.5),1996年微軟和惠普在特定的光照條件下測(cè)試人觀看顯示器的感受,他們認(rèn)為,把8位圖像中128號(hào)灰(0.5灰)這個(gè)抽象的、代表心目中中灰色的數(shù)值,對(duì)應(yīng)以白像素21.8%的亮度顯示出來(lái),由黑到白的漸變過(guò)渡看起來(lái)會(huì)比較均勻。最終對(duì)應(yīng)的Gamma就是2.2。那么他們定了這個(gè)標(biāo)準(zhǔn),后世的硬件也就都往上面靠了,包括拍照的時(shí)候,編碼Gamma也就取了1/2.2=0.454。這樣能保證整個(gè)編碼解碼系統(tǒng)總Gamma是1,高保真,自然界中的色值能在屏幕上相對(duì)完好的再現(xiàn)。
凡是說(shuō)Gamma 2.2來(lái)自于老式CRT顯示器物理特性的解釋,都是誤解。這個(gè)誤解一般會(huì)這么講解Gamma的來(lái)龍去脈:當(dāng)年老式的CRT顯示器內(nèi)置Gamma 2.35左右,解碼的時(shí)候會(huì)把輸入信號(hào)壓暗,所以我們呢,為了保證總Gamma接近1,就要預(yù)先在編碼的時(shí)候把輸入文件的信號(hào)提亮,而且這樣一來(lái)呢,剛好順應(yīng)了人眼對(duì)暗部感興趣的特點(diǎn),把暗部的信息多多記錄了下來(lái),充分利用了文件的空間,真是美妙的巧合啊。講起來(lái)順暢,聽(tīng)起來(lái)也很美妙,我也曾經(jīng)這么給別人講,但是我發(fā)現(xiàn)我沒(méi)法說(shuō)服我自己,人類就被一個(gè)老式硬件的物理特性決定了后世的工業(yè)標(biāo)準(zhǔn)?這邏輯不對(duì)。這也是我反對(duì)某高票答案,自己過(guò)來(lái)寫答案的原因。
為啥錯(cuò),比如當(dāng)年要是沒(méi)有先發(fā)明CRT顯示器呢?假設(shè)我們先發(fā)明了一個(gè)物理Gamma為1的顯示器。當(dāng)輸入8位圖像0.5的數(shù)值的時(shí)候,它還是要乖乖的把這個(gè)0.5映射成白像素的20%輸出出來(lái)。否則看起來(lái)就不是中灰,8位每通道的顯示器Gamma必須在2.2左右,跟顯示器發(fā)展史沒(méi)關(guān)系,完全是視覺(jué)效果決定的。一切都因?yàn)轫f伯定律。
為什么一直強(qiáng)調(diào)低動(dòng)態(tài)圖像?這個(gè)其實(shí)涉及到“自然景象再現(xiàn)成畫面”這樣一個(gè)復(fù)雜的事情,自然界是高動(dòng)態(tài)的,亮度可以非常亮,也可以有一些明亮的光源,所以我在描述中灰的物理量的時(shí)候,我不可能描述成場(chǎng)景中最亮的物體亮度的20%,這個(gè)
最亮的概念會(huì)非常不好確定。同一個(gè)明亮的場(chǎng)景中,中灰紙張應(yīng)該是白紙反射率的20%而不是燈泡能量的20%。我如果把高亮物體牽涉僅來(lái),事情就亂了。但是我可以用繪畫舉例子,畫布的動(dòng)態(tài)范圍是有限的,最亮不過(guò)是畫布上的留白,屏幕的動(dòng)態(tài)范圍也是有限的,最亮不過(guò)是白像素。所以在低動(dòng)態(tài)范圍的語(yǔ)境下,我可以安全的定義,中灰蠟筆的反射率是白色蠟筆的20%左右,中灰像素的亮度是白像素亮度的20%左右,而不是現(xiàn)實(shí)場(chǎng)景中最亮物體的20%。這一點(diǎn)是很關(guān)鍵的。
另外,
一切的前提必須是:灰階預(yù)算很緊張,只有灰階有限,我們才需要考慮中灰映射給誰(shuí)的問(wèn)題,
如果灰階足足的夠用,硬盤不要錢了,網(wǎng)線足夠粗,我們主流不再使用8位每通道圖片記錄亮度信息的話,
Gamma是沒(méi)必要的,我們直接把自然界的0.2記錄在文件上,顯示器讀取到0.2,也直接顯示就好了——32位每通道的hdr格式就是這樣的。
32位格式中,中灰就被記作0.218,所以在32位環(huán)境中拉一個(gè)0-1的漸變是這樣的,很明顯暗部被壓縮了,高光區(qū)很多:
這張圖怎么理解?它還是0-1的均勻漸變,中間那個(gè)顏色還是0.5,只不過(guò)32位圖中的數(shù)值就是自然界的物理量,所以這個(gè)色帶對(duì)應(yīng)的其實(shí)是現(xiàn)實(shí)中的反射率。左邊五分之一20%處是中灰色,中間的像素表現(xiàn)的是反射率為白色50%的物體看起來(lái)的灰度,這個(gè)灰度是0.5^0.454=73%灰。也就是8位下的186灰。具象的說(shuō),如果我有一支蠟筆反射率是50%,看起來(lái)就是中間這個(gè)灰度。
總之一句話:
灰階有限的前提下,因?yàn)槿搜蹖?duì)自然的非線性感知特性,我們才需要Gamma校正。具體到生活中的現(xiàn)象就是:因?yàn)槲覀冇脖P太貴,網(wǎng)線太細(xì),所以地球人目前主流使用8位每通道的sRGB色彩描述體系,它灰階有限,中灰的地位必須在所有灰階的中間,記錄值為128,而不能是其物理值0.218,把物理量0.218換算成0.5灰階編號(hào)的過(guò)程,就是編碼端的Gamma校正,Gamma值為1/2.2=0.454。屏幕讀取到128顯示成21.8%的亮度的過(guò)程,就是解碼端的Gamma校正,Gamma值為2.2。整個(gè)系統(tǒng)Gamma為1。若是有朝一日,32位每通道文件成為主流格式,Gamma校正就會(huì)消失。自然數(shù)據(jù)不經(jīng)校正直接記錄為文件數(shù)據(jù),再不經(jīng)校正直接顯示。