图像基础——YUV

YUV是一种彩色编码系统,主要用在视频、图形处理流水线中(pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输的方便,减少带宽占用和信息出错。

人眼的视觉特点是对亮度更敏感,对位置、色彩相对来说不敏感。在视频编码系统中为了降低带宽,可以保存更多的亮度信息(luma),保存较少的色差信息(chroma)。

Y’UV、YUV、YCbCr、YPbPr 几个概念其实是一回事儿。由于历史关系,Y’UV、YUV 主要是用在彩色电视中,用于模拟信号表示。YCbCr 是用在数字视频、图像的压缩和传输,如 MPEG、JPEG。今天大家所讲的 YUV 其实就是指 YCbCr。Y 表示亮度(luma)CbCr(UV) 表示色度(chroma)。

 

 

luminance 亮度,luma 是在视频编码系统中指亮度值;chrominance 色度,chroma 是在视频编码系统中指色度值。

Y’UV 设计的初衷是为了使彩色电视能够兼容黑白电视。对于黑白电视信号,没有色度信息也就是(UV),那么在彩色电视显示的时候指显示亮度信息。

Y’UV 不是 Absolute Color Space,只是一种 RGB 的信息编码,实际的显示还是通过 RGB 来显示。Y’,U,V 叫做不同的 component 。

 

 

 

下图是一个对照,分别只输出Y 只输出U 只输出V的图片的样子

 

 

 

 

 

yuv主流的采样方式有yuv4:4:4、yuv4:2:2、yuv4:2:0。下图中以黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量,可以看到这些采样方式是影响uv的采样的,对y都是全部采样。

 

 

  1. YUV 4:4:4采样,每一个Y对应一组UV分量,图像和rgb占用的字小大小一致,均为pixelsize*3。
  2. YUV 4:2:2采样,每两个Y共用一组UV分量,占用的大小为pixelsize+pixelsize/2+pixelsize/2。
  3. YUV 4:2:0采样,每四个Y共用一组UV分量,占用大小为pixelsize+pixelsize/4+pixelsize/4。

可以看到,yuv格式图像信息可以比rgb格式占用的字节码更少,所以可以用yuv来传输色彩数据,接收到yuv数据后再转换为rgb来显示图像,从而减少了传输图像占用的带宽。


2.常见的YUV格式

yuv衍生出了很多格式,主要是由于其存储方式决定的。

yuv按照存储方式可以分成两个大类:

  • packed:打包格式是将yuv分量混合存在同一个数组中
  • planar:平面格式是将yuv三个分量存成三个数组或者两个数组分别存储

packed存储的yuv的存储先后不同,细分为了yuv、yvu、yvyu、uyvy等等。

planar存储的yuv依据数组数量分成了yuv分别三个数组表示的完全平面的,以及y一个数组而uv一个数组的半平面(Semi planar)的两类,而半平面的又可以细分为uv和vu两个存储顺序。

常见的yuv格式列表如下:

I420: YYYYYYYY UU VV =>YUV420P
YV12: YYYYYYYY VV UU =>YUV420P
NV12: YYYYYYYY UVUV =>YUV420SP
NV21: YYYYYYYY VUVU =>YUV420SP //安卓Camera默认格式



 

posted @ 2020-08-03 18:52  祁峰_1024  阅读(625)  评论(0编辑  收藏  举报