科普Bayer滤光片
- bayer格式图片
- Bayer数据的一般格式
- bayer格式插值红蓝算法实现
- bayer格式插值绿算法实现
- Bayer RGB和RGB Raw
bayer格式图片
bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发明的,BryceBayer所发明的拜耳阵列被广泛运用数字图像。
对于彩色图像,需要采集多种最基本的颜色,如rgb三种颜色,最简单的方法就是用滤镜的方法,红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐。当用bayer格式的时候,很好的解决了这个问题。bayer格式图片在一块滤镜上设置的不同的颜色,通过分析人眼对颜色的感知发现,人眼对绿色比较敏感,所以一般bayer格式的图片绿色格式的像素是r和g像素的和。
另外,Bayer格式是相机内部的原始图片,一般后缀名为.raw。很多软件都可以查看,比如PS。我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片,都是从.raw格式转化过来的。如下图,为bayer色彩滤波阵列,由一半的G,1/4的R,1/4的B组成。
Bayer数据的一般格式
奇数扫描行输出RGRG……偶数扫描行输出GBGB……
根据人眼对彩色的响应带宽不高的大面积着色特点,每个像素没有必要同时输出3种颜色。因此,数据采样时,
奇数扫描行的第1,2,3,4,…象素分别采样和输出R,G,R,G,…数据;
偶数扫描行的第1,2,3,4,…象素分别采样和输出G,B,G,B,…数据。
在实际处理时,每个象素的R,G,B信号由象素本身输出的某一种颜色信号和相邻象素输出的其他颜色信号构成。这种采样方式在基本不降低图像质量的同时,可以将采样频率降低60%以上。
图像传感器的结构如下所示,每一个感光像素之间都有金属隔离层,光纤通过显微镜头,在色彩滤波器过滤之后,投射到相应的漏洞式硅的感光元件上。
当Image Sensor往外逐行输出数据时,像素的序列为GRGRGR…/BGBGBG…(顺序RGB)。这样阵列的Sensor设计,使得RGB传感器减少到了全色传感器的1/3,如下所示。
bayer格式插值红蓝算法实现
每一个像素仅仅包括了光谱的一部分,必须通过插值来实现每个像素的RGB值。为了从Bayer格式得到每个像素的RGB格式,我们需要通过插值填补缺失的2个色彩。插值的方法有很多(包括领域、线性、3*3等),速度与质量权衡,最好的线性插值补偿算法。R和B通过线性领域插值,但这有四种不同的分布,如下图所示:
在(a)与(b)中,R和B分别取邻域的平均值。
在(c)与(d)中,取邻域的4个B或R的均值作为中间像素的B值。
bayer格式插值绿算法实现
CMOS摄像头这部分转换是在内部用ADC或者ISP完成的,生产商为了降低成本必然会使得图像失真。当然用外部处理器来实现转换,如果处理器的速度足够NB,能够胜任像素的操作,用上面的算法来进行转换,皆大欢喜。不过上述算法将直接成倍提高了算法的复杂度,速度上将会有所限制。因此为了速度的提成,可以直接通过来4领域G取均值来中间像素的G值,将会降低一倍的速率,而在性能上差之甚微,算法如下:
如果能够通过损失图像的额质量,来达到更快的速度,还可以取G1、G2的均值来实现,但是这样的做法会导致边沿以及跳变部分的失真。
在每个像素上分别装上RGB这三种滤镜,如图2,就能得到三种光的亮度,然后一合成,色彩即可重现。但难以实现每个像素装这么多滤光片,那么一种基于单个颜色微小滤镜的影像传感器系统,就是现在被人们称为“拜尔阵列”的传感器系统,如图3。
这只用一块图像传感器,就解决了颜色的识别。做法是在图像传感器前面,设置一个滤光层(Color filter array),上面布满了一个个滤光点,与下层的像素一一对应。
每个滤光点只能通过红、绿、蓝之中的一种颜色,这意味着在它下层的像素点只可能有三种颜色:红、绿、蓝,或者什么也没有(黑)。
不同颜色的滤光点的排列是有规律的:每个绿点的四周,分布着2个红点、2个蓝点、4个绿点。这意味着,整体上,绿点的数量是其他两种颜色点的两倍。这是因为研究显示人眼对绿色最敏感,所以滤光层的绿点最多。
每个摄影者在完成光圈、快门、对焦设置等前期工作后,按下快门,于是光线经过镜头,被传感器上的为滤镜分解成一个个单色的光,由传感器记录下每个点的光强度数值,这就得到了RAW数据。把RAW的灰度值转换成图像,是这样的:
没有计算机系统的后期处理,最多就只能看到这个黑白马赛克,没有完整的图像!如果对它微处理一下,把每个像素对应点的颜色加上后,也可以是这样的:
计算机进行后期处理的第一步就是猜色,也叫去马赛克。如果一个像素只可能有三种颜色,那么怎么能拍出彩色照片呢?前面说了,每个滤光点周围有“规律”地分布其他颜色的滤光点,那么就有可能结合它们的值,判断出光线本来的颜色。以黄光为例,它由红光和绿光混合而成,那么通过滤光层以后,红点和绿点下面的像素都会有值,但是蓝点下面的像素没有值,因此看一个像素周围的颜色分布----有红色和绿色,但是没有蓝色----就可以推测出来这个像素点的本来颜色应该是黄色。
在得到每个像素的RGB颜色后,后期软件还要加入白平衡矫正、gamma校正,并应用风格曲线、降噪锐化设置等参数,这些参数多数可以人为去设定,这个参数设定的过程,就是俗称的PS,准确地讲就是人工地后期处理。处理完后最后生成一幅位图,可以用TIFF、JPG等位图格式保存在磁盘上。
实时取景和LR等软件里看到的图像,都是先用它内部默认的后期参数进行粗略后处理,先糊弄一下人眼,满足一下心理。当你全部后期参数设置完后,这不还有一个“导出”的过程吗?这才是真正在进行完整全面的图像后处理呢!
Bayer RGB和RGB Raw
对于SENSOR来说,Bayer RGB和RGB Raw两者的图象结构都是BG/GR的
(Bayer pattern说的是COLOR FILTER的结构,分为两种:STD Bayer pattern 与Pair pattern,其中STD Bayer pattern的结构是BG/GR的,而Pair Pattern顾名思义是指BGBG/GRGR的结构,即以四行为一个单位,前两行是BG的结构,后两行是GR的结构,这种结构是美光专门为此申请了专利的,主要是在输出TV模式(NTSC/PAL制)时用到)。
由于后端应用时,对RAW DATA图像的解码是按默认的结构来解码的,如BG/GR,因此Bayer RGB和RGB Raw两者的图象结构必须都是BG/GR的,而如果输出图像结构是BGBG/GRGR,则不可以直接显示和解码的。
Bayer RGB与RGB Raw的主要区别在于两者输出前经过的处理不同,Bayer RGB从ADC输出,只经过了LENS SHADING,GAMMA等模块处理而后就直接输出,而RGB Raw则经过了整个ISP模块的处理,最终是经过YUV422的数据转化而来的,Raw data是指原始的数据,单个pixle只能感应一种颜色。
如果这个原始数据的排列格式是 RGRG/GBGB排列的,我们叫做Bayer pattern。(这个最最常见),所以 Bayer RGB是属于 RGB RAW data的,但是 RGB RAW data不一定是bayer pattern。CCD传感器中,有几个噪声源加到图像上,必须将它们去除或者至少是削弱。这些噪声源是:
1.固定模式噪声,它在每张图片中产生相同的噪声模式。减弱这个固定模式噪声的方法是:通过相机取一个“暗曝光”读数(即没有光照下的曝光),并随后去减一个正常曝光值。该暗状态的输出电流是没有光照条件下产生的平均输出电流,并将包含光电二极管的漏电流。
2.随机噪声,它可能由环境温度变化引起。一个较高的温度通常会引起更多的电子离开其轨道并在传感器中产生随机噪声信号。传感器电路的散热使其进一步恶化。如果夏天时把可拍照手机放在一辆汽车中,那么它所拍照片的噪声将比在一个带空调建筑物内所拍照片的噪声高得多。
3.像素窜扰,在进入一个像素的光窜到一个邻近像素时,就会产生一片“混浊”,比如说当一个红色像素使其红光窜入一个邻近的蓝色像素时,就会导致蓝色像素中的信号不正常地增强,而红色像素中的信号的图像信息则丢失。
高端传感器采用一个辅助的微镜头把这个光再次弯曲,进一步下移像素,从而把窜入邻近像素并引起窜扰噪声的几率降到最低。
像素的个数只是信息捕捉能力的一个衡量。一般来说,一个较大像素的信噪比会比一个较小像素的要高,因为它有更多的面积来采集光,从而捕捉到更多的光子,因而相对于所存在的总噪声,所产生的有用信号更大。