原博客地址: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)

Bayer Pattern——RGGB的更多相关文章

  1. Bayer Pattern

    在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern.在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思.在网上查 ...

  2. bayer转dng实现过程记录

    前言 项目中需要将imx185出来的raw数据转成dng格式,一开始认为很简单的事情,后面才发现还是挺复杂的!!!首先考虑的是不写任何代码,直接用adobe提供的转换工具来转,结果发现,不仅是adob ...

  3. Bayer RGB和RGB Raw

    Bayer RGB和RGB Raw 对于SENSOR来说,Bayer RGB和RGB Raw两者的图象结构都是BG/GR的(Bayer pattern说的是COLOR FILTER的结构, 分为两种: ...

  4. bayer, yuv, RGB转换方法

    因为我的STVxxx USB camera输出格式是bayer格式,手头上只有YUVTOOLS这个查看工具,没法验证STVxxx在开发板上是否正常工作. 网上找了很久也没找到格式转换工具,最后放弃了, ...

  5. 【VS开发】【图像处理】 bayer, yuv, RGB转换方法

    因为我的STVxxx USB camera输出格式是bayer格式,手头上只有YUVTOOLS这个查看工具,没法验证STVxxx在开发板上是否正常工作. 网上找了很久也没找到格式转换工具,最后放弃了, ...

  6. [转]camera的构成

    camera的构成 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏 ...

  7. (转)CMOS Sensor的调试经验分享

    CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...

  8. Color Processing 色彩处理

    How to read and write pixel data Bitmap processing Image Stride Bayer Color Filter Pattern High-Qual ...

  9. Sensor信号输出YUV、RGB、RAW DATA、JPEG【转】

    本文转载自:http://blog.csdn.net/southcamel/article/details/8305873 简单来说,YUV: luma (Y) + chroma (UV) 格式, 一 ...

随机推荐

  1. 使用python制作趣味小游戏—投骰子

    1.模拟真实环境掷骰子 从Python标准库中调用模块:random——random中包含以各种方式生成随机数的函数 从random中引用randint这一函数——骰子都是有固定面数 from ran ...

  2. PyCharm切换解释器版本

    Mac PyCharm > Preferences... > Project Interpreter > Python Interpreters Windows File->D ...

  3. Android Studio从Eclipse导项目

    要是你只下了Android Studio 就不能用Eclipse导出gradle项目了 可以直接使用Android Studio导入模块,在Android Studio里Project算Eclipse ...

  4. 【图像增强】CLAHE 限制对比度自适应直方图均衡化

    文章目录: 目录 1 基本概述 2 竞赛中的CLAHE实现 3 openCV绘制直方图 4 对比度Contrast 5 Contrast Stretching 6 Histogram Equaliza ...

  5. Sequence (矩阵快速幂+快速幂+费马小定理)

            Holion August will eat every thing he has found. Now there are many foods,but he does not wa ...

  6. Java反射(一)

    什么是反射? 在程序的运行过程中,可以动态的创建对象. 反射的基石是什么? 字节码对象是反射的基石.字节码对象:Java类文件通过javac进行编译后生成的xxx.class文件,此文件由jvm加载至 ...

  7. Java中nextInt和nextLine同时使用出现的问题

    代码: package com.ins1; import java.util.*; public class test { public static void main(String[] args) ...

  8. Ubuntu 18.04 LTS 配置静态IPv6地址

    学校的IPv4地址限制了校内IP访问,在家连校内机器只能先连接学校的VPN,十分不方便.好在学校没有对IPv6地址做限制,因此我们可以给自己的机器配置一个静态IPv6地址来绕过这个限制. 本机系统使用 ...

  9. java 多线程-2

    七.线程生命周期 没错,线程也是有生命周期的.就好像人类有出生.儿童.青年.中年.晚年.死亡一般.下面是线程的生命周期图: 八.线程的安全问题 所谓线程不安全[并发问题],举个例子来说,如卖票,会出现 ...

  10. 如何制作一个手机上的Github图床捷径(workflow)

    准备工作 github账号与绑定邮箱 建立一个仓库用于存放图片 生成github token 注意生成之后要备份以免后面要用到(页面刷新之后会看不见) 了解github上传文件的 GitHub API ...