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为底哦.

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

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

Bayer图像处理 raw 数据解析的更多相关文章

  1. RAW数据格式解析

    RAM数据格式解析 Raw格式是sensor的输出格式,是未经处理过的数据,表示sensor接受 到的各种光的强度. Raw数据在输出的时候是有一定的顺序的,一般为以下四种: 00: GR/BG 01 ...

  2. process 请求数据解析问题

    开发过程中发现ajax提交的数据无法被express正确的解析,主要的情况是这样的: // 浏览器端post一个对象 $.ajax({ url:"/save", type:&quo ...

  3. C#-正则,常用几种数据解析-端午快乐

    在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...

  4. 通读AFN①--从创建manager到数据解析完毕

    流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块): 我们先看看我们最常用的一段代码: AFHTTPSessio ...

  5. android基础(五)网络数据解析方法

    在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...

  6. 数据解析(XML和JSON数据结构)

    一   解析 二 XML数据结构 三 JSON 数据结构     一 解析 1  定义: 从事先规定好的格式中提取数据     解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...

  7. iOS-数据持久化基础-JSON与XML数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

  8. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...

  9. JSON数据解析 基础知识及链接收集

    JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...

随机推荐

  1. C#: 统计method的执行时间

    对于性能分析来说,无非是内存占用,CPU使用和执行时间. 那么,对于执行时间(elapsed times)的测量,需要强调的是,尽量不要使用DateTime类来,而是应该使用Stopwatch 类.M ...

  2. PHP 教你使用 Swoole-Tracker 秒级定位 PHP 卡死问题

    PHPer 肯定收到过这样的投诉:小菊花一直在转!你们网站怎么这么卡!当我们线上业务遇到这种卡住(阻塞)的情况,大部分 PHPer 会两眼一抹黑,随后想起那句名言:性能瓶颈都在数据库然后把锅甩给DBA ...

  3. [LC]35题 Search Insert Position (搜索插入位置)

    ①英文题目 Given a sorted array and a target value, return the index if the target is found. If not, retu ...

  4. nyoj 517-最小公倍数 (python range(start, end) range(length))

    517-最小公倍数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:2 提交数:11 难度:3 题目描述: 为什么1小时有60分钟,而不是100分钟呢?这是历史上的习惯导致. 但也并 ...

  5. 0MQ文档导读

    1. 先结合RabbitMQ Tutorials,弄清0MQ socket的各种类型. 1.1. 0MQ PAIR 对应 RabbitMQ Tutorials的 "Hello world&q ...

  6. 业务领域建模Domain Modeling

    我的工程实践选题为ESP32低功耗的实现,本项目基于ESP32嵌入式开发平台.下文将以需求为基础,对该项目进行领域建模. 一.概念介绍 1.业务建模 1.1 概念介绍 业务建模(Business Mo ...

  7. The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application] with root cause异常处理及解释

    1.问题描述: 在web的jsp文件中想用jstl这个标准库,在运行的时候很自然的引用jar包如下: <dependency> <groupId>javax.servlet.j ...

  8. 解密面试中的套路,你都get到了么?

    如果大家有关注一些测试类的公众号或者论坛的话,肯定会发现很多文章都在表示现在行业的寒冬冷潮来了!然后有很多测试行业从业者,或者转行测试行业者都表示:工作好难找,公司跑了千千万,依然拿不到一个offer ...

  9. Tensorflow的基本使用

    基本使用 使用 TensorFlow, 你必须明白 TensorFlow: • 使用图 (graph) 来表示计算任务. • 在被称之为 会话(Session)的上下文 (context) 中执行图. ...

  10. P1035 级数求和

    题目描述 已知:S_n= 1+1/2+1/3+…+1/nSn​=1+1/2+1/3+…+1/n.显然对于任意一个整数KK,当nn足够大的时候,S_nSn​大于KK. 现给出一个整数KK(1 \le k ...