像素格式有哪些?

常见的像素格式主要分为原始像素格式(Raw Formats)和视频编码格式。你的提问里YUV和RGB是存储色彩的原始数据,而H.264则是用来压缩打包这些数据的“压缩包格式”。

  • 原始像素格式 (Raw Formats):这类格式直接描述了每个像素点的颜色数据,不经过压缩。它们又主要分为两种:
格式大类代表格式内存占用 (1080p每帧)主要优缺点数据排列方式
RGB类RGB24, BGR24, RGBA32~6.2MB数据量大,逻辑直观,适合直接在屏幕上显示和处理。每个像素固定存储红、绿、蓝三原色的数据。
YUV类YUYV, NV12, I420, YV12约3~4.1MB数据量较小,将亮度和颜色分离,利于压缩和兼容黑白显示,是视频领域的“通行证”。每个像素都有亮度(Y)值,而色度(U/V)值则由相邻像素共享。

YUV的采样方式(如4:4:4、4:2:2、4:2:0)决定了色度信息的保留程度。常见YUV格式的区别如下:

格式名称采样方式存储类型特点
YUYV4:2:2打包 (Packed)每两个像素共享一对UV,顺序交错排列。
UYVY4:2:2打包 (Packed)与YUYV类似,但顺序变为U、Y、V、Y。
NV124:2:0半平面 (Semi-Planar)一个Y平面,一个UV交错存储的平面,在Windows、Android和硬件编解码中很常见。
I4204:2:0平面 (Planar)三个平面顺序存储:全部Y,然后全部U,最后全部V。在FFmpeg等软件中广泛使用。
YV124:2:0平面 (Planar)与I420类似,但存储顺序是Y,然后V,最后U。
  • 视频编码格式 (Video Codecs)
    • 特点:通过复杂的算法(如帧内、帧间预测)对原始像素数据进行高倍率压缩。
    • 代表:H.264、H.265、MJPEG等。它们是处理视频文件或通过网络传输时的格式。其中,H.264 是一种高效的视频编码标准,常与原始像素格式(如YUYV)搭配使用,先将数据压缩成H.264再传输。

🔬 YUYV 的深层解读与数据帧结构

1. YUYV 为什么重要?

YUYV 在摄像头和视频领域扮演着“通用语言”的角色。它数据量适中(YUV 4:2:2采样),能提供不错的图像质量,因此被很多USB摄像头(遵循UVC标准)默认支持。

2. YUYV 的数据帧长什么样?

YUYV是一种打包(Packed)格式,意味着它的Y、U、V分量是交错存储在一起的。

采样方式与数据组成:

  • 采样方式:YUV 4:2:2,意味着在水平方向上,每2个像素点共享一对UV色度信息,但每个像素都保留自己独立的Y亮度信息。
  • 数据组成:一个像素对 (4字节) = Y0 (1字节) + U (1字节) + Y1 (1字节) + V (1字节)。所以,如果图像分辨率是 W x H,那么一帧完整画面的数据量约为 W \* H \* 2 字节

3. 数据排列顺序

假设你有一张4x4像素的图片,YUYV数据在内存中的排列顺序如下图所示,一个格子代表1个字节:

字节偏移Byte 01234567
数据内容Y00U00Y01V00Y02U01Y03V01
所属像素像素(0,0)(0,0)&(0,1)像素(0,1)(0,0)&(0,1)像素(0,2)(0,2)&(0,3)像素(0,3)(0,2)&(0,3)
  • Y后面跟行号和列号,例如Y00表示第0行第0列的Y值。
  • 可以看到,U和V分量总是被相邻的两个Y像素所共享。

🆚 与其他像素格式的数据帧对比

YUYV与其他常见格式的主要区别在于采样方式排列方式

对比项YUYV (YUV 4:2:2, Packed)NV12 (YUV 4:2:0, Semi-Planar)RGB24 (RGB, Packed)H.264 (压缩格式)
采样方式YUV 4:2:2YUV 4:2:0N/A (每个像素包含完整R,G,B)基于视频编码标准
存储类型打包 (Packed)半平面 (Semi-Planar)打包 (Packed)码流格式 (Bitstream)
数据排列交错排列:Y U Y V先存全部Y,再存交错UV顺序排列:R G BB G R包含NAL单元等复杂结构
每像素占用16 bits = 2 bytes12 bits = 1.5 bytes24 bits = 3 bytes高度可变,通常远小于原始格式
内存布局示例[Y0 U0 Y1 V0] [Y2 U1 Y3 V1][Y0 Y1 Y2 Y3 ...] [U0 V0 U1 V1 ...][R0 G0 B0] [R1 G1 B1] [R2 G2 B2] ...无法直接查看像素,需要解码器解析
优点图像质量较好,兼容性好压缩率高,是流媒体和硬件编解码的主流格式色彩表现直接、完整压缩率极高,适合网络传输和存储
缺点数据量较大垂直方向的色彩细节有损失数据量巨大编解码复杂,有算力开销

💡 YUYV 与 H.264 的本质区别

最后,澄清一个最核心的误解:YUYV 和 H.264 是完全不同层次的概念,它们是“原材料”与“压缩包”的关系。

  • YUYV原始像素格式(原材料)。摄像头内部CMOS传感器捕获的原始图像数据,可以直接用来描述图像。
  • H.264视频编码标准(压缩算法/压缩包)。为了高效存储或通过网络传输,用H.264算法对“原材料”(如YUYV数据)进行复杂压缩,得到的数据流就是H.264格式。

整个过程通常是:CMOS传感器捕获光信号 → 转换成原始YUYV格式数据(或其他原始像素格式)→ 送入编码器(如H.264编码器)进行压缩 → 输出 H.264格式的码流。对你来说,选择哪种格式,是在“画质好、体积大”的原始数据和“体积小、但编解码有开销”的压缩数据间做权衡。