淺談色彩管理

最近買了一台印表機,發現卧槽怎麼打出來的效果和屏幕上看到的不太一樣。屏幕上看的紋理豐富的暗部,打到紙上就變成了一片黑。有一些艷麗的橙色,在紙上看上去就像黃色一樣。調研了一下才知道,要想讓兩台設備的顏色統一,就需要做一個步驟叫做色彩管理。換言之,色彩管理就是讓設備A,比如數碼相機上拍的圖片,和設備B,比如顯示器上顯示的圖片,看起來儘可能的一樣。

要想做到這一點首先要理解色彩是什麼。從物理的角度來說,光在物體上反射以後進入我們的眼睛/感測器被捕獲。不同的單色光會給眼睛不同的刺激,所以就有了不同的色彩。但我們平時的主光源陽光涵蓋了整個可見光的波段,被反射以後出來的光可不是單色光,每一個波長的光都有自己的強度。所以從物理的角度來說,要想精確的描述色彩的話,需要用一個無窮維的向量——一個波長-能量直方圖才可以。

但從工程的角度來說這是不可能的。一個背景是數碼相機的感測器都是單色感測器,它能記錄彩色是因為有不同顏色的濾光片把光先濾成「單色光」然後再單獨記錄亮度。因為我們不可能給每個像素配備無限多個濾波器+感測器來記錄不同波長的亮度,所以數碼相機不可能絕對精準地還原色彩。工程上,彩色數碼相機大都只有紅綠藍三種顏色的感測器(準確的說是濾光片)。為什麼選這三種顏色呢?這是因為人眼裡有三種感光細胞(視錐細胞),每種細胞對整個波段都有不同的響應曲線(見圖1)。而這三種細胞的響應峰值就在藍色,綠色和紅色上。所以這其實做了個貪心演算法,只記錄我們人眼最關注的那部分波長。圖2是尼康D80相機色彩濾波片的響應函數,可以看到和人眼的響應有相似之處也有差異(注意橫坐標軸的範圍不同,所以看上去有點偏移)。

圖1. 人眼感光細胞對不同波長的光的響應函數

圖2. 尼康D80相機對不同波長的響應函數

所以人眼和彩色相機對色彩的記錄本質上是把一個無窮維的向量在三個無窮維的基(數碼相機的顏色濾波片的響應函數)上做了內積,然後把這個三維的結果記錄下來而已。所以很顯然,這種表示方法無法表達所有可能的顏色。雖然人類視覺細胞的響應函數不是正交的,但我們強行用這三個響應函數做基張成了一個三維線性空間。因為光的能量一定是非負數,所以這個空間只有第一象限的部分。這就是LMS色彩空間(LMS分別對應Long, Medium和Short wavelength視錐細胞)。可能是為了表達紅綠藍三個基彼此並非正交,在色彩空間的圖示中,我們很少把坐標軸畫成一個立方體的角,而是更像一個三角錐形。

這種把整個無窮維的色彩的空間投影到幾個響應函數上,所得到的線性空間,就叫色彩空間。那麼除了用視錐細胞的響應函數以外,這些基向量也有其他的選擇。比如XYZ色彩空間。這是讓人類被試員在一個2度的視角上測量出來的對不同色彩的敏感性。XYZ色彩空間的基如圖3所示,因為原理類似,所以它和LMS相當接近。

圖3. XYZ色彩空間的基向量(響應函數)

上述的色彩空間的優勢主要是貼近人眼的原理,但也有劣勢,就是和人類對色彩的認知聯繫不太直觀。比如我們平時說的「你這個照片太艷了」,很難直觀地在LMS/XYZ色彩空間上進行調整。所以人們又引入了另一種色彩空間叫HSV。這個空間也有三組基,分別是色調(Hue),飽和度(Saturation)和亮度(Value)。這下就好辦了,如果照片太亮,就只要縮小亮度。照片不夠艷麗,就調高飽和度就好。更重要的一點是,這個色彩空間把亮度和色彩給隔離開了,這和設備的特性也是相符的。比如一個顯示器,想提高亮度直接把燈管弄亮點就好,但要想顯示一個之前沒有的顏色可就難了。所以這個色彩空間也更多地用在對設備能力的描述上。

Hue的意思是色調,就像我們平時說的紅橙黃綠青藍紫,轉了一圈紫色和紅色看上去很接近又接上了。因為它的這個周期性的特性,HSV空間里的Hue和Saturation一般做成極坐標的形式。Hue表示角度,Saturation表示距離。第三維亮度在設備相關的探討中就暫不考慮了。圖4就是對把HSV空間的Hue和Saturation畫出來的形式。注意這不是一個正圓。為什麼呢?因為第一前面說過,光的能量不可能是負數,所以整個有意義的坐標會被單色光給框住,就是圖中380, 460一直到700這坨。就是單色光在這個坐標系中的位置。第二人類畢竟看不見紅外線紫外線。所以這個單色光圈成在圖形的下部就像被把刀砍了一樣——波長到此截止。中間圍著的就是所有可能的(亮度無關的)顏色了。

圖4. HSV空間在H-S平面上的投影。彩色部分是所有可見光的顏色,彩色部分邊緣是單色光。標有Tc的曲線是白點在不同色溫下的投影。

所以到此為止設備之間的校色好像就齊活了。A設備把你能顯示的所有顏色在HS空間上的投影畫出來,B設備也畫出來。兩邊把不能都顯示的顏色做一個映射。搞定。。可是等等,有個很嚴重的問題。LMS,XYZ之類的坐標原點非常容易確定,就是純黑色,不同顯示設備之間可以通用——大不了把燈一關肯定是黑色。可是HSV坐標的原點是飽和度為0的顏色,也就是白色。這個就不能通用了。所以在不同設備間還需要做一個額外的校準,叫做白點校準。保證設備A的白色和設備B的白色是一個色彩。而這個校準就需要依賴XYZ這樣的絕對坐標系來完成了。所以一般色彩的校準需要一個在色彩空間上平移的白點校準,再加上一個放縮的色彩校準。這樣就可以把設備A的一種顏色的HSV表示轉化成設備B的HSV表示,從而在設備B上也能準確的渲染出來了。而每種具體色彩可以用一個射影變換來描述。

推薦閱讀:

a7rii適用人群是什麼?
VSCO FILM 07指南(翻譯)
我是這樣從服務員轉行做攝影的

TAG:攝影 | 色彩管理 | 列印 |