YUV Image Format
目录
补充知识
YUV 图像格式
YUV 是一种颜色编码方法,它与我们常用的 RGB (红、绿、蓝)颜色空间有所不同,但它在视频和嵌入式系统中具有巨大的优势。
1. YUV 的三个分量
YUV 将图像颜色分解为三个独立的分量:
| 分量 | 名称 | 含义 |
|---|---|---|
| Y | Luminance(亮度) | 代表图像的灰度值或明亮度信息。 |
| U | Chrominance(色度) | 代表蓝色与亮度的差异($B-Y$)。 |
| V | Chrominance(色度) | 代表红色与亮度的差异($R-Y$)。 |
2. YUV 的核心优势:利用人眼特性
人眼对图像的亮度(Y)变化非常敏感,但对色彩(U、V)的细节变化相对不敏感。
YUV 格式正是利用了这一特性,允许在不显著影响感知图像质量的前提下,对色度(U、V)分量进行采样率降低(Subsampling)。这意味着可以牺牲部分色彩分辨率来大幅减少数据量。
3. YUV 采样格式:4:2:0
常见的 YUV 格式通过 $A:B:C$ 的形式表示采样率,其中 YUV 4:2:0 是视频和嵌入式系统中最常用的一种。
-
含义:
-
每 4 个亮度样本(Y 值)共用 1 个 U 值和 1 个 V 值。
-
在 $2 \times 2$ 的像素块中,共有 4 个 Y 样本,但只有 1 个 U 样本和 1 个 V 样本。
-
-
数据量:
-
对于每个像素,RGB 需要 $3$ 字节(R, G, B 各 1 字节)。
-
对于 $4:2:0$ 格式,4 个像素共需要 $4 \times Y + 1 \times U + 1 \times V = 6$ 字节。
-
平均每个像素只需要 $6 / 4 = 1.5$ 字节。
-
结论: YUV 4:2:0 相比 RGB 格式,在保证基本视觉质量的同时,直接将存储和传输带宽减少了 25%(从 3 字节降至 1.5 字节)。这对于内存和带宽受限的 K230 这样的嵌入式设备至关重要。
K230 与 YUV420SP 格式
1. YUV420SP(Semi-Planar,半平面)
YUV 4:2:0 格式根据其在内存中的存储方式,又分为两大类:
-
Planar (平面格式,如 YUV420P / I420): Y、U、V 三个分量分别存储在内存的三个独立区域(Plane)中。
-
Semi-Planar (半平面格式,如 YUV420SP / NV12/NV21):
-
第一个平面(Plane 1): 存储所有的 Y 分量。
-
第二个平面(Plane 2): U 和 V 分量交替(交错)存储。
-
NV12 和 NV21 是 YUV420SP 的具体实现,区别仅在于第二个平面中 U 和 V 的交替顺序(NV12 是 $UVUV...$,NV21 是 $VUVU...$)。
2. K230 对 YUV420SP 的支持
K230 通常支持 YUV420SP 格式。
在 K230 的嵌入式视觉开发中,YUV420SP(NV12) 是最常使用的摄像头输出格式和 KPU 模型输入格式之一。
-
高效: 由于 Y 分量和 UV 分量是分开的(两个平面),这非常有利于硬件加速器(如 KPU)的访问和处理。例如,在进行灰度处理时,只需要读取 Y 平面。
-
兼容性: 它是许多移动和嵌入式平台(如 Android)上视频和相机处理的标准格式。