为什么数码相机可以拍出彩色照片?

作者: 阮一峰

日期: 2012年12月 6日

上个月(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)。

(完)

留言(50条)

第 10 小节讲到的那种传感器也不是完全没有。sigma dp1 引以为豪的 Foveon X3 应该算作此类。不过确实小众。

估计很多人都会对,能拍出那么真实照片的数码相机实际上却是基于如此粗糟简略的成像原理,感到失望。
本还以为照片应该更加趋近于真实物体才对。

之所以现在的数码相机这么复杂,我估计就是对用“粗糟”方式取来的单色像素的混合数据,进行大量的,能让人眼睛看着舒服的加工罢了。换句话说,就是骗/讨好人的眼睛。

为什么小阮同志不去调查一下人眼的成像原理?

虽然我还没有调查,但是我能猜到答案:答案就是科学家还不能精确理解人眼是如何与大脑配合成像的。

科学对于人体--哪怕甚至对跳蚤的眼睛都搞不清楚精确原理。

因为凡是一牵涉到“造物主”所创造出来的有生命的东西,人类就只能傻眼了。就只能用物质的手段瞎子摸象了。摸到死也只能摸到物质这个程度为止。

显示屏的显示原理就是反过来吧。

引用laoguo的发言:

为什么小阮同志不去调查一下人眼的成像原理?

虽然我还没有调查,但是我能猜到答案:答案就是科学家还不能精确理解人眼是如何与大脑配合成像的。

人的视觉信号处理的原理虽然还未完全揭密,但是科学家们都在努力破解中,那可是相当困哪的工作,想想都累。
我其实还是佩服像您这样的,往电脑前面一坐就开始指点江山,即能获得满足感又不费力气,真好^^

你下面这句话里面的“一台照机”应该是“一台照相机”
"如果一台照机的像素是1600x1200,就说明图像传感器横向有1600个捕捉点,纵向有1200个,合计192万个。"

谢谢你的这篇文章。

@邓安良:

谢谢指出,已经更正了。

想深入了解可以看看顾铮的《世界摄影史》 希望阮老师能提供更多的参考文献~

有点意思。知道基本原理了。还想知道现在的各个品牌的照相机的特点,他们那些拥有自己专利的各种感光芯片,感光元件有啥区别。被勾起兴趣了。去google看看

14点的图中,红绿排列有误啊。把红绿换一下就更好了。

阮老师,谢谢分享,去维基百科看了一下

我的疑问是,最后这个Bayer filter 现在的数码相机也是用的类似原理,这个..实在是有点粗糙。

引用大狐狸的发言:

人的视觉信号处理的原理虽然还未完全揭密,但是科学家们都在努力破解中,那可是相当困哪的工作,想想都累。
我其实还是佩服像您这样的,往电脑前面一坐就开始指点江山,即能获得满足感又不费力气,真好^^

无论是小阮同学,还有我,还有你,还有所有参与评论的人们,都围绕这篇文章,以每个人自己的方式进行一种创造。

之所以你觉得我站着说话不腰疼,恐怕是因为你并不认同我的观点。

对小阮同志的文章,我也并不是一味吐槽的,有时我会坚定的支持他的。

我的原则很简单:提出不一样的观点,而非人云亦云。

只要小阮同志允许人们自由评论,那么崇尚自由的小阮同志就必须要接受在他的文章后面出现任何,符合他自定的评论规则的评论内容。

这就是游戏规则。

引用lyman的发言:

第 10 小节讲到的那种传感器也不是完全没有。sigma dp1 引以为豪的 Foveon X3 应该算作此类。不过确实小众。

不仅小众,而且贵得让人咂舌,而且似乎已经买不到了。

图像传感器生成的"马赛克"图像,所有的像素只有红、绿、蓝、黑四种颜色,可是那张未处理的"马赛克"花图有黄色像素点。

引用yuhai的发言:

图像传感器生成的"马赛克"图像,所有的像素只有红、绿、蓝、黑四种颜色,可是那张未处理的"马赛克"花图有黄色像素点。

你误会了,那不是黄色像素点,离屏幕近点仔细看,其实是红绿像素点组合出来的黄色

引用davidfeng的发言:

你误会了,那不是黄色像素点,离屏幕近点仔细看,其实是红绿像素点组合出来的黄色

我腦筋轉得慢,貼近看了半天才想到,把圖放大看一個個像素就很明顯了。

很不错的文章,支持下!

不错,形象生动

引用laoguo的发言:

不仅小众,而且贵得让人咂舌,而且似乎已经买不到了。

才600刀啊,amazon上有得卖。。怎么就贵得让人咂舌了?

原来黑白变彩色这么简单。。。

听摄影讲座与网上介绍,都说那“第一张照片”的感光材料是沥青。WIKI中说:“but eventually looked to bitumen, which he used in his first successful attempt at capturing nature photographically.”而按阮兄所说的第一条第二条,似乎是指他用了氯化银作为第一张照片的感光材料?

sigma X3传感器就是用的第10节说的用三块传感器记录光线,这样产生的图像锐度非常高。

最近做有关相机的东西,看了文章,才知道bayer模式名称的原由,感谢先贤。

很好奇,如果用数码相机拍摄与“滤光层”一样的图案,会得到什么结果?

引用laoguo的发言:

之所以你觉得我站着说话不腰疼,恐怕是因为你并不认同我的观点。

不是说你原则不对,而是你说的话和这文章根本没能联系上,什么叫为什么不去了解下。。这都脱离这文章本身了。对话不对人

好文!

被科普了,谢谢你的这篇文章

引用sa的发言:

我腦筋轉得慢,貼近看了半天才想到,把圖放大看一個個像素就很明顯了。

被自己眼睛欺骗了一回,放大到300倍后,就看不到黄色了

原来raw是未去马赛克的··

好文。

我之前还以为RAW是未经JPEG压缩的,原来是未经去马赛克的

为什么不将红、绿、蓝三种像素的值做为一组, 然后把三种颜色的值合并生成一个点的真实色彩呢
这样不是能够得到更准确的色彩吗?
难道是因为现在的工艺还不能把每个感光点做的足够小, 以至于三个像素点合并生成的色彩信息已经达不到要求的精度(范围太大)?
又或者是这样做的成本太高(产生同样像素的照片需要的像素点是原来的3倍)?
还是什么其他原因?

谢谢, 阮老师的文章

引用laoguo的发言:

为什么小阮同志不去调查一下人眼的成像原理?

虽然我还没有调查,但是我能猜到答案:答案就是科学家还不能精确理解人眼是如何与大脑配合成像的。

科学对于人体--哪怕甚至对跳蚤的眼睛都搞不清楚精确原理。

因为凡是一牵涉到“造物主”所创造出来的有生命的东西,人类就只能傻眼了。就只能用物质的手段瞎子摸象了。摸到死也只能摸到物质这个程度为止。

您这一棒子,把我们这些搞神经科学的人都打死了。至于人为什么有彩色视觉可以找《神经科学——探索脑》来看一看。

这位朋友,您说的是像LCD像素那样的吧?结果是同样的晶圆面积只能产生1/4的像素数量。(您的方法把RGBG四个像素都合起来当一个像素了)
应用去马赛克算法后颜色虽然不完全准确但是凭空就白得了四个像素啊。

引用jxing的发言:

为什么不将红、绿、蓝三种像素的值做为一组, 然后把三种颜色的值合并生成一个点的真实色彩呢
这样不是能够得到更准确的色彩吗?
难道是因为现在的工艺还不能把每个感光点做的足够小, 以至于三个像素点合并生成的色彩信息已经达不到要求的精度(范围太大)?
又或者是这样做的成本太高(产生同样像素的照片需要的像素点是原来的3倍)?
还是什么其他原因?

谢谢, 阮老师的文章

引用exileyb的发言:

您这一棒子,把我们这些搞神经科学的人都打死了。至于人为什么有彩色视觉可以找《神经科学——探索脑》来看一看。

那位民科还神了鬼了的哪,真搞笑。随便从wiki里抄一段:

“视觉脑机接口方面的一位先驱是William Dobelle。他的皮层视觉脑机接口主要用于后天失明的病人。1978年,Dobelle在一位男性盲人Jerry的视觉皮层植入了68个电极的阵列,并成功制造了光幻视(Phosphene)。该脑机接口系统包括一个采集视频的摄像机,信号处理装置和受驱动的皮层刺激电极。植入后,病人可以在有限的视野内看到灰度调制的低分辨率、低刷新率点阵图像。该视觉假体系统是便携式的,且病人可以在不受医师和技师帮助的条件下独立使用。2002年,Jens Naumann成为了接受Dobelle的第二代皮层视觉假体植入的16位病人中的第一位。第二代皮层视觉假体的特点是能将光幻视更好地映射到视野,创建更稳定均一的视觉。其光幻视点阵覆盖的视野更大。接受植入后不久,Jens就可以自己在研究中心附近慢速驾车漫游。”

这位科学界的朋友不要跟他一般见识。

精妙的算法總是如此簡潔。
看來是照片篇幅尺寸越大,就越接近與真實圖像吧~

阮哥哥在镜子前自拍的那张照片是不是厕所里啊?

长知识了。讲得很详细。

@Digital:

这个东西从本质上讲还是一个黑箱,并没有揭示人脑的视觉系统是怎么工作的,一下是我估计的工作流程:一般来讲是通过摄像头把环境光源转换成电信号传输给V1区,大脑自适应的去学习电信号对应的环境光源变化。


阮兄写得不错。建议你可以写科普书出版了。加油~~

马赛克传感器只能感受光线强弱的话,拍摄黑白照片应该分辨率和锐度都非常高才对,但是现在的马赛克传感器的数码相机都不是这样,黑白的照片似乎是先照出来彩色照片再转换成黑白的,完全没有体现出马赛克黑白照片的优势

引用asdcsa的发言:

我之前还以为RAW是未经JPEG压缩的,原来是未经去马赛克的

我原来也是这么认为的。。。掩面。。。

那么,是不是相机提到的感光器像素数量都是指的红色、绿色、蓝色感光‘点’的总数量,而不是将四个颜色合为一个点当做一个像素?这样的话,是不是跟显示器行业提到的像素概念就是完全不一样的了。

引用laoguo的发言:

无论是小阮同学,还有我,还有你,还有所有参与评论的人们,都围绕这篇文章,以每个人自己的方式进行一种创造。

之所以你觉得我站着说话不腰疼,恐怕是因为你并不认同我的观点。

对小阮同志的文章,我也并不是一味吐槽的,有时我会坚定的支持他的。

我的原则很简单:提出不一样的观点,而非人云亦云。

只要小阮同志允许人们自由评论,那么崇尚自由的小阮同志就必须要接受在他的文章后面出现任何,符合他自定的评论规则的评论内容。

这就是游戏规则。

我不懂像你这种杠精是哪来的勇气出来在这里指点江山的,自己说的话句句都是漏洞,还自以为自己很厉害,您脸皮质量这么好在哪里买的告诉我一下?

写的太好了,我看明白了,非常感谢。

娓娓道来,逻辑清晰。
谢谢科普。

前辈,很感谢您写了这篇文章,我最近在学习遥感图像的处理,绕不开的要去学习一下数字图像相关的知识,您有推荐的好一点的书籍和入门的文章吗?谢谢您

不只有微滤镜的方式,还有一种三层式的感光元件分辨感知RGB三原色光线来成像的CCD,像适马的X3 CCD,只不过商业上没有成功

谢谢阮老师科普。

第10节,每个滤镜滤出来的像素应该是表示对应滤镜的颜色浓度,应该是0-255之间的值把,为什么要不就是255,要不就是0呢?

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接