相机如何进行颜色识别
引言
我们每天能看到多种色彩,对于传感器来说(不管是CCD还是CMOS),它们只能看到光强。当然,他们能识别从近紫外到红外之间大部分光的光强。为了让图像传感器更好的输出能让人类接受的图片,科学家和工程师们想出了多种方法。
彩色成像的原理
不管是CCD还是CMOS,它们只能接受光强,不能识别光的波长。
CCD和CMOS对近紫外200nm至可见光380-780nm直至近红外1100nm波长范围都有相应。这使得如果直接用CCD和CMOS,输出的只能是灰度图像。
为了得到我们人眼所习惯的彩色图像,人们采用了两种方法:拜耳阵列(Bayer filter)方案和三种传感器叠加的方案。
无色彩的灰度图像
图片来自互联网
拜耳阵列方案
柯达的Bryce Bayer于是想出了这种方式来解决彩色分辨的问题:通过在传感器前添加一个下图这样的RGB滤波阵列,使得每个滤光点只能透射一种颜色,并使各个颜色的滤光点与下层像素点一一对应。
拜耳阵列原理
图片来自互联网
拜耳阵列方案
通过上面这样的方式,可以将上面无色彩的灰度图像处理得到下图所示的红绿蓝强度图,但是还是不能得到我们想要的图像。
接下来就是进行猜色,也就是根据一个像素点及其周围的红绿蓝各自的灰度值,经插值算出该像素点的RGB。插值算法很多,最简单就是将临近像素的色彩值赋给该像素,也可以将邻域的该颜色灰度值平均后赋给该像素点,算法很多,具体算法查阅拜耳滤镜插值。插值后对应每个像素点的RGB都知道了。
处理后的红绿蓝强度图
建议关闭声音,背景音比较嘈杂
插值 猜色最终的效果
建议关闭声音,背景音比较嘈杂
拜耳阵列方案
最后是一些拜尔阵列的变种方案,上述红绿蓝的滤光片比例是1:2:1,因此也称RGBG。
RGBE是用一个祖母绿的滤光片代替绿色;据说更接近人眼的感觉;CYYM是用青色、黄色、品红 1:2:1代替RGB;CYGM是青色、黄色、绿色、品红1:1:1:1;CYGM和CYYM这两种都是为了提高光通量,但牺牲了色彩准确度。简单解释下,比如品红=红+蓝,也就是只阻挡绿光;黄色=红+绿,只阻挡蓝光;青色=绿+蓝,只阻挡红光,相比RGB而言对白光的吸收变少了,可以提高光通量,代价是色彩不好确定。RGBW是用白色取代绿色,提高进光量,损失了一部分颜色信息。适合暗环境拍摄,降低噪点。RGBW#1~3是非马赛克方式的其他排列模式。X-Trans是为减小莫尔条纹的发生,采取不太规则的滤镜排列方式,且加大绿色感光面积,提高分辨率和色彩饱满度。
三种传感器叠加的方案
另一种方案的成本稍微高一些,但是可以克服单芯片摄像机的图像失真问题。
这种方案采用分光器或者棱镜将通过镜头的光线被分为三束光然后到达三个传感器。每个传感器件前有一个不同的滤光片。这种相机被称为三芯片相机。
拜耳阵列方案
这种结构显然可以克服单芯片摄像机的图像失真问题。但同时意味着需要三个传感器。而且需要考虑到三个传感器的位置需要仔细调整,这显然是一件非常精密的工作。因此,导致其生产成本大大增加。
参考文献:
【1】施特格. 机器视觉算法与应用[M]. 清华大学出版社. 2008.
【2】滤光片可以区分复合色和纯色吗?CCD、CMOS只能响应光强,是如何拍出彩色照片的?. 何鹏. 知乎