相机成像及RGB和YUV颜色模型
一、相机成像
1.1 光和电磁波谱
电磁波可视为以波长λ传播的正弦波(图1.1),或视为没有质量的粒子流,每个粒子流以波的模式以光速运动。每个无质量的粒子包含着一定的能量,称之为一个光子。粒子的能量与波的频率成正比,频率越高,能量越大。可用公式表示:λ = c / v,E = hv, λ 为波长、v为频率、E为能量,c是光速,h是普兰克常数。电磁波根据频率不同可分为无线电波、红外线、可可见光、紫外线、X射线、Y射线。
图1.1一个正弦波
我们感受到的可见彩色光只是电磁波的一小部分,电池波的可见光范围为0.43um(紫色)~0.79um(红色)。在波谱的一端是无线电波,其波长是可见光波长的几十亿倍,另一端是伽玛射线,其波长比可见光小几百万倍。电磁波的频谱如图1.2所示:
图1.2 电磁波频谱
人感受到物体颜色由物体反光性质决定。绿色物体反色绿光,红色物体反色红光。
1.2人眼成像
人眼睛中的锥状细胞主要负责彩色视觉感知,锥状细胞主要分为3个感知类别,分别对应红色、蓝色和绿色。约65%对红色敏感、33%对绿色敏感、2%对蓝色敏感。由于人眼的这些特性,最终看到的颜色是这三种颜色的混合。
1.3 相机成像
sensor是能将光信号转换为电信号的传感器,sensor能根据光的能量转换为电量(电荷多少),然后再经过AD采集把电信号转换为数字信号。从1.1中我们知道电池波的能量跟频率成正比,从紫光到红的的可见光的能量是不同的,相机的sensor可以将光的能量转换为电量,如绿色物体反色的绿光的能量比红色物体反色红光的能量强,则sensor上被绿光照射堆积的电荷比被红光照射堆积的电荷多。
相机的基本结构如下所示:
光进入到镜头聚光后到滤光片过滤出红、黄、蓝三种光,sensor将光信号转换为电信号(电压),电信号经过AD采样后就生成一幅数字图像。数字图像经过isp后变成yuv图像,yuv经过编码后可以存储,网络传输等。由sensor的电信号经过AD转换生成的第一幅数字图像时RAW图像,这是一幅原始的图像,RAW图像经过差值后变成RGB图像,光进入到镜头聚光后到滤光片过滤出红、黄、蓝三种光,sensor将光信号转换为电信号(电压),电信号经过AD采样后就生成一幅数字图像
二、RGB颜色模型
RGB色彩就是常说的光学三原色,R代表Red(红色),G代表Green(绿色),B代表Blue(蓝色)。自然界中肉眼所能看到的任何色彩都可以由这三种色彩混合叠加而成,因此也称为加色模式。 RGB色彩模型与人眼视觉系统联系紧密,是最常用的色彩模型。电视摄像机及电视显示器根据RGB模型工作。
三、YUV颜色模型
YUV颜色模型利用人类视觉对亮度的敏感度比对色度的敏感度高的特点获得较RGB色彩模型的优势,为彩色电视系统广泛使用。YUV色彩模型将亮度信息从色度信息中分离了出来,并且对同一帧图像的亮度和色度采用了不同的采样率。在YUV色彩模型中,亮度信息Y与色度信息U\V相互独立。Y信号分量为黑白灰度图。U、V信号分量为单色彩色图。黑白电视只利用Y分量,也解决了黑白电视和彩色电视的兼容问题。YUV与RGB的转换公式如下:
1、RGB 的范围是 [0,255],Y 的范围是 [16,235] ,UV 的范围是 [16,239]。 转换公式如下:
2、rgb和yuv的值都为[0, 255]
3.1yuv三种采样格式
yuv采样分为YUV 4:4:4、YUV 4:2:2、YUV 4:2:0
- YUV 4:4:4采样,每一个Y对应一组UV分量。这个格式和rgb888相同,每个像素=8bitY+8bitU+8bitV=24bit。
- YUV 4:2:2采样,每两个Y共用一组UV分量。 这种格式每两个像素有两个Y、一个U和一个V总共32bit,所以平均一个像素是16bit。
- YUV 4:2:0采样,每四个Y共用一组UV分量。这种格式每四个像素有四个Y、一个U和一个V总共48bit,所以平均每个像素是12bit。
3.2yuv存储格式
yuv存储格式分为planar(平面)、半平面格式(Semi-planar)和packed (打包)格式。对于planar(平面)的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。 使用三个数组分开存放YUV三个分量,即Y,U,V分别存放在各自的数组中。半平面格式(Semi-planar),即Y单独占一块地方,但其后U、V又紧挨着排在一起。对于packed(打包)的YUV格式,将每个像素点的Y,U,V分量交叉排列并以像素点为单元连续的存放在同一数组中,通常几个相邻的像素组成一个宏像素(macro-pixel)。
planar(平面)存储模式:yuv420的平面存储模式又叫做YUV420P,根据UV的存先后顺序不同可分为YV12和YU12。
YU12首先是所有Y值
,然后是所有U值
,最后是所有V值
。
YV12首先是所有Y值
,然后是所有V值
,最后是所有U值
半平面格式(Semi-planar):YUV420的半平面存格式又叫YUV420SP,
首先是所有Y值
,然后是UV
或者VU
交替存储。根据UV交替顺序的不同可分文NV12和NV21。
NV21,存储顺序是先存Y,再VU交替存储,
NV12
存储顺序是先存Y值
,再UV
交替存储
packed (打包)格式:对于yuv422,格式根据y、u、v排列的顺序不同分为YUYV、YVYU、UYVY、VYUY,在内存中,Y、U、V都是挨着排序的。它们的名称就表示了Y、U、V的顺序。像YUYV,就是Y、U、Y、V、Y、U、Y、V。