Bayer图像处理 raw 数据解析
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 数据解析的更多相关文章
- RAW数据格式解析
RAM数据格式解析 Raw格式是sensor的输出格式,是未经处理过的数据,表示sensor接受 到的各种光的强度. Raw数据在输出的时候是有一定的顺序的,一般为以下四种: 00: GR/BG 01 ...
- process 请求数据解析问题
开发过程中发现ajax提交的数据无法被express正确的解析,主要的情况是这样的: // 浏览器端post一个对象 $.ajax({ url:"/save", type:&quo ...
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- 通读AFN①--从创建manager到数据解析完毕
流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块): 我们先看看我们最常用的一段代码: AFHTTPSessio ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
随机推荐
- 多线程-等待(Wait)和通知(notify)
1.为了支撑多线程之间的协作,JDK提供了两个非常重要的线程接口:等待wait()方法和通知notify()方法. 这两个方法并不是在Thread类中的,而是输出在Object类.这意味着任何对象都可 ...
- [Error]Archive for required library: 'C:/Users/fk/.m2/repository/com/sun/xml/bind/jaxb-core/2.2.7/jaxb-core-2.2.7.jar'
Eclipse报错: Description Resource Path Location Type Archive for required library: 'C:/Users/fk/.m2/re ...
- hdu 1024 Max Sum Plus Plus (动态规划)
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- ZeroC Ice发送大数据
继上文,我们使用ZeroC Ice传递大块数据时,通常有两种做法,一种是一次请求,另一种就是分多次请求(,这种做法在官方文档有例子).选哪一种根据需要而定. 当分多次请求来完成一大块数据,到底选择每次 ...
- 【Oracle】Oracle ASM管理监控命令
目录 Oracle ASM管理监控命令 目的: 1.查看磁盘组 2.查看目前归档 3.查看ASM的磁盘路径 4. asmcmd Oracle ASM管理监控命令 目的: 查看目前Oracle ASM相 ...
- Java基础知识总结之垃圾回收机制
垃圾回收机制 Java垃圾回收机制是Java语言的重要功能之一.当程序创建对象,数组等引用类型对象时,系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块 ...
- websrom编译器
webstorm less环境配置 备注: 安装node后,在命令行输入npm install -g less 即可安装less,打开webstorm setting-Tools-FileWatche ...
- 【Luogu P3376】网络最大流
Luogu P3376 最大流是网络流模型的一个基础问题. 网络流模型就是一种特殊的有向图. 概念: 源点:提供流的节点(入度为0),类比成为一个无限放水的水厂 汇点:接受流的节点(出度为0),类比成 ...
- URL基本语法
1.URL全称为Uniform Resource Locator,即统一资源定位符.对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一 ...
- tensorflow:模型的保存和训练过程可视化
在使用tf来训练模型的时候,难免会出现中断的情况.这时候自然就希望能够将辛辛苦苦得到的中间参数保留下来,不然下次又要重新开始. 保存模型的方法: #之前是各种构建模型graph的操作(矩阵相乘,sig ...