一、什么是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文件来说是一个很大的优势。当需要对阴影区或高光区进行细致调整的时候,这一点非常重要。【内容概要】
一、人眼与传感器
二、线性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校正后适合我们观看的“正常”的样子。
图4
2)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来补救了!