欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

YUV 420, YCbCr 422, RGB 444及其色度二次采样:重新探索颜色编码方案

最编程 2024-08-15 15:44:10
...

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

学习完YUV相关的知识点,现谈谈自己对这方面的理解。

计算机里面,R、G、B也被称为“基色分量”。它们的取值,分别从0到255,一共256个等级(256是2的8次方)。所以,任何颜色,都可以用R、G、B三个值的组合表示。而且只有RGB格式的数据才能在屏幕或显示器上显示出来。

既然只有RGB格式信号才可以在显示器上显示出来,为什么还需要其他格式的信号(比如YUV)?带着这个问题让我们一起回顾一下RGB与YUV。

RGB

RGB 模型是目前常用的一种彩色信息表达方式,每一种颜色都是红、绿、蓝三种颜色的混合,在这种模式下通过叠加颜色生成其他的颜色值,因而适合于显示器等发光体的显示。

image.png

image.png RGB 颜色空间可以看作是三维直角颜色坐标系中的一个正立方体。如上右图所示。红绿蓝三色在立方体的三个顶点上;洋红、青、黄色在立方体的立方体的另外三个顶点;黑色在坐标原点;而白色在离原点最远的定点上。在连接黑色与白色的对角线上,是亮度等量的三基色混合而成的灰色,该线称为灰色线。

下图是RGB如何形成图像的

image.png 那么对于一张1920 * 1080的图片,如果采用RGBA编码格式,这一张图片加载到内存并在设备中显示时,所占用的内存大小就是:

1920 * 1080 * 4 /1024 / 1024 = 7.9M`

YUV

YUV就是另外一种颜色数字化表示方式,常用与视频通信系统中。其中Y代表亮度(Luma),U和V代表色度(Chroma)。YUV与YCbCr可统称为YUV(具体原因可以查阅相关方面的资料)。下图演示了RGB 和YUV的关系,以及Y对UV的影响

image.png

由于人眼对色度的敏感程度要低于对亮度的敏感程度,因而可以在使用YUV的时候, 保证Y分量的前提下,可以舍弃一部分UV分量,来减少对带宽的需求,却也并不会太影响图像的质量。这就是YUV相对于RGB的优势,所以才会引入YUV的使用

下图是YUV如何形成图像的

image.png

YUV常用采样方式

主流的YUV采样方式有如下三种:

  • YUV444
  • YUV422
  • YUV420

YUV444

image.png

YUV422

image.png

YUV420

image.png 其中YUV420最常用,YUV420包含YUV420p与YUV420sp, 区别在于plane数量分别为3和2。 根据uv分量的顺序不同YUV420p分为YV12和YU12,,YUV420sp分为NV12和NV21。 YUV420sp中uv分量是杂糅在一个plane中以uvuv或者vuvu的顺序存储在第二个plane中。