我们常用的相机是如何拍照的?

我们常用的相机是如何拍照的?_第1张图片

我们都喜欢用手机拍着,摄影爱好者还喜欢用专业的单反相机拍摄照片。一般我们都是直接得到图片,这些图片的格式一般是JPG格式的。很多人理所当然觉得相机拍出来的图片就是JPG格式的。

我们常用的相机是如何拍照的?_第2张图片

其实不然,我相信也有读者明白相机其实是先拍摄到原始图像,再通过插值得到的RGB图像。那么,相机底层到底是如何运作的?相机是如何拍摄到我们常见的彩色图像的呢?

从这篇文章开始,我会详细介绍相机的一些底层技术,其中的主线就是相机的成像流程,在英文中叫In-Camera Imaging Pipeline。

其实我们用相机拍照,最先得到的是Raw data,我们可以称之为原始数据。

我们可以先看下面这幅图:

我们常用的相机是如何拍照的?_第3张图片

这幅图来自这个网站:https://www.ptgrey.com/white-paper/id/10912,原文是英文的,有兴趣的读者可以去读读。

这幅图给我们大致描绘了我们的相机是怎么得到图像的。一般而言,相机中有CCD或者CMOS传感器,就是上图的中的SENSOR。这个传感器里面的每一点都是一个收集光子的光电二极管。上图中的红色小球P就代表了从被拍摄物体发出的光子(Photon)。光电二极管的作用是什么呢?顾名思义,就是把光子转换为电子。所以,大家可以看到,上图中的那些红扑扑的光子在经过传感器中的光电二极管后,就变成了绿油油的电子(electronic,缩写为e),因为电子带负点,所以“e”旁边有“-”号。要说明的是,并不是所有的光子都会转换成电子,这里面其实是有转换率的,也就是图中的Quantum Efficiency (QE)。这点我们可以以后详细谈,我先挖一个坑,大家可以查查这里面的东西,看能否填上。

这些电子被存储在一个井里,这个井有一个很洋气的名字,叫potential well,中文直译过来教电势井。我们在物理中学过电势的概念,咱可以把它理解成海拔。电势两端当然是有差异的,就好比三峡大坝两端的水位高度。可不要小瞧这个高度,那可是很大的能量哦。有关物理含义我不多介绍。这个电势井的作用是什么呢?大家可以这么理解电势井,这个井就像一个银行卡,像存钱一样把电子存起来。如果摄像头越好,那么这个电势井的井深就越大,意味着这张银行卡就应该能存贮更多的钱。如果这是一张信用卡,意味着这张卡能透支更多的额度。

当然,有了银行卡,就要有配套的取款机吧对不对,至少让我们先查查账,看看卡里有多少钱再说。这就是上图里的电压表状的东西了,就是相机中读取电势的一个设备,英文名叫Analog-to-digital converter,是把电势井的每个点的两端之间的电势差(也叫电压)转成数值的设备,就好像是把存在银行卡的那些人民币纸币转成数值显示在屏幕上的设备。

再多说一句的是,不同相机品牌的原始数据的格式不同,这就好比不同国家的银行卡里存有不同的币种一样。常见的相机品牌有佳能,尼康,松下,索尼,奥林巴斯,柯达等,其原始数据的格式为CR2 (Canon),NEF (Nikon),RW2 (Panasonic),ARW, SRF, SR2 (Sony),ORF (Olympus),DCR, K25, KDC (Kodak)。

我们常用的相机是如何拍照的?_第4张图片

到这里为止,我已经基本介绍完相机是如何拍摄到原始数据的了。我想大家会有一个问题:在这里为止,我们在相机中的传感器里的每一个点得到的数值是一维的,但是我们拍摄到JPG图像是彩色的,也就是说每个点都是R, G, B三个维度都有数据,这是怎么回事呢?

这个问题非常好~鼓掌!

其实,到目前为止,我们只了解了相机中传感器硬件的功能,这个功能只依赖于不同品牌的传感器。其实我觉得相机就和我们使用的手机的结构是很像的。比如三星手机可以使用高通的CPU芯片,三星自己的镜头。相机也是如此。这些相机厂家大多数都用自己的传感器,尤其是松下的SmartFSI传感器,效果也别好,我以后会详细介绍,这里不多说。

除了传感器之外,这些不同的相机厂家最拿手的就是成像流程了,就是Imaging Pipeline。这些是这些相机厂家的独门绝技,绝不外传的。那么这些流程到底起到什么作用呢?说的简单点,成像流程就是把一维的原始数据编程R,G,B三维彩色图片的过程。

相机在拍摄到原始数据之后,传感器上的每个点都是一维的灰度值,就像下图一样:

我们常用的相机是如何拍照的?_第5张图片

其实传感器还有一个身份,那就是颜色过滤器,英文名是color filter array。传感器上的每个点是很有讲究的,这些点过滤掉掉其它颜色之后,允许通过的是红色R,绿色G,蓝色B。如果这个点只允许红色通过,那么每个点上的数值,其实就是这个点在红色R这个通道上的数值。JPG彩色图像有三个通道,分别是红色R,绿色G,蓝色B。那这个点在另外两个通道上的值如何得到呢?这个点在绿色G和蓝色B上的值可以通过周围的值插值得到。

我们常用的相机是如何拍照的?_第6张图片

有人说,怎么这么节省?!为什么不做三个传感器,叠加起来,然后分别记录R,G,B三个通道的值呢?这个想法很好,的确有这样的传感器,但成本太高,而且收益不是那么大。目前大多数CCD,CMOS传感器都是一层传感器,目前对于日常生活还是够用的。

有人又问了,怎么我看这个传感器,绿色的那么多?诶,对了,这是因为人眼对于绿色最为敏感,所以呢,传感器模仿了人眼的构造,其中红色,绿色,蓝色的比例分别是1/4,1/2,1/4。

好了,我们继续,看下图:

我们常用的相机是如何拍照的?_第7张图片

我们的传感器得到了每个点(R或G或B)上的数值,然后相机里的软件部分把这些数值通过彩色插值(相当于上图中的Raw Converter)把原始数据转换成R,G,B三个通道上的数值,这样就得到了RGB彩色图像。这样就完了吗?!

当然不是!如果你觉得这样就好了,那真是太小瞧这些相机制造商了!

这样并没有结束哦,这张彩色图像不是我们看到最终结果。下面是一个常见的成像流程,这个流程里的每一步,我以后都会另开章节详细介绍,这里就简略一些,大家先了解一个大概就可以,有兴趣的读者可以自行查阅。看下图:

我们常用的相机是如何拍照的?_第8张图片

从这张图,我们可以看到,在得到彩色插值后的RGB图像之后,图像还需要经过白平衡和彩色空间转换阶段。白平衡就是去掉不实际的色彩阴影,使得图像呈现出来的白色是真实出现的白色。就好比绝对零度不是0摄氏度,也不是0华氏度,而是-273摄氏度一样。白平衡其实是设定了一个白色的标准。详情可以参考以下链接:

http://www.cambridgeincolour.com/tutorials/white-balance.htm。色彩空间转换其实是一个道理,就是把RGB图像中的红绿蓝转变成相机厂家定义的标准红绿蓝一样。红,绿,蓝色都有很多种,下面请你识别出下面的绿色:

我们常用的相机是如何拍照的?_第9张图片

所以,大家看到没,传感器中设定允许通过的红,绿,蓝不是最终的红绿蓝。这三个基本色需要在成像流程里进行校准。这三个颜色被校准后,其他的颜色也就自动校准了。接下来就是伽马映射(Gamut mapping),也是一个校准色彩的过程。接下来的色调映射(Tone Mapping)这个过程是这样的,原始数据里的数值的变化范围很大,一般是16bits,也就是说从1到几万不等,但是我们常用的显示器或者手机屏幕只能投影8bits的图像,也就是0到255之间的数值。超过255的数值统一按照255来处理,这里0是黑色,255是白色。Tone Mapping有很多具体的方法,但基本原理都把是一个从很大动态范围的原始数据映射到0到255之间的图像。这样,才能保持相对的色调保持不变,否则如果把原始数据中的超过255的数值全部统一按255处理,就会使得呈现出来的图像色调比较单一,并且失真。最后一个就是JPEG压缩了,这样子出来的图像不会那么大,方便存储和传输。

下面是一个更详细的成像流程,以及一个真实的把原始数据转成我们常见的JPG图像的例子。我以后有机会再详细介绍这个pipeline。

我们常用的相机是如何拍照的?_第10张图片

好了,到目前为止,我已经基本介绍了相机的硬件部分(传感器)和软件部分(成像流程)的功能。希望对大家理解相机,拍摄有所帮助。

你可能感兴趣的:(我们常用的相机是如何拍照的?)