YUV和RGB

本文主要给小伙伴们分享下音视频中编码前的图像格式 , 即YUV和RGB 。
YUV , RGB , 包括YcbCr是色彩空间的模型 , 而平常所说的BMP、PNG、JPEG是文件的存储形式 。而YUV是音视频(编解码)最常用的格式 。
**1.YUV的数据格式是如何呢?**
YUV有两种分类方式 , 即“空间-间”和“空间-内” 。“空间-间”的划分方式主要体现在Y、U、V的比例不同;“空间-内”的划分方式主要体现在Y、U、V的比例一定 , 存储格式不同 。
**2.YUV“空间-间”的数据划分**
YUV按照“空间-间”的划分方式 , 分为、、 , 如下所示 , 假设图像为1920*1080:一个[]表示一个像素点 , 一个像素点里面包含y、u、v三个分量 , 在中三者的比例为4:4:4 , 在中 , 每个像素点都包含Y独立分量 , U、V分量间隔包含 , 但是共享 , 每两个共享 , 乘0.5 。在中 , 把相邻的四个像素点看做一个整体 , 相邻的四个像素点共享一个U、V分量 , 四个像素点共享 , 共享0.25 。
**3.YUV“空间-内”的数据划分**
YUV按照“空间-内”的划分方式 , 主要分为、、semi-三种:
◆ :打包格式 , 即先存储一个yuv , 再存储下一个yuv;
【YUV和RGB】◆ :平面格式 , 即先存储y平面 , 再存储u平面 , 再存储v平面;
◆ semi-:先存储y平面 , 再存储uv平面;
◆ 各种存储格式如下:
针对上图中的NV12、NV21、NV16、NV61说明:
◆NV:NV系列都属于semi-plane系列 , “12”、“16”代表先U后V , “21”、“61”代表先V后U
◆ 12、16:代表一个像素占的位数,比如422 , 一个Y占8bit,U、V共享 , 分别占4bit 。420就是一个Y加1/4U和1/4V 。

YUV和RGB

文章插图
**4.YUV和RGB**
RGB:即red , green , blue三色存储空间 , 因音视频主要用的是YUV的色彩空间 , 感兴趣的小伙伴可以拓展下RGB相关知识 , 本文不再详述 。介绍下RGB和YUV的转换公式:
◆ RGB 转 YUV:
Y = 0.299R + 0.587G + 0.114B
U= -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
◆ YUV 转 RGB:
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U