缘起

使用海康彩色相机,采集到的图像数据是Bayer GR8格式的,如果在相机参数中改为其它彩色格式,那就是相机内部完成格式转化,就会导致采集帧率变慢。一般情况下这种方式是简单实用的,但如果想要追求更高的效率,就应该把这个耗时的过程拿到程序中来,让程序在进行格式转化的时候可以同时进行下一步动作。

海康相机的图像格式选择

之前用的是德国相机,在相机转换格式并没有发现影响帧率,有点好奇彩色相机为什么要采用Bayer这种格式的。查了一些资料,发现这是彩色相机的常用方式,主要是为了节约成本,提高效率。因为我们看到的图像颜色都是通过红绿蓝三色组合而成的,在没有一种直接采集颜色传感器的情况下,如果要采集一个像素点的颜色,就要用红绿蓝三种遮光镜,让相机采集三组数据,这无疑是费事费时的。而Bayer格式就是省去三分之二的遮光镜,通过一个像素一个遮光镜,RGB间隔排列的方式,采集到的图像数据。

名词解释

RGB图片格式:RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。

Bayer图片格式:bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发明的,Bryce Bayer所发明的拜耳阵列被广泛运用数字图像。Bayer格式是相机内部的原始图片, 一般后缀名为.raw。很多软件都可以查看, 比如PS。我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片, 都是从.raw格式转化过来的。

图片的8位、16位、24位等:数据位数主要是指存储灰度值或颜色值的数据大小,比如8位,就是指用8个位来存储一个像素点的数值,按十进制也就是0-255,这也是图像上常见的灰度值大小;由此可知,16位及更高位数,就是把灰度值分得更细,也就是表达亮度和色彩更准确。

原理介绍

我们的起点是相机采集到Bayer图像数据,我们的终点是RGB的图像数据。由下图可以看出,Bayer图像数据其实是缺省状态的,也就是一个像素点只表示一种颜色,而如果要得到像素总数相同的RGB图像,就需要把缺失的颜色值补充回来。比如第一个像素点的颜色是G(绿色),那我们就要把它缺失的R(红)和B(蓝)的颜色值补回来;第二个点是颜色R的值,那就要把G和B的值补回去,……把每个像素点缺失的另外两种颜色值补回去,就得到了同像素的RGB图像。这也叫Bayer插值处理。

Bayer GR图像的数据排列方式,数字表示像素数

当然具体的插值方式有很多种(包括领域、线性、3*3等),我采用的是比较好理解的线性插值,就是用当前像素点周边的另外两种颜色值的平均值,来作为当前像素点的数值,这样就把当前像素点缺失的另外两个颜色值补回来了。如下图所示,我当前像素的数值是R值,我要知道当前的G值,就要把周边的G值加起来求平均,而要得到B值,也是用周边的值求平均,依次可以求出其它所有点。

得到了RGB图像数据之后,就可以直接转化成需要的彩色图像了。

实现方法

从原理知道,转换其实挺简单的,就是给当前像素点再添加两个平均值,而通过循环把所有像素点都处理一遍,就可以得到RGB的图像了。

我是使用labview实现的这个转化,知道原理,其它语言其实也很容易实现,甚至比我这种连线的方式更简洁些。

注意:我这里的源数据是GR 8位的图像数据,输出了RGB数据,但我的数组大小并没有变为原来的三倍,因为我把R G B这三个8位的数值拼成了一个24位的数据,相当于用一个24位的数同时分别表达了RGB的三个数值。

具体实现如下图所示:

1、通过两个for循环,遍历所有像素点,并给每个像素点添加两个颜色值;

2、根据当前像素点的位置不同,分成四种情况,可以看上面的色彩排列图理解;

3、分四种情况分别处理,其中0和3一组,1和2一组,都只是最后拼接顺序不同。

后续方向:

1、插值的效果不一定是最好的,根据不同图片和不同要求,可能要选择其它插值方式;

2、运行速度应该还有可优化的地方,这是最老实巴交的一种转化方式了。

参考文章:

海康彩色工业相机图像格式转换方法(Bayer转RGB)https://blog.csdn.net/qq_23107577/article/details/113258116
图像bayer格式及bayer插值原理介绍https://blog.csdn.net/cjie221/article/details/88932686

图像bayer格式介绍以及bayer插值原理CFAhttps://www.cnblogs.com/qiqibaby/p/5267566.html

Bayer到RGB,格式转换原理及具体实现相关推荐

  1. 【DSP开发】【VS开发】YUV与RGB格式转换

    [视频处理]YUV与RGB格式转换 YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与 ...

  2. rgb格式颜色与#000000十六进制格式颜色的转换原理

    首先,#000000格式的颜色被称为十六进制颜色码: 6位数分为三组,每两位数一组,依次是红.黄.蓝颜色的强度: 而与此对应的,rgb(39,137,202)依次是十进制的红黄蓝颜色: 因此将rgb格 ...

  3. 海康彩色工业相机图像格式转换方法(Bayer转RGB)

    海康彩色工业相机图像格式转换方法 1.彩色相机是如何变成彩色的-Bayer的由来 2.工业相机支持的图像格式 3.图像格式转化 4.一些其他的问题 1.彩色相机是如何变成彩色的-Bayer的由来 提到 ...

  4. bmp qimage 保存位_Qt QImag图像保存、格式转换

    图像保存 bool QImage::save(const QString &fileName, const char *format = Q_NULLPTR, int quality = -1 ...

  5. YUV / RGB 格式及快速转换算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用 的过程,所以在不同的应用领域中为了更好更准确 ...

  6. python使用openCV加载图像、并将BGR格式转换成HSV格式、定义HSV格式中需要分离颜色的掩码(掩模)区间(mask)、并使用mask信息进行颜色分离、BGR格式的图像转化为RGB、并可视化

    python使用openCV加载图像.并将BGR格式转换成HSV格式.定义HSV格式中需要分离颜色的掩码(掩模)区间(mask).并使用mask信息进行颜色分离.将BGR格式的图像转化为RGB.可视化 ...

  7. opencv-python的格式转换 RGB与BGR互转

    opencv-python的格式转换 RGB与BGR互转 2018年04月17日 22:53:23 yuanlulu 阅读数:1753更多 个人分类: pythonopencv 版权声明:本文为博主原 ...

  8. 图片YUV格式与RGB格式的转换

    YUV格式与RGB格式的转换 YUV格式介绍 YUV420.YUV422.YUV444 (1) YUV4:2:0 (2) YUV4:2:2 (3) YUV4:4:4 内存排列方式 YUV与RGB转换 ...

  9. YUV视频格式到RGB32格式转换的速度优化 上篇(转)

    YUV视频格式到RGB32格式转换的速度优化 上篇                     HouSisong@GMail.com    2007.10.30   tag: YUV,YCbCr,YUV ...

最新文章

  1. mongodb java 学习_《 mongodb 学习 》java 基本操作
  2. 我的开源 GitBook: Python 之旅
  3. 微软Build 2017首日主角AI 同时发布.NET Core 2.0 Preview 1
  4. NavigationDuplicated vue-router 路由重复点击报错的问题
  5. Android Studio(14)--点9图片怎么玩
  6. 元胞机模拟量子计算机,我国量子计算和量子模拟研究取得新突破
  7. show date and time in ubuntu console
  8. markdown 本地链接_markdown多平台发布及七牛图床使用
  9. .NET Framework发展史
  10. 【压缩感知OMP算法】OMP算法的Matlab版本
  11. 【声音可视化】语音学软件:praat
  12. struts2联网问题
  13. 算法竞赛命题指南(命题流程、Polygon的使用等)
  14. “恐怖”的阿里一面,我究竟想问什么
  15. 记一次使用android studio分析app闪退原因的过程
  16. AD切换2D,3D,旋转模型
  17. apt-get: command not found解决方案
  18. HTML中怎么改变一条线的粗细
  19. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新
  20. word2vec的参数选择及原理简介

热门文章

  1. [渝粤教育] 四川农业大学 Java程序设计 参考 资料
  2. vue点击菜单跳转时,背景颜色动态变化
  3. GENESIS公链将打破不同区块链孤岛效应
  4. 计算机网络中的电路交换的优缺点,从多方面比较电路交换、报文交换和分组交换的主要优缺点...
  5. 循证护理教育中的移动辅助同伴评估方法
  6. 计算机控制系统软件设计内容,第7章 计算机控制系统软件设计44813.ppt
  7. Java使用google开源工具Thumbnailator实现图片压缩
  8. MFC 游戏贴图与透明特效的实现
  9. C语言qsort排序
  10. 书法练字帖纸——井字格获得国家知识产权局专利证书