[老狐教程]之《玩轉RAW格式》——基礎篇 引用: 【關於本文】 DSLR現在已經算是相當普及了,可是關於Raw格式的問題,在國內的各種書籍裏、或是網上,這方麵的資料是少之又少。前段時間相當有幸地拜讀了B R U C E_F R A S E R大師的《R e a l_w o r l d_c a m e r a_r a w_w i t h_A d o b e_P h o t o s h o p_C s》
,並對其中的觀點進行實際文件的多次驗證。將讀書筆記及心得整理成該文,希望能給廣大數碼攝影愛好者帶來一些有用的信息。另外,假如你對Gamma、Photoshop中的Level、Curve等問題有深入了解的話,閱讀本文會更容易理解。
一、什麼是RAW文件?
RAW文件主要是一種記錄了數碼相機傳感器的原始信息,同時伴隨著一些由相機所產生的一些元數據(metadata,諸如IS0的設置、快門速度、光圈值、白平衡等)的文件。不同的相機製造商會采用各種不同的編碼方式來記錄raw數據,進行不同方式的壓縮,個別還甚至對raw數據進行加密。所以,不同的製造商對各自的raw文件采用不同的文件擴展名,如Canon的.CRW、Minolta的.MRW,Nikon的.NEF,Olympus的.ORF等,不過其原理和所提供的作用功能都是大同小異的。
二、為何要選擇RAW格式?
答案是非常簡單的,我們來看一下在絕大部分數碼相機內部,拍攝JPG的話,其生成過程是怎樣的。
從CCD/CMOS得到原始Raw數據後,把之前設置好的各項參數,如sRGB或是Adobe RGB的色彩空間、銳化值、白平衡、對比度、降噪等,更多的是再加上一條強S形的曲線(提亮亮部、壓暗暗部)進行變換(為什麼要這樣?這是因為CCD/CMOS捕獲光子能量是基於一種線性Gamma(Gamma 1.0),可是人眼對光的感覺的卻是非線性的,如果不進行這個操作的話,圖像是暗得沒法看的。並且不清楚原因的人看了後絕對不會去買數碼相機,廠商恐怕要倒閉了),得到變換後的圖像,再按照你所設定的JPEG質量(諸如SHQ、HQ、M、S)進行壓縮,得到JPG文件。
而拍攝RAW格式的話,機身上的所有設置除了ISO、快門、光圈、焦距之外,其它設定一律對RAW文件不起作用,因為上述的色彩空間、銳化值、白平衡、對比度、降噪等的所有操作必須在轉換Raw時才指定,一切都由你自己控製。
打個最簡單的比方,拍JPG就像是自己拍照,然後拿給相機製造商的打片手來幫你出片;而拍RAW格式則是自己拍照、自己衝洗底片、自己出片。(看看為什麼Olympus Studio中把英文版的“Raw Development”翻譯成中文版的“Raw顯像”就知道了)
也許有很多人對後期的處理(或是對PS)嗤之以鼻,覺得前期拍攝時相機後麵的腦袋是最重要的。沒錯,對於這一點,本人也十分讚同。可是,既然有前期那種認真對待攝影的精神,為什麼就不能把這種態度用後期製作上去呢?以前我們一直埋怨拍的片子被衝印店的打片手糟蹋,於是轉向拍翻轉,算是讓自己有了更大部分的操控權。現在到了數碼,從頭到尾都可以讓自己完全控製,又為何要將其拒之千裏之外呢?況且,更是由於數碼的原因,假設後期出片(這裏指的不是PS,而是相當於底片顯影的過程)不認真處理的話,前期付出的努力再多也可能沒法弄出真正質量高的片子。
三、關於傳感器
主流的數碼相機傳感器,主要有CCD、CMOS和Foveon X3。對於Foveon X3的工作方式,可自行到Foveon的主頁上去查閱,這裏主要隻簡單地講一下CCD/ CMOS的工作方式,對我們使用raw就已經足夠了。
數碼相機傳感器是由橫豎兩個方向密集排列的感光元件(CCD或CMOS)組成的一個二維矩陣,常見的有如下圖示的Bayer模式的排列方式,每個CCD就對應一個像素。其中R感應紅光、G感應綠光、B感應藍光,而在Bayer模式中G是R和B的兩倍(因為我們的眼睛對綠色更敏感)
圖1
在矩陣內的每個CCD或CMOS隻是用來感受光子的能量,因應進入光線的強度而產生對應比例的電荷,然後將這些電荷信息彙集並經過放大,儲存起來。而應當知道的是,raw紀錄的隻是每個像素位置的電荷值,它是沒有記錄任何的顏色信息的。所以CCD是“色盲”的,也就是說:
RAW文件隻是灰度文件而已!
我們可以這樣去想象一下充滿電荷的CCD/CMOS,就像下圖一樣:
圖2
因此任何一個RAW Converter(如Photoshop的Camera RAW Plugin,Bibble、Phrase One C1 Pro、RawShooter essentials 2005,各廠商自帶的Raw轉換軟件等)的作用就是將這些像素所記錄的亮度信息轉換成為肉眼所能看見的顏色信息,至於不同的製造商是如何排列傳感器矩陣上的RGB或CMY的問題,我們不需要去關心,隻要所使用的軟件能夠支持你的數碼相機,就說明他已經了解這個問題,知道該怎麼去詮釋和處理每個像素上的亮度值。
由於現在的CCD/CMOS與Foveon X3的原理不一樣,所以對於CCD/CMOS而言,要獲得一個像素上的顏色值,必須從鄰近的像素中獲取信息來進行一種叫做“反馬賽克”的運算(Foveon X3可不需要這樣),從而得到該位置的顏色值。當然,除此之外,RAW Converter所控製的事情還有下麵的這些,而這些也是我們在操作Raw的時候一定得知道的原理。
●白平衡——我們的眼睛能夠自動的適應不同的環境光線,把最亮的地方解釋成白色,其他的顏色依序地去解釋。可是傳感器卻沒有人眼的這種功能,它必須知道到底多亮才是白色,因此我們需要設定白平衡來告訴它。在使用Raw拍攝的時候,傳感器紀錄的隻是每個像素的亮度值,白平衡是作為元數據(metadata)記錄的,用以在後期RAW Converter轉換的時候用的。也就相當於一個起點,也可以理解成在轉換函數中的一個必不可少的參數,少了它,其它的顏色就沒辦法解釋。之前小革命好像有篇文章關於拍攝時白平衡不管設置與否,都可以在後期還原的問題。我的看法是在理論上是絕對肯定的,為什麼說是在“理論上”?從上麵的論述就可以知道,白平衡的設置隻是在後期轉換時才參與。所以即使拍攝時沒有設置正確的白平衡,隻要在後期轉換時能夠輸入當時場景的正確的色溫值的話,絕對是可以還原出原來的色彩的。可問題就是,有多少人能夠在轉換時準確的記起當時的色溫值。除非在圖片中有一處純白色的參照物,用白平衡吸管吸取該處的顏色就可以正確設置了。這裏其實也告訴了我們一個值得去嚐試的技巧:拍攝照片時,在構圖裏放置一個白色物(如白紙,但注意要在不影響構圖的地方,也不能太大麵積影響曝光讀數,並且要讓其充分受到現場光線的照射),把它也拍進去。後期轉換時候用白平衡吸管吸取這個白色物就可以了,然後把白色物這部分裁掉。
可是,對於拍JPG的話,可不是這麼一回事。因為拍攝後,就由相機在內部處理轉換成JPG,也就是說它必須要用到色溫值進行運算。如果這之前沒有設定好白平衡的話,那肯定是要偏色的。
●色彩演繹——假如你問一千個人哪種顏色是紅色,可能你會得到一千種不同的紅色。同樣的道理,對於CCD/CMOS而言,它不知道究竟什麼才算是紅色、藍色、綠色。因此,我們在轉換RAW文件時,必須指定紅色、藍色、綠色的定義,也即色彩空間(Color space),不同的數碼相機本身就內置了不同的Color space,如sRGB,AdobeRGB等。對於這點,我的理解是,拍攝RAW格式的話,相機裏麵設置sRGB或者是Adobe RGB都是廢的,因為是在轉換時才將RGB的定義(即目標Color Space,轉換後的文件的Color Space)告訴RAW Converter,因此在轉換RAW文件時都會有一個Color space的選項,是你必須指定這個目標Color Space的。所以,如果我們是拍攝RAW格式的話,不要再問到底要設置成sRGB或者是AdobeRGB了,喜歡的話,甚至可以轉成ProPhoto RGB也可以!拍JPG的話恐怕對圖像質量的追求也不是很高,所以就用sRGB算了。
●Gamma 校正——首先你應該先知道什麼是Gamma,相關的資料可以自己上網搜索一下。數碼RAW格式的拍攝是采用線性的gamma (即gamma 1.0),可是人的眼睛對光的感應曲線卻是一“非線性”的曲線。所以RAW Converter會在轉換時都會應用一條Gamma曲線到Raw數據上(簡單的理解,就是相當於對原始數據進行一個f(x)的變換,並且注意,f(x)並不是一次的線性函數),來產生更加接近人眼感應的色調。
●降噪、抗鋸齒和銳化——當圖像細節剛好落在CCD矩陣中的單位像素上,或者假設落在了一個R-感光像素和B-感光像素上時,問題就出現了。該細節處的真正的顏色光靠“反馬賽克”運算是很難準確地還原出來,也就是說細節會有所丟失。因此,大部分的RAW Converter都會在轉換的時候進行一係列諸如邊緣檢測、抗鋸齒、降噪以及銳化等操作。而由於不同軟件所采用的算法未必相同,因此使用不同的RAW Converter出來的片的細節也不一樣的原因就在於此。
哎,打了那麼多的字,真的好累了。其實關於Raw要說的還有太多太多,我在做筆記的時候是直接把原文(英文,全書254頁,關於Raw的內容就100多頁)摘錄下來的,所以在寫這篇文章時一邊看著英文一邊思考來寫的,甚是痛苦。雖然,如果能夠明白Raw相機內部的工作原理的話,以前的所有問題可以迎刃而解。但也許對大多數閱讀這篇文章的人來說,關鍵是要知道怎麼用好(轉換好)Raw,所以原理的東西不再多講(涉及較多的數學原理)。假如以後有精力的話再寫一篇:[老狐教程]之《玩轉RAW格式》——軟件篇,專門介紹Camera Raw 2.4。最後,把大家必須知道的關鍵性的東西列出來(以Camera Raw 2.4 for Photoshop CS Plugin 為例):
圖4
1、任何的操作,能夠用Camera Raw進行的,都不要留到轉換後到PS中去操作。這裏的原因我隻簡單地說:轉換前和轉換後的操作有根本性的區別,轉換前的各種操作,實際上是在定義一係列的參數(如色彩空間、銳化值、白平衡、對比度、降噪等),然後交給轉換函數(其實就是Dcraw,一個開源軟件,Dave Coffin。他有多厲害,看看下麵這些RAW Converter軟件,都是基於Dcraw:Adobe Photoshop、Bibble、BreezeBrowser、Conceiva Lightbox、 cPicture、dcRAW-X、Directory Opus Plugin、dpMagicGraphicConverter by Thorsten Lemke、IrfanView、IRIS image processor for astronomers、Lightbox、 Photo Companion、Photo Jockey、PhotoReviewer、PolyView、PowerShovel-II、 RawDrop、RawView、SharpRaw by Duane DeSieno、SilverFast DCPro、ViewIt、 Viewer n5、VueScan)進行運算,生成目標像素的顏色信息。相當於一個f(x),f(色彩空間的定義,銳化值,白平衡,對比度降噪)= 目標像素的顏色,隻要這個顏色值不超出目標色彩空間的色域,它就是有效的顏色信息。但如果是轉換到較小的色域中,是會出現部分顏色被裁掉(即目標像素的顏色超出了色彩空間(如把一副包含顏色信息相當豐富的圖像轉換到sRGB的Color space時)。可是在圖像已經轉換(顯影)後,再到PS中操作的話,如Level、Curve,Hue/Saturation等,都是基於目前已有的像素顏色值進行操作,而且是非線性的操作,必然會造成不可逆的信息損失。舉個例,一個非線性的轉換f(x)=x^2(x的平方),x=3或x=-3,得到的結果都是9,必然有顏色信息被壓縮。又如,Camera Raw 2.4中所提供的Exposure、Shadows所提供的作用相當於PS中Level裏麵的White Point和Black Point,那麼假設我們把亮度值為245的點設為白點(255),在Level中的結果是從245到255兩度的點全部變成白色,這好像問題不大。可是最致命的就是,原來從0到245之間的點都被拉伸成0到255,那中間沒有的顏色信息從何而來?那些就是“捏造”出來的顏色,采用插值的算法算出來的。這也就是為什麼應用完Level後再看一下直方圖會看到中間有很多不連續的斷線(這裏我不上圖說明了,如果對PS的Level相當熟悉的話,應該能理解)。可是,如果在Camera Raw中設定Exposure有什麼不一樣呢?在Camera Raw中實際上隻是給定了一個參數值,讓函數去把所有的像素重新計算,因此得到的是有效的像素顏色信息。
2、關於銳化的問題,是用軟件(Camera Raw 2.4)自帶的銳化功能好還是PS中的Unsharp Mask好?答案絕對是軟件(Camera Raw 2.4)自帶的銳化功能。……在圖像中,邊緣是由灰度級和相鄰域點不同的像素點構成的。因而,若想強化邊緣,就應該突出相鄰點間的灰度級的變化……(《Delphi 數字圖像處理高級應用》劉駿),也就是說,銳化的算法,一般是通過對灰度值進行運算的。那麼,不用解釋,你也知道PS中的是對以轉換後的像素值(已有的像素基礎上)進行操作。軟件自帶的銳化功能由有何不同呢?
先說銳化過程:像素灰度化-->邊緣檢測-->灰度強化-->還原出R、G、B分量
而像素灰度化的幾種方法:
1)求出每一個像素點的R、G、B的平均值,然後把這個平均值賦給該像素點的R、G、B三個分量
2)求出每一個像素點的R、G、B三個分量的最大值,然後把這個最大值賦給該像素點的R、G、B三個分量
3)根據YUV的顏色空間,Y分量的物理含義就是量度,它包含了灰度圖的所有信息。而Y=0.299R+0.578G+0.114B
上麵幾種方法,不管RAW Converter采用的是哪一種(甚至是其它的),從灰度的raw數據直接進行邊緣檢測,與現將轉換後的像素的R、G、B變成灰度在檢測,你認為那種效果好呢?
B R U C E F R A S E R在書中對這一問題的看法是留下餘地到PS中Unsharp Mask(認為Camera Raw 2.4的選項少,隻有Sharpness一個。而Unsharp Mask有Amount、Radius、Threshold,餘地較大)。就這一問題,我做過多次嚐試,從一副飽含細節圖像,經過Camera Raw 2.4銳化後所看到的細節,用Unsharp Mask不管Amount、Radius、Threshold怎麼調都出不來那種效果,要麼就銳化過渡(有些細節就是看不到)。
在這裏也教一個Photoshop做銳化的Trick:把圖像轉成Lab模式,在對L通道進行Unsharp Mask,再轉回RGB模式,效果比直接對圖像進行Unsharp Mask好。
3、如果隻要800X600的片上網交流,把2240 X 1680(甚至更大)的圖片Resize到800X600,原圖是否需要先銳化呢?縮小以後不是什麼都一樣嗎?錯!實踐證明,先用RAW Converter銳化後再Resize,能看到的細節還是能看到。不做銳化的話是絕對看得出區別的!信不信由你!
4、拿到外麵出片的話選Adobe RGB(在RAW Converter裏,不是相機裏!),上網交流的話選sRGB,不要先選了Adobe RGB進行轉換後,去到PS裏麵再轉成sRGB!但如果希望轉換後作進一步處理,如加框或加簽名等,就先選了Adobe RGB進行轉換去到PS裏麵再轉成sRGB。
5、Depth和第4點一樣。拿到外麵出片的話選16 bits/channel,上網交流的話選8 bits/channel,不要先選了16 bits/channel進行轉換後,去到PS裏麵再轉成8 bits/channel!但如果希望轉換後作進一步處理,如加框或加簽名等,就先選了16 bits/channel進行轉換去到PS裏麵再轉成8 bits/channel(但如果你想用一大堆的濾鏡對圖片進行操作的話,還是直接用8 bits/channel吧,因為PS中很多濾鏡在16 bits/channel下不能用)。
6、如果打算出小圖上網交流,在Camera Raw 2.4中的Size盡可能選最小的直接出(對於正方形的CCD/CMOS像素),不要出原大在PS中Resize縮小!對於Fuji SuperCCD(六角形的)則相反,盡量出大的在PS中Resize縮小。(B R U C E F R A S E R說的)
7、Camera Raw 2.4中的Exposure寧減勿加,減的話能恢複更多高光區細節,加得太大的話很容易在陰影區產生噪點。
8、Camera Raw 2.4中的Brightness相當於PS Level中的midtone——中灰度;Contrast相當於Curve;Saturation有點類似於Hue/Saturation。其中各項的調整所產生的結果如下圖:
圖3
9、一定要學會看Raw的直方圖,不管哪一項的調整,注意不要有顏色的溢出(被Clip掉)就行了。
10、Camera Raw 2.4中的Luminance Smoothing對去處大片色塊中出現的噪點相當有效,如藍色天空中的噪點。同樣的噪點,用PS去處的方法是把圖像轉成Lab模式,在對L通道進行模糊,再轉回RGB模式。但效果不如Luminance Smoothing好。
11、Camera Raw 2.4中的Color Noise Reduction,這個不用說了吧,去處暗部的噪點。
12、Chromatic Abberation R/C、Chromatic Abberation B/Y是用來去處紫邊的
13、Vignetting Amount是用來調整暗角的
總結一下
RAW格式的好處
引用:
◆RAW文件幾乎是未經過處理而直接從CCD/CMOS上得到的信息,為後期處理提供更大的自由度。
◆RAW文件沒有白平衡設置,可以任意的調整色溫和白平衡來進行創造性的製作,而不會造成圖像質量損失。
◆電腦上的微處理器來處理銳化及其它顏色運算來得更加迅速,也使得更加優化或複雜的運算能夠得以實施。
◆可以轉化成16位的圖像,也就是有65536個灰度層次可以被調整,這對於JPG文件來說是一個很大的優勢。當需要對陰影區或高光區進行細致調整的時候,這一點非常重要。
推薦幾本書: