首先感谢原作者无私跟大家分享这么多资讯,但是在看完这篇文章后,我怀疑文章中部分log使用知识的正确性(当然也有可能是我弄错xdd)所以想来这边分享一下小弟我对log的认知。
Log Profile 之所以会被应用在数位影像上的原因是因为Video Codec(编码)上的限制。大部分的Video codec为了让一般使用者在记录动态影像时储存空间不会那么快爆掉,所以只提供8bit的影像深度,再搭配上Inter frame等等其他的压缩技术,可以大大减少一般使用者储存空间的负担,但其实感光元件上能记录下的bit-depth远远超过8-bit。
拿板友常常推的A73来举例,相机在拍摄静态影像时最多可以记录到14 bit(raw)的深度,但是在纪录影片时却只能记录下8 bit的深度。这是因为相机的处理器在拿到每个感光元件颗粒送出14 bit的资讯后,会透过压缩的方式,把资讯量压缩到只剩8 bit。
当相机要把感光元件上每个颗粒所记录的14 bit资讯的压缩到8 bit时,必定会丢失许多的资讯量。
原本一个颗粒可以记录下2^14种不同的亮度,但储存动态影像时却限制他只能用2^8种数值去表现原本2^14种的亮度,这样的压缩过程会导致影像只能保存感光元件所读取到64分之1的资讯量。
假设要在8bit中完全保留动态范围,可以选择用等间距的方式采样:
2^14跟2^8差了64倍,所以我们用64当一个间距做采样,把原本2^14中0~63的资讯全部塞到2^8的0里面去,而原本64~127的数值塞到2^8的1里面去,以此类推我们就可以把原本2^14的动态范围完整的用2^8空间记录下来,但是原本的亮度中细节会被我们舍弃掉,原本0~63之间的差异会被舍弃掉,全部被当成0来看,也就是全部变成黑色。这样的采样方式我们虽然可以获得完整的动态范围,但是影像会因为舍弃太多重要的细微差异而失真。
如果在8bit中保留最佳的亮度变化细节,可以选择去头去尾的方式采样:
我们可以选择只纪录2^14/2 中加减128的资讯,像是原本14bit资讯中的8192数值就当作8bit中128,8193就当作129以此类推,这样所有亮度的变化差异都会被我们保留下来,但是高于8320和低于8064的亮度资讯都会被我们舍弃掉,也是就是会牺牲掉大量的动态范围,影像也会因此看起来非常失真。
这两种采样的方式都是非常极端的方式,不可能有厂商会用这样的方式做相机XDD,举这两个例子要说明在相机把14bit的资讯压缩成8bit的时候其实会丢掉相当多的资讯,但要如何在丢掉这么多的情况下还保留影像的细节跟动态范围ㄋ?这时后就是log profile派上用场的时候。
想像一下原本在2^14中所有的数值改用科学记号的方式表示,改成用x*10^y+z这个式子表示。把8bit中的6个bit分给x,2个bit分给y,而z就是我们在压缩过程中必须舍弃的部分。这样我们能记录的范围就涵盖了0(x=0,y=0)~16000(x=16,y=3)的亮度变化。此时我们在暗部的采样间距会比亮部的采样间距来的小很多,像是(x=0,y=0)到(x=63,y=0)之间采样的间距为1,(x=0,y=1)到(x=63,y=1)之间的采样间距为10,(x=0,y=2)到(x=63,y=2)之间的采样间距为100。也就是暗部的资讯纪录的比亮部资讯更加完整。这也比较符合人眼感受光刺激的敏感度,对暗部的变化比较敏感而对亮部
的变化比较不敏感(人眼这部分我不太确定,还要请各位前辈补充@@)。
当然各相机厂的log曲线不会像我举例的这么简单XDD
说了这么多就是要解释log是被设计来把范围很广的资讯(14bit)塞到很小的容器里(8bit)的一种数学方法,而且是专门设计给动态数位影像用的。所以我很困惑原文里面说到要把RAW档案转成log色彩空间再调色的意义到底在哪里XDD,原本的RAW档就已经是14bit的完整资讯了,就算把它转成log色彩空间也不会增加他的资讯量。