RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。
RAW格式的全称是RAW Image Format。
摄像头的数据输出格式一般分为CCIR601、CCIR656、RAW RGB等格式,此处说的RGB格式应该就是CCIR601或CCIR656格式。而RAW RGB格式与一般的RGB格式是有区别的。 我们知道,Sensor的感光原理是通过一个一个的感光点对光进行采样和量化,但,在Sensor中,每一个感光点只能感光RGB中的一种颜色。所以,通常所说的30万像素或130万像素等,指的是有30万或130万个感光点。每一个感光点只能感光一种颜色。
但是,要还原一个真正图像,需要每一个点都有RGB三种颜色,所以,对于CCIR601或656的格式,在Sensor模组的内部会有一个ISP模块,会将Sensor采集到的数据进行插值和特效处理,例如:如果一个感光点感应的颜色是R,那么,ISP模块就会根据这个感光点周围的G、B感光点的数值来计算出此点的G、B值,那么,这一点的RGB值就被还原了,然后在编码成601或656的格式传送给Host。 而RAW RGB格式的Sensor则是将没个感光点感应到的RGB数值直接传送给Host,由Host来进行插值和特效处理[2]。
假设300万像素每个像素包含10bit的数字信息,那么它的未压缩的RAW文件大小:
3,000,000 * 10bit = 30,000,000 bit = 3,750,000byte ≈ 3662.1K ≈ 3.58M
raw 英 [rɔ:] 美 [rɔ]
adj.生的,未加工的; 无经验的; 新近完成的; 发炎的,疼痛的
vt.擦伤; 使赤身露体
n.原料; (身体的)擦伤部位; 红肿部位; 半成品
ISP(Image Signal Processor),图像信号处理器
Bayer pattern说的是COLOR FILTER的结构,分为两种:STD Bayer pattern 与Pair pattern,其中STD Bayer pattern的结构是BG/GR的,而Pair Pattern顾名思义是指BGBG/GRGR的结构,即以四行为一个单位,前两行是BG的结构,后两行是GR的结构,这种结构是美光专门为此申请了专利的,主要是在输出TV模式(NTSC/PAL制)时用到。
Bayer RGB与RGB Raw的主要区别在于两者输出前经过的处理不同,Bayer RGB从ADC输出,只经过了LENS SHADING,GAMMA等模块处理而后就直接输出,而RGB Raw则经过了整个ISP模块的处理,最终是经过YUV422的数据转化而来的。Raw data是指原始的数据,单个pixle只能感应一种颜色。
来源这边文章三种Bayer数据的插值算法(CCD插值算法),里边讲到格式的排列,和转换的方法。
一般友对应的四中格式RGGB(a),BGGR(b),GBRG(c),GRBG(d)四种格式的接口。该文讲了三种算法,还没有实验这三个算法的效果。
(1) 绿色分量重建
整个平面内一般一半的点是有像素的,而且全都间隔排列。对没有像素存在的点,全部取其左边位置的绿色像素强度。
(2) 红色和蓝色分量重建
对每一个红色和蓝色的像素,将右边、下面、右下角的值都赋值为它的值。
该方法在实际处理中,对竖直的密集线对表现比较好,只有少量噪点;而水平的密集线对基本呈现密集的点状图案,无法看出线条,类似于前面说的伪彩色现象。
(1) 绿色分量重建
首先恢复红色和蓝色采样点处的绿色分量,即图a和图b中心采样点处的绿色分量,图b绿色分量重建过程与图a相似,故以图a为例。
1)中心红色采样点R(i,j)处水平方向和垂直方向检测算子计算如下:
2)当水平算子小于垂直算子时,中心点R(i,j)存在水平边缘的概率较大,中心绿色分量的计算沿水平方向进行,公式如下 :
3)当水平算子大于垂直算子时,中心点R(i,j)存在垂直边缘的概率较大,中心绿色分量的计算沿垂直方向进行,公式如下 :
4)倘若水平和垂直的算子相等,则中心点处的绿色分量的计算为水平和垂直方向的平均值,公式如下:
(2) 绿色采样点处的红色和蓝色分量重建
图d的蓝色和红色分量的重建过程与图c相似,故以图c为例。中心点处的蓝色分量的重建使用左右两点的B-G空间的线性插值,红色分量的重建使用上下两点的R-G空间的线性插值,具体如下:
(3) 红色(蓝色)采样点处的蓝色(红色)分量的重建
最后对红、蓝处的蓝、红像素分别进行重建。根据图像,每个红色像素被四个角上的蓝色像素包围,蓝色像素也是相同。因此只需要对四个角上取平均值即可。红色像素点的重建方式如下,蓝色也类似:
该方法对水平和竖直的密集线对展现都比较良好,除了有少量噪点,线对和背景的对比度不够高。
在Bayer CFA中,由于绿色像素点的数量是红色和蓝色像素数量的两倍,故其包含更多的原始图像的边缘信息。因此,亚当斯和汉密尔顿根据该思想在1997年提出了一种边缘自适应的插值算法。所以汉密尔顿插值其实就是一种边缘自适应的插值算法。
(1) 绿色分量重建
首先恢复红色和蓝色采样点处的绿色分量,即图a和图b中心采样点处的绿色分量,图b绿色分量重建过程与图a相似,故以图a为例。
1)中心红色采样点R(i,j)处水平方向和垂直方向检测算子计算如下:
2)当水平算子小于垂直算子时,中心点R(i,j)存在水平边缘的概率较大,中心绿色分量的计算沿水平方向进行,公式如下 :
3)当水平算子大于垂直算子时,中心点R(i,j)存在垂直边缘的概率较大,中心绿色分量的计算沿垂直方向进行,公式如下 :
4) 倘若水平和垂直的算子相等,则中心点处的绿色分量的计算为水平和垂直方向的平均值,公式如下:
(2) 绿色采样点处的红色和蓝色分量重建
图d的蓝色和红色分量的重建过程与图c相似,故以图c为例。中心点处的蓝色分量的重建使用左右两点的B-G空间的线性插值,红色分量的重建使用上下两点的R-G空间的线性插值,具体如下:
(3) 红色(蓝色)采样点处的蓝色(红色)分量的重建
最后进行图a中心点蓝色的恢复和和图b中心点红色的恢复,由于图b的重建过程与图a相似,故以图a为例。观察R周围最近的蓝色像素点,处于R像素点左上,左下、右上、右下四个位置。为了更好的选择插值方向,保存边缘信息,与绿色分量的恢复类似,需要首先沿两个斜四十五度方向计算像素的梯度,再沿梯度较小的方向插值。
左下右上和左上右下的梯度计算如下
根据梯度的比较结果,选择合适的插值防线,计算如下:
其中第2、3步的顺序可调换。
这种方法的时间复杂度不高,而且能够提供比较好的插值效果。对于非常亮的白光区域,采用上面两种方法会有个别的某种纯色255强度的点,而该方法的插值对亮色的表现比较平滑。对于密集线对,无论横竖方向都不会出现颗粒状的问题,线条比较完整,且与背景对比度高。
关于Bayer数据的插值算法有很多的文章与研究,在工业界较为成熟的应用还是汉密尔顿插值法。在设计程序时要考虑到具体的平台与需求,挑选合适的算法进行处理。
上面文章讲的不错,但是这个文章RAW图像数据到RGB讲的比较细和通俗易懂,里面有讲到log算法还有raw到rgb的简单算法。
对于SENSOR来说,Bayer RGB和RGB Raw两者的图象结构都是BG/GR的, raw图像中一般要进行线性化处理,一般来说我接触过的手机的raw图像一般为10bits。所谓线性化我的理解就是还原格式,OV88865的输出格式就是raw10bit。
OV8865传感器的图像阵列为3296列×2528行(8,332,288像素)。 图3-1显示了图像传感器阵列的横截面。滤色器以Bayer模式排列。 原色BG / GR阵列以线交替的方式排列,从图中知道,每个2*2的方阵为一个单位,由于人眼对绿光比较敏感,所以有两个绿色像素,一个红色像素和一个蓝色像素。在8,332,288像素中,7,990,272(3264x2448)是有效像素并且可以输出。 其他像素用于黑电平校准和插值。 建议从整个有源像素阵列输出中心3264x2448像素。 后端处理器可以使用边界像素进行额外处理。传感器阵列设计基于具有逐行传输的场积分读出系统和具有同步像素读出方案的电子快门。
图像传感器sensor的缩放存在两种模式:binning mode 和skip mode。skipping mode 就是把想要的数据采集上来,把其余的数据扔掉。binning mode 就是把相邻的像素求平均值,生成一个像素。OV8865支持binning mode,可在保持视野的同时提供较低分辨率的输出。 在binning mode为ON的情况下,相邻像素(相同颜色)的电压电平在发送到ADC之前被平均。OV8865支持2x2合并,如图3-2所示,其中两个水平(2x1)相邻同色像素的电压电平被平均。
参考链接1:插值算法将摄像头采集RAW数据保存位RGB24
参考链接2:RAW图像数据到RGB
参考链接3:Camera Binning Mode
参考链接4:CMOS RAW RGB格式输出时序研究(我从摄像头资料摘的)
参考链接5: Bayer RGB和RGB Raw
参考链接6:三种Bayer数据的插值算法(CCD插值算法