YUV 浅析

  1.  YUV 

YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值,英语表达为Luminance、Luma,luminance 表示为 Y, luma 表示为 Y'。而“U”和“V” 表示的则是色度(Chrominance或Chroma)的两个分量,作用是描述影像色彩及饱和度,用于指定像素的颜色。U = 0.564*(B−Y),也表示成Cb , V = 0.713*(R−Y),也表示成Cr。于是YUV也有表示成YCbCr。 

与我们熟知的RGB类似,YUV也是一种颜色编码方法,主要用于电视系统以及模拟视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样 可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。黑白的图像中只有灰度值,早年兼容黑白电视的彩色信号中,直接忽略UV值即可。并且,YUV不像RGB那样要求三个独立的视频信号同时传 输,所以用YUV方式传送占用极少的频宽。 

YUV与RGB的演算关系为: 

Y = 0.299 R + 0.587 G + 0.114 B Y = 0.299 R + 0.587 G + 0.114 B 

U = - 0.1687 R - 0.3313 G + 0.5 B + 128Cb = - 0.1687 R - 0.3313 G + 0.5 B 

V = 0.5 R - 0.4187 G - 0.0813 B + 128Cr = 0.5 R - 0.4187 G - 0.0813 B 

 

R = Y + 1.402*(V-128) R = Y + 1.402 Cr 

G = Y - 0.344*(U-128) - 0.714(V-128)G = Y - 0.344 Cb - 0.714 Cr 

B = Y + 1.772*(U-128)B = Y + 1.772 Cb 

 

YUV 码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:2:2,YUV4:2:0。用三个图来直观地表示采集的方式吧,以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。YUV 4:4:4采样,每一个Y对应一组UV分量。YUV 4:2:2采样,每两个Y共用一组UV分量。YUV 4:2:0采样,每四个Y共用一组UV分量。 

YUV 浅析

 

 

 

  1.  YUV Format 

YUV 格式通常有两大类:打包(packed)格式和平面(planar)格式。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。 
对于packed的YUV格式,每个像素点的Y,U,V是连续交替存储的。 

  1. 几种常见的YUV格式 

YUV422 Planar 

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

YUV 浅析

YUV422 Semi-Planar 

这个格式的数据量跟YUV422 Planar的一样,但是U、V是交叉存放的,如下图 

 

YUV 浅析

YUV420 Planar 

这个格式跟YUV422 Planar 类似,但对于Cb和Cr的采样在水平和垂直方向都减少为2:1,YUV420p它是先把U存放完后,再存放V,也就是说UV它们是连续的。如下图 

YUV 浅析

I420: YYYYYYYY UU VV    =>YUV420P 

YV12: YYYYYYYY VV UU    =>YUV420P 

假设一个分辨率为8X4的YUV图像,它们的格式如下图: 

YUV 浅析

YUV420 Semi-Planar 

YUV420sp与YUV420p的数据格式的UV排列在原理上是 完全不同的。 YUV420sp格式的数据量跟YUV420p的一样,但是U、V是交叉存放的,如下图 

YUV 浅析

NV12: YYYYYYYY UVUV     =>YUV420SP 

NV21: YYYYYYYY VUVU     =>YUV420SP 

假设一个分辨率为8X4的YUV图像,它们的格式如下图: 

YUV 浅析

YUV422 Interleaved 

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

YUV 浅析