【教學相長】你的RGB不是你的RGB

對啊,我怎麼會期待學校教這些東西?

二助柴犬
Apr 2, 2024

我已經對於大學端的教學現場有點失望,也不再期望能在課堂上聽到從無到有的概念解釋,音剪攝的教學大概也不會這麼nerdy,因為要考慮大家的起跑點不會完全一樣。

所以,挖新坑。決定試看看有空的話把自學的影像知識與技術,用最簡單但可能未盡準確的方法介紹出來。

只能感嘆,產業的封閉性使得繁體中文的資源真的很少。文章主要的參考資料來自公開網站與國內外大神的免費教學。

RGB,望文生義,就是紅、綠、藍色光,也就是光的三原色。因此,RGB的正式名稱叫做「三原色光模型」。如果將三原色光混合在一起,會得到白色的光,這樣的混色邏輯就被稱作加色法,也就是顏色是越混越亮的。如果將其中一個原色與另一個進行混色,就會得到間色。讀文字很難,不妨直接看看色相環,一目瞭然:

RGB色相環,與藝術課教的伊登十二色相環是不同的。圖源請點我

如果只有數位播送,沒有印刷需要的話,RGB模型可以「說明」我們在螢幕上看到的顏色是怎麼產生的。當然,還有更多種色彩模型,所以擔心忘記的話,還是能稍微記一下原色間混色的結果:

  • 紅+綠=黃(R+G=Y)
  • 紅+藍=洋紅(R+B=Mg)
  • 綠+藍=青(G+B=Cy)

理論上,三個原色可以混合出所有數位色彩。因此,RGB模型表達顏色的方式,是把紅、綠、藍分別以數值表示。最常見的表示法是整數表示法。舉例來說:

  • 黑色為 (0, 0, 0)
  • 白色為 (255, 255, 255)
  • 紅色為 (255, 0, 0)

如果你對數字比較敏感,那麼你可能從0–255這個區間發現什麼。不賣關子,2的8次方就是256。所以,我們也能把這種表示法稱為8位元(8bit)整數表示法。如果稍微計算一下,把個別有256個數值的三原色排列組合,會得到256×256×256=16777216種顏色。這看上去已經很多了,但更高規格的裝置可能採用更精細的表示法,例如10bit,甚至16bit等。

這是隨便產生的一組色票。想想看,這串#數字代表什麼?

題外話時間。

常見的色票或配色,表達顏色的方式會是呈現這樣一組編碼。事實上,這是使用8bit整數表示法的數值,以十六進位編碼後所產生的數值。所以說這些配色表是RGB模型的產物。可以實驗看看,把最右邊的顏色編碼理解成(78, CF, DE)後,再翻譯回十進位,就會得到(120, 207, 222)的結果!

說回正題。RGB是個相當泛用的模型,但有個很嚴重的問題。我們該怎麼知道,什麼是真正的紅、綠、藍?這個問題的意義在於,只要是能發出三原色光的裝置,那都能找到一種定義原色的方法,而這是不精準、不統一,而且未經標準化的流程。

有可能,在兩個同樣標榜「RGB」的系統中,人們看到的三個原色可能長得並不一樣。

所以,我們要引入色彩空間(Color Space)的概念。

色彩空間的意義,在於定義一群「用同種方法觀察,就能看到同個東西」的顏色範圍。意思是說,這是科學的測量方法。由於日常的可見光都能夠以「波」的形式被觀測到,因此理論上,只要能夠精準的用數學模型,去描述每個人的眼睛接受到的物理刺激值(也就是光的波長),就可以得顏色的客觀定義。

由國際照明委員會(CIE)所定義的CIE 1931 XYZ色彩空間,成為如今大家定義顏色時最常使用的色彩空間,有的時候會直接稱為CIEXYZ色彩空間。關於CIEXYZ是如何計算出來的,寫了篇幅會爆,也會變得相當無聊(對不起我是文組),有機會再寫一篇解釋。可以直接看看這個色彩空間視覺化後的結果:

這個圖被稱為CIE Chromaticity,有時候會直接叫它「馬蹄圖」。

馬蹄圖外側的曲線,正好是可見光的波長範圍,大約落在360–830nm之間。於是乎,這張圖表代表了CIEXYZ色彩空間,理論上能定義所有可見光。當然,要特別注意,各位透過顯示器所看到的顏色,並不真正代表實際那些光的真實顏色,因為顯示器是經校正過的。事實上,沒有任何一種顯示器能顯示所有的可見光。理由,我不知道。

所以,RGB究竟出了什麼問題,使我們得繞這麼一大圈?

我們在軟體內操作的RGB,事實上並沒有嚴格去說什麼是真正的紅、綠、藍,因此可以說,缺乏定義的RGB是一種「非絕對色彩空間」。我們需要在一個「絕對色彩空間」裡面,先定義哪一種紅、哪一種綠、哪一種藍才是原色如果讀到這邊還沒睡著,我們可以再看看一張圖表:

sRGB以及Adobe RGB,是靜態攝影常使用的色彩空間。

看完圖後,應該有好懂一些了。兩種色彩空間sRGB、Adobe RGB,它們都屬於RGB,但是我們可以看看兩個三角形的端點,也就分別代表他們的原色,尤其是綠色,位置是不一樣的。意思是說,在sRGB與Adobe RGB進行混合綠色的操作時,得出來的顏色會完全不同。

三個端點所框選起來的區域,被稱作色域,代表顯示裝置可以正確重現的色彩範圍。Adobe RGB的色域會相較於sRGB更廣一些。也就是說,理論上前者比後者能夠重現更多的真實色彩。雖說如此,但Adobe RGB畢竟是Adobe公司因應印刷所推出的新標準,未必所有硬體都能支援,使用時要小心啊。

靜態攝影會碰到的色域可能就是上述兩個,動態攝影會遇到的標準就更多,就是個rabbit hole,一旦進去就逃不出來了。

索尼大法用戶,現在知道這是什麼東西了嗎?

簡單做個結論,RGB並不是絕對的色彩空間,因為沒有定義紅、綠、藍的精確值;它只是一種「表達」顏色的方式。至於真正的顏色是怎麼樣,是需要絕對色彩空間的定義的。

今天就到這了,畢竟是自學,很多概念可能還是有混淆或不清楚的,遇到錯誤請用力鞭打我。然後,春假愉快。

--

--

二助柴犬

二助是社團職稱,希望工作跟興趣可以是一樣的。