YUV概述以及码率计算方法

文章目录

      • 概述
      • YUV的存储方式
      • YUV常见的三种格式
        • 4:4:4
        • 4:2:2
        • 4:2:0
      • YUV表示的图像码率的计算方法
        • 4:4:4表示方法
        • 4:2:2表示方法
        • 4:2:0表示方法

概述

YUV,称YCrCb,是颜色空间的一种表示方法。Y表示明亮度(Luminance或Luma),也就是灰阶值(0~255);U和V表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。

由于人眼对色度的敏感度不及对亮度的敏感度,图像的色度分量不需要有和亮度分量相同的清晰度,所以许多视频系统在色差通道上进行较低(相对亮度通道)清晰度(例如,抽样频率)的抽样。这样在不明显降低画面质量的同时降低了视频信号的总带宽。因抽样而丢失的色度值用内插值,或者前一色度值来替代。

YUV的存储方式

视频系统的抽样率通常用一个三分比值表示。第一个值是亮度(Y)分量样本的数量,后两个值是两个色彩(“色度”)分量样本的数量:U/Cb分量在前,V/Cr分量在后。在比较图像质量时,这三个值之间的比值才是重要的,所以4:4:4可以简化为1:1:1;但是习惯上亮度样本的数量值总为4,其他两个值依此类推。

YUVFormats分成两个格式:
紧缩格式(Packed Formats):将Y、U、V值存储成MacroPixels数组,和RGB的存放方式类似,例如[Y0 U0 V0 Y1 U1 V1 …]。
平面格式(Planar Formats):将Y、U、V的三个分量分别存放在不同的矩阵中。

YUV常见的三种格式

4:4:4

样例:
(Y0 U0 V0) (Y1 U1 V1) (Y2 U2 V2) (Y3 U3 V3)
采样后:
Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3
每个像素都完整的采样了三个通道

4:2:2

样例:
(Y0 U0 V1) (Y1 U0 V1) (Y2 U2 V3) (Y3 U2 V3)
采样后:
Y0 U0* Y1 V1* Y2 U2* Y3 V3*

每采样4个Y,采样两个U和V

4:2:0

4:2:0并不意味着只有Y,Cb而没有Cr分量。它指得是对每行扫描线来说,只有一种色度分量以2:1的抽样率存储。相邻的扫描行存储不同的色度分量,也就是说,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0…以此类推。

样例:
(Yo0 Uo0 Ve0) (Yo1 Uo0 Ve0) (Yo2 Uo2 Ve2) (Yo3 Uo2 Ve2)
(Ye0 Uo0 Ve0) (Ye1 Uo0 Ve0) (Ye2 Uo2 Ve2) (Ye3 Uo2 Ve2)
采样后:
Yo0 Uo0 Yo1 Yo2 Uo2 Yo3
Ye0 Ve0 Ye1 Ye2 Ve2 Ye3

每采样4个Y采样2个U
第二行,每4个Y采样2个V

YUV表示的图像码率的计算方法

比如分辨率为100x100的图片,假设选择8bit作为量位(就是说Y、U、V三个值都是使用8bit进行表示)

4:4:4表示方法

由于每个像素都有Y、U、V分量,所以一个像素对应三个分量,即3byte,(100 * 100 * 3)byte

4:2:2表示方法

Y:U:V = 4:2:2 = 2:1:1,由于每个像素都采样了Y,所以可以根据Y计算出U、V,U = 1/2Y,V = 1/2Y,所以最终结果为2Y = (100 * 100 * 2)byte

4:2:0表示方法

Y:U:V = 4:2:0 = 2:1:0,跟上面一样,可以计算出占比U = 1/2Y,所以最终结果为3/2Y = (100 * 100 * 1.5)byte

参考资料:
https://baike.baidu.com/item/色度抽样
https://baike.baidu.com/item/YUV/3430784?fr=aladdin
https://baike.baidu.com/item/YCbCr/10012133?fr=aladdin
https://blog.csdn.net/lanxiaoke123/article/details/100558572#4、YUV文件大小计算(需要的带宽)

你可能感兴趣的:(流媒体)