> 文章列表 > RGB与YUV

RGB与YUV

RGB与YUV

什么是YUV

YUV也叫YCbCr模型,是相对于RGB模型的一种广泛使用的颜色表示模型,YUV格式是1938年由一个法国通信工程师M. Georges Valensi发明的。

YUV中的Y表示亮度luminance,UV表示色度chrominance;

 我们知道人眼是个复杂的器官,有许多部分组成,但我们最感兴趣的是视锥细胞和视杆细胞。眼睛有1.2亿个视杆细胞和6百万个视锥细胞。让我们把颜色和亮度放在眼睛的功能部位上。视杆细胞主要负责亮度,而视锥细胞负责颜色,有三种类型的视锥,每个都有不同的颜料,叫做:S-视锥(蓝色),M-视锥(绿色),L-视锥(红色)。既然我们的视杆细胞(亮度)比视锥细胞多很多,一个合理的推断是相比颜色,我们有更好的能力去区分黑暗和光亮。

一旦我们知道我们对亮度(图像中的亮度)更敏感,我们就可以利用它,这样另一种模型被发明出来,能将亮度(光亮)和色度(颜色)分离开,它被称为 YCbCr*,也就是我们熟知的的YUV。

为什么用YUV

YUV主要是解决了两个问题,导致其被广泛运用。

1.YUV 可以完美兼容黑白电视机,黑白电视收到YUV信号时只需要丢掉UV显示Y即可。全球两大主要的电视广播制式(PAL/NTSC)都使用YUV作为信号传输格式。

2.YUV采样可以大大的节约存储空间和传输带宽。并且不会造成太多的信息丢失。如使用YUV420采样相较于RGB可以节约1/2的存储空间。

采样分类

  • 4:4:4表示完全取样。

  • 4:2:2表示2:1的水平取样,垂直完全采样。

  • 4:2:0表示2:1的水平取样,垂直2:1采样。

  • 4:1:1表示4:1的水平取样,垂直完全采样。

未采样前:

第一行四个像素为:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]  

第二行四个像素为:[Y4 U4 V4] [Y5 U5 V5] [Y6 U6 V6] [Y7 U7 V7]  

4:2:0 采样

它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。

相邻的扫描行存储不同的色度分量, 也就是说,如果一行是4:2:0的话,下一行就是4:0:2

第一行采样像素为:[Y0 U0     ] [Y1           ] [Y2 U2      ] [Y3           ]  

第二行采样像素为:[Y4      V4] [Y5           ] [Y6       V6] [Y7           ]  

映射的像素:             [Y0 U0 V4] [Y1 U0 V4] [Y2 U2 V6] [Y3 U2 V6]                              

                                [Y4 U0 V4] [Y5 U0 V4] [Y6 U2 V6] [Y7 U2 V6]

4:1:1 采样

在水平方向上对色度进行4:1抽样

第一行采样像素为:[Y0 U0     ] [Y1           ] [Y2       V2 [Y3           ]  

映射的像素:             [Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]

存储格式

YUV 在存储上通常分为平面格式(Planar),半平面格式(Semi-Planar)以及打包格式(Packed)。

平面格式

平面格式有时也称为三面格式(Triplanar),即 Y, U, V 三个分量各自使用单独的数组保存,这种三平面分离的格式比较方便视频编码。

半平面格式

半平面格式有两个平面而不是三个,一个平面用于亮度,一个平面用于两个色度分量。它们有时也被称为双平面格式。

打包格式

在打包格式中,通常只有一个平面,所有亮度和色度数据交错。这类似于 RGB 像素格式,只是使用不同的颜色空间。

打包格式在网络摄像头中非常流行。在硬件中,使用单独的平面效率低下:每个像素需要多次内存访问。打包格式更容易,因此使用起来更便宜。

另一方面,数据包格式通常无法处理垂直子采样。否则,扫描线将具有不同的大小。因此,通常,打包格式是水平子采样的,尤其是 2 倍(即 YUV 4:2:2)。

存储格式 采样形式 格式名称 格式说明 第一平面 第二平面 第三平面
Planar YUV 4:2:0 I420/YU2

12bits per Pixel

3planars

YYYY... U... V...
Planar YUV 4:2:0 J420 于I420存储相同,但具有完整范围(0-255,full range)的亮度(Y)分量,而不是有限范围(16-240,limited range,在 iOS 上也叫做 video range) YYYY... U... V...
Planar YUV 4:2:0 YV12 改变UV存储顺序 YYYY... V... U...
Planar YUV 4:2:0 IMC1

16 Bits per Pixel

3 Planars

YYYY... V... U...
Planar YUV 4:2:0 IMC3

16 Bits per Pixel

3 Planars

YYYY... U... V...
Planar YUV 4:2:2 I422

16 Bits per Pixel

3 Planars

YYYY... UU... VV...
Planar YUV 4:2:2 J422 与I422相同,但具有完整范围(0-255,full range)的亮度(Y)分量,而不是有限范围(16-240,limited range,在 iOS 上也叫做 video range) YYYY... UU... VV...
Planar YUV 4:4:4 I444

24 Bits per Pixel

3 Planars

YYYY... UUUU... VVVV...
Semi-Planar YUV 4:2:0 NV12

12 Bits per Pixel

2 Planars

YYYY... UV...
Semi-Planar YUV 4:2:0 NV21

12 Bits per Pixel

2 Planars

YYYY... VU...
Packed YUV 4:2:2 YUYV (V422 / YUY2 / YUNV)

16 Bits per Pixel

1 Planars

YUYV YUYV YUYV ...
Packed YUV 4:2:2 YVYU

16 Bits per Pixel

1 Planars

YVYU YVYU YVYU ...
Packed YUV 4:2:2 UYVY(Y422 / UYNV)

16 Bits per Pixel

1 Planars

UYVY UVUY UVUY ...
Packed YUV 4:4:4 AYUV

24 Bits per Pixel

1 Planars

A 指 alpha 通道

VUYA VYUA VYUA ...

1.为什么系数有变化?

由RGB计算YUV的系数有非常多种版本:BT601、BT709、BT2020、甚至PAL、NTSC等,都规定了不同版本的加权系数,上表只标明了BT601和BT709的。

2.YUV和YCbCr什么关系?
以前YUV特指模拟信号,YCbCr特指数字信号;但现在说法已经没有那么严格,基本可以等同了

3.为什么Y的取值范围是16~235?
为了规避吉布斯现象。YUV的取值范围有以下两种,适用于不同的传输方式:

Studio swing/TV levels:用于电视广播传输,Y的范围是16~235,UV范围是16~240。传输时由于频域可能丢失或截断,接收端的空域像素值会失真,出现吉布斯现象。失真与原始空域信号的最大差值为8.9%,因此传输端将有效信号值限制在一定范围内,避免接受端产生小于0或大于255的无效值。 注:(255-235)/(235-16)=9.1%,16/(235-16)=7.3%

转换

RGB 与 YUV 转换

4:2:0与4:2:2转换

最简单的方式:
YUV4:2:2 —> YUV4:2:0 Y不变,将U和V信号值在行(垂直方向)在进行一次隔行抽样。
YUV4:2:0 —> YUV4:2:2 Y不变,将U和V信号值的每一行分别拷贝一份形成连续两行数据。

(5条消息) 详解 YUV 格式(I420/YUV420/NV12/NV12/YUV422)_yuv格式_2012newborn的博客-CSDN博客

图文详解YUV420 数据格式 | Technology Blog (markrepo.github.io)

(2条消息) RGB与YUV的来源_有了rgb ,为何引入yuv__沥川往事的博客-CSDN博客

图文详解YUV420 数据格式 | Technology Blog (markrepo.github.io)

(4条消息) YUV RGB 相互转换矩阵_yuv与rgb的转换矩阵_xhh-cy的博客-CSDN博客