光线中主要包含三种颜色信息,即R、G、B。但是由于像素只能感应光的亮度,不能感应光的颜色,同时为了减小硬件和资源的消耗,必须要使用一个滤光层,使得每个像素点只能感应到一种颜色的光。目前主要应用的滤光层是bayer GRBG格式。如下图所示:
Bayer pattern
我们当前所有的数字化的Camera,都要感谢Bryce E.Bayer。是他开创了当前色彩缤纷包罗万象的数字图像传感器的先河。是他最先想到的用Color Filter的方式来获取现实世界的彩色投影(来自维基百科)。这些红、绿、蓝色是盖在感光三极管上面的,作用就是将环境光分离出三个颜色来。如图这个filter Pattern叫做GBRG,这个顺序很关键,Demosaic的时候需要重点用到。
这样,经过滤色板的作用之后,每个像素点只能感应到一种颜色。必须要找到一种方法来复原该像素点其它两个通道的信息,寻找该点另外两个通道的值的过程就是颜色插补的过程。由于图像是连续变化的,因此一个像素点的R、G、B的值应该是与周围的像素点相联系的,因此可以利用其周围像素点的值来获得该点其它两个通道的值。目前最常用的插补算法是利用该像素点周围像素的平均值来计算该点的插补值。如下图所示,左侧是RAW域原始图像,右侧是经过插值之后的图像。
常用的图像数据集是Kodak Data,在手机终端上考虑到成本和空间因素,在CMOS/CCD感光器件上会附加一层CFA(Color Filter Array),实际得到的原始数据是Bayer格式的,即原始raw数据。
Kodak Data提供lossless真彩无损图像数据,由专业的设备采集而来,每个pixel的R、G、B都是通过感光器件得到的,图像大小为512*768,每个通道为8bit。
常见算法:双线性,基于梯度,自适应
双线性插值算法原理
双线性(bilinear) 插值算法就是这样一种得到广泛应用的算法. 该算法利用相邻像素域中同色分量的平均值作为
当前像素的待求颜色分量.,如上图所示在红/蓝色点处的像素绿色分量如G22=(G21+G12+G23+G32)/4,其插值
等于相邻的四个像素点的绿色分量的平均值。如果存在相邻的两个像素的红色/蓝色分量,就取红/蓝色分量的均
值。如B32=(B22+B42)/2; R22=(R31+R33)/2。如果周围没有相邻的红/蓝色分量,就取对角线方形的4个像素点
处的红/蓝分量的均值,如R24=(R13+R35+R15+R33)/4;B33=(B22+B44+B42+B24)/4。