虽然日常生活中接触得比较多的是 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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.