玩轉RAW格式
在矩陣內的每個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文件來說是一個很大的優勢。當需要對陰影區或高光區進行細緻調整的時候,這一點非常重要。推薦幾本書:
引用:如果您還沒有閱讀過[老狐教程]之《玩轉RAW格式》——基礎篇,請到這裡:http://forum.xitek.com/showthread.php?threadid=272600先行閱讀!【內容概要】一、人眼與感測器二、線性Gamma三、不要被LCD欺騙了你的眼睛四、對曝光的指導意義一、人眼與感測器「假如在一杯咖啡里放了兩勺糖而不是一勺糖,你並不會感覺甜了一倍;如果你把音量加大一倍,但並不會感覺音響加了一倍……」(引自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》)。對於我們的眼睛而言,當有原來的兩倍光線進入我們的眼睛時,我們並不會感覺到比原來亮了一倍,而是覺得更亮了。人的眼睛能夠對光線進行壓縮,自動的適應各種不同環境下的光線,並對此環境下的顏色作出解釋,也就是說人眼對光線的反應是非線性的。也籍於人眼的這種機能,使得當我們從一間黑暗無比的房子突然走出到一個晴天烈日下時,不至於令我們的眼睛著火(想像一下自己是否有過這樣的經歷,先是覺得非常耀眼,然後眼睛會慢慢適應)。而膠片也有類似於人眼的這種對光線的非線性的反應。但對感測器而言,可就缺乏了人眼的這種機能,它對光線的反應是線性的,只用線性方式去計算進入的光子數量。所以,對於數碼攝影來說,很多東西都改變了,其中包括我們拍攝時的曝光。如果繼續沿用膠片攝影的曝光方式的話,極可能導致兩個巨大的危險:一是丟失大量的高光細節;二是暗部出現嚴重的燥點。並且對於相機的Bits(位深)是一種巨大的浪費。為什麼會這樣?那就讓我們一起來了解一下關於感測器的線性Gamma。二、線性Gamma我們先來看兩幅圖:圖1圖2圖1是直接作線性轉換(Gamma 1.0)出16 bits/channel後的圖;圖2時經過Curve作Gamma校正後的結果。為什麼會出現圖1的情形呢?這是緣於Sensor只是記錄到達其上的光子數量,然後根據其數量作了一個正比例變換(如f(x)=2x),將得到的數據進行Gamma編碼。感測器的這種對光線的線性反映被稱為Gamma1.0,而人眼對光線的非線性反映通常在Gamma2.0到3.0之間。目前的DSLR大多數位深只有12 Bits,專業機型可達到14 Bits。據說目前還沒有真正的16 Bits的感測器。如下圖3,我們以12 Bits的感測器為例:圖3感測器採用12 Bits,即2^12=4096個levels來對採集到的數據進行編碼。當有能夠另到Sensor溢出的光亮進入時,這時該Sensor上的電荷之上升到第4096的level,也就是說第4096的level就表示光線剛好溢出;當進光量減少一半,即降低一檔,這時另到Sensor上的電荷之上升到第4096的一半位置,即第2048的level處,因此第2048的level就表示比過曝-1檔的光量。而在過曝-1檔到過曝之間的光量就被記錄在2049~4096之間(共有2^11=2048個不同的感應級別);當光量再減低一檔時,產生的電荷只達到第1024 level的水平,因此第1024 level就代表過曝-2檔的光量,而介於過曝-2檔與過曝-1檔之間的光量就被記錄在1024~2048之間(共有2^10=1024個不同的感應級別)……以此類推,不斷的遞減,過曝-6檔的光量只用剩下的64個levels來記錄。因此,假如對某張照片而言,過曝-3檔是「正確」的曝光的話,那麼整個圖像中的大部分信息都被記錄在512~1024的levels中,陰影區的信息記錄在0~512之間,高光和過曝的信息記錄在1024~4096之間。(到這裡先喘口氣,消化完了再接著下去)接下來分兩種情形:1)16 bits/channel的輸出。由於16 bits/channel每個通道有65536個亮度層次,而PS基於不知名的原因只使用0~32768共32769個亮度層次來處理16 bits/channel的圖像。但這也關係不大。由於DSLR只有12 Bits的位深,即只有4096個亮度級別,因此Raw數據如果不經Gamma校正(或線性轉換)直出的話,那麼正如下面的動畫所示那樣,所有數據被搬到0(黑)~65536(白),並對齊0起點。因此直方圖中大量的數據集中在前1/3處。這就是Sensor所看到的樣子(圖1)。而圖2時經過Gamma校正後適合我們觀看的「正常」的樣子。圖42)8 bits/channel的輸出。由於8 bits/channel每個通道只有256個亮度層次,因此將4096個levels數出成256個levels的時候,必然要將4096個亮度級別進行壓縮(2^12-->2^8)。所以在這過程中造成的是幾何級數的信息損失。並且,由於數據被壓縮後,能夠充滿整個0~255的區間,所以只轉8 bits/channel的圖像不會像轉16 bits/channel世出現那麼暗的現象,看起來是「正常的」。圖5三、不要被LCD欺騙了你的眼睛按照前面的說法,為何我們在DSLR上的LCD看到的圖案卻不會偏暗,而且直方圖也很正常呢?圖6其實我們所看到的直方圖是經過了加工的,也就是說源直方圖真實的樣子就像圖1那樣。可如果用家看到圖像是那個樣子的話,誰還敢用呢?因此,在圖像被顯示到LCD之前,絕大部分的DSLR先對原數據進行Curve變換(會不會有些用Linear Profile,我不知道)後,將其「正常化」後顯示出來。(所以拍JPG免不了要遭遇這一過程以及以上2)的一劫)。因此,把ISO設置成100,拍出來的結果可能相當於使用ISO 125時的結果。花些時間好好地把原來的「ISO 100」,這絕對是有必要的。四、對曝光的指導意義人的眼睛對高光區層次的敏感度要遠低於暗部層次的敏感度。而如前所述,Sensor由於其線性感應,使用了大量的levels(Bits)來紀錄高光區段的細節層次。這就是為什麼國外的攝影師會提出一句話叫「Expose to the Right」,語意雙關,Right既指正確,也指右邊。就是數碼攝影里要盡量向右曝光,讓直方圖中的右邊部分獲得儘可能多的信息。如果曝光不足的話,原本應該被記錄在中間王有的高光區信息被壓縮到了中間往左的區間紀錄,levels少了,層次當然少了;而暗部信息由於本身levels少,再加上曝光不足,加上記錄到的信息更少,因此不可避免的產生大量噪點。而為什麼之前「基礎篇(一)」里說到在Camera Raw中的Exposure寧減勿加(??不要弄混了喔!)假設一張正常曝光的圖像,其直方圖兩端邊界均有少量數據到達邊緣,即圖像中的極高光和極陰暗區。如果這時令Exposure加得過分的話,含豐富levels的高光信息必然向右溢出(丟失),而levels極少的暗部區必須要往右邊levels多的區域拉,這當中必然要憑空捏造一些顏色出來,因此噪點增加。不過,具體問題、具體分析。假如一張圖真是欠曝得厲害的話,還是得適當的增加Exposure及調整Contrast來補救了!基礎篇到此收筆了,相信這兩篇文章如果都看懂的話,已經足以應付各種Raw Converter的各項調整了,基本上都是大同小異的。在此也感謝試試DX從旁指點解惑,也感謝各位閱讀本文,希望能從中有所收益!
推薦閱讀:
※pdf格式文件怎樣轉jpg?
※常用的詞譜格式
※擇日 天干吉凶的四柱格式
※詩詞格式
※詞牌格式(5)
TAG:格式 |