【电子狗玩摄影第二期】【论CNSF四家的RAW】matlab真真是个极好的照妖镜 公开 2013-12-13 04:01 | (分类:默认分类)大家不用劝我吃点好的了…水表什么的问题我自会处理… 电子狗们都知道matlab是个神挡杀神佛挡杀佛的好东西,不拿它来拆一下各家的RAW做做简要分析是不是屈才了呢哦哈哈。 怎奈个人水平有限,这个只能跑简单功能的程序还是以某个github上的原始算法作为思路弄出来的…… 源程序不公布了,因为还想弄毕业论文用。。 下面进入正题。 老夫作为一个穷屌是弄不起各家的顶级机的,于是只能用这边存了RAW的佳能6D、尼康D800E、富士X100s、索尼a7r作为样本进行RAW的拆解分析了。 首先需要一个工具,Adobe DNG Convertor,这玩意可以把RAW直接转换成通用的DNG格式,免去加载解码器的过程(其实是老夫matlab水平太低不会弄我会乱说吗)。具体按下不表。 参与测试的是以下四张图,内容虽然完全不一样,但是分析到后面大家就能看出来了,根本和图片拍了什么没关系。 唯一的要求是图片里面必须有纯黑和纯白的部分,如果小伙伴们想发自己相机的RAW文件给我分析的话,切记这一点。 于是我选用了下面的四张图: Fujifilm X100s Canon EOS 6D Nikon D800E(无压缩、14bitNEF。我想风光狗们采用的也是这个设置吧)
Sony ILCE-7R。在人艰亦拆之前我想夸一句,这个35/2.8ZA的素质确实很棒,用过的35镜里最棒的。 于是把它们加载到Matlab里跑一下程序,会得到一张图和一个csv格式的表格。 图就是这样的图:
其实就是一个有标度的分色直方图。不过我为了分析方便采用了对数标度。 有人要问了为什么有两个绿色通道啊?拜耳滤镜的传感器一组4个像素分别是R-G-G-B,两个G像素的信息未必完全一致,所以拆开来表示。 直方图的断裂不要太在意,由于对数标度的原因左侧的分度值很小,在线性记录的前提下必然会出现这种情况。 matlab可以输出csv,直接用excel就能开,很是方便。 开了以后就是这样的。
万恶的matlab不支持中文命名变量,没办法的事。 不过大家应该可以大致看懂,ChannelName对应的就是一组像素里RGGB四个通道,可以看到每个通道有900万像素。,minimun最小亮度值,maximum最大亮度值。2^14=16384,而D800的白场都是16383,表示它确实采用了完整的14bitADC。至于蓝通道的那个15895,大家看原图就明白了,对于一张整体偏黄的图,蓝像素没撑满也正常。而且可以看到四个minimum的数值都不是0,看起来乌七八黑的暗部竟然没曝死还有层次,我只能在这里对尼康的动态范围表示。 Different Values表示从0-16383这些亮度里共采用了多少个数值来进行表示,2^13=8192,只要大于这个数值就可以认为相机采用了完整无损的14bit RAW。当然具体的记录能力因传感器而异,比如说下面这个EOS 6D:
虽然也是14bit ADC,但是显然模拟电路部分喂不饱这个14bitADC,只能记录0-13539的数据。 这也解释了为什么1DX、6D低感下DxO测试的动态范围落后于尼康,但是ISO超过800又能反杀。 Different Values没有什么异常,确实是14bit RAW。暗部已经完全曝死,这点没办法了。 再来看富士。
X-Trans CMOS的特殊排列逼迫我改了下程序,把所有的G像素合并到一起输出,这下没什么问题了。可以看到一块1628万像素的X-Trans CMOS有360万的R,900万的G和360万的B。大概会很适合撸风光吧。 X100s是富士X系列第一款采用完备14bit RAW的机器,可以看到也没什么异常。满阱容量15360,还是不如D800E。尼康到底是用了什么黑科技。。 Different Values无异常。 ——————————————————————人艰亦拆的索尼要来了——————————————————
这个15871的满阱容量貌似没有什么问题(不过就这点上来说这货还是撸不赢D800E的,我猜DxO的动态范围打分应该也参考了这个数值,一个14.1EVs,一个14.4EVs,像素加成基本一致的情况下很能说明问题)。另外像素数实际上和D800E有微小的差别,究竟跟微透镜和程序优化有没有关系,这里不得而知。 Different Values……你怎么了Different Values!为什么只有1767…… 鉴于2^10=1024,2^11=2048,我只能说这次的平均码率应该不是8bit了,应该是介于10-11bit之间。取一下对数就知道了,严格算起来应该是平均lg1767/lg2=10.78bits。 然后我凑了半天也凑不出10.78bits来,查了一些帖子和资料,众说纷纭。据说索尼这次学乖了采用了动态有损压缩,这个还需要求证。 不过话说回来,用1767个数值来表示15000+阶的亮度,能完美契合才怪。 剩下的我就不借题发挥了,我想看到这里的人应该是心里有杆秤了~ 风光狗们,别舍不得钱舍不得体能了,没钱去赚钱,没体能去健身,一定要买D800E啊!!!7R最好别碰啊!! —————————————————————————————————————————————————— 最后,如果谁有兴趣把自己相机的RAW文件发给我解析,请发到lq84230@qq.com,邮件题目姓名+机型+RAW文件解析。我解出数据来之后会第一时间回复的。注意:画面中一定要有纯黑和纯白的部分,否则数值没有参考价值。发原始RAW(CR2、NEF……)就行,转DNG的事我自己来。 为了造福更多小伙伴请大家看完文点一下分享。如果愿意顺手点一下赞也可。 好了作死结束,睡觉去了。 ———————————————————————下面是反馈们—————————————————————— @宋耘立(258297848):楼主对A7R的unique values的分析恰好验证了目前大家公认的索尼raw有损压缩算法:每16个像素为一个区域进行分治,11bit*2记录最亮和最暗像素,4bit*2记录最亮最暗像素位置,剩下14个像素每个用7bit记录,这样下来接近11bit精度【这个基本靠谱 我只能说索尼的电子工程师都是神 挖尽心思的从Sensor里抠成本好让产品看起来价格低跑分高以当业界良心,不容易啊】 ————————————————————下面是小伙伴们反馈机型的跟踪————————————————
a-900,从编码这块来讲是索尼最后的良心。完备、一刀未砍的12bit RAW在那个年代足以撑起风光机的一面大旗。
无敌二。在动态这块跟6D比不差什么,还有点领先。。
Nikon D80。嗯,从D80到D800尼康在背地里都干了什么,请自行想象。 较新一篇:【电子狗玩摄影第四期】ma... 较旧一篇:理科生优越感的来源:(转) 阅读(3344)| 评论(115)| 分享(226) 评论| 赞 杨晗: @陶心云EnHom.NEF 刘大看: 风光狗们,别舍不得钱舍不得体能了,没钱去赚钱,没体能去健身,一定要买D800E啊!!!7R最好别碰啊!!
刘大看: 直接拉到最后看这句话了···
翟晨曦BAYERN: 这个分析的源代码在mathworks官网的论坛里本来就是公开的啊,直接可以得到unit16型的cfa数组,记录了每个像素的色彩数据,然后只要分解cfa数组就可以了。原帖链接:http:///s2wfii 陈世豪丶Archrage: 感觉智商被抽离了身体 刘庆: 第一都是我一个人照出来的,第二这些片子里都有黑白场,我也只做黑白场分析。虽然确实欠严谨但是我觉得足够说明我想说明的问题 刘庆: 回复翟晨曦PENTAX: 瞅了一眼还是有点区别,不过貌似这个代码更牛逼一些。。 曹骏一.Perapher: 老5d的raw你要吗=_= 刘庆: 回复曹骏一 XEN:可以~ 曹骏一.Perapher: 回复刘庆: 明天撸一张,既要有死黑也要有死白吧? 刘庆: 回复曹骏一 XEN: 嗯 贲圣豪: 为何6D高感反杀? 刘泓波?Panda: 强力党 袁野: raw文件里。。RGB加起来是1倍的像素,还是已经4倍的像素了? 袁野: 回复谷海璠:动态范围的另一个问题是。。CCD的电子阱能存多少。。 袁野: 的确屈才了。。 薛伟超: 卧槽完全看不懂啊! 林晓煜: 给你发个GF2的? 王越: 我下周有个三连休,可以有空录一段 严鑫: lz测试过a99的没?跪求结果啊~~~ 方东朔: 回复卢翔: 我不都跟你说过了嘛,Plus高光拉是能拉回来,就是拉回来肯定是大幅阶跃的灰度信号了,我感觉从频域低通滤波的角度理解是不是更好理解一些?我感觉这个算法近似是这样的吧…… 岑家鑫: 回复施维:看來X100S是很好 严鑫: 请问 a99那个14bit怎么样啊? 施维: 回复岑家鑫:有空你选几张 我们来分析一下D7000哈哈哈
施维: 大神们快把自己的RAW文件发给我们来对比一下! 乔纳斯Jonas: 我想知道的的是,索尼文件里砍了这么多过渡色阶,为的是可以用比较差的处理器就能获得高连拍还是什么?而且实际文件处理质量在软件里索尼比佳能好是为什么?最后,DXO对A7r的色深评分是25.6, 5D2是23.7, 这么说来结论似乎跟po主的矛盾。 刘庆: 回复乔纳斯Jonas:关于DxO的解析看我前一篇文章。naive。 刘庆: 回复乔纳斯Jonas:关于DxO的解析看我前一篇文章。naive。 刘庆: 回复乔纳斯Jonas:采用Unified ADC可以有效的砍传感器成本。无商不奸嘛。
乔纳斯Jonas: 很多人不相信dxo的结论,但从过往几个标志性的争议事件(5D2vs5D3文件质量,5D3vsD800宽容度,哈苏vsD800宽容度)上看,他们的测评还是相当可信的。我能看到他们唯一的不足是宽容度没有分高光和阴影两部分来测,因为向右曝光原则使得高光区宽容度比阴影区的好用。 刘庆: 回复乔纳斯Jonas:不不不,DxO的最大问题是利用总的Dynamic Range来标定分数而不是利用实际编码动态(这篇文章里的max-min反映的就是总动态,但是分立的different values对于跑分几无影响),还有一个就是采用总像素加成的方式来代替缩图跑分。 刘庆: 回复乔纳斯Jonas:DxO打的分看看就行了,原始数据倒是有比较大的参考价值。至于怎么看原始数据,点我前一篇日志。 乔纳斯Jonas: 回复刘庆:撇开跑分,看文件质量。A7的质量就比佳能5D系的好很多,从宽容度到可处理范围(处理起来更不容易拉爆)。ps,我自己是个经常用灯的佳能用户,我的文件质量可以代表我手上机型在那个情况下的最高画质了。 刘庆: 回复乔纳斯Jonas:不用灯,出去拍一些色彩和细节很跳跃的场景,甚至裸自然光的外景人像,只用ACR的基础功能(不允许单色调节)来调色,就能感觉到编码蛋疼带来的问题了。 乔纳斯Jonas: 如果一个数值不能在文件质量上有所体现,我认为它对于我一点也不重要。 刘庆: 回复乔纳斯Jonas:再不用说吉布斯毛刺的问题,怎么说呢。如果把图片看做单纯的信号,理解这个就容易多了。至于摄影意义上,我觉得啥器材都能用。研究器材和拍照是两个行业,您觉得呢。 乔纳斯Jonas: 回复刘庆:ACR的解码质量其实很一般,Capture1pro的比较好。不过c1p和ps合作的流程太让人讨厌了。 刘庆: 回复乔纳斯Jonas:输出tiff再进ps就是了,也好吧。反正matlab解raw我都搞,还怕啥啊。 刘庆: 回复乔纳斯Jonas:从图里也能看到,D80比a7是恶心多了,但是没人觉得D80/D90(它俩AD一样的)没法胜任日常拍摄工作吧。理工人的吹毛求疵精神和摄影的意思有点不一样,所以我说拍照和鼓捣器材是两门学科。 乔纳斯Jonas: 回复刘庆:问题是,我用到的从iq260到450D都有色彩倾向。不同的处理软件直出的结果还差的很远。没有微调的acr设定?我认为那没有实用性啊,数码本来就是用来调整的啊,除非新闻摄影。 刘庆: 回复乔纳斯Jonas:嗯主要是基于这么个前提,1、大部分人没有专业的色彩后端和足够好的色感去逐色调整 2、大部分人没那么多时间。3、大部分人眼里的后期也就是拉拉滑块和曲线,连动蒙版的都在少数。所以这种意义的调节不可谓不重要。那种干脆全图划块重新上色的,找个啥机器不都一样嘛。。 乔纳斯Jonas: 回复刘庆:相机的作用就是拍照,对出图质量没有影响的数值我不认为有决定性意义。反而是佳能文件一直存在的暗部条纹噪这类对拍摄有比较大的影响。 乔纳斯Jonas: 回复刘庆:我随机器带色卡。但色卡没法解决色彩层次的缺乏,暗部条纹噪,高感光下暗部色相漂移这类问题。总之我认为A7的画质还是不错的,我认为软肋在电池容量和镜头缺乏上。 刘庆: 回复乔纳斯Jonas:不是谁都像您这样啥都有的。玩到现在我穷的连个UV都买不起。怎么说呢,a7最大的问题应该就是色彩层次缺乏了,至于佳能暗部条纹噪声,这个我还真不知道是因为什么。嗨其实说白了,摄影器材没有性价比可言,一分价钱一分货这句话我觉得还是没错的,a7既然便宜,那肯定是啥地方阉了。出于这种想法我才开始慢慢研究的。 乔纳斯Jonas: 回复刘庆:我对电子学了解有限(我以前学化学的)。我有限的了解:如果不容易拉爆,层次应该是比较多才对。毕竟调色实际经常是在压缩颜色,这就是为什么中画幅的16bit文件比较耐处理。至于我的设备。。。其实现在我还在用的中间,爸妈给/借给我的就一ef50 1.4以及现在的学费还有一部10年车龄的丰田。我的相机镜头灯具附件什么的全是赚和存的。 刘庆: 回复乔纳斯Jonas:国外的经济和国内不是一个等次啊您考虑好。哈哈化学~~~胶片那个时代是化学人的天下,现在倒是换了世界~怎么说呢,不容易拉爆不代表层次多,只代表极值差大。我相册里有一张索尼在跳变点出乱色的样图,其实就是极端情况下编码问题所产生的。 乔纳斯Jonas: 回复刘庆:我去赶个图,先这样,回聊。ps,其实我在国内干了蛮久的,略。 倪瀚文∞Fantasia: 请问D800在RAW的数值分析上和D800E有没有什么本质差别? 魏仁泯: 发了一个宾得的照片.辛苦楼主了. 魏仁泯: 还有楼主是否注意到不同相机的动态范围设定了?有些相机是有高亮区,阴影区动态范围自动优化的.不知道那个是否影响. 区境超: 请问有D7000的分析吗?可以发一个到我邮箱吗?jypk74@163com 王旭阳.aes256: 求分析D700,看看D700到D800E到底进步了多少,回头挑几张发你 王旭阳.aes256: 已发送,请查收,求大神分析 郭瑞: 大神你好,我是这方面的菜鸟新手,想知道你这里的CSV数据文件是怎么生成的,能提供我一个读取raw这方面的代码么 |
|