伽瑪校正的視覺化探索

為什麼電腦中的 0.5 灰色,不是物理世界的一半亮?

第一步:理解「物理亮度」

顯示器由 像素陣列組成。當所有像素全亮,亮度為 1.0;全暗則為 0.0。下方的滑桿控制的是物理線性亮度,代表光子發出的實際強度。請注意,當您將滑桿從 0.0 拖曳到 0.5 時,人眼感受到的亮度變化,會比從 0.5 拖曳到 1.0 時更加劇烈。這是因為我們的視覺系統對亮度感知並非線性。

「編碼值 0.5」 vs 「物理亮度 0.5」

在數位世界中,「0.5」這個數值有兩種截然不同的含義,這正是混淆的根源。一種是sRGB 編碼值 0.5,這是在軟體中設定的數值;另一種是物理線性亮度 0.5,代表實際發出 50% 的光。如下所示,這兩者對應的灰色在視覺上差異巨大。

方法 A:sRGB 編碼值 0.5 的灰色

物理亮度約為 21.8%。
(對應 sRGB 編碼值 128)

方法 B:物理亮度 0.5 的灰色

物理亮度為 50%。
(透過像素抖動模擬)

為什麼它們看起來不一樣?這引出了核心問題:人類的視覺感知與機器的線性記錄方式存在差異。

色帶斷層的成因:線性量化 vs. 感知編碼

若直接以線性物理亮度生成漸層,並在有限的 8 位元深度下(即 256 個灰階)進行均勻量化儲存,暗部更容易出現可見的色帶(Banding)。這是因為人眼對暗部的亮度變化極為敏感,微小的量化步階也會被輕易察覺。而 sRGB 這類非線性(感知導向)的編碼方式,會將更多的數位級別分配給暗部,從而減少可見的量化誤差,讓漸層看起來更平滑。

線性量化的漸層 (模擬)

在 8 位元下,暗部變化劇烈,容易出現色帶斷層。

感知均勻漸層 (sRGB 編碼)

看起來過渡平滑,因為暗部被分配了更多數據。

解決方案:伽瑪校正 (Gamma Correction)

為了解決上述問題,數位影像系統引入了伽瑪校正。它使用一個轉換函數對儲存的亮度值進行非線性編碼,將更多的數據位元分配給人眼敏感的暗部區域。圖表旁的灰階條能幫助您直觀地將「真實世界」的物理亮度(X 軸)與「電腦世界」的編碼值(Y 軸)及其對應的灰階效果聯繫起來。

當 γ = 1.0 時為線性關係。當 γ ≈ 2.2 時,冪函數曲線接近 sRGB 標準,漸層看起來最平滑。這就是伽瑪校正的魔力。

基於當前伽瑪模型產生的漸層

伽瑪校正工作流程

整個過程可以概括為「編碼」和「解碼」。相機捕捉到的線性光信號,首先經過伽瑪編碼成非線性的數據儲存起來。在顯示時,顯示器系統再進行一次反伽瑪解碼,將非線性數據還原為線性的物理亮度輸出。最終,人眼以其固有的非線性方式感知這個線性輸出,從而看到一幅色彩過渡自然的影像。

📷
線性捕捉

相機感測器

📈
伽瑪編碼 (sRGB)

非線性儲存

📉
反伽瑪解碼

顯示器處理

👁️
非線性感知

人眼觀看

超越 sRGBHDR 的未來

我們今天討論的 sRGB 標準誕生於 1996 年,它並未明確規定「最亮」到底有多亮。隨著技術發展,這個標準已顯得過時。

近年來出現了更高規格的標準,如 HDR(高動態範圍)。HDR 標準不僅能帶來更高的峰值亮度、更深的黑色,還使用了更先進的轉換函數(如 PQHLG),能夠更精確地呈現光影細節,為我們帶來遠超傳統 sRGB 的視覺體驗。伽瑪校正的核心思想在這些新技術中依然得到了繼承和發展。