【音视频 | YUV格式】深入理解 YUV 数据格式,一文弄懂
【音视频 | YUV格式】深入理解 YUV 数据格式,一文弄懂
在图像和视频处理领域,YUV格式是一种常见且重要的色彩编码方式,常用来表示视频帧的裸数据。与RGB格式相比,YUV格式通过将亮度(Y)和色度(U、V)分开编码,能够更有效地优化彩色视频信号的传输,使其向后兼容老式黑白电视。本文将深入探讨YUV格式的原理、分类及其在各种应用中的优势。
一、什么是YUV数据格式
YUV格式是一种将亮度(Luminance,用Y表示)和色度(Chrominance,用U和V表示)分开进行编码的方式。其中,Y分量代表了图像的亮度信息(明亮度,也称灰阶值),而U和V分量则携带了颜色信息(色调和饱和度)。“亮度”是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起。“色度”则定义了颜色的两个方面——色调与饱和度,分别用Cb和Cr来表示。Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之间的差异;Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。因此,有时也会看到一些场景使用YCbCr来代替YUV。
与常见的RGB格式(红、绿、蓝三原色)不同,YUV格式在存储和传输图像数据时具有一些独特的优势。本文将带您深入了解YUV格式的原理、特点以及其在各种应用中的优势。
二、YUV采样格式分类
由于人眼对Y的敏感度远超于对U和V的敏感,所以有时候可以多个Y分量共用一组UV,这样既可以极大得节省空间,又可以不太损失质量。YUV按照采样格式的不同,可以分成三类:
YUV4:4:4:在这种格式中,Y、U、V三个分量的采样比例相同,每个像素都有独立的Y、U、V值,图像质量最高,但数据量也最大。图像中每个像素点都采集YUV分量。
YUV4:2:2:Y分量的采样频率与像素相同,而U和V分量的采样频率是Y分量的一半。即在水平方向上,每两个像素共用一组U、V值。也就是说,图像的一行中,如果第一个像素点采集了UV分量,那第二个就不采集UV分量,依次类推,最终采集的每一行YUV的数量比值是4:2:2。
YUV4:2:0:Y分量的采样频率与像素相同,U和V分量在水平和垂直方向上的采样频率均为Y分量的一半。也就是说,在图像的同一行中,如果采集了U分量,那就不会采集V分量,并且下一行只采集Y分量、V分量。采集U、V分量时是隔一个像素采集一次。第一行是采集U分量的,所以整行都不会采集V分量,且U分量是隔一个像素采集一次(第一个像素采,第二个就不采);因为上一行采集了U分量,所以第二行是采集V分量的,整行没采集U分量,且V分量是隔一个像素采集一次;最终采集下来,如果第一行YUV数量比值是4:2:0,那么第二行就是4:0:2,依次类推。
在这三种格式中,YUV4:2:0是一种比较常见的压缩格式,在保证一定图像质量的前提下,大大减少了数据量。
三、YUV存储格式分类
采集到的YUV数据要怎么存储呢?是把Y、U、V分量都分开存储,还是交叉存储?针对这个问题,如果没有一个标准的话,你存你的,我存我的,就可能造成你读取的YUV数据在其他人那里无法解析。YUV有三种存储格式:
- Planar格式(平面格式):Y、U、V三个分量分别存储。
- Semi-Planar格式(半平面格式):Y分量单独存放,UV分量交错存储。
- Packed格式(打包格式):三个分量全部交错存储。
下面结合YUV的采样格式,以6*4的YUV图像为例,介绍常见的YUV类型。
3.1 YUV444类型(I444、YV24、NV24、NV42、YUV444 Packed)
I444(属于YUV 444 Planar)
I444格式是一种Planar格式(平面格式),将YUV444采样数据的YUV三个分量分别存储,如下图:先存储所有的Y分量,然后存储U分量,最后存储V分量。YV24(属于YUV 444 Planar)
YV24格式也是一种Planar格式(平面格式),将YUV444采样数据的YUV三个分量分别存储,与I444不同的是,YV24存完Y之后先存V分量再存U分量。如下图:先存储所有的Y分量,然后存储V分量,最后存储U分量。NV24(属于YUV 444 Semi-Planar)
NV24格式是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储所有的Y分量,然后UV分量交错存储,UV排列时先存U分量。NV42(属于YUV 444 Semi-Planar)
NV42格式也是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储所有的Y分量,然后UV分量交错存储,UV排列时先存V分量。YUV444 Packed
YUV444 Packed是一种Packed格式(打包格式),三个分量全部交错存储。如下图,存储完第一个像素的YUV再存储第二个像素的,依此类推。
3.2 YUV422类型(I422、YV16、NV16、NV61、YUVY、VYUY、UYVY)
I422(属于YUV 422 Planar)
I422格式是一种Planar格式(平面格式),将YUV422采样数据的YUV三个分量分别存储,如下图:先存储w * h长度的Y分量,然后存储w * h * 0.5长度U分量,最后存储w * h * 0.5长度的V分量。YV16(属于YUV 422 Planar)
YV16格式也是一种Planar格式(平面格式),将YUV422采样数据的YUV三个分量分别存储,YV16存完Y之后先存V分量再存U分量。如下图:先存储w * h长度的Y分量,然后存储w * h * 0.5长度V分量,最后存储w * h * 0.5长度的U分量。NV16(属于YUV 422 Semi-Planar)
NV16格式是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储w * h长度的Y分量,然后将w * h * 0.5长度U分量和w * h * 0.5长度的U分量交叉存储,UV排列时先存U分量。
NV61(属于YUV 422 Semi-Planar)
NV61格式是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储w * h长度的Y分量,然后将w * h * 0.5长度U分量和w * h * 0.5长度的U分量交叉存储,UV排列时先存V分量。YUVY(属于YUV 422 Packed)
YUVY格式是一种Packed格式(打包格式),将YUV422采样数据的YUV三个分量交叉存储,YUV的排列顺序是YUVY,两个Y共用一组UV。如下图:
VYUY(属于YUV 422 Packed)
VYUY格式是一种Packed格式(打包格式),将YUV422采样数据的YUV三个分量交叉存储,YUV的排列顺序是VYUY,两个Y共用一组UV。如下图:UYVY(属于YUV 422 Packed)
UYVY格式是一种Packed格式(打包格式),将YUV422采样数据的YUV三个分量交叉存储,YUV的排列顺序是UYVY,两个Y共用一组UV。如下图:
3.3 YUV420类型(I420、YV12、NV12、NV21)
一般YUV420是没有Packet的存储方式的,常见的4种YUV420类型如下:
I420(属于YUV 420 Planar)
I422格式是一种Planar格式(平面格式),将YUV420采样数据的YUV三个分量分别存储,如下图:先存储w * h长度的Y分量,然后存储w * h * 0.25长度U分量,最后存储w * h * 0.25长度的V分量。YV12(属于YUV 420 Planar)
YV12格式也是一种Planar格式(平面格式),将YUV420采样数据的YUV三个分量分别存储,YV12存完Y之后先存V分量再存U分量。如下图:先存储w * h长度的Y分量,然后存储w * h * 0.25长度V分量,最后存储w * h * 0.25长度的U分量。NV12(属于YUV 420 Semi-Planar)
NV12格式是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储w * h长度的Y分量,然后将w * h * 0.25长度U分量和w * h * 0.25长度的V分量交叉存储,UV排列时先存U分量。NV21(属于YUV 420 Semi-Planar)
NV21格式是一种Semi-Planar格式(半平面格式),将Y分量单独存放,UV分量交错存储。如下图:先存储w * h长度的Y分量,然后将w * h * 0.25长度U分量和w * h * 0.25长度的V分量交叉存储,UV排列时先存V分量。
四、YUV格式的应用
- 视频编码标准:如H.264、H.265等,广泛采用YUV格式作为输入和内部处理格式,以提高编码效率。
- 图像压缩:JPEG图像压缩算法在处理彩色图像时,也会先将RGB转换为YUV格式。
- 数字电视和广播:YUV格式在数字电视信号的传输和存储中得到了广泛应用。
五、总结
本文介绍了YUV的采样格式、存储格式,以及十几种YUV格式:YUV444类型(I444、YV24、NV24、NV42、YUV444 Packed)、YUV422类型(I422、YV16、NV16、NV61、YUVY、VYUY、UYVY)、YUV420类型(I420、YV12、NV12、NV21)。
YUV格式作为图像和视频处理中的重要色彩编码方式,凭借其在数据压缩、视觉特性适应等方面的优势,在众多领域发挥着关键作用。深入理解YUV格式对于从事相关领域的开发和研究人员具有重要意义。希望通过本文的介绍,您对YUV格式有了更全面和深入的认识。