欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要是RGB、YUV、YCbCr颜色模型解析
核心总结
RGB: 一种基于光的加色模型,直接面向显示设备(如屏幕、投影仪)。它通过混合红、绿、蓝三种颜色的光来产生各种颜色。
YUV: 一种基于视觉感知的颜色模型,它将亮度信息(Y)和色度信息(UV)分离开。最初是为了兼容黑白电视与彩色电视而设计的。
YCbCr: 是 YUV 家族的一种具体数字化实现。在数字视频、图像压缩(如JPEG)和流媒体中,当我们说“YUV”时,绝大多数情况下实际指的是 YCbCr。
详细解析
1. RGB (Red, Green, Blue)
核心思想: 加色法。三种颜色分量相互依赖,共同决定一个像素的最终颜色和亮度。
特点: 分量耦合: 三个分量都包含亮度和颜色信息。改变任何一个分量,都会同时改变该点的亮度和色度。 面向硬件: 计算机显示器、摄像头传感器等直接使用RGB数据。 数据冗余: 三个分量在感知上存在高度相关性,不利于高效压缩。
主要应用: 计算机图形学、显示器、扫描仪、数码相机传感器(原始数据)。
2. YUV
核心思想: 亮度-色度分离。它将一个颜色信号表示为: Y (Luma): 亮度 分量。它表示图像的明暗信息,直接对应于人眼所感知的灰度图像。黑白电视只读取这个Y信号。 U 和 V (Chrominance): 色度 分量。它们表示颜色信息,具体是蓝色差 (B-Y) 和红色差 (R-Y)。它描述了像素颜色与亮度的偏差。
设计初衷: 为了实现彩色电视广播向后兼容黑白电视。黑白电视接收机可以忽略U和V信号,只处理Y信号来显示黑白图像。
特点: 分量解耦: 亮度和颜色信息是分离的。 利于压缩: 人眼对亮度的变化比对颜色的变化更敏感。因此,可以对色度分量(U, V)进行降采样(Subsampling),即用低于亮度的分辨率来存储色度信息,从而大幅减少数据量,而人眼几乎察觉不到画质损失。这就是 4:2:2, 4:2:0 等格式的原理。
注意: YUV 最初是为模拟电视系统(如PAL, NTSC)定义的。
3. YCbCr
核心思想: YUV 的数字等价物。它是YUV概念在数字领域的缩放和偏移版本,使其更适合数字系统处理和存储。
与YUV的关系: YCbCr是YUV的一种具体实现。你可以认为YCbCr是“数字YUV”。 在绝大多数数字视频应用(如MPEG, JPEG, H.264/H.265, 视频会议)中,当人们提到“YUV”时,他们技术上指的是 YCbCr。 转换公式略有不同,但核心思想完全一致:Y是亮度,Cb是蓝色差,Cr是红色差。
特点: 继承了YUV的所有优点(亮度色度分离,利于压缩)。 分量值(通常是8位)被缩放和偏移到完整的取值范围(如对于8位,Y范围是16-235,Cb/Cr范围是16-240),为数字处理做了优化。
主要应用: 几乎所有数字视频和图像压缩标准。 JPEG 图片文件内部使用的是YCbCr格式。 MPEG, H.264/AVC, H.265/HEVC 等视频编码标准。 DVD, 蓝光光盘,各种视频流(如MP4, MKV容器内的视频流)。
区别与联系对比表
转换关系
这三种模型之间可以通过数学公式进行相互转换。
RGB ↔ YCbCr (常用数字转换公式,例如在JPEG中) 这是一个简化的转换矩阵(BT.601标准,用于标准清晰度):
RGB 转 YCbCr:
Y = 0.299R + 0.587G + 0.114B
Cb = -0.1687R - 0.3313G + 0.5B + 128 (对于8位数据)
Cr = 0.5R - 0.4187G - 0.0813B + 128 (对于8位数据)
YCbCr 转 RGB:
R = Y + 1.402(Cr - 128)
G = Y - 0.34414(Cb - 128) - 0.71414(Cr - 128)
B = Y + 1.772(Cb - 128)
重要提示: 存在不同的转换标准(如BT.601 for SD, BT.709 for HD, BT.2020 for UHD),它们的系数略有不同,但原理相通。
总结
RGB 是根源,是设备相关的“原生”格式。
YUV 是一个伟大的工程思想,通过分离亮度和色度,实现了兼容性与可压缩性。
YCbCr 是YUV思想在数字时代的继承者和实践者,是我们今天在几乎所有数字视频和图像压缩技术背后实际使用的格式。
简单来说:为了兼容和压缩,我们将RGB转换为YCbCr(常被俗称为YUV)进行处理和存储;为了显示,我们再将其转换回RGB。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
2666