Stepok Image Lab

主頁 - 幫助 - 背景知識 - Linear vs. Gamma

綫性空間和Gamma空間

很多人或許知道類似'sRGB’或者 ‘aRGB’這樣的色彩空間的名字。也知道對於一個每通道8位的色彩,表示每通道用0-255表示從最小能量到最大的變化。但是很少有人知道,如果要表示一半的能量亮度,應該用0-255中哪個數字對應呢?

你可能會猜想127,因爲這個數值剛好在中間。但實際上,真實的一般能量卻接近190左右, (準確的數值同時取決于色彩空間的不同),這聼上去似乎有點有悖常識,但實際上就是如此。

這是因爲0-255的數值並非均勻的表示亮度的變化,而是映射到了一個非綫性的空間中,這稱爲Gamma映射。非綫性意味著,255不是127的兩倍,64所代表的也不是32的兩倍。

採用Gamma映射的原因是順應人眼對光線強弱的主觀感覺。下圖展示了對於不同能量,Gamma影射和綫性映射的區別。

在這篇文章中,我們關心的是這種區別會帶給影像處理什麽樣的不同。至於爲什麽要這樣設計,這樣設計的好處等問題,有興趣可以參考其他文獻。

考慮處理中常用,將周圍點的平均值作爲輸出(模糊操作)。假設我們的原圖有兩种顔色,黑0和白255,所交錯構成。平均處理后,在gamma空間中,我們的算術運算得到了一幅均勻的值為127的影像。因爲(0+255)/2=127。然而在綫性空間中,得到的結果是1/2白,在剛才的映射中,我們查到1/2白實際數值在189左右,亮于gamma空間的處理結果。下圖展示了兩個空間同意模糊處理結果的不同。

顯然在綫性空間處理的結果,更加接近于人眼實際感受到的情況。(如果你的顯示器有校準的話)。從遠處看,原圖的亮度更加接近右邊,也就是綫性空間處理的結果。很熟悉這個過程嗎?是的,這正是校準顯示器Gamma的原理。但現在你知道,在Gamma空間做任何的,設計兩個值混合的影像處理操作,結果都是不準確的。我很不情願用‘錯誤’二字來描述,因爲市面上大多數影像軟体都工作在gamma映射下,沒有矯正這種非綫性的影響。

讓我們再來看一個讓人迷思的事情就是彩色轉黑白。很多人抱怨一般軟体軟體轉換效果差,其實差的原因正是因爲同樣的錯誤的在gamma空間下轉化。轉化公式大家都是一樣的

L = R * 0.3 + G*0.6 + B * 0.1
L就是黑白影像輸出,R, G, B代表彩色的三個能量通道。這個公式是在綫性空間中得到的,實際上教科書上任何公式都是放在綫性空間中討論的。但是,如果我們直接把sRGB或者aRGB,8位通道的值作為輸入,就會得到左下邊錯誤的結果。感覺與人眼相差甚遠。而在Recomposit/Light Developer中,因爲内核自動轉爲16位綫性空間的緣故,所以可以得到好得多的結果,右下圖。這僅僅是一個簡單的運算,結果卻相差甚遠。所以如果你是一個專業攝影師,你應該意識到這是一個非常嚴肅的問題。

所以在涉及任何有通道或者像素之間值混合的領域,綫性空間可以得到更準確的結果。但是Gamma空間因爲與人眼感受相關,作為人機界面交互适有它的優勢。譬如作爲曲綫調整,自動色階等功能的操作界面上使用。為達到最優平衡,Light Developer/Recompisit在設計上兼顧了二者,内核採用綫性開發所有演算法,而操作上視情況提供了Gamma概念的界面。

參考 '色調大師'。

在16位空間中編輯

現今大部分數碼相機都提供RAW儅拍攝的可能。相比傳統的JPG格式,RAW儅格式可以保留全部感光器材相應的原始數據。很多攝影師也開始優先選擇RAW儅作爲拍攝格式。RAW儅在每個通道至少存儲12位以上精度的數據。相比JPG的8位,可以提供更多後期的可能。

JPG採用8位每通道的數據,只能提供256級變化。長時間以來,256級變化確實足以應付一般的影像處理,也是多數軟體默認的工作模式。但在RAW儅時代,8位處理内核就意味著每通道丟失至少4位的信息細節。所以,從原來的Turbo Photo升級到現在的版本,8位變16位(大於/包容RAW儅的12位)就是非常重要的(但從界面上無法得知)的内核升級。

綜上所述,Light Developer/Recomposit採用16位綫性空間作爲内核演算法運算的數據基礎,這為正確精確的計算打好了基礎。

Copyright 2002-2014,Stepok Image Lab, All rights reserved