RGB彩色模式是一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。
RGB显色模式大多应用在电子屏幕上,每一个像素点都是由R\G\B三种颜色叠加而成。存储表示时对每一种颜色进行256级量化,每一个颜色可以用一个8位的二进制数进行存储和表示,常用RGB颜色模式有RGB24位,以及RGB32。RGB24是指R\G\B各占8位;RGB32是指R\G\B\A四个分量各8位,A是指透明度。对一个w*h的图像,用RGB24格式存储时,需要w*h*8*3 bit的空间。存一幅RGB图片时是从左至右再从上至下一个像素点一个像素点的存储,一个像素分配24bit空间,从左至右R\G\B各占8bit通道。
(RGB还有RGB555和RGB565两者存储格式,这两者称为高彩色,RGB24和RGB32称位真彩色)
YUV色彩模式主要用于优化彩色视频信号的传输,对于黑白电视,用RGB颜色传输会大大浪费带宽,黑白电视只需要用一个8位二进制数进行量化。为了兼容黑白与彩色,因此发明了YUV。Y是指明度、U\V则是表现色度(色调和饱和度)用是描述影像色彩及饱和度,用于指定像素的颜色。YUV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV。如果只有Y分量则是黑白电视。
YUV每个分量也是采用8位量化的,但是大多是YUV格式平均使用的每像素位数都少于24位元,主要是为了节省空间对YUV进行了抽样,在整幅图像中对YUV进行了抽样,因此并不是每一个像素点都完全由YUV三个分量组成。主要有以下几种抽样方式
YUV4:4:4 完全抽样,每一个Y对应一组UV分量,对于w*h的一幅图像,存储需要w*h*3*8bit= 3*w*h 字节
YUV4:2:2 表示2:1水平抽样,垂直2:1抽样,每两个Y共用一组UV分量,对于w*h的一幅图像,存储需要w*h*1*8+w*h*1*8/2bit +w*h*1*8/2bit=2*w*h 字节
YUV4:2:0 表示2:1的水平抽样,垂直2:1抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h*8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节
YUV4:1:1 表示4:1水平抽样,垂直完全抽样,每四个Y共用一组UV分量对于w*h的一幅图像,存储需要w*h**8bit+w*h**8bit/4+w*h**8bit/4=3/2*w*h 字节
(YUV420并不是说有一个分量不存在,而是对uv分量交错取样)
紧缩格式(packed format)中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式很合适的,因此就有了UYVY、YUYV等。
YUYV为YUV422采样的存储格式中的一种,相邻的两个Y共用其相邻的两个Cb、Cr,分析,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00,其他的像素点的YUV取值依次类推。
UYVY格式也是YUV422采样的存储格式中的一种,只不过与YUYV不同的是UV的排列顺序不一样而已,还原其每个像素点的YUV值的方法与上面一样。
平面格式(planar formats)是指每Y分量,U分量和V分量都是以独立的平面组织的,也就是说所有的U分量必须在Y分量后面,而V分量在所有的U分量后面,此一格式适用于采样(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。
YUV422P也属于YUV422的一种,它是一种Plane模式,即平面模式,并不是将YUV数据交错存储,而是先存放所有的Y分量,然后存储所有的U(Cb)分量,最后存储所有的V(Cr)分量,如上图所示。其每一个像素点的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即两个Y共用一个UV。比如,对于像素点Y'00、Y'01 而言,其Cb、Cr的值均为 Cb00、Cr00。
I420和YV12属于YUV420格式,也是一种Plane模式,将Y、U、V分量分别打包,依次存储。其每一个像素点的YUV数据提取遵循YUV420格式的提取方式,即4个Y分量共用一组UV。注意,上图中,Y00、Y01、Y10、Y11共用U00、V00,其他依次类推。左图为I420,右图为YV12
NV12和NV21属于YUV420格式,是一种two-plane模式,即Y和UV分为两个Plane,但是UV(CbCr)为交错存储,而不是分为三个plane。其提取方式与上一种类似,即Y00、Y01、Y10、Y11共用U00、V00,左图为NV12,右图为NV21
常用的是YUV420中的I420\NV21\NV12
rgb与YUV之间可以相互转换,基本上所有图像算法都是基于yuv的;而所有显示面板都是接收rgb数据”,侧面的理解是在进行颜色数据运算时使用的是YUV颜色编码,而对图像经过后期处理进行显示时则用的是RGB编码。
这一部分请参考(9条消息) 视音频数据处理入门:RGB、YUV像素数据处理_雷霄骅(leixiaohua1020)的专栏-CSDN博客_rgb yuv