• MATLAB图像处理_Bayer图像处理 & RGB Bayer Color分析


    Bayer图像处理

     

    Bayer是相机内部的原始图片, 一般后缀名为.raw. 很多软件都可以查看, 比如PS.

    我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片, 都是从.raw格式转化

    过来的. .raw格式内部的存储方式有多种, 但不管如何, 都是前两行的排列不同. 其

    格式可能如下:

    G R G R G R G R

    B G B G B G B G

    G R G R G R G R

    B G B G B G B G

    横为2的倍数, 竖为4的倍数, 它们构成了分辨率. 如, 上面则代表了 8 * 4 分辨率的

    Bayer图.

    我们要知道的是, G = 2 * R 及 G = 2 * B, 即绿色值为红色值或蓝色值的两倍, 因

    为人眼对绿色更敏感, 所以绿色的分量更重.

    下面说一下从bayer转换成rgb图的算法, RGB图, 即为三色图, 一个像素点就由RGB

    三种颜色构成的混合色, 而bayer图一个像素就只有一个颜色, 或R或G或B. 因为bayer

    一个像素点只有一种颜色, 需要借助这个像素点周围的颜色对它进行插值(填充)另外的

    两种颜色, 它本身的颜色就不用插了. 一般的算法是:

    对于插入R和B,

    Rx = ( R1 + R2 ) / 2; 或-------------取上边和下边的平均值, 或是左边和右边的平均值

    Rx = ( R1 + R2 + R3 + R4 ) / 4;----取四个边的平均值

    B同理. 如:

    G B G

    R G R

    G B G

    对于中间的G, 它缺少 R和B, 用上下和左右的平均值进行求值.

    对于

    B G B

    G R G

    B G B

    这个图呢, 中间点R, 缺少G和B, G暂时没讨论, 那么 B, 就是从R的四个B角进行求平均值.

    ==============================================

    如果插入G, 稍有些复杂.

    不过一般的算法与R和B一样, 复杂的算法, 其复杂程度也提升一倍, 不过精度更高, 如果对于

    视频监测系统来说, 精度相对来说不必要求太高, 用R或B的解法即可. 下面说复杂的:

    对于图:

              R1

              G1

     R4 G4 R G2 R2

              G3

              R3

    对于中间点R, 它需要插入G和B, B不讨论, 主要讨论G, 它周围有四个点G1, G2, G3, G4.

              ( G1 + G3 ) / 2--------------如果 |R1-R3| < |R2-R4|

    G(R) = ( G2 + G4 ) / 2-------------如果 |R1-R3| > |R2-R4|

              ( G1 + G2 + G3 + G4 ) / 4--如果 |R1-R3| = |R2-R4|

    如果周围出现的像素点颜色为B, 就应该比较|B1-B3|与|B2-B4|的值.

    ====================================================

    还有关于将RGB格式转换为YUV格式的算法, 这里不想讨论了.

    这里要注意的是, bayer每个像素的值是8位的. 但是有的相机的bayer格式却有10位, 12位

    以及14位, 16位的, 那么如何将这些高于8位的数据转换为8位数据呢?. 拿12位数据来说, 有的

    人是取高8位或是低8位, 那么这样就会出现一个问题, 这张图像会有一个斜度, 不是偏亮就是偏

    暗, 或是出现其它乱七八糟的问题, 颜色问题总是不能令人满意. 这个时候就要去较正它, 无疑是

    浪费了时间.

    另一种算法是使用log映射, 据老外说, 这种转换法具有较高的精度. 拿12位来说, 一般转换算法:

    f(in) = 2 ^ ( log(in) * 8 / 12 )

    转换图为:

    |8                                        .

    |                      .   

    |        .

    |_______________________12

    因为log256 = 8, log4096 = 12, 对了log是以2为底哦.

    做得更好一点的算法, 可能根据提供的曝光等其它因素不同, 而将算法进行调整, 这样当一些意外

    事件发生时, 产生的图片也不会失真严重.

    如有何疑问, 请致信: 414078791@qq.com

    链接:http://www.cnblogs.com/lin1270/archive/2010/12/01/1893647.html

    RGB Bayer Color分析

    Bayer色彩滤波阵列

    wps_clip_image-25471

    拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式。色彩滤波器的模式如上图所示,由一半的G,1/4的R,1/4的B组成。

    拜耳色彩滤波器的模式、序列、滤波器有很多种,但最常见的模式是由Kodak提出的2*2模式。

    wps_clip_image-29239

    当Image Sensor往外逐行输出数据时,像素的序列为GRGRGR.../BGBGBG...(顺序RGB)。这样阵列的Sensor设计,使得RGB传感器减少到了全色传感器的1/3,如下所示。

    image

    图像传感器的结构如下所示,每一个感光像素之间都有金属隔离层,光纤通过显微镜头,在色彩滤波器过滤之后,投射到相应的漏洞式硅的感光元件上。

    wps_clip_image-24900

    白平衡调节(White Balance)

    色彩传感器并不能像人眼那样直接感应图像,因此为了保证最终图像的真实性,必须经过一些白平衡处理以及色彩校正等算法来修正图像。

    原始像素的第一步处理操作就是白平衡调节。一个白色物体每通道的白平衡都应该是相同的,即R=G=B。通过白色物体的采集以及直方图分析,拥有最高级别白平衡的通道被作为目标通道,而其他两个通道通过增益达到匹配,如下:R'=aG'=bB'。同时,随着光源的不同,白平衡也应该相应的调节。

    Bayer插值补偿算法(Bayer Interpolation)

    1) 插值红蓝算法实现

    每一个像素仅仅包括了光谱的一部分,必须通过插值来实现每个像素的RGB值。为了从Bayer格式得到每个像素的RGB格式,我们需要通过插值填补缺失的2个色彩。插值的方法有很多(包括领域、线性、3*3等),速度与质量权衡,最好的线性插值补偿算法。其中算法如下:

    R和B通过线性领域插值,但这有四种不同的分布,如下图所示:

    wps_clip_image-16029

                 (a)                                  (b)

    wps_clip_image-42

               (c)                                     (d)

    在(a)与(b)中,R和B分别取领域的平均值。

    2) 插值绿算法实现

    在(c)与(d)中,取领域的4个B或R的均值作为中间像素的B值。

    wps_clip_image-18476

    (e)   (f)

    由于人眼对绿光反应最敏感,对紫光和红光则反应较弱,因此为了达到更好的画质,需要对G特殊照顾。在上述(c)与(d)中,扩展开来就是上图的(e)与(f)中间像素G的取值,者也有一定的算法要求,不同的算法效果上会有差异。经过相关的研究,(e)中间像素G值的算法如下:

    image

    (f)中间像素G值的算法如下:

    image

    CMOS摄像头这部分转换是在内部用ADC或者ISP完成的,生产商为了降低成本必然会使得图像失真。当然用外部处理器来实现转换,如果处理器的速度足够NB,能够胜任像素的操作,用上面的算法来进行转换,皆大欢喜。不过上述算法将直接成倍提高了算法的复杂度,速度上将会有所限制。因此为了速度的提成,可以直接通过来4领域G取均值来中间像素的G值,将会降低一倍的速率,而在性能上差之甚微,算法如下:

    image

    如果能够通过损失图像的额质量,来达到更快的速度,还可以取G1、G2的均值来实现,但是这样的做法会导致边沿以及跳变部分的失真。

    链接:http://blog.chinaaet.com/detail/32398
  • 相关阅读:
    JavaScript的执行
    关于k阶裴波那契序列的两种解法
    科普 eclipse中的Java build
    [BZOJ 1037] 生日聚会Party
    [POJ 1185] 炮兵阵地
    [POJ 1935] Journey
    [POJ 2397] Spiderman
    [POJ 2373][BZOJ 1986] Dividing the Path
    [POJ 3378] Crazy Thairs
    [POJ 2329] Nearest number-2
  • 原文地址:https://www.cnblogs.com/yucongcong/p/14283893.html
Copyright © 2020-2023  润新知