【自有技术大讲堂】伪彩工业相机Bayer差值算法原理简介

网站首页    行业信息    【自有技术大讲堂】伪彩工业相机Bayer差值算法原理简介

1、彩色相机是如何变成彩色的Bayer由来

 

提到工业相机图像格式,尤其是彩色相机的图像格式,不得不先讲一下bayer图像格式,bayer格式图片是伊士曼·柯达公司科学家Bryce Bayer发明的,Bryce Bayer所发明的拜耳阵列被广泛运用数字图像。

 

Bayer原理:对于彩色图像,需要采集多种最基本的颜色,如rgb三种颜色,最简单的方法就是用滤镜的方法,红色的滤镜透过红色的波长,绿色的滤镜透过绿色的波长,蓝色的滤镜透过蓝色的波长。如果要采集rgb三个基本色,则需要三块滤镜,这样价格昂贵,且不好制造,因为三块滤镜都必须保证每一个像素点都对齐。柯达公司Bayer提出的解决方案是使用一个图像传感器,在图像传感器的前面,放置一个滤光层,滤光层的滤光点与图像传感器的像素一一对应,每个滤光点只能通过红、绿、蓝三种光其中之一;当用bayer格式的时候,很好的解决了这个问题。bayer格式图片在一块滤镜上设置的不同的颜色,通过分析人眼对颜色的感知发现,人眼对绿色比较敏感,所以一般bayer格式的图片绿色格式的像素是是r和g像素的和。

 

另外,Bayer格式是相机内部的原始图片,一般后缀名为.raw。很多软件都可以查看,比如PS。我们相机拍照下来存储在存储卡上的.jpeg或其它格式的图片,都是从.raw格式转化过来的。

 

img1

 

通过规律性的排列不同颜色的滤光点,我们就能在传感器上面有规律的获得不同颜色的光强值,也就是R、G、B的灰度值;

 

根据不同于颜色的排列,我们把Bayer分为BayerRG、BayerBG、BayerGB、BayerBG四种。

 

img2

 

但是这样得到一幅图像,其实仅仅是灰度图,它并不能表达呈现真实世界的图像。

 

img3

 

放大后的效果

 

img4

 

img5

 

如果想要呈现真实的色彩世界,那么就需要弥补每个像素所缺少的其他色彩分量,用相邻的像素值补充进来,这个过程就叫做bayer差值,当然,相机实现彩色图像原理肯定不止这一种,但是,出于成本、生产技术等因素,目前你所能接触到的大部分相机、工业相机数码相机、原始数据都是有bayer转换产生的。

 

img6

 

2、工业相机支持的图像格式

 

前面讲了传感器的彩色由来,那么就接下来讲讲工业相机支持的图像格式种类,以海康工业相机为例。

 

img7

 

mono10、mono12分别代表10位、12位黑白图像,在内存中以16位数据存储,不够的数据位填0补充。

 

Mono10 Packed、Mono12 Packed这种数据跟上面的mono10、mono12没有本质上的区别,差异在数据排列上,在16位数据存储,原来补0的位置被下一帧图像数据填充,这样处理的目的是节约传输带宽,坏处增加了解码的难度。

 

img8

 

Bayer8、Bayer10、Bayer12分别代表8位、10位、12位的彩色相机相机原始数据格式,传感器采样最原始的数据是Bayer12,Bayer8、Bayer10都是由Bayer12下采样过来的。

 

Bayer10 Packed、Bayer12 Packed与mono10 Packed,mono12 Packed一样的道理,数据排列方式不同。

 

img9

 

YUV 422 Packed、YUV 422 (YUYV) Packed:YUV是由bayer数据先转化为RGB,然后由RGB再次转化得到,其中Y代表亮度值,数据排列分别是UYVY、与YUYV两种,它们都是16位存储的,Packed就是数据填充方式。

 

那么如何查询自己手上的工业相机支持的图像格式呢?以海康工业相机为例,使用其MVS客户端,打开相机后,在相机属性中找到Pixel Format点击即可查看,切换图像格式,前提需要再非预览模式状态下。

 

img10

 

3、图像格式转化

 

以海康工业相机的格式转换例程为例,讲讲图像格式如何转化。

 

格式转换的总体思路如下:

 

img11

 

需要注意的是,如果你想使用10bit、12bit的数据,那么你需要先在相机端设置相机的图像格式为mono10、mono12等,这样得到的raw数据才会是其他位数,同时不去做格式转换上面格式转换的目的是转换成常用的8bit数据。

 

4、一些其他的问题

 

(1mono8 、mono10、mono12之间的区别:

 

首先,要了解一个灰阶的概念,通常来说,液晶屏幕上人们肉眼所见的一个点,即一个像素,它是由红、绿、蓝(RGB)三原色组成的。每一个基色,其背后的光源都可以显现出不同的亮度级别。而灰阶代表了由最暗到最亮之间不同亮度的层次级别。

 

在数字信息存储中,计算设备用2进制数来表示,每个0或1就是一个位(bit)。 假设1代表黑、0代表白,在黑白双色系统中最少有2bit。单基色为nbit,画面位数就为2 ⁿbit,位数越大,灰度越多,颜色也越多,彩色系统中同理。视频画面10bit含义就是画面能以10为二进制数的数量控制色彩层次(即灰阶)。通常8bit相当于256级灰阶——即常说得24位真彩色,10bit就相当于1024级灰阶。三基色混合成彩色,增加1 bit就意味色彩数增加8倍。10bit就相当于1024的三次方——1073741824,约为10.7亿色。远大于8bit的1670万色。

 

那么mono8,就是2^8=256灰阶,因此你看见的黑白mono8图像,灰度值范围时0-255;同理mono10、mono12分别是2^10、 2^12, 图像灰度值范围0-1024、0-4096,但是如果你将图像数据存储下来,在计算机内存里面,只能按照8、16、24、32等位深存储的,那么10、12位数据就会被补0,灰度范围就会被拉伸到2^16,也就是0-65536。

 

(2Bayer转RGB的注意事项

 

bayer插值算法差异;海康提供的SDK接口中,提供了3种不同的bayer转RGB算法,调用MV_CC_SetBayerCvtQuality接口实现,接口调用在其Opendevice函数之后即可。

 

img12

 

下图来看一下不同插值算法的效果,从上到下,依次是快速,均衡,最优当对格式转换速度有要求时,可以尝试下不同插值算法,从中做取舍。

 

img13

 

5、结语

 

Bayer差值算法很好的解决了利用单感光sensor+RGB滤波片的方式实现还原彩色图像的功能,同时兼顾了生产制作成本,极大的推动了相机行业的发展。

 

2023年2月23日 17:35