YUV422 YUV420 Planar \ Semi-Planar \ Interleaved YCbCr与YUV

YCbCr是DVD、摄像机、数字电视等消费类视频产品中,经常使用的色彩编码方案。YCbCr 有时会称为 YCC.。Y'CbCr 在模拟份量视频(analog component video)中也常被称为 YPbPr。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。android

一、YUV与YCbCr的区别 数组

正如几何上用坐标空间来描述坐标集合, 色彩空间用数学方式来描述颜色集合。常见的3 个基本色彩模型是RGB , CMYKYUVide

  YCbCr 则是在世界数字组织视频标准研制过程当中做为ITU - R BT1601 建议的一部分, 实际上是YUV通过缩放和偏移的翻版。其中Y与YUV 中的Y含义一致, Cb , Cr 一样都指色彩, 只是在表示方法上不一样而已。在YUV 家族中, YCbCr 是在 计算机系统中应用最多的成员, 其应用领域很普遍, JPEGMPEG均采用此格式。通常人们所讲的YUV大可能是指YCbCr。YCbCr 有许多取样格式, 如4∶4∶4 , 4∶2∶2 , 4∶1∶1 和4∶2∶0。
   

YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,一般采用三管彩色摄影机或彩色CCD摄影机进行取像,而后把取得的彩色图像信号经分色、分别放大校订后获得RGB,再通过矩阵变换电路获得亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。编码

 YCbCr其中Y是指亮度份量,Cb指蓝色色度份量,而Cr指红色色度份量。人的肉眼对视频的Y份量更敏感,所以在经过对色度份量进行子采样来减 少色度份量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。component

   4:2:0表示每4个像素有4个亮度份量,2个色度份量 (YYYYCbCr),仅采样奇数扫描线,是便携式视频设备(MPEG-4)以及电视会议(H.263)最经常使用格式;4:2:2表示每4个像素有4个亮度 份量,4个色度份量(YYYYCbCrCbCr),是DVD、数字电视、HDTV 以及其它消费类视频设备的最经常使用格式;4:4:4表示全像素 点阵(YYYYCbCrCbCrCbCrCbCr),用于高质量视频应用、演播室以及专业视频产品。

关于yuv 格式orm

YUV 格式一般有两大类:打包(packed)格式和平面(planar)格式。前者将 YUV 份量存放在同一个数组中,
一般是几个相邻的像素组成一个宏像素(macro-pixel);然后者使用三个数组分开存放 YUV 三个份量,就像
是一个三维平面同样。视频

 

几种常见的yuv格式htm

1.YUV422 Planarget

这里,Y\U\V数据是分开存放的,每两个水平Y采样点,有一个Cb和一个Cr采样点,以下图数学

ffmpeg 中的定义  PIX_FMT_YUV422P,   ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)  

android  OMX  中的定义  OMX_COLOR_FormatYUV422Planar     //*  YUV422Planar           : Three arrays Y,U,V.

 

2. YUV420 Planar

这个格式跟YUV422 Planar 相似,但对于Cb和Cr的采样在水平和垂直方向都减小为2:1,以下图

 

ffmpeg 中定义  PIX_FMT_YUV420P    //< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)

android OMX 中定义  OMX_COLOR_FormatYUV420Planar     //  *  YUV420Planar           : Three arrays Y,U,V   

 

3.YUV422 Semi-Planar                                         

Semi 是’半‘的意思 个人理解这个半平面模式,这个格式的数据量跟YUV422 Planar的同样,可是U、V是交叉存放的,以下图。

 

ffmpeg 中 未找到定义

android  OMX  中 OMX_COLOR_FormatYUV422SemiPlanar    ////YUV422SemiPlanar       : Two arrays, one is all Y, the other is U and V

 

4.YUV420 Semi-Planar

 这个格式的数据量跟YUV420 Planar的同样,可是U、V是交叉存放的,以下图。

 ffmpeg 中定义  

PIX_FMT_NV12,      ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)

android   OMX  中定义 OMX_COLOR_FormatYUV420SemiPlanar    //YUV420SemiPlanar       : Two arrays, one is all Y, the other is U and V 

 

5.YUV422 Interleaved        Interleaved -- 交错   

这个格式的数据量跟YUV422 Planar的同样,可是Y、U、V是交叉存放的,以下图。 这个是打包(packed)模式的

ffmpeg  中  PIX_FMT_UYVY422   ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1

android  OMX 中  OMX_COLOR_FormatCbYCrY    //CbYCrY                 : Organized as 16bit UYVY (i.e. CbYCrY)