YUV 色彩空间

2022-10-16 10:19:03 +08:00
 loken2020

虽然日常生活中接触得比较多的是 RGB 色彩空间,但是还有另一种比较常用的色彩空间 是 YUV 。RGB 色彩空间更适合图像采集和显示,YUV 空间用于编码和存储则比较好。在存储和编码之前,RGB 图像要转换为 YUV 图像,而 YUV 图像在 显示之前通常有必要转换回 RGB 。

这里显示的时候 YUV 转成 RGB 通常是硬件或者软件内部做了,我们写代码开发的时候 这个 YUV 转 RGB 显示到屏幕这个过程通常是透明的。

无论是 RGB 还是 YUV ,他们都是 表达 色彩信息的一种方式。

可以把 RGB 跟 YUV 色彩空间看成是 一个 xyz 轴 的立方形,一个三维的空间。

首先,讲一下为什么会出现 YUV 色彩空间,这个涉及到 HVS ( Human Visual System )人类视觉系统 对 色彩空间的感知能力。

视觉心理学研究表明,人的视觉系统对光的感知程度可以用两个属性来描述:亮度( luminance )跟 色度( chrominance ),这里的色度也叫做 饱和度或彩度,总之 色度的叫法有很多,要注意上下文来区分语义。

然后 色度感知 包含两个维度:色调( Hue )和 色饱和度( saturation )。色调是由光波的峰值定义的,描述的是光的颜色。色饱和度是由光波的谱宽定义的,描述的是光的纯度。

因此 HVS 对色彩的感知主要有 3 个属性:亮度( luminance ),色调( Hue )和 色饱和度( saturation )。也就是 YUV 色彩空间,Y 代表 亮度,U 代表色调,V 代表色饱和度。

经过大量研究实验表明,视觉系统 对 色度 的敏感度 是远小于 亮度的。所以可以对 色度 采用更小的采样率来压缩数据,对亮度采用正常的采样率即可,这样压缩数据不会对视觉体验产生太大的影响。简单来说就是用更少的数据来表达 色度( chroma ),用更多的数据来表达 亮度( luminance )。

https://ffmpeg.xianwaizhiyin.net/base-knowledge/raw-yuv.html

1565 次点击
所在节点    程序员
10 条回复
darer
2022-10-16 10:27:17 +08:00
楼主想表达些什么呢
zhs227
2022-10-16 12:01:02 +08:00
看链接貌似是楼主写了一本书,粗略翻看了一下内容还不错。
cpstar
2022-10-16 12:18:48 +08:00
Lab 算啥?
iamzuoxinyu
2022-10-16 13:06:14 +08:00
比较系统,但没什么新鲜东西…
AyaseEri
2022-10-16 13:11:07 +08:00
如果我没记错的话,这里 YUV 产生的原因其实不准确
loken2020
2022-10-16 13:14:29 +08:00
AyaseEri 您好,感谢指正,原本的描述确实不太准备。我优化了一下,为什么会出现 YUV 色彩空间,换成 为什么 YUV 色彩空间在音视频开发领域更加常用。
cnbatch
2022-10-16 17:53:52 +08:00
YUV 的出现(以及那一堆研究数据协助 YUV 的出现)其实单纯就是为了兼容黑白电视机,纯属不得已的妥协方案。
由此开始的长达几十年的广泛使用,导致 YUV 反而成了惯用标准以至于成为事实标准,最终开发领域为了兼容性,也就不得不“更加常用”YUV 了。

至于 YCbCr ,其实也是影音行业的习惯性延续。如果经历过上世纪 90 年代以及本世纪头 5 年,就会记得不少 VCD 和 DVD 影碟播放机都有三孔的色差分量接口输出,电视机也有三孔的色差分量输入,这个就是 YCbCr 。
在当时,带有该接口的 VCD 播放机并不算多,而带有该接口的 DVD 播放机就多得多。直到蓝光碟片播放机的出现,色差分量接口才总算淘汰。
VCD 和 DVD 用什么格式?没错,就是 MPEG 。VCD 用 MPEG-1 ,DVD 用 MPEG-2 。

在制定 MPEG 早期标准的年代,YUV 大行其道,大多数显示设备(说的就是电视机)只认识 YUV 输入方式(单端口 RCA ,高级点的才会有 S-端子和刚才提到的色差分量接口),连 VGA 都没有。在当时,只有极少数显示设备(电脑用的彩色显示器)支持 RGB (采用 VGA 接口),在那个年代,电脑远不如电视机那么普及。
如此环境,MPEG 的制定者只能又一次向现实妥协,继续沿用 YUV 。

所以严格来说,“YCrCb 适用于计算机用的显示器”其实应该是“YCrCb 适用于 VCD 和 DVD 播放器”或者“YCrCb 适用于 MPEG 视频的记录与回放”。
loken2020
2022-10-16 18:02:08 +08:00
@cnbatch 感谢 cnbatch 大神指点。
BGLL
2022-10-17 15:37:36 +08:00
是的,现在新的标准在用 ICtCp
archxm
2023-07-04 17:09:30 +08:00
YUV 000 转为 rgb ,看看是什么颜色,
知道为啥 n 卡流畅,但偏绿吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/887254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX