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和灰度图,并显示_小地瓜重新去华容道工作的博客;
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2019-05-23 【error】 for i in range(len(shape)/2): TypeError: 'float' object cannot be interpreted as an integer
2017-05-23 配置海康相机SDK文件
2017-05-23 matlab与vs混合编程/matlab移植