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 分量交替(交错)存储

NV12NV21 是 YUV420SP 的具体实现,区别仅在于第二个平面中 U 和 V 的交替顺序(NV12 是 $UVUV...$,NV21 是 $VUVU...$)。

2. K230 对 YUV420SP 的支持

K230 通常支持 YUV420SP 格式。

在 K230 的嵌入式视觉开发中,YUV420SP(NV12) 是最常使用的摄像头输出格式和 KPU 模型输入格式之一。

  • 高效: 由于 Y 分量和 UV 分量是分开的(两个平面),这非常有利于硬件加速器(如 KPU)的访问和处理。例如,在进行灰度处理时,只需要读取 Y 平面。

  • 兼容性: 它是许多移动和嵌入式平台(如 Android)上视频和相机处理的标准格式。