深圳市凯茉锐

0755-89207203

- Language -
知识百科

音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解

2020-06-13 09:39:07深圳市凯茉锐

YUV各种采样格式的说明 通常我们用RGB表示一种彩色。计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色。 而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机来存放两...



YUV各种采样格式的说明


通常我们用RGB表示一种彩色。计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色。

而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机来存放两种图像数据。

所以为了兼容两种电视机,专家就引入YUV格式代替RGB,其中Y表示亮度, U和V表示色差。 黑白电视机只用Y信号, 而彩色电视机可由YUV转换成RGB再显示颜色。


通常我们所用的YUV格式是 ITU-R 的标准 , 也叫YCbCr.


YUV是由RGB格式的数据转换得来。


Y    Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128 Y    Y = 0.299 x R + 0.587 x G + 0.114 x B + 0 U    Cb = -0.169 x R - 0.331 x G + 0.499 x B + 128 V    Cr = 0.499 x R - 0.418 x G - 0.0813 x B + 128

复制代码

YUV4:4:4

其实就是YUV的数据各占用8位, 每个像素都由YUV组成



同一行的相邻4个像素数据:   Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3

             存储时:    Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3 //即每个像素YUV的数据都会存放起来 为什么叫4:4:4 , 意思就是4个像素里的数据有4个Y, 4个U, 4个V



//////

YUV4:2:2

其实绝大部分相邻的两个像素,数据差异应不大。所以为了节点空间便于存储,丢失每个像素的部分数据。

专家研究表明我们人对亮度比较敏感,而对色彩不怎么敏感。所以每个像素的亮度Y数据是绝对不动的,而色差数据可以进行丢弃。


同一行的相邻4个像素数据:   Y0U0V0    Y1U1V1   Y2U2V2  Y3U3V3

            存储时:   Y0U0      Y1V1    Y2U2   Y3V3 // 每两个相邻的像素, 一个丢弃V数据,一个丢弃U数据 为什么叫4:2:2,  意思就是相邻的4个像素里有4个Y, 2个U, 2个V。 按上面存储的顺序也叫YUYV.


但还原成RGB数据必须需要YUV, 像第一个像素只有Y0U0是没法还原的,这时只能用下一像素的V1数据。

     还原时的YUV:  [Y0U0V1] [Y1U0V1] [Y2U2V3] [Y3U2V3] // 这样还原理论上会对图像的质量有影响的,但我们看不出来的.

/////

YUV4:2:0

专家们进一步研究表示,每一行的相邻两个像素与下一行同位置的两个像素数据差异不大,可以进一步的丢数据。


如两行的像素数据:

          Y00U00V00   Y01U01V01   Y02U02V02   Y03U03V03  ....  

          Y88U88V88   Y89U89V89   Y90U90V90   Y91U91V91  ....


存储时:    Y00U00    Y01      Y02U02    Y03 // 每个像素的Y数据保留, 两个像素数据只保留一个U数据。这一行不保留V数据(YUV:  420)

       Y88V88    Y89      Y90V90    Y91 // ....  两个像素数据只保留一个V数据, 这行不保留U数据(YUV:  402)  还原时只能相同位置的上下两行4个像素结合还原:

       Y00U00V88  Y01U00V88  Y02U02V90  Y03U02V90

       Y88U00V88  Y89U00V88  Y90U02V90  Y91U02V90


YUV各种采样格式的比较


我们以一张大小为1280*720的图像为例:

在RGB 图像中,每个像素点都有红、绿、蓝三个原色,其中每种原色都占用 8 bit,也就是一个字节,那么一个像素点也就占用 24 bit,也就是三个字节。

一张 1280 * 720 大小的图片,就占用 1280 * 720 * 3 / 1024 / 1024 = 2.63 MB 存储空间。


【使用YUV4:4:4格式采样的大小】

YUV4:4:4格式意味着Y、U、V三个分量的采集比例相同,因此在生成的图像里,每个像素的三个分量信息完整,都是8bit,也就是一个字节。

那么它的采样大小为

3 * 1280 * 720 / 1024 / 1024 = 2.63MB

与原始RGB图像相比大小是一样的。


【使用YUV4:2:2格式采样的大小】

YUV4:2:2格式的采样特征是在每相临的两个像素,一个丢弃U分量,一个丢弃V分量,那么它的采样大小为:

(8 + 8) * 1280 * 720 / 8 / 1024 / 1024 = 1.76MB

可以看到 YUV 4:2:2 采样的图像比 RGB 模型图像节省了三分之一的存储空间,在传输时占用的带宽也会随之减少。


【使用YUV4:2:0格式采样的大小】

YUV4:2:0格式的采样特征是所有像素都保留Y分量,同一行的像素只保留U分量,或者是V分量,同一行中相临的两个像素只保留同一个Y分量或者U分量。

那么它的采样大小为:

(8 * 1280 * 720 + 8 * 1280 * 720 / 2 / 2 + 8 * 1280 * 720 / 2 / 2) / 8 / 1024 / 1024 = 1.32MB

可以看到 YUV 4:2:0 采样的图像比 RGB 模型图像节省了一半的存储空间,因此它也是比较主流的采样方式。



新闻推荐

—— Contact number

联系方式0755-89207203