2007年7月20日 星期五

gamma 的迷惑!!

(警告!! 本篇可能有部份仍有爭議或觀念不清楚地方, 我自己正在檢查我對gamma的了解..)
有一天你外出郊遊看見一美麗風景區如下:
(但此影像為Real World image/ 真實物理光線 gamma 1.0 所出現的正常畫面, 並非人類肉眼能所見與大腦記憶)

所以真實世界的gamma 1.0如下:

但根據上述人眼特殊的看東西習慣(Image Transfer Function),
1:人眼對灰度變化的感覺比對色調變化的感覺來得敏銳
2:人眼對低亮度變化的感覺比對高亮度變化的感覺來得敏銳
也有其他說法說: 人眼對於全光譜中光線之色彩與明暗有不同於正常的物理定義(gamma 1.0), 人眼很難判斷在陰暗部的色彩變化
根據科學家推算結果, 人眼是用接近gamma 0.4545 的 Image Transfer Function情況看世界萬物

所以你真正會看到如下畫面(同時你的大腦也會記憶下面畫面)


很明顯的在左邊是真實世界gamma 1.0影像: 較暗, 與在右邊影像是從你的肉眼所看到並記憶在大腦中的 gamma 0.4545影像, 較亮,較飽和, 有明顯差異.

但是問題來了! 你非常享受眼前的美景,所以用數位相機或錄影機把眼前的美景帶回家與家人分享你今天的閱歷. 但數位相機或錄影機所拍攝的影像都會要透過螢幕或電視輸出給人眼看, 而且工程師當初在認識人眼的gamma 0.4545後,在螢幕或電視的最後輸出階段會套用符合人眼對光線敏感曲線gamma 1.8(Mac)/ gamma 2.2(PC)(反作用接近人眼的gamma 0.4545)! (更正: 當時會使用gamma 2.2純粹是一個製程上的巧合. 跟認識人眼的gamma 0.4545似乎沒有太大關係)

注意:
當gamma 大於 1.0 時會把影像資料變暗
當gamma 小於 1.0 時會把影像資料變亮

重點來了! 數位相機或錄影機所拍攝的影像在CCD紀錄過程是以正常的物理直線性色彩gamma 1.0方式進行影像格式儲存. 然後再顯示在螢幕或電視上用我們的肉眼來觀看, 若沒有套用其他gamma調整, ok嗎? 操作程序如下:


從第一步到第二步在電腦內部顯示運算看起來都很OK, 但別忘了最後要用人眼來觀看(還要再加一次gamma 0.4545), 所以當你最後一張的很暗影像, 是你最後在螢幕上會看到的. 很明顯你會無法接受這樣的結果.

所以問題發生在目前螢幕上所顯示的影像透過你的肉眼看到後(很暗影像)與原來留在你的大腦的美麗風景印象無法吻合,更無法分享你的親朋好友. 為解決此差異所以工程師與科學家在寫入數位格式的過程中加入螢幕gamma 2.2之反函數曲線 gamma 0.4545 (1/2.2=0.4545454545…)
操作程序如下:


將原來的gamma 1.0數位影像(第一張照片)在數位相機存檔中加入gamma 0.4545補償後(第二張照片), 然後在你的螢幕上顯示時(第三張照片)時, 螢幕的gamma 2.2中和平衡數位影像內帶的gamma 0.4545, 輸出以gamma 1.0方式顯示在螢幕上, 最後透過你的肉眼看螢幕時, 人類肉眼還會以約gamma 0.4545左右再調整一次, 好消息是這種在數位影像內帶的gamma 0.4545的方式去顯示影像與你先前在肉眼所看到的美麗風景記憶是非常接近的, 而且已被廣大的使用者習慣這種方式, 注意:如果你到目前為止都了解我所說的gamma迷惑, 你應該清楚的知道你的影像是處於一種非直線性色彩(Non-Linear Color Space)的狀況, 因為影像在儲存的過程中就被加入了gamma 0.4545(從第四張照片的影像內部gamma仍為曲線狀態), 我們統稱這種非直線性色彩空間為Vid color space, 而且當你在影像處理軟體裡的特效內有提供gamma控制, 如Level特效等, 也早以習慣gamma 1.0的標準預設值, 也非常習慣在這樣的環境進行調色/ 合成/ 動畫製作等等需求, 老實說其實這真的沒有什麼不好, 我也在這樣的非直線色彩環境完成許多的工作, 包含平面,動畫,視覺特效等等. 但你有沒有跟我有類似的感覺像做視覺特效時,合成上去的東西看起來總是有一點假假的, 特別是在物件的邊緣部份, 如果你有很好的眼睛觀察事物,再花很多時間去處理邊緣顏色明亮度問題..等等, 或者花很多的時間調整效果,但心中好效果總是難以捕捉, 怎麼試怎麼不對, 糟糕的是:沒有一個邏輯或道理可循, 而且如果你的合成素材中還有在Log色彩空間Film Scan的cin或dpx之10bits數位格式要在一起進行合成, Log space與Vid space在一起那可真是一個頭兩個大. 我要告訴你上述問題有很大的原因可能來自於影像的”非直線性色彩”的 gamma 0.4545, 因為你所作的所有合成工作都是在gamma 0.4545的非直線性色彩環境中進行合成互動, 彼此圖層邊緣交合都是在非直線性色彩環境中, 並不是以正常物理光線的gamma 1.0合理疊合方式處理合成效果. 所以對視覺特效工作來說非直線性色彩是一個壞消息 所以換一角度來看, 如果可以把所有非直線性色彩Vid space與Log space全都安全地轉換到gamma 1.0的直線性色彩(我們通稱Lin space)後, 在符合物理光學Lin space的gamma 1.0環境中進行所有的合成程序, 因為所有素材資料都已進入gamma 1.0環境, 因此畫面會變的暗的許多, 甚至在AE 6.5 pro的eLin在最亮值13.52時操作時畫面會變的超暗的, 跟本不適合我們的眼睛來進行特效合成或動畫製作, 因此我們要透過一種叫LUT(Look Up Table)的gamma調校回到Video color space(gamma 0.4545)濾鏡, 此濾鏡通常被放在合成流程上最上面一層(例如:After Effects的Timeline裡)或流程上的最後一個結點(例如:Apple Shake的Node Tree裡), 以Video Color Space預覽的方式去監看最後的輸出結果, 其內部或已下的所有色彩運作均保持在gamma 1.0的直線性色彩環境下, LUT完全不影響任何合成動作.
基本運作流程如下圖所示:


最後根據輸出格式的需要進行算圖:
若是輸出給NTSC/PAL Video(電視畫面), 你可以直接使用LUT所看到的結果進行最後算圖, 因為LUT是在Video Color Space!
若是輸出給Film的Cineon格式, 需要透過最後gamma 1.0的直線性色彩轉換到Film的Log Color Space的動作, 再進行Film的Cineon或DPX算圖.

5 則留言:

匿名 提到...

非常詳盡的說明!
有機會講一下gamut的轉換嗎?

Drake 提到...

再次看你的這一篇文章,腦子裏突然冒出一個想法:我好像很容易被中文的文句給迷惑,尤其是一篇在探討一些比較精確的事物時。

這也許是因為我對於中文在「精午描述」這一塊的理解力比較弱,所以很容易看同一篇文章,會有不同的結論出來,哈。

anyway, 我一樣很推薦你看 charles poynton 的 gamma faq :)

Unknown 提到...

請問我可以轉在這篇文章到我的網誌嗎?純粹覺得很受用~想要收藏

skyforce 提到...

人眼對亮度的感受的確是接近 gamma 1/2.2, 而更能精準描述的是L*曲線.

但是整個gamma轉換流程中, 有一點最弔詭的卻很少被提起, 螢幕為什麼要用gamma 2.2?(先不要提Mac) 是因為反函數接近人眼的1/2.2而已?
如果螢幕的gamma 採用1, 所有的gamma轉換流程是不是都沒有必要了?

目前現有的流程是input gamma=1, 中間經過gamma=1/2.2的轉換, 螢幕則是output gamma=2.2, 關係就變成 1 x 1/2.2 x 2.2 = 1, 最終gamma還是1.
如果螢幕也是gamma=1,input gamma=1, 螢幕的output gamma=1, 完全把原始影像的亮度分佈忠實的呈現出來: 1 x 1 = 1, 一樣是最終gamma=1

所以重點在於為何螢幕 gamma採用2.2而不是1的原因.
其原因之一可能是過去CRT的Gamma接近2.5, 相對來說gamma 2.2的CRT會比gamma 1來的好生產.另外一個原因是我個人猜測, 但我也覺得最有說服力的原因之一:

人眼對於亮度的感受程度不是線性的, 而是接近gamma 1/2.2, 這點是可以認同的. 如果輸入端把接受到的訊號以gamma 1去儲存, 會浪費很多空間去紀錄人眼感受不出來的亮度變化, 也會有很多亮度較為敏感區域所需的紀錄空間不足. 因此將亮度轉換為 gamma 1/2.2去儲存, 會更接近人眼對亮度敏感程度的變化. 因此儲存時採用gamma 1/2.2, 是更有效率的應用儲存空間.

至於Mac的1.8該怎麼說? 2.2不是比較符合人眼嗎?
採用gamma 1.8的原因有一種說法: 較符合出版業使用. 所謂出版也就是最終會被印刷成報紙或雜誌等出版品. 而紙張再怎麼黑, 還是很難達到人眼所認為的"最黑", 也就是說印刷品對低灰階的呈現是比較差的, 因此對於低灰階要求並不高. 而gamma 2.2從黑到白的變化程度可以說還算均勻的敘述, 但是對於低灰階出版品無法呈現出來的部份, 去詳盡的敘述其實有點多餘; 因此採用gamma 1.8可以對中高灰階的亮度變化敘述多一點, 也較為符合紙張的特性.

VFXJimmy 提到...

回應skyforce! 當然在螢幕上使用gamma 1.0似乎所有問題可以簡單解決, 可是很不幸, 早在十幾年前, CRT螢幕就buildin gamma, 也致所有數位攝錄影裝置也需要buildin反gamma曲線, 現在的LCD螢幕可以完全使用gamma 1.0, 但要求世界其他裝置要一起改似乎完全不可能的事!