Bayer到RGB,格式转换原理及具体实现

这篇具有很好参考价值的文章主要介绍了Bayer到RGB,格式转换原理及具体实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

缘起

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

Bayer到RGB,格式转换原理及具体实现
海康相机的图像格式选择

 

之前用的是德国相机,在相机转换格式并没有发现影响帧率,有点好奇彩色相机为什么要采用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到RGB,格式转换原理及具体实现
Bayer GR图像的数据排列方式,数字表示像素数

 

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

Bayer到RGB,格式转换原理及具体实现

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

实现方法

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

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

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

具体实现如下图所示:

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

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

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

Bayer到RGB,格式转换原理及具体实现

Bayer到RGB,格式转换原理及具体实现

 Bayer到RGB,格式转换原理及具体实现Bayer到RGB,格式转换原理及具体实现

 后续方向:

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文章来源地址https://www.toymoban.com/news/detail-485762.html

到了这里,关于Bayer到RGB,格式转换原理及具体实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Baumer工业相机堡盟工业相机如何通过BGAPISDK的函数转换示Bayer格式为BGR8格式彩色图像(C++)

    ​ Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度

    2023年04月25日
    浏览(74)
  • “Python OpenCV 图像格式转换:RGB与BGR互转“——使用OpenCV库进行图像处理的过程中,经常需要进行不同格式之间的转换。其中最为常见的就是R...

    “Python OpenCV 图像格式转换:RGB与BGR互转”——使用OpenCV库进行图像处理的过程中,经常需要进行不同格式之间的转换。其中最为常见的就是RGB和BGR格式之间的转换。本文将详细介绍如何使用opencv-python库将图像从RGB格式转换为BGR格式以及从BGR格式转换为RGB格式。 要实现图像格

    2024年02月12日
    浏览(78)
  • 【Python OpenCV格式转换:RGB与BGR互转】

    【Python OpenCV格式转换:RGB与BGR互转】 图像处理中颜色空间的转换是一个重要的问题。其中,RGB与BGR是最常见的两种格式,而OpenCV是最流行的图像处理库之一。在OpenCV中,我们可以轻松地将RGB和BGR格式之间进行转换。 下面是如何使用Python OpenCV将RGB格式转换为BGR格式的代码示例

    2024年02月13日
    浏览(47)
  • OpenCV处理工业相机Bayer格式数据

            工业相机为了传输效率和数据的真实性,很多都是用Raw格式,比如从某宝购买的这台JHEM203GC的相机,就只支持Bayer RG8, Bayer RG10数据。         Bayer图像是彩色Bayer传感器产生的图像数据, 这种传感器每个像素只记录了红,绿,蓝一个分量的数据,如下图所示,按

    2024年04月27日
    浏览(32)
  • 使用Python代码实现视频(如.MP4)与图片(如.jpg)文件格式的相互转换

    1.使用Python代码将视频文件(.MP4格式)转换为图片(.jpg格式) 对视频进行抽帧操作,将视频逐帧转换为图片(.jpg格式的图片的文件) 此处采取的方法是:对视频.MP4文件 每隔10帧截取一张.jpg格式的图片 需要使用的Python方法cv2在opencv-python库中,下载安装方式; 实现上述功能的

    2024年02月03日
    浏览(56)
  • RGB空间中的彩色图像分割原理及其python实现

    ⭐️ 为尊重原创性 !转载请注明出处:©️ Sylvan Ding’s Blog 本文论述了基于欧式距离和曼哈顿距离的彩色图像分割算法,并用python实现了各个算法。之后将二者的优势结合,提出了改进后的曼哈顿距离算法:基于 加权曼哈顿距离 的彩色图像分割算法,在分割效果和速度上超

    2023年04月22日
    浏览(43)
  • Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换

    Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换 在图像处理中,我们经常需要使用不同的颜色表示法来处理图像。在OpenCV中,我们可以使用HSV(色相、饱和度、亮度)表示法来替代标准的RGB(红、绿、蓝)表示法来处理图像。HSV表示法更为直观和易于使用,因为它将

    2024年02月06日
    浏览(71)
  • 如何将yuv420p图像数据转换为RGB数据并使用opencv保存为jpg图片

    yuv420是用4个byte存储4个Y的信息,用1个Byte存储U的信息,一个Byte存储V的信息, 这4个Y共用这2个U和V ,也就是用6个Byte 存储4个像素信息,也就是一个像素需要12个Bits(6*8/4),也就是12bpp。 注意yuv420p里面的p是指planar,也就是分层存储,先存全部Y的信息,然后是U的信息,最后

    2024年02月16日
    浏览(34)
  • 相机的内参标定(实现原理+具体操作流程+实验结果)

    这篇主要是总结梳理一下关于学习到的相机内参标定的知识。计划分为原理介绍,具体操作流程,标定实验结果三个模块。 首先先简单解释下为什么要进行相机标定这个操作,我们知道生活中实际使用的相机镜头都是透镜,初中时的物理就讲过,只有通过光心的光线才是沿直

    2024年02月09日
    浏览(51)
  • 第四十八章 解读RGB颜色机制,在图像处理中像素值越大意味着什么,OpenCV为什么使用 BGR 颜色格式

    RGB三原色起源于上世纪初1809年Thomas Young提出视觉的三原色学说,随后Helmholtz在1824年也提出了三原色学说:即:视网膜存在三种视锥细胞,分别含有对红、绿、蓝三种光线敏感的视色素,当一定波长的光线作用于视网膜时,以一定的比例使三种视锥细胞分别产生不同程度的兴

    2024年01月21日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包