• 作者:老汪软件技巧
  • 发表时间:2024-12-29 00:59
  • 浏览量:

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。

合集完整版请参考。

上一篇描述了 RGB 这种彩色图像表示,这一节我们再看另一种图像表示:YUV 格式。

本文仅做了解即可:YUV 和 RGB 不同,区别主要在于颜色信息的存储和传输上。

YUV

YUV 是什么呢?YUV 表示的是亮度-色度模型。在 YUV 表示中,颜色信息由亮度(Y)和两个色度(U、V)通道组成,亮度通道(Y)表示图像的明暗程度,色度通道(U、V)表示颜色信息,Y 通道负责明亮度,U、V 通道则处理色彩信息。

Y: Luminance (亮度) - 表示图像的亮度信息,也就是灰度值。

亮度分量表示图像的明暗程度,与图像的黑白信息相关。

Y 分量在黑白电视时代中用于传输图像的亮度信息,因此即使没有色彩信息,图像的轮廓和细节仍然可以显示。

U: Chrominance (色度) - 表示图像的蓝色色度分量,与亮度和红色色度分量一起定义颜色。

V: Chrominance (色度) - 表示图像的红色色度分量,与亮度和蓝色色度分量一起定义颜色。

为什么用 YUV 这三个字母来表示这种图像格式呢?

用 YUV 而不使用类似 Luminance 的首字母 L 来表示亮度是有历史和技术原因的。

历史背景

YUV 是从最早的彩色电视信号格式 YUV 模型中得来的,这种模型最早是在模拟电视信号处理中使用的,Y 表示亮度,U 和 V 是两个色度分量。

在早期的彩色电视系统中,为了向后兼容黑白电视,彩色信号被分解为亮度和色度分量,Y 分量保留了图像的亮度信息,可以直接在黑白电视上显示,而 U 和 V 分量携带色彩信息。

技术理由

Y 表示亮度:在数学和信号处理领域,Y 通常用来表示亮度,这已经成为了约定俗成的符号,并且在彩色电视系统中,使用 Y 来表示亮度信号比 L 更常见。

U 和 V:色度分量 U 和 V 的符号来自色彩空间中的两个正交轴(即蓝-黄和红-青),表示相对于亮度的色彩差异。这两个符号与早期数学描述中的变量命名有关,因此沿用了下来。

命名习惯

另一个原因是避免混淆:L 在图像处理中有时也用于表示光度(Lightness)或其他特征。如果使用 L 代表亮度,可能会与其他光度表示法混淆。因此,Y 成为了约定俗成的符号。

图像格式的文件__经常用到的图像格式

在许多工程文档和标准中,YUV 已经成为标准符号,这种命名方式的统一性在工程实现和标准化过程中减少了混乱。

为什么有了 RGB 还需要 YUV 呢?

RGB 的彩色图像表示在每个通道上均匀地分配颜色信息,也就是说在 RGB 中,颜色信息在红、绿、蓝三个通道上平均分布。而 YUV 不是,YUV 在通道上分布并不均匀。

Y 代表的是亮度,包含图像的大部分信息,U/V代表的是颜色信息,而我们人眼对亮度的敏感性要高于对色彩的敏感性,因此YUV的表示方式更加符合人眼感知的特性。

我们看一个例子来说明为什么人眼对 Y 分量更敏感:下图是通过程序把一个彩色图片中的 Y/U/V 三个通道的分量提取出来的展示效果。

1.png

对于上面提取的3个分量,很明显我们更倾向于使用只有 Y 通道(右上角)的那张图片,因为它虽然没有了色彩,但是很清晰,而U/V通道的图片则很模糊,甚至完全不能使用。

因此,只有 U/V通道的图片是不可用的,而只有Y分量的图片却没有任何问题。

YUV 的优势

还记得在上一节中通过计算得出:一张1920x1080的RGB图像大概需要占用7M的内存吗?

占用7M的内存看似不大,但是在很多计算机视觉任务中,往往需要实时处理多帧的图片或者视频,如果每一帧都这么大,那么很容易就出现内存不够的问题,任务也就没办法执行下去。

一个好的解决办法就是更换占内存更小的图像格式,并且希望图像仍然保留大部分的信息,YUV就是其中一种。

YUV 是如何做到减少内存占用的呢?

上面提到,人眼对 Y 通道更加敏感,而人眼对 U/V 不那么敏感,为了减少图片在内存中的占用,理所当然的可以减少U/V分量,而多保留Y分量。

比如在 YUV422 格式中, 代表的是 2 个 Y 分量对应一组 UV 分量,也就是说 Y 分量是 UV 分量像素的2倍。当然 YUV 还有其他格式,比如 YUV444, YUV420,都是不同的 Y分量对应不同个数的 UV 分量。

总的意思就是减少 UV 分量,而提高 Y 分量的占比,这样就能减少图片的内存占用了。

YUV 图片的应用

由于 YUV 更好地利用了人眼对亮度和色彩的感知差异,因此 YUV 格式通常在压缩算法中表现更好,尤其是在视频编码领域。因此,YUV图像通常用于视频压缩和传输,使得图像在压缩和解压缩过程中可以很高效地被处理。

本节仅需要了解并知道 YUV 这一图像格式就好了,如果你是真的做与 YUV 格式开发的话,再去了解其中的格式细节。

如果你想学习 AI ,欢迎来添加我的微信 (vx: ddcsggcs),会有很多好玩的AI技术分享,可以咨询、也可以围观朋友圈呀!欢迎查看我的专栏 >> ,


上一条查看详情 +C#使用Tesseract C++ API过程记录
下一条 查看详情 +没有了