Bayer数据的处理

2024-02-27 20:58
文章标签 数据 处理 bayer

本文主要是介绍Bayer数据的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址:http://www.cnblogs.com/lin1270/archive/2010/12/01/1893647.html

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

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

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

如有何疑问, 请致信: 414078791@qq.com

这篇关于Bayer数据的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/753569

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.