• Bayer Pattern——RGGB


    原博客地址:https://blog.csdn.net/joe9280/article/details/46952947

    参考:https://blog.csdn.net/wgx571859177/article/details/79772626

    1. 硬件上

    私以为对CCD的原理有大致了解可以帮助我们对Beyer Pattern有更好的了解。我们知道镜CCD(Charge-coupled Device)通过滤镜将普通的入射光分为红绿蓝RGB三个分量。很容易联想到普通的图片每个像素点都包含RGB三个分量的信息,这很容易误导我们认为CCD也接收了每个像素点的三个通道的信息。然而并不是,原理图如下,每一个像素点CCD都只接收了RGB三个分量中的一个分量。一般而言是按照“RG/GB”的方式排列(对照图可以了解RG/GB其实是一个正方形的两行这么排列的)。

    这里写图片描述

    这里写图片描述

    2. 算法上

    Bayer彩色滤波阵列是当前最为流行的彩色图像数字获取形式。三个颜色滤波的形式如下:

    这里写图片描述

    一半的像素点为绿色(G),四分之一的像素点分别是红色(R)和蓝色(B)。

    为了获得色彩信息,彩色图像传感器覆盖有红色、绿色或者蓝色的滤镜,这种滤镜以相同的模式重复出现(上图中为RG/GB,也可以看做GR/BG)。滤镜的排列模式可以不一样,但是普遍使用的Bayer Pattern是2*2的阵列。

    3. Bayer format to RGB

    将Bayer Pattern的格式转换为RGB,那就需要通过插值的方式将每个像素点中丢失的两个颜色找回来。有几种插值的方式可以使用,但是最常用的方法是线性插值的修正调节版本。

    对红色(R)和蓝色(B)分量进行插值。

    这里写图片描述

    当一个绿色(G)的像素点上缺失蓝色(B)和红色(R)时,我们将这个像素点周围最近的两个相同的颜色做平均。如上图的第一张和第二张。中心像素点的红色(R)和蓝色(B)由周围最近的两个红色(R)和蓝色(B)求平均得到。 
    如果是求一个红色(R)像素点上的蓝色(B)分量,上图中第三张。我们用最近的4个蓝色求平均得到。 
    如果是求一个蓝色(B)像素点上的红色(R)分量,上图中第四张。我们用最近的4个红色求平均得到。 
    求红色(R)和蓝色(B)像素点上的绿色(G)分量:

    这里写图片描述

    G(R) = (G1 + G3) / 2 if abs(R1 – R3) < abs(R2 – R4) 
    G(R) = (G2 + G4) / 2 if abs(R1 – R3) > abs(R2 – R4) 
    G(R) = (G1 + G2 + G3+ G4) / 4 if abs(R1 – R3) = abs(R2 – R4)

    G(B) = (G1 + G3) / 2 if abs(B1 – B3) < abs(B2 – B4) 
    G(B) = (G2 + G4) / 2 if abs(B1 – B3) > abs(B2 – B4) 
    G(B) = (G1 + G2 + G3+ G4) / 4 if abs(B1 – B3) = abs(B2 – B4)

  • 相关阅读:
    WinAPI 字符及字符串函数(10): lstrcpy 复制字符串
    WinAPI 字符及字符串函数(7): IsCharLower 是否是个小写字母
    WinAPI 字符及字符串函数(9): lstrcat 合并字符串
    WinAPI 字符及字符串函数(8): IsCharUpper 是否是个大写字母
    WinAPI 字符及字符串函数(6): IsCharAlphaNumeric 是否是个文字(字母或数字)
    获取汉字编码的几种方法 回复"外来天客"的问题
    上周热点回顾(4.114.17)
    博客园电子期刊2011年3月刊发布啦
    上周热点回顾(3.213.27)
    上周热点回顾(3.73.13)
  • 原文地址:https://www.cnblogs.com/MCSFX/p/11679153.html
Copyright © 2020-2023  润新知