YUV 格式

YUV 格式

Y为0.5时,UV的色彩对应RGB色域
原图与Y、U、V的效果

上图从上到下分别是:原图,Y向量图片,U向量图片,V向量图片。

YUV 格式有两大类:Planar(平面格式) 和 Packed(打包格式)。

  • Planar:先连续存储所有像素点的 Y,紧接着存储所有像素点的 U,随后是所有像素点的 V。相当于将 YUV 拆分成三个平面 (plane) 存储。
  • Packed:每个像素点的 Y, U, V 是连续交替存储的。

YUV 分为三个分量,Y 表示亮度(Luminance),即灰度值;UV 表示色度(Chrominance),描述色彩和饱和度。

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

YUV 的存储格式与其采样方式密切相关。

主流的采样方式有 4 种:YUV(4:4:4), YUV(4:2:2), YUV(4:2:0), YUV(4:1:1)

  • YUV 4:4:4 采样:每一个 Y 对应一组 UV 分量(4 个 Y 采样就对应 4 个 Cb 和 4 个 Cr 采样)。平均一个像素占用 8+8+8 = 24 位。
  • YUV 4:2:2 采样:每两个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 和 2 个 Cr 采样)。平均一个像素占用 8+4+4 = 16 位。
  • YUV 4:2:0 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 2 个 Cb 或 2 个 Cr 采样)。平均一个像素占用 8+4+0 = 12 位。
  • YUV 4:1:1 采样:每四个 Y 共用一组 UV 分量(4 个 Y 采样就对应 1 个 Cb 和 1 个 Cr 采样)。平均一个像素占用 8+2+2 = 12 位。

YUV411 这个格式很少使用,这里就不介绍了。

YUV444 格式

YUV444P

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
U1 U2 U3 U4 U5 U6 U7 U8
U9 U10 U11 U12 U13 U14 U15 U16
U17 U18 U19 U20 U21 U22 U23 U24
U25 U26 U27 U28 U29 U30 U31 U32
V1 V2 V3 V4 V5 V6 V7 V8
V9 V10 V11 V12 V13 V14 V15 V16
V17 V18 V19 V20 V21 V22 V23 V24
V25 V26 V27 V28 V29 V30 V31 V32

YUV422 格式 ( YCbYCr / YUYV ,CbYCrY / UYVY / I422 ,422P , 422SP )

打包格式 (Packed) :YCbYCr / YUYV ,CbYCrY / UYVY / I422

平面格式 (Planar) :422P , 422SP

YCbYCr / YUYV

Y U Y V Y U Y V
Y1 U1 Y2 V1 Y3 U2 Y4 V2
Y5 U3 Y6 V3 Y7 U4 Y8 V4
Y9 U5 Y10 V5 Y11 U6 Y12 V6
Y13 U7 Y14 V7 Y15 U8 Y16 V8
Y17 U9 Y18 V9 Y19 U10 Y20 V10
Y21 U11 Y22 V11 Y23 U12 Y24 V12
Y25 U13 Y26 V13 Y27 U14 Y28 V14
Y29 U15 Y30 V15 Y31 U16 Y32 V16

CbYCrY / UYVY / I422

U Y V Y U Y V Y
U1 Y1 V1 Y2 U2 Y3 V2 Y4
U3 Y5 V3 Y6 U4 Y7 V4 Y8
U5 Y9 V5 Y10 U6 Y11 V6 Y12
U7 Y13 V7 Y14 U8 Y15 V8 Y16
U9 Y17 V9 Y18 U10 Y19 V10 Y20
U11 Y21 V11 Y22 U12 Y23 V12 Y24
U13 Y25 V13 Y26 U14 Y27 V14 Y28
U15 Y29 V15 Y30 U16 Y31 V16 Y32

YUV422P

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
U1 U2 U3 U4 U5 U6 U7 U8
U9 U10 U11 U12 U13 U14 U15 U16
V1 V2 V3 V4 V5 V6 V7 V8
V9 V10 V11 V12 V13 V14 V15 V16

YUV422SP

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
U1 V1 U2 V2 U3 V3 U4 V4
U5 V5 U6 V6 U7 V7 U8 V8
U9 V9 U10 V10 U11 V11 U12 V12
U13 V13 U14 V14 U15 V15 U16 V16

YUV420 格式( I420 / YU12 , YV12 , NV12 , NV21 )

分为:YUV420P ( I420 / YU12 , YV12 ),YUV420SP ( NV12 , NV21 )

YU12 是 I420 的别称,YV12 与之是 UV 顺序不同。

NV12 和 NV21 则是 UV 交织顺序不同。

I420 / YU12 (YUV420P)

又称 YU12 ( Y 后面紧跟着 V,位深为 12 )

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
U1 U2 U3 U4 U5 U6 U7 U8
V1 V2 V3 V4 V5 V6 V7 V8

YV12 (YUV420P)

与 I420(YUV420P) 的 UV 存储顺序相反

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
V1 V2 V3 V4 V5 V6 V7 V8
U1 U2 U3 U4 U5 U6 U7 U8

NV12 (YUV420SP)

UV 分量交织存储

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
U1 V1 U2 V2 U3 V3 U4 V4
U4 V4 U5 V5 U7 V7 U8 V8

NV21 (YUV420SP)

VU 分量交织存储。与 YUV420P(NV12) 的 UV 交织存储顺序相反

Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8
Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16
Y17 Y18 Y19 Y20 Y21 Y22 Y23 Y24
Y25 Y26 Y27 Y28 Y29 Y30 Y31 Y32
v1 U1 V2 U2 V3 U3 V4 U4
v4 U4 V5 U5 V7 U7 V8 U8

YUV 转 RGB

不管 YUV 的格式如何,最终得到的就是 Y、U、V 三个向量的值。

那么 Y、U、V 的数据如何转为 RGB 图片呢?毕竟 RGB 图片上有很多强大的算法。

YUV 与 RGB 的转换公式:

U 和 V 组件可以被表示成原始的 R、G,和 B:

从 RGB 到 YUV

如一般顺序,转移组件的范围可得到:

YUV范围

在逆转关系上,从 YUV 到 RGB,可得:

从 YUV 到 RGB

取而代之,以矩阵表示法(matrix representation),可得到公式:

RGB 转 YUV 的转换矩阵
YUV 转 RGB 的转换矩阵

你可能感兴趣的:(YUV 格式)