YCbCr是DVD、摄像机、数字电视等消费类视频产品中,经常使用的色彩编码方案。YCbCr 有时会称为 YCC.。Y'CbCr 在模拟份量视频(analog component video)中也常被称为 YPbPr。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。android
一、YUV与YCbCr的区别 数组
正如几何上用坐标空间来描述坐标集合, 色彩空间用数学方式来描述颜色集合。常见的3 个基本色彩模型是RGB , CMYK和YUV。ide
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
关于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)