【音视频基础】RGB 与 YUV

数字图像编码方法

指的是图像中每一个像素点在计算机中用什么编码方法表示。

RGB

基本三原色:红(Red)、绿(Green)、蓝(Blue)。根据可见光的波长识别颜色。

RGB16:RGB565、RGB555

RGB565

每个像素16位,2字节。RGB分量分别使用5位、6位、5位。

![[../_resources/RGB_与_YUV.resources/unknown_filename.3.png]]

RGB555

每个像素16位,2字节。RGB分量分别使用5位、5位、5位(最高位不用)。

![[../_resources/RGB_与_YUV.resources/unknown_filename.4.png]]

RGB24

每个像素24位,3字节。RGB分量分别使用8位。

注:内存中RGB各分量的排列顺序为:BGR BGR BGR …

![[../_resources/RGB_与_YUV.resources/unknown_filename.5.png]]

RGB32

每个像素32位,4字节。RGB分量分别使用8位,最后保留8个字节。

注:内存中RGB各分量的排列顺序为:BGRA BGRA BGRA …

ARGB32

本质就是带alpha通道的RGB24,与RGB32的区别在与,保留的8个bit用来表示透明度,也就是alpha的值。
注:内存中RGB各分量的排列顺序为:BGRA BGRA BGRA …

在这里插入图片描述


YUV

“Y”表示明亮度(Luminance),"U"和"V"则是色度、浓度(Chrominance、Chroma)。

优点:

  1. R、G、B三个分量的相关性很强,存在冗余,使用YUV后可进行数据压缩
  2. 人眼对亮度信号较敏感,对色度信号较不敏感,可通过较少UV分量进行数据压缩
  3. 彩色信号能很好兼容黑白电视,黑白视频只有Y分量
YUV、YCbCr

YUV:针对模拟信号。
YCbCr:针对数字信号,是YUV压缩和偏移的版本。
一般俗称的YUV大多是指YCbCr。如下是某YCbCr图像的三个分量组成,其中其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。

在这里插入图片描述

YUV采样
  • YUV 4:4:4采样,每个Y对应组UV分量。24 Bits per Pixel。

  • YUV 4:2:2采样,每个Y共用组UV分量。16 Bits per Pixel。

  • YUV 4:2:0采样,每个Y共用组UV分量。12 Bits per Pixel。

  • 总大小:width * height * 3 / 2

![[../_resources/RGB_与_YUV.resources/unknown_filename.1.png]]

上图中黑点表示采样该像素点的Y分量,以空心圆圈表示采用该像素点的UV分量。

YUV 存储格式

YUV的存储格式有两大类:

  • 紧缩格式(packed formats):将Y、U、V值存储成Macro Pixels数组,和RGB的存放方式类似。YUV4:4:4格式而言,用紧缩格式最合适。大概格式为:YUVYUVYUVYUV
  • 平面格式(planar formats):将Y、U、V的三个分量分别存放在不同的矩阵中。大概格式为:YYYYUV。
YUV常见表示方法

根据采样方式和存储格式的不同,就有了多种 YUV 格式。这些格式主要是基于 YUV 4:2:2 和 YUV 4:2:0 采样。

常见的几乎都是基于YUV4:2:0:

  • YU12。先存储 Y 分量,再存储 U、V 分量。例如:YYYYYYYYUUVV。
  • YV12 ,又称作 I420 格式。它的存储格式就是把 V 和 U 反过来了。例如:YYYYYYYYVVUU。
  • NV12。先存储了Y分量,但接下来并不是再存储所有的U或者V分量,而是把UV分量交替连续存储。例如:YYYYYYYYUVUV。NV12在硬件编解码中用的比较多。

如下图所示,为YUV420的存储格式,每4个Y对应一组UV:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41214278/article/details/128161168