首页 >> 计算机科学 >> 文章

作者: 阮一峰

上个月(11月13日),83岁的柯达公司退休工程师布赖斯·拜尔(Bryce Bayer)去世。

一家国内杂志邀请我写纪念文章,回顾他对数码摄影的巨大贡献。

我看了一些材料,觉得这个题材很有意思,涉及数码相机的成像原理,使我对数字图像技术有了新的认识。但是,由于体例限制,杂志不允许我插入彩图。

下面,我把我的那篇文章配上图片,解释彩色数码照片是怎么拍出来的。
1.

为了更好地理解原理,让我们从照片的起源讲起。1825年,法国人涅普斯(Joseph Nicéphore Nièpce),拍出历史上第一张照片。

2.

他采用的感光剂是氯化银(silver chloride)。当光线照射氯化银,后者会分解成纯银和氯气,纯银在空气中很快氧化变成黑色,金属银颗粒呈现黑色。因此,底片颜色越深代表光线越强,颜色越浅代表光线越弱。黑白照片就是这样拍出来。

3.

19世纪中期,人们发现,人眼的圆锥细胞对三种颜色----红、绿、蓝----特别敏感。伟大的英国物理学家麦克斯韦因此假设,红绿蓝作为基色,可以拍出彩色照片。

4.

1861年,在麦克斯韦的指导下,人类的第一张彩色照片诞生了。

采用的方法是在镜头前,分别用红丝带、绿丝带、蓝丝带过滤光线,曝光形成三张底片,然后用三部放映机向同一处投影这三张底片,每部放映机的镜头前都拧上对应颜色的镜头,它们的合成效果就是一张彩照。

5.

真正意义上的彩色胶卷,1933年诞生于柯达公司,底片之上依次有三个感光层,分别对红、绿、蓝三种颜色进行曝光,最后叠加形成一张彩色底片。

6.

二战后,计算机诞生,科学家发现图像可以用数字形式表示。如果将光信号转变成电信号,就可以直接拍出数码照片。这意味着,照相机不再需要胶卷,而是需要一个图像传感器(image sensor)

7.

图像传感器将光线转化成电流,光线越亮,电流的数值就越大;光线越暗,电流的数值就越小。所以,如果用0到255的范围,表示光线的亮度,最亮的光线是白光,数值是十六进制的FF,最暗的光线是黑光(没有光),数值是十六进制的00。

8.

图像传感器的表面,分成若干个捕捉点,每个点都会产生一个数值,表示该点感受到的光线亮度,这就叫做"像素"。像素越多,图像细节就越丰富。如果一台相机的像素是1600x1200,就说明图像传感器横向有1600个捕捉点,纵向有1200个,合计192万个。
9.

但是,图像传感器有一个很严重的缺陷:它只能感受光的强弱,无法感受光的波长。由于光的颜色由波长决定,所以图像传播器无法记录颜色,也就是说,它只能拍黑白照片,这肯定是不能接受的。
10.

一种解决方案是照相机内置三个图像传感器,分别记录红、绿、蓝三种颜色,然后再将这三个值合并。这种方法能产生最准确的颜色信息,但是成本太高,无法投入实用。

11.

1974年,柯达公司的工程师布赖斯·拜尔提出了一个全新方案,只用一块图像传感器,就解决了颜色的识别。他的做法是在图像传感器前面,设置一个滤光层(Color filter array),上面布满了滤光点,与下层的像素一一对应。也就是说,如果传感器是1600x1200像素,那么它的上层就有1600x1200个滤光点。

12.

每个滤光点只能通过红、绿、蓝之中的一种颜色,这意味着在它下层的像素点只可能有四种颜色:红、绿、蓝、黑(表示没有任何光通过)。

13.

不同颜色的滤光点的排列是有规律的:每个绿点的四周,分布着2个红点、2个蓝点、4个绿点。这意味着,整体上,绿点的数量是其他两种颜色点的两倍。这是因为研究显示人眼对绿色最敏感,所以滤光层的绿点最多。
14.

接下来的问题就是,如果一个像素只可能有四种颜色,那么怎么能拍出彩色照片呢?这就是布赖斯·拜尔聪明的地方,前面说了,每个滤光点周围有规律地分布其他颜色的滤光点,那么就有可能结合它们的值,判断出光线本来的颜色。以黄光为例,它由红光和绿光混合而成,那么通过滤光层以后,红点和绿点下面的像素都会有值,但是蓝点下面的像素没有值,因此看一个像素周围的颜色分布----有红色和绿色,但是没有蓝色----就可以推测出来这个像素点的本来颜色应该是黄色。
15.

这种计算颜色的方法,就叫做"去马赛克"(demosaicing)。上图的下半部分是图像传感器生成的"马赛克"图像,所有的像素只有红、绿、蓝、黑四种颜色;上半部分是"去马赛克"后的效果,这是用算法处理的结果。
16.

虽然,每个像素的颜色都是算出来的,并不是真正的值,但是由于计算的结果相当准确,因此这种做法得到广泛应用。目前,绝大部分的数码相机都采用它,来生成彩色数码照片。高级的数码相机,还提供未经算法处理的原始马赛克图像,这就是raw格式(raw image format)

为了纪念发明者布赖斯·拜尔,它被称作"拜尔模式"或"拜尔滤光法" (Bayer filter)。
(完)

本文授权转载自阮一峰的网络日志

0
为您推荐

25 Responses to “为什么数码相机可以拍出彩色照片?”

  1. firstrose说道:

    虽然经常用照相机,但是这里的原理还真不知道

  2. 征途说道:

    长知识了

  3. whyjld说道:

    感觉胶片成像的原理描述的有点问题。一般认为是光照射造成卤化银分解成银和卤素,因为这样得到的银是粉末状的固体,因此会表现成黑色。
    银是稳定的金属,不易被氧化。

    • cyler123说道:

      首先银没有那么温度,但这里和这一性质无关。纳米银可以无序堆积,颜色就是黑的。而纳米银颗粒又不透光,所以反射光与投射光下,都是黑的

    • 卡卡西莫多说道:

      看来你的中学化学很烂

    • 星期六的黄昏说道:

      嗯,感觉这个描述是有问题的。银是很稳定的,不好那么容易氧化的。只说以呈现黑色可能是跟颗粒大小有关。我高中的时候坐过实验,用铁丝插到硝酸银溶液中,置换到的银不是白色的,而是黑色的粉末状。同样的电解得到铜和银单质也是黑色的。

    • 游识猷说道:

      谢谢这位网友,和原作者联系过,已经修改那句。:)

  4. bobo说道:

    搞半天原来数码相机的像素值都是虚标的,四个像素才能还原一个正真的像素,显示器要是这样子搞早就被骂死了

    • fucker说道:

      液晶显示屏 CRT 基本也是这个原理啊

    • Illusiwind说道:

      再仔细看看。分明是8个像素。而且信息并没有少。
      另外像素跟分辨率对成像设备和显示设备所展示的意义是有很多不同之处的,这里边不是一两句就说得清的。

  5. Illusiwind说道:

    "您的评论正在等待审核。 "我去审核一整天了还没完啊……简直弱爆了。

  6. lhx说道:

    可惜柯达破产了,柯达有人才也有蠢材!抱着胶卷不放,想抱胶卷去棺材啊!
    布赖斯·拜尔这样的创新人才中国何时才有呢?

    • watson说道:

      布赖斯·拜尔在中国那才叫悲剧
      动到了胶卷国企的蛋糕,而且不利于管制,说不定会被禁止销售的。。。。就像某盒子

  7. 顺其自然x说道:

    我也经常摄影,还是不很了解楼上所阐述的

  8. 顺其自然x说道:

    我也经常摄影,还是不太了解楼上阐述的理论

    • luobo说道:

      说简单点,3种混合物在一起,本来需要3个筛子过三次分离。然后现在把三个筛子拼在一起一次分离。只不过分得不是太细而已。

  9. 鸢飞戾天说道:

    看到第八张图我以为我显卡坏了= =

  10. 土豆地瓜说道:

    "一种解决方案是照相机内置三个图像传感器,分别记录红、绿、蓝三种颜色,然后再将这三个值合并。这种方法能产生最准确的颜色信息,但是成本太高,无法投入实用。"

    传说3CCD就是用的这种方法。在DV上用的多

  11. weakish说道:

    Sigma相機用的X3傳感器是三層感光,原理與彩色膠片類似

  12. 山野云说道:

    请问下假如传感器像素为300*300,其中红蓝绿三色是不是分别都是100*300个。之前一直以为三色合起来是一个像素呢。

    • Tp说道:

      三色的比例不是1:1:1,用800像素的做举例,会有400像素的绿,各200像素的红蓝,原始采色是这样的,但是后期处理可能会用计算机模拟出所有像素点对应的每一种颜色对应的值,3*800

  13. Roottan说道:

    柯达那哥们真是个天才

  14. zhuyugang说道:

    CCD and CMOS,which one is better than my eyes?

  15. owen说道:

    那么 之后应该 如何 成像呢??

Leave a Reply