Bayer Pattern
在刚加入工作的时候,听到最多的就是RGGB Bayer Pattern。在之前的接触中,一直默认一张图片的每个像素点有RGB三个分量,那“RGGB Bayer Pattern”究竟是什么意思。在网上查找资料以后发现这其实也是非常简单的概念。以下内容大部分为翻译,结合“CCD工作原理教程(V1.2)”。
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)
如果觉得这样执行速度的很慢的话,就简单的吧G1-4全都加起来求平均好了!
Bayer Pattern的更多相关文章
- Bayer Pattern——RGGB
原博客地址:https://blog.csdn.net/joe9280/article/details/46952947 参考:https://blog.csdn.net/wgx571859177/a ...
- Bayer RGB和RGB Raw
Bayer RGB和RGB Raw 对于SENSOR来说,Bayer RGB和RGB Raw两者的图象结构都是BG/GR的(Bayer pattern说的是COLOR FILTER的结构, 分为两种: ...
- bayer, yuv, RGB转换方法
因为我的STVxxx USB camera输出格式是bayer格式,手头上只有YUVTOOLS这个查看工具,没法验证STVxxx在开发板上是否正常工作. 网上找了很久也没找到格式转换工具,最后放弃了, ...
- bayer转dng实现过程记录
前言 项目中需要将imx185出来的raw数据转成dng格式,一开始认为很简单的事情,后面才发现还是挺复杂的!!!首先考虑的是不写任何代码,直接用adobe提供的转换工具来转,结果发现,不仅是adob ...
- 【VS开发】【图像处理】 bayer, yuv, RGB转换方法
因为我的STVxxx USB camera输出格式是bayer格式,手头上只有YUVTOOLS这个查看工具,没法验证STVxxx在开发板上是否正常工作. 网上找了很久也没找到格式转换工具,最后放弃了, ...
- (转)CMOS Sensor的调试经验分享
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
- Color Processing 色彩处理
How to read and write pixel data Bitmap processing Image Stride Bayer Color Filter Pattern High-Qual ...
- Sensor信号输出YUV、RGB、RAW DATA、JPEG【转】
本文转载自:http://blog.csdn.net/southcamel/article/details/8305873 简单来说,YUV: luma (Y) + chroma (UV) 格式, 一 ...
- camera理论基础和工作原理
写在前面的话,本文是因为工作中需要编写摄像头程序,因为之前没有做过这类产品,所以网上搜索的资料,先整理如下,主要参考文章如下,如果有侵权,请联系我:另外,转载请注明出处.本文不一定全部正确,如果发现错 ...
随机推荐
- NodeJS_0001:关于install的方式
最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱.其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同 ...
- 使用resultMap实现高级结果映射
使用resultMap实现高级结果映射 resultMap的属性: 1.属性 id:resultMap的唯一标识.type:resulMap的映射结果类型(一般为Java实体类).2.子节点 id:一 ...
- 2019版本kali linux-3 系统安装与基本调试
本次的实验环境是: kali linux -3 kali linux 全版本地址: http://old.kali.org/kali-images/ 楼主的主系统是:kali linux 如果想学好 ...
- 纪中5日T2 1565. 神秘山庄
1565. 神秘山庄 (Standard IO) 原题 题目描述 翠亨村是一个神秘的山庄,并不是因为它孕育了伟人孙中山,更神秘的是山庄里有N只鬼.M只兔子,当然还有你.其中每秒钟: 1. 恰有两个生物 ...
- sublime text3插件使用
sublime text 使用BUG解决 一.安装emmet.Package Control插件ctrl+shift+p -> install package ->emmet(Zen Co ...
- 树莓派查看ip地址(命令ifconfig)和退出ping
1.1树莓派查看ip地址用如下命令: ifconfig -a 结果如下图所示: 注意:树莓派查看ip地址是用命令ifconfig,而Windows的cmd命令查看ip地址是ipconfig.
- SqlServer该如何合适的索引
SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引 ...
- Java知识串讲
一.JDK个版本之间的区别: 1.JDK1.5的新特性: 泛型ArrayList list = new ArrayList();-->ArrayList<int> list = ne ...
- 0002 Django工程创建
1 创建一个目录,用于专门存放Django工程的虚拟环境 PyCharm默认虚拟环境在工程内,从而导致打包的时候,会把虚拟环境一起打包. 同时,虚拟环境中的插件较多,一个工程创建了一个虚拟环境,以后, ...
- 假期学习【十一】Python切词,以及从百度爬取词典
今天主要对从CSDN爬取的标题利用jieba(结巴)进行分词,但在分词过程中发现,如大数据被分成了大/数据,云计算被分隔成了云/计算. 后来又从百度百科--->信息领域爬取了相关词语作为词典,预 ...