NV12 与 RGB 之间的尺寸关系
NV12 是一种 YUV 420 格式,其中 Y(亮度) 具有完整分辨率,而 UV(色度) 以 2x2 子采样 的方式存储。因此,它与 RGB(每通道完整分辨率) 的尺寸关系如下:
假设一张 RGB 图像 尺寸是 W × H(宽 × 高),则:
- RGB(3 通道) 的总大小 =
W × H × 3
- NV12(YUV 420) 的大小:
- Y 平面:
W × H
- UV 平面:
(W/2) × (H/2) × 2 = (W × H) / 2
(U 和 V 交错存储) - 总大小 =
W × H + (W × H) / 2 = (W × H) × 1.5
- Y 平面:
NV12 是否属于 YUV420?
是的,NV12 是 YUV420 格式的一种具体排列方式,但并非唯一:
-
YUV420P(Planar,逐块存储):
- Y 数据存放在前
(W × H)
个字节; - U 数据存放在中
(W × H) / 4
个字节; - V 数据存放在后
(W × H) / 4
个字节; - Y、U、V 分量分别独立存储。
- Y 数据存放在前
-
NV12(Semi-Planar,半平面存储):
- Y 平面占
W × H
; - UV 交错存储,占
(W × H) / 2
; - Y 和 UV 分量是分开的,但 UV 交错存储。
- Y 平面占
-
NV21(YUV420SP):
- Y 平面占
W × H
; - VU 交错存储(与 NV12 相比,U 和 V 位置调换)。
- Y 平面占
格式 | Y 存储方式 | U/V 存储方式 |
---|---|---|
YUV420P | 独立存储 | U 和 V 分别存储在不同区域 |
NV12 | 独立存储 | UV 交错存储 |
NV21 | 独立存储 | VU 交错存储 |
总结
- NV12 是 YUV420 格式的一种变体,使用 交错的 UV 存储,减少数据访问开销,提高缓存效率。
- NV12 图片尺寸 总大小为 1.5 × W × H,比 RGB(
3 × W × H
)要小 2 倍。 - RGB 转 NV12 需要降采样 UV,而 NV12 转 RGB 需要插值补全 UV。