- 作者:老汪软件技巧
- 发表时间: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 三个通道的分量提取出来的展示效果。
对于上面提取的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技术分享,可以咨询、也可以围观朋友圈呀!欢迎查看我的专栏 >> ,