无论是CCD还是CMOS,其原理都是将光子转换为电子,其中光子数目与电子数目成比例。对每个像素,统计其电子数目就形成反映光线强弱的灰度图像。
图1. 根据电子数目得到灰度图像
但是在这里,光子的波长,即颜色信息丢失了。
为了获得彩色图像,可以首先将光线过滤为红、绿、蓝三种光子,然后使用三个CCD(CMOS)分别感光,最后成像。
这种方式能获得理想的彩色图像。但以目前的工艺水平,在一个像素里制造三个滤镜和感光元件难度大成本高,没有商用价值。
于是就职于柯达的拜尔提出了一种廉价的折中方案。直到现在,几乎所有的彩色相机仍在使用。
拜尔滤光片(马赛克滤光片)
Bayer方案仅使用1块CCD,这样每个像素只能感应一种颜色的光子。拜尔设计了一个特殊的阵列(Bayer阵列),对每个像素,考虑其周围的颜色信息还原丢失的另外两个颜色。
图2. 拜尔阵列获取RGB颜色信息
如图2所示,拜尔滤光片每个绿色滤光片上下为红色,左右为蓝色,对角线上为绿色。
之所以绿色数目大于红蓝色是基于人眼对绿色最敏感这个研究结论。
通过图2的过程,可以获得原始的RAW数据,进而合成“彩色”图像:
图3. 左:原始raw数据;右:赋上彩色信息
下一步就是根据邻域信息猜色(去马赛克)
这里就是每个相机厂商都会有自己的处理方法,再加上白平衡矫正、gamma校正、锐化降噪等设置最终获得带有三通道的彩色图像
参考博文《图像bayer格式介绍以及bayer插值原理CFA》和《Image Process PipeLine 之 DM(下)》,常见的方法可以以是否考虑边缘方向做区分:
1. 无方向插值
直接利用周围像素信息做插值,对八邻域内的某颜色做平均作为该颜色的值。
这种方式计算复杂度低,但图像边缘不够清晰。
2. 有方向插值
首先水平和垂直方向相邻的绿色值做差求其梯度,然后对梯度小的方向做其他颜色的平均。
灰度相机与彩色相机成像质量比较
根据上节讨论,灰度相机采集的是所有波长的光子
而彩色相机(Bayer)仅接受RGB三个波段的光子,并且会做一个去马赛克的邻域平均操作,因此无论是光通量还是细节表现均弱于灰度相机
2016年CVPR的文章《Stereo Matching with Color and Monochrome Cameras in Low-light Conditions》【1】对比了彩色相机与灰度相机在相同环境下的成像(图4)
图4. 左:彩色相机成像细节;右:灰度相机成像细节
同时分析了文章使用彩色相机与灰度相机对不同波长光线的响应(图5)
图5.不同波长光子的转换效率
可以看到,灰度相机对不同波长的光子响应更全面。
参考文献
【1】Jeon H G, Lee J Y, Im S, et al. Stereo matching with color and monochrome cameras in low-light conditions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 4086-4094.