YUV图像标准

YUV是视频处理中的颜色编码方法,在YUV演进的历史中标准不断更新,多个版本之间有着紧密的关系,同时也让人眼花缭乱。这篇博客从YUV历史演变的角度介绍YUV图像标准。

YUV与RGB的关系

目前的显示设备大都采用RGB色彩空间,RGB是从颜色的原理来设计制定的,采用混色法把RGB进行不同权重的混叠就可以得到不同的颜色。

YUV从颜色属性上来说时亮色分离的,亮度信号Y和色度信号U、V是分离开来的。最早我们的电视机是黑白电视机,YUV的设计正是彩色电视机为了兼容黑白电视机所做的设计,黑白电视机只接收Y信号,彩色电视机额外接收UV信号。

亮色分离还有一个好处就是可以降低信号传输的带宽。人眼对亮度敏感而对颜色不敏感,减少颜色数据的数量,人眼感知不明显。所以我们会通过降低UV通道图像的分辨率来达到降低数据传输带宽目的。

YCbCr

传统意义上的YUV是模拟信号(所以我们可以看到YUV存在负数值),我们在视频通信系统中的YUV实际上是YCbCr,Cb和Cr是差值。YCbCr和YUV存在一定的换算关系:

Y = Kry· R + Kgy· G + Kby· B(R,G,B代表RGB色彩空间的红色,绿色,蓝色)

Cb= B – Y (Cb是差值)

Cr= R – Y(Cr是差值)

公式中的系数在 BT.601 BT.709 BT.2020 中的权重是不同的。信号相互转换的内容放到后面详细介绍

YPbPr

YPbPr仅仅用于模拟信号,由于模拟分量接口没有统一的标准,所以YPbPr,仅仅是美国标准

ITU-R 行业标准

ITU-R Recommendation BT.601

1982年CCIR(国际无线电咨询委员会)制定了彩色视频数字化标准,标准对625行电视和525行电视进行兼容,规定了彩色视频转换成数字图像时使用的采样频率,RGB和YCbCr两个彩色空间之间的转换关系等。

ITU-R Recommendation BT.709

1990年 HDTV标准开始制定,1080p/50 1080p/60 两种逐行扫描场帧制定标准,标准保留了隔行扫描,这一标准是妥协的产物。

ITU-R Recommendation BT.2020

2012年,ITU-R颁布了面向新一代高清UHD视频制作和显示系统的BT.2020标准,重新定义了超高清视频和显示的各项参数指标,促进4K和8K视频家用显示设备的规范化。考虑世界各个地区视频显示系统发展的差异,UHD超高清视频显示系统包括4k和8k两个阶段,BT.2020 规定的4k分辨率为3840*2160, 8k 分辨率为 7680*4320.

BT.2020标准不仅提升了分辨率,也提升了色彩的标准,在BT.2020标准下,显示设备能够显示更多的颜色。

BT.2020 还提升了色彩位宽,BT.709信号为8bit,在BT.2020 标准下,信号位宽在4k下提升到了10bit,在8k下提升到了12bit,能够显示更为丰富的颜色。

刷新率上支持120p, 60p, 59.94p, 50p, 30p, 29.97p, 25p, 24p, 23.976p, 可以看到 BT.2020 中取消了个号扫描,所有超高清标准下的影像都是基于逐行扫描的。

色彩空间转换

YUV-RGB 相互转换

RGB转换为YUV信号时需要注意,YUV是模拟信号,Y的电压范围是0~1伏,UV的电压bias为0伏。

YUV转回RGB时,YUV也同样有信号电压的约束

YCbCr-RGB 相互转换

BT.601标准
BT.709标准
BT.709标准-全范围

我们不难发现,不论是BT.709 还是 BT.601, CbCr的值域都是16-240, Y是16-235,而8位数字信号的范围是0-255,所以有一个全精度的转换公式

YUV的采样格式

YUV的采样格式有411,420,422,444

YUV411: 水平Y取四个点,UV 在奇数行取一个点,偶数行取一个点

YUV420:水平Y取四个点,UV在奇数行取两个点,偶数行取零个点

YUV422:水平Y取四个点,UV在奇数行取两个点,偶数行取两个点

YUV444:水平Y取四个点,UV在奇数行取四个点,偶数行取四个点

YUV的存储格式

YUV存储,按照是否分平面存放分为:

  1. 平面P:YUV分别存放与不同的平面
  2. 混合平面SP:Y单独存放一个平面,UV交织存放
  3. 交织S:YUV交替存放

分平面存放数据的格式由分为:

  • I420/YV12,数据总长度为 1.5 WH
  • I422/YV16,数据总长度为 2WH
  • I444/YV24,数据总长度为 3WH

混合交织存放UV的格式又分为

  • NV12/NV21
  • NV16/NV61
  • NV24/NV42

交织存放的格式又分为:

  • YUV444Pack
  • VYUY
  • YUVY
  • UYVY

数据可以选择紧密存放(pack),也可以选择字节对齐存放,比如10bit 可以单独占用两个字节。关于数据格式的详细介绍参照文末的参考链接。

参考链接

YUV格式详解

发表评论