色溫、白平衡與色彩恆常性
有關色彩理論相關的文章,在這個專欄里已經有三篇了(《色彩空間基礎》、 《色彩空間表示與轉換》、《光譜渲染的幾個例子》) 在三篇文章中,我介紹了色彩空間的基礎知識,並利用這些知識將物理上的「顏色」與顯示器的 RGB 數值聯繫起來,得到了我稱之為「光譜渲染」的技術。
在這三篇文章之後我就沒有繼續寫關於色彩理論的文章了,一方面固然是覺得自己在理論積累方面還有所欠缺,不敢在知乎上班門弄斧,二來自己也沒有一個整體性的思路,零碎的知識點寫起來缺乏一個統一的脈絡。前兩天在知乎上刷出了一個問題 如何理解和分析手機相機的白平衡?,裡面提到了相機白平衡的話題,似乎討論的還挺激烈,不免又勾起了心裡想寫點東西的慾望。
我現在刷知乎,發現很多時候爭論的各方其實都不明白各自討論的問題「定義」是什麼,討論來討論去,也不過是雞同鴨講,最後不免互相撕逼。在這篇文章里我從我自己理解的角度出發,梳理一下與白平衡相關的幾個概念,在明確了概念的基礎上,再對這個問題進行深入的探討。
1 色溫
色溫這個概念是從黑體輻射來的。根據日常的經驗我們可以知道,給一個鐵塊加熱,隨著溫度升高,鐵塊開始是暗紅色,逐漸變成亮紅色,如果能達到鍊鋼爐里那樣的高溫,鐵融化成鐵水,發出耀眼的金黃色光芒。而天文學家也告訴我們,宇宙中的恆星可以看做一個個黑體,隨著恆星溫度的升高,恆星的顏色也是從紅色到黃色,非常高溫度的恆星甚至發出偏藍色的光。
在之前的文章 《光譜渲染的幾個例子》 里,我給出了一個簡單的例子,直接渲染了不同溫度下黑體輻射的顏色。下圖就是渲染出的不同溫度黑體的顏色。
從這個例子里可以看出,隨著溫度的升高,黑體的顏色從暗紅到亮紅,逐漸到金黃色,再慢慢到藍色。在下面這個色品圖上可以看得更清楚,隨著溫度升高,黑體顏色在色品圖上移動,形成一條曲線軌跡。這條軌跡從右下角的紅色區域出發,經過黃色區域,中間的白色區域,到達左側的藍色區域。這條軌跡就叫做 普朗克軌跡。下圖顯示了色品圖上的普朗克軌跡(來自維基百科 普朗克軌跡)
(普朗克軌跡)我們日常生活中,最重要的光源就是太陽,太陽發出的光很接近黑體光譜。我們的太陽表面溫度約為 5500K,這個溫度的黑體發出的光,基本就是白色。讀過本專欄之前文章的讀者朋友肯定能理解,這當然不是巧合。在色彩空間中我們需要定義一個白點,而常見的一些標準白點,就是以 5500K 左右的黑體輻射(也就是我們的太陽)為基礎的。CIE 委員會規定的幾種標準白點中,D50、D55 和 D65 是常用的白點,參照了 5000K、5500K 和 6500K 的黑體輻射來定義,模擬了不同條件下(比如地平線方向的光照,上下午的室外,正午室外)的光照。色彩空間 sRGB 所依賴的白點就是 D65。
對於色溫,通常有幾個誤解。第一個誤解是混淆了色溫和情感上的溫度傾向。我們必須理解,色溫是根據黑體輻射溫度來定義的,是物理上的溫度,而不是情感上的溫度。從我們的情感上來說,橙色紅色給人感覺溫暖,藍色給人感覺寒冷。但從色溫的定義來看,紅色橙色是溫度較低的黑體發出的顏色,而溫度高的黑體顏色反而是藍色。
第二個誤解是混淆了色溫針對的對象。狹義上來說,色溫是針對光源的。比如晴朗正午的室外,光源是太陽(以及部分藍天),這個時候的光源接近標準光源 D65,色溫接近 6500K;又比如說傍晚日落,經過大氣層的散射,陽光中的藍光大大減少,光線顏色偏黃,光源顏色也許接近 3500K 的黑體。
很多關於色溫方面的爭論都是從這兩個誤解而來,搞清楚討論對象的定義,很多爭論也就煙消雲散了。
2 白平衡
在本專欄之前的文章 《色彩空間基礎》 中提到,物理世界裡是無所謂「顏色」這個概念的,一切都是 光譜功率分布,所謂的「顏色」,是人類視覺過程產生的一種感受。正是如此,我們才有了「三原色」理論,我們才可以用三種顏色的光來模擬世間萬物的顏色。
生活常識告訴我們,光源的顏色不同,照射到同一個物體上,會引起物體顏色的變化。從單純的物理的角度來看,這個事情再正常不過了。光源有光譜功率分布,物體對不同波長的光線又有不同的反射率,那麼光源照射到物體上,再反射到眼睛裡的光,它的光譜功率分布就和光源密切相關了。不同的光源,照射到同樣的物體上,物體反射光的光譜功率分布就會不一樣。下圖展示了一個例子,物體的反射率是對藍色光更高,對紅色光更低。第一行的光源是一個接近白色的光源,照射到物體上之後,反射的光線就是藍色;而第二行的光源是一個黃色的光源,照射到物體上之後,反射的光線是偏棕紅色的。
(不同光源下物體有不同顏色)
這裡需要再強調一下,物理上沒有所謂的「顏色」的概念,只有「光譜功率分布」、「反射率」這些概念。一個物體的反射率是固定不變的,但是這個物體的「顏色」在不同條件下是不一樣的。
我們可以用一個標準白點(比如 D65)作為光源,照射到物體上。我們認為這個時候物體表現出來的「顏色」就是物體「本來」的顏色,可以定義為物體的「固有色」。很顯然,固有色的光譜功率分布曲線與物體本身的反射率曲線兩者是很接近的(參見上圖中第一行的例子)。
白平衡(White Balance)要做的,就是在不同的光線條件下,根據當時得到的物體顏色,盡量恢復物體的「固有色」,或者說,盡量減小光源顏色對物體顏色的影響。(在下一節會繼續討論這個定義的合理性,本小節中先按照這個定義進行討論)。
根據之前的專欄文章 《色彩空間表示與轉換》 中討論的結果,我們可以在色彩轉換的過程中根據光源的情況指定不同的白點,從而得到相應正確的色彩轉換結果。舉例來說,在晴天正午室外拍攝的一張照片,光源近似於標準白點 D65,那麼我們就用 D65 點作為白點進行色彩轉換(實際上就是直接用 sRGB 空間進行展示)。又比如在黃昏的光線下拍攝了照片,此時光源接近 2500K 的黑體,那麼我們從普朗克曲線上找到 2500K 的點,作為新的白點,進行色彩轉換,就能得到正確的顏色。由於色彩空間的線性性質,這個轉換過程就是一個矩陣乘法,非常方便。詳細的計算過程可以參見之前的文章,這裡不再贅述。
這就是相機上色溫調節的原理。也就是說,相機上的色溫選項,調節的是色彩轉換中的白點的位置,在普朗克曲線上選取與色溫相對應的點作為白點進行色彩轉換,從而得到正確的顏色。這個色溫選項,是要與拍攝時的光源色溫相匹配的,這也是為什麼在晴朗的白天拍攝,色溫控制在 5000K ~ 6000K 是比較合適的,而在黃昏時候拍攝,色溫需要設置成 2500K ~ 3000K 才比較合適。
我們可以看到,沿著普朗克線移動白點,總體上是調節了畫面偏藍或者偏黃的色彩傾向。當然,完整的白平衡要求白點可以任意設置,所以必須增加第二個移動方向。最合理的選擇就是與普朗克線正交的另一個方向,從色品圖上看大致是從左上角到右下側直線邊的方向,也就是綠色到品紅的方向。
(色溫和色調調節)
正因為如此,我們可以看到,Photoshop、Lightroom 這樣的照片處理軟體,白平衡的面板上總是會有兩個調節滑塊,一個調節黃-藍平衡,通常叫色溫(Temperature),一個調節綠-品紅平衡,通常叫色調(Tint)。這兩個方向互相配合,才能使得白點位於色品圖中的任意位置,才能對任意光線條件下拍攝的照片進行白平衡的調節。
(Photoshop 中的白平衡調節面板)
3 色彩恆常性
白平衡解決了「怎樣才能正確得到白色」的問題,在上一小節中,我提出白平衡的目的是「在不同的光線條件下,根據當時得到的物體顏色,盡量恢復物體的固有色」,這句話看似簡單,仔細想想,卻又並不那麼顯然。一個很明顯的疑問是:我們怎麼知道什麼是物體的固有色?白熾燈照明下的一張白紙,與陽光照明下的一張橙黃色的紙,兩者從物理上而言可以是幾乎一樣的,或者說兩者的光譜功率分布函數,可以是幾乎一樣的。那麼我們憑什麼說一張是白紙,一張是橙黃色的紙呢?
答案是,不能區分。如果僅僅看這張紙的話,我們不能區分哪張是白紙,哪張是黃紙。
但是,我們不僅僅只看了紙,我們還看到了周圍的景物,也許是擺放紙張的書桌,也許是周圍的植物盆景,也許是旁邊的水果,甚至是我們自己的手。所有這一切,都幫助我們認識周圍的環境,根據環境去推測這張紙本來的顏色。
人類視覺過程不僅僅有視網膜的參與,更重要的還有大腦的參與。視覺是人類獲取外界信息最重要的手段,在日復一日的使用中,人類大腦對外界環境建立起了複雜的感知和對應。我們的大腦早就知道,植物葉子是綠色的,櫻桃是紅色的,我們的皮膚是黃色的……通過對這些周圍環境的感知,我們的大腦推斷出了這個時候光源的情況——是白熾燈還是陽光,從而自動完成了「白平衡」的過程,使得我們迅速感知到一個物體本來的顏色是什麼。這就是人類視覺的色彩恆常性。
沒有紅色的草莓
上圖是一個很好的例子(圖片來自 Color constancy),在這幅圖中,如果我們單獨一個一個像素點來看,沒有一個像素點是紅色的,所有的像素點都是綠色、青色、灰色,圖中選取的幾個像素點的 RGB 值也充分說明了這一點。但是當我們從整體來這張圖,立刻會產生「紅色草莓」、「黃色木桌」、「白色盤子」的印象。這就是我們大腦根據一些「先驗知識」進行自動白平衡的結果。
當然,在沒有一個強有力的先驗知識的情況下,人類也很容易給出錯誤的答案。君不見引起網路大撕逼的「白金、藍黑」神奇衣服?在我看來,這些爭論都是沒什麼意義的,因為圖片提供的場景信息太少,人類的大腦還不足以利用先驗知識,建立對當場光源的感知,只能憑藉自身的經驗進行推斷,而每個人自身經驗千差萬別,自然也沒辦法正確推斷衣服的顏色了。如果大家能在現場看一眼,或者圖片作者能上傳一段附帶周圍環境的視頻,我想大概就不會有人對這件衣服的顏色有疑問了。
(白金?藍黑?)
當然,我們可以有意識地利用這種錯覺,造成一些有趣的結果。比如下圖中,綠色條紋和藍色條紋,其實是同一種顏色(圖片來自 independent)。
(綠色?藍色?)
4 小結
- 色溫是根據黑體輻射進行定義的,橙黃色色溫低,藍色色溫高;
- 相機中的色溫設置,需要與當時光源的色溫相匹配;
- 白平衡的目的,是希望在不同光線條件下,都能正確得到物體的固有色;
- 白平衡本質上是調節兩個參數:色溫和色調,色溫調節藍-黃偏色,色調調節綠-品紅偏色。通過調節兩個參數,來設置白點的位置,從而得到正確的色彩轉換;
- 人類視覺具有色彩恆常性,是大腦對外界環境感知的反應。當外界環境信息不足時,無法建立正確的色彩恆常感知。
推薦閱讀: