文章目录
YUV相关概念
YUV 是一种颜色编码格式,用于视频和图像处理。它与 RGB(红、绿、蓝)颜色模型不同,将颜色信息分为亮度(Y)和色度(U 和 V)分量。YUV 格式主要用于模拟视频和数字视频系统。
组成部分
-
Y(亮度):
- 代表图像的明暗信息。
- 不包含颜色信息,仅表示图像的亮度。
-
U 和 V(色度):
- U(蓝色色度)和 V(红色色度)代表颜色信息。
- 这些分量描述颜色的饱和度和色调。
优点
- 带宽效率:通过分离亮度和色度分量,可以在压缩视频时减少带宽需求,因为人眼对亮度的变化比对色度的变化更敏感。
- 兼容性:YUV 格式与黑白电视兼容,因为黑白电视只读取亮度信息。
常见的 YUV 格式
-
YUV 4:4:4:每个像素都有完整的亮度和色度信息。
-
YUV 4:2:2 :色度分量的水平分辨率是亮度分量的一半。
-
YUV 4:2:0:色度分量的水平和垂直分辨率都是亮度分量的一半。
4:2:0 表示在一个 2x2 的像素块中,亮度(Y)分量有 4 个样本,而色度(U 和 V)分量各有 1 个样本。这意味着色度信息的水平和垂直分辨率都是亮度分辨率的一半。
YUV 格式广泛应用于视频压缩、电视广播和各种视频处理任务中。
RGB 和 YUV 是两种不同的颜色编码方式,各有其特定的应用场景和优缺点。它们之间的关系可以通过颜色空间转换来理解。
数据量的计算
YUV = Y*1.5
在 YUV 4:2:0 采样格式下,YUV 数据量是亮度(Y)数据量的 1.5 倍。这是因为:
- 亮度数据:每个像素都有一个 Y 分量。
- 色度数据:每 4 个像素共享 1 个 U 分量和 1 个 V 分量(在一个 2x2 像素块中)。
假设一个图像有 N 个像素:
- 亮度(Y)数据量:N 个样本。
- 色度(U 和 V)数据量:每个色度分量有 N/4 个样本,因此两个色度分量共计 N/2 个样本。
总的数据量 = Y 数据量 + U 数据量 + V 数据量 = N + N/4 + N/4 = N + N/2 = 1.5N
因此,YUV 数据量是亮度(Y)数据量的 1.5 倍。
YUV = RGB / 2
这个表达式表明,在数据量上,YUV 4:2:0 格式比 RGB 格式节省一半的数据量。这是因为:
- RGB 格式:每个像素有 3 个分量(R、G、B),总数据量是 3N(N 是像素数)。
- YUV 4:2:0 格式:总数据量是 1.5N(如上所述)。
将 YUV 数据量与 RGB 数据量比较:YUV = RGB / 2
这意味着 YUV 4:2:0 格式的数据量是 RGB 格式数据量的一半。
这两个表达式说明了 YUV 4:2:0 在视频压缩中的优势,即通过减少色度数据量,显著降低了总数据量,而不显著影响视觉质量。
YUV4:2:0 存储格式
是安装分层存储的,先按照Y分量存储,最后读取UV相关的,兼容性比较好,黑白电视直接读取,前四行即可。YUV的关系为 4个Y 对应一个U 一个V
平面模式(planar):
- Y 平面:首先存储所有像素的亮度数据(Y 分量)。
- U 平面:接着存储所有像素的色度数据(U 分量),每个色度值对应 2x2 像素块。
- V 平面:最后存储所有像素的色度数据(V 分量),每个色度值对应 2x2 像素块。
假设图像尺寸为 W×H,则:
- Y 平面大小:W×H
- U 平面大小:W/2×H/2
- V 平面大小:W/2×H/2
总数据量为:W×H + (W×H)/4 + (W×H)/4 = W×H × 1.5
I420 : YYYYYYYY UU VV ------------>YUV420P
YV12: YYYYYYYY VV UU------------>YUV420P
打包模式(packed)
在某些情况下,色度分量 U 和 V 可以交织存储,以减少存取操作的复杂性。
在这种模式下,U 和 V 的存储大小与平面模式相同,但存储顺序不同。
常见的格式有NV12 和NV21
NV12: YYYYYYYY UVUV ---------->YUV420SP
NV21: YYYYYYYY VUVU ---------->YUV420SP
RGB 和 YUV 的定义
-
RGB(红、绿、蓝):
- 一种加色法颜色模型,通过混合红色、绿色和蓝色光来创建各种颜色。
- 常用于显示器、相机和其他捕获设备。
-
YUV(亮度、色度 - U 和 V):
- 将颜色信息分为亮度(Y)和两个色度分量(U 和 V)。
- 主要用于视频压缩和传输。
关系与转换
RGB 到 YUV 的转换
RGB 转 YUV 可以通过以下数学公式实现:
[ Y = 0.299R + 0.587G + 0.114B ]
[ U = 0.492 (B - Y) ]
[ V = 0.877 (R - Y) ]
这些公式表示如何从 RGB 值计算 YUV 值。
YUV 到 RGB 的转换
从 YUV 转回 RGB 可以通过以下公式:
[ R = Y + 1.140V ]
[ G = Y - 0.395U - 0.581V ]
[ B = Y + 2.032U ]
使用场景
- RGB:用于需要精确颜色表示的应用,如计算机图形学、图像编辑和显示设备。
- YUV:用于视频压缩和传输,因其更有效的带宽利用和与模拟电视的兼容性。
优缺点
-
RGB:
- 优点:直观,易于理解和操作。
- 缺点:不适合视频压缩,带宽需求较高。
-
YUV:
- 优点:更适合视频压缩,带宽效率高,兼容性好。
- 缺点:需要转换过程,色彩操作较复杂。
总的来说,RGB 和 YUV 各有优势,具体选择取决于应用需求和具体场景。