Raw
定义
- Raw图为相机sensor原始数据,是sensor直接对外输出的图像。目前,相机中最常用CMOS传感器,用来感受、衡量光的强弱。
- 但是传感器只能测量光的强弱,并不能区分颜色。颜色如何获得呢?将不同颜色的滤镜和传感器结合起来,得到具有色彩阵列(color filter array, CFA)的相机传感器。最常见的排列分布为Bayer pattern。
- 从上图来看,绿色明显多于红色和蓝色,这是因为人眼对于绿色比较敏感,绿色比红色和蓝色多会进一步降低噪声并可以让图像有更好的细节呈现。与全色Sensor采集相比,Bayer pattern的排列可以有效减少到全色Sensor的1/3,大大减少了成本和面积。一般bayer pattern分为GBRG、GRBG、BGGR、RGGB四种模式(肯定是两个G)。
常见的Raw图格式
mipi raw
文件常见扩展名:.RAWMIPI10、.RAWMIPI12等。
mipi raw是原始的raw数据,常见的有mipi raw 10bit和mipi raw 12bit。还有mipi8、mipi14等,具体使用格式按照特定项目定义,了解更多见这里。主要介绍mipi raw 10bit和mipi raw 12bit:
- mipi raw 10bit:每个像素值有效位为10bit,若使用正常的存储方式,需要两个byte(16bit)存储一个像素,会有6个bit的浪费。因此mipi raw 10bit采用每5个byte(共计40bit)存储4个像素的方式。前4个byte分别存4个像素点的高8位,第5个byte从低位到高位存储前4个像素的低2位。示意图如下:
订正:上图中第5个(存低2位的)byte,前4个像素的高位存储顺序与图1相反,目前接触到的项目处理的mipi10均是以图1为准,即应该是|D0|D1|C0|C1|B0|B1|A0|A1|。
- mipi raw 12bit:每个像素值有效位为12bit,与mipi10类似,mipi12每2个像素点使用3个byte存储,前2个byte分别存2个像素的高8位,第3个byte从低位到高位存储前2个像素的低4位,示意图如下:
ideal raw
文件常见扩展名:.GBRG、.GRBG、.RawPlain16LSB1等。
ideal raw是解码后经过一些isp算法处理的mipi raw,每个bayer像素点用2个byte按顺序存储。对于bayer pattern RGGB的raw图,ideal raw通常的数据流(一维)的存储为:(没看懂)
RGRGRGRG ----(width)---RGRGRG GBGBGBGB ---- (width)---GBGBGB (height) RGRGRGRG ----(width)---RGRGRG GBGBGBGB ---- (width)---GBGBGB 每一个R、G、G、B使用16bit存储
RGB
经过demosic将bayer pattern的raw图转换成完整的RGB图像
YUV (YCbCr)
- YUV是一种颜色编码方法,它将亮度信息(Y)与色彩信息(UV/CbCr)分离,没有UV信息也可以显示完整的图像,只不过是黑白的。YUV不像RGB那样要求三个独立的信号同时传输,所以用YUV方式传送占用极少的频宽。
- YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种:YUV4:4:4、YUV4:2:2、YUV4:2:0。
- YUV4:4:4采样,每一个Y对应一组UV分量;
- YUV4:2:2采样,每两个Y共用一组UV分量;
- YUV4:2:0采样,每四个Y共用一组UV分量。
以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。
- YUV存储排列格式有两大类:planar和packed。
- planar格式:先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V;
- packed格式:每个像素点的Y、U、V是连续交叉存储的。
- 手机常用的YUV格式:NV12、NV21(属于YUV4:2:0),是一种two-plane模式,即Y和UV分为两个Plane,但是UV为交错存储。
- 手机中RGB与YUV换算:(Y、U、V、R、G、B属于[0,255])
- OpenCV中RGB与YUV换算:(Y’、U’、V’、R’、G’、B’属于[0,255])
HSV
HSV 色彩模型 HSV(Hue、Saturation、Value)分别对应色相、饱和度、明度。 HSV 色彩模式应用最广泛的是一个倒圆锥模型,是一种面向用户感官的色彩模型,侧重用色彩表示。 这是根据“人的视觉系统对亮度的敏感度要强于色彩”这个生理特性而提出的。