RAW8图像数据格式解析

前言

使用7yuv工具查看raw8图像数据,选择的格式是8 bpp格式,大小是图像尺寸1280*720即可;

RAW格式

raw数据是sensor输出的原始数据,一般有raw8, raw10, raw12等,分别表示一个像素点有8bit、10bit、12bit数据。是sensor将光信号转化为电信号时的电平高低的原始记录,单纯地没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。raw数据在输出的时候是有一定顺序的,主要有四种: GRBG、RGGB、BGGR、GBRG,如下图为BGGR格式:

Bayer pattern:BGGR、RGGB、GRBG、GBRG;

Raw to RGB

where the shaded values are to be calculated by the algorithm. Subscript denotes the tile on the Bayer Pattern to which the value of R, G, and B belongs. Note that the image size will become 3 times the Bayer Pattern. In order to view the RGB image we convert it to a Bit Map, or .BMP image, by adding a bitmap header.

bayer格式插值红蓝算法实现

每一个像素仅仅包括了光谱的一部分,必须通过插值来实现每个像素的RGB值。为了从Bayer格式得到每个像素的RGB格式,我们需要通过插值填补缺失的2个色彩。插值的方法有很多(包括领域、线性、3*3等),速度与质量权衡,最好的线性插值补偿算法。

R和B通过线性领域插值,但这有四种不同的分布,

中间像素点即所要计算的像素点,

在(a)与(b)中,R和B分别取邻域的平均值。

在(c)与(d)中,取领域的4个B或R的均值作为中间像素的B值。

bayer格式插值绿算法实现

                          (e)                                                                        (f)

 

保存raw8格式文件

 

raw8数据转opencv Mat

 红外camera用于dms,获取的图像数据是raw类型的灰度图像;

 原始图像数据是RAW8,单通道,可以直接转换为cv::Mat单通道数据,直接可以保存单通道图像数据;

注意,imread默认输出是三通道图像数据!!!

 

 

Mat格式保存RGB888格式文件

opencv读取bayer图像时,imread的参数设置为0或者-1,bayer pattern filter需要从camera获取;

Bayer → RGB ( CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR,

                          CV_BayerBG2RGB, CV_BayerGB2RGB, CV_BayerRG2RGB, CV_BayerGR2RGB ). 

 

参考

1. 10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示_小地瓜重新去华容道工作的博客

2. 关于摄像头的RAW数据与YUV数据 – 刘文浩

posted on 2023-05-23 18:30  鹅要长大  阅读(1535)  评论(0编辑  收藏  举报

导航