常用图像格式介绍

一、概述

本文主要介绍一下几种图像格式: RAW、RGB、YUV、NV12、MJPEG。

这些图像格式分别处于图像处理链路的不同阶段,从传感器原始数据到最终显示/存储的压缩格式。下面按数据"原始程度"从高到低逐一讲解。

1
采集 → 处理 → 显示 → 编码 → 传输

不同阶段需要不同的数据格式。

进一步简化:

1
2
3
4
5
6
7
8
9
RAW
↓
ISP
↓
RGB / YUV
↓
编码
↓
传输

二、RAW —— 传感器原始数据

定义:图像传感器(CMOS/CCD)每个像素点只感光一种颜色(红或绿或蓝),输出的是未经任何处理(原始数据)的电信号量化值。

关键特征:

  • 单通道:每个像素只有一个数值,不是 RGB 三通道

  • Bayer 阵列:最常见的排列方式,50% 绿、25% 红、25% 蓝

    text

    1
    2
    3
    R G R G R G
    G B G B G B
    R G R G R G
  • 位深高:通常 10bit、12bit、14bit、16bit(普通 RGB 只有 8bit)

  • 线性响应:没有经过 gamma、白平衡、去马赛克等处理

  • 数据量大:例如 1920×1080×12bit ≈ 3MB/帧

优点:保留最大信息量,后期空间大(白平衡、曝光可无损调整)
缺点:不能直接显示,必须经过 ISP 处理

典型场景:相机拍照、工业相机、手机 Sensor 输出

三、ISP —— 图像质量保证

RAW 数据无法直接显示。必须经过 ISP 处理。

ISP(Image Signal Processor,图像信号处理器),它是从 RAW → 可显示图像 的完整处理管线。可以是:

  • 硬件 ISP:手机 SoC 里的专用模块(高通 Spectra、联发科 Imagiq、海思 ISP)
  • 软件 ISP:如 libcamera、Raspberry Pi 的 raspistill、OpenCV 部分流程
  • 混合:硬件做实时部分,软件做高级处理

核心职责:把传感器输出的、人眼无法直接看的 Bayer RAW,变成色彩正确、亮度自然、噪点可控的 RGB/YUV 图像。

模块 作用
Demosaic Bayer 插值
AWB 自动白平衡
AE 自动曝光
AF 自动对焦
NR 降噪
Gamma Gamma校正
CCM 色彩校正

ISP 的调校水平往往决定:夜视效果是否优秀。

四、RGB —— 三通道像素格式

定义:每个像素用红、绿、蓝三个分量表示颜色,是最直观的颜色模型。

常见排布:

格式 说明
RGB888 每通道 8bit,共 24bit 像素
RGB565 R:5bit G:6bit B:5bit,共 16bit
RGBA8888 带 Alpha 通道,32bit
BGR888 OpenCV 默认顺序

RGB888 - 最常见格式:

1
R0 G0 B0 | R1 G1 B1 | R2 G2 B2 | ...

优点:直观、显示设备原生支持、处理算法友好
缺点:数据量大;不符合人眼特性(人眼对亮度敏感、对色度不敏感)

典型场景:显示器、OpenCV、图像算法中间结果

RGB565 - 嵌入式设备常见

1
R0 G0 B0 | R1 G1 B1 | R2 G2 B2 | ...

内存布局和 RGB888 一样,不过每个颜色占用的位数更小,适用于内存受限的嵌入式设备。

需要注意,使用 opencv 时:

1
cv2.imread()

读取出来实际上是:BGR,而不是:RGB,这会导致:红色变蓝色。

五、YUV —— 亮度/色度分离

定义:用 Y(亮度) 和 U/V(色度) 表示颜色。核心思想是色度可以降采样,因为人眼对亮度分辨率敏感、对色彩分辨率不敏感。

为什么能省带宽:

  • Y 保留全部像素
  • U/V 可以只存 1/2 或 1/4

RGB 最大的问题:数据量太大

例如:1920 × 1080 × 3 ≈ 6.22MB,那么 30FPS 带宽约等于 186MB/s。带宽压力巨大。

YUV 将图像拆成:

分量 含义
Y 亮度
U 蓝色差
V 红色差

因为:人眼对亮度敏感,对颜色不敏感。所以:Y 完整保留,U/V 压缩存储。

YUV 在存储上通常分为平面格式(Planar),半平面格式(Semi-Planar)以及打包格式(Packed)。

  • 平面格式有时也称为三面格式(Triplanar),即 Y, U, V 三个分量各自使用单独的数组保存,这种三平面分离的格式比较方便视频编码,例如:YV12、J420、IMC1、I422、J422
  • 半平面格式具有两个平面而不是三个平面,一个平面存储亮度(Y)分量,另一个平面存储两个色度(UV)分量。有时也将它们称为双平面格式(BiPlanar),例如:NV12、NV21
  • 打包格式通常只有一个平面,所有亮度(Y)和色度(UV)数据都交织在一起。有点类似于 RGB 格式,只是使用了不同的色彩空间,例如:AYUV、YUYV、UYVY

常见采样格式:

格式 含义 数据量(相对 RGB)
YUV444 U/V 与 Y 同分辨率 3 字节/像素
YUV422 U/V 水平减半 2 字节/像素
YUV420 U/V 水平和垂直都减半 1.5 字节/像素

5.1 YUV444(无降采样)

每个像素都有独立的 Y、U、V。

1
2
3
4
像素:   (0,0) (1,0) (2,0) (3,0)
Y: Y0 Y1 Y2 Y3
U: U0 U1 U2 U3
V: V0 V1 V2 V3

数据量:3 字节/像素(8bit 时)

图示(每个格子一个完整 YUV):

1
2
3
4
5
┌────┬────┬────┬────┐
│YUV │YUV │YUV │YUV │
├────┼────┼────┼────┤
│YUV │YUV │YUV │YUV │
└────┴────┴────┴────┘

用途:高质量后期、色度需要精确处理的场景。

5.2 YUV422(水平方向色度减半)

每 2 个水平相邻像素共用一组 U、V,Y 不变。

1
2
3
4
像素:   (0,0) (1,0) (2,0) (3,0)
Y: Y0 Y1 Y2 Y3
U: U0 U2
V: V0 V2

即:Y0 Y1 共用 U0 V0;Y2 Y3 共用 U2 V2。

数据量:2 字节/像素(Y 1 + UV 共 1)

图示:

1
2
3
4
┌──────┬──────┬──────┬──────┐
│ Y0 │ Y1 │ Y2 │ Y3 │
│ U0 V0│ │ U2 V2│ │
└──────┴──────┴──────┴──────┘

常见排布:

名称 排布
YUYV (YUY2) Y0 U0 Y1 V0 Y2 U2 Y3 V2
UYVY U0 Y0 V0 Y1 U2 Y2 V2 Y3
YV16 Y 平面 + U 平面 + V 平面(planar)

用途:视频采集卡、专业视频、USB 摄像头

5.3 YUV420(水平和垂直都减半)

每 2×2 的 4 个像素共用一组 U、V,Y 不变。

1
2
3
4
5
6
像素:   (0,0) (1,0) (2,0) (3,0)
(0,1) (1,1) (2,1) (3,1)
Y: Y00 Y10 Y20 Y30
Y01 Y11 Y21 Y31
U: U0 U2
V: V0 V2

即:Y00 Y10 Y01 Y11 共用 U0 V0。

数据量:1.5 字节/像素(Y 1 + UV 共 0.5)

关键:U、V 的分辨率是 Y 的 1/4(宽高各一半)。

图示(以 4×4 为例):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Y 平面 (4×4 = 16 个 Y):
┌────┬────┬────┬────┐
│Y00 │Y10 │Y20 │Y30 │
├────┼────┼────┼────┤
│Y01 │Y11 │Y21 │Y31 │
├────┼────┼────┼────┤
│Y02 │Y12 │Y22 │Y32 │
├────┼────┼────┼────┤
│Y03 │Y13 │Y23 │Y33 │
└────┴────┴────┴────┘

U/V 平面 (2×2 = 4 组):
┌────┬────┐
│U0V0│U2V2│ ← 对应 Y 的左上 2×2 和右上 2×2
├────┼────┤
│U1V1│U3V3│ ← 对应 Y 的左下 2×2 和右下 2×2
└────┴────┘

六、YUYV —— USB 摄像头最常见格式

YUYV(也叫 YUY2,FourCC 代码 YUYV / YUY2)是 YUV422 的一种 packed(打包)排布。

  • 采样格式:YUV422(色度水平减半)
  • 内存排布:packed(Y、U、V 交错,不分区)
  • 数据量:2 字节/像素

核心规则:每 2 个水平相邻像素,共用一组 U、V,按 Y0 U Y1 V 的顺序打包。

1
2
3
字节序:  Y0  U0  Y1  V0  |  Y2  U2  Y3  V2  |  Y4  U4  Y5  V4  | ...
像素: ├─ 像素0 ─┤├─ 像素1 ─┤
└──── 共用 U0 V0 ────┘

关键点:

  • 每 4 个字节表示 2 个像素
  • 第 1 字节:像素 0 的 Y
  • 第 2 字节:像素 0/1 共用的 U
  • 第 3 字节:像素 1 的 Y
  • 第 4 字节:像素 0/1 共用的 V

图示(一行 8 像素):

1
2
3
内存:  Y0 U0 Y1 V0  Y2 U2 Y3 V2  Y4 U4 Y5 V4  Y6 U6 Y7 V6
└──像素0,1──┘ └──像素2,3──┘ └──像素4,5──┘ └──像素6,7──┘
└─共用U0V0─┘ └─共用U2V2─┘ └─共用U4V4─┘ └─共用U6V6─┘

七、NV12 —— 视频行业事实标准

定义:NV12 是 YUV420SP 的一种,属于"半平面(semi-planar)"格式。

内存布局:

1
2
3
[ Y 平面:W×H 字节 ]
[ UV 交错平面:(W/2)×(H/2)×2 字节 ]
U0 V0 U1 V1 U2 V2 ...

UV 平面的 strides, width 与 Y 平面一样长,但 height 仅为 Y 平面的一半。因此一个像素 12 bits,图示(以 4×4 为例):

1
2
3
4
5
6
7
Y Y Y Y
Y Y Y Y
Y Y Y Y
Y Y Y Y
---------
U V U V
U V U V

对比其他 YUV420:

格式 排布 特点
I420 (YU12) Y + U平面 + V平面 三平面
YV12 Y + V平面 + U平面 三平面
NV12 Y + UV交错 两平面(半平面)
NV21 Y + VU交错 两平面,Android 相机常用

为什么用 NV12:

  • GPU/硬件编解码器友好(UV 交错连续,便于硬件读取)
  • 内存对齐简单
  • Android Camera、Intel Media SDK、很多 ISP 输出默认格式

优点:硬件友好、省带宽
缺点:仍是 YUV 家族,需转换才能显示

NV21 与 NV12 唯一区别:

1
2
3
4
5
# NV12
UV UV UV

# NV21
VU VU VU

八、MJPEG —— 运动 JPEG

为什么需要 MJPEG?

1080P@30FPS:

YUYV 需要带宽约为 124MB/s,USB2.0 无法承载。

而 MJPEG 只需要 10~30MB/s。

定义:把视频的每一帧都独立用 JPEG 压缩,然后把这些 JPEG 帧串起来传输/存储。

结构:

1
[JPEG帧1][JPEG帧2][JPEG帧3]...

关键特征:

  • 帧内压缩:每帧独立,不依赖前后帧
  • 有损压缩:压缩率高(可到 1/10~1/20)
  • 可直接解码显示:每帧都是完整图片

对比其他视频编码:

特性 MJPEG H.264/H.265
压缩方式 仅帧内 帧内+帧间
压缩率 中 高
延迟 低 较高
随机访问 任意帧可解 需关键帧
计算复杂度 低 高
带宽 大 小

优点:低延迟、实现简单、每帧独立、硬件要求低
缺点:压缩率不如 H.264,带宽/存储消耗大

典型场景:USB 摄像头、网络摄像头、工业相机、无人机图传、视频监控(低延迟场景)

九、H.264/H.265

需要注意的是,H.264 和 H.265 是视频压缩编码标准,和前面的 RAW/RGB/YUV/NV12/MJPEG 属于完全不同的层次——前面那些是像素格式,H.264/H.265 是压缩编码格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────┐
│ 像素格式层(未压缩 / 原始表示) │
│ RAW → RGB → YUV → NV12 / YUYV / I420 ... │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 压缩编码层(降低码率) │
│ MJPEG(帧内) H.264 H.265 VP9 AV1 ... │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 封装层(容器) │
│ MP4 MKV TS FLV RTP ... │
└─────────────────────────────────────────────┘

关键点:

  • YUV/NV12 是编码器的输入
  • H.264/H.265 是编码器的输出(压缩码流)
  • MP4 等是容器,里面装 H.264/H.265 码流

原始 YUV420 数据量太大:

分辨率 帧率 YUV420 码率
720p 30 ~220 Mbps
1080p 30 ~500 Mbps
4K 60 ~2000 Mbps

而实际网络/存储需求:

  • 在线视频:几 Mbps
  • 蓝光:几十 Mbps
  • 视频通话:几百 kbps

压缩比需要 100~1000 倍。

9.1 H.264

全称:H.264 / MPEG-4 AVC(Advanced Video Coding)
发布:2003 年(ITU-T + ISO/IEC 联合)
别名:AVC、MPEG-4 Part 10

  1. 核心框架
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
输入帧 (YUV420)
│
▼
┌──────────────┐
│ 帧内/帧间预测 │ ← 运动估计、参考帧
└──────────────┘
│
▼
┌──────────────┐
│ 残差 │ = 原帧 - 预测帧
└──────────────┘
│
▼
┌──────────────┐
│ 变换 (DCT) │ 4×4 / 8×8 整数变换
└──────────────┘
│
▼
┌──────────────┐
│ 量化 │ 有损,压缩主要来源
└──────────────┘
│
▼
┌──────────────┐
│ 熵编码 │ CABAC / CAVLC
└──────────────┘
│
▼
H.264 码流
  1. 关键技术

① 帧类型

类型 说明
I 帧 帧内编码,独立可解,关键帧
P 帧 前向预测,参考前面的帧
B 帧 双向预测,参考前后帧

② 宏块(Macroblock)

  • H.264 基本单元是 16×16 宏块
  • 可细分到 16×16、16×8、8×16、8×8、8×4、4×4

③ 运动估计与补偿

  • 在参考帧里找最匹配的块
  • 记录运动矢量(MV),而非像素本身
  • 支持 1/4 像素精度

④ 变换与量化

  • 4×4 / 8×8 整数 DCT
  • 量化步长 QP(0~51),越大压缩越狠、画质越差

⑤ 熵编码

  • CAVLC:上下文自适应变长编码,简单
  • CABAC:上下文自适应二进制算术编码,压缩率高 10~15%,但慢

⑥ 环路滤波

  • 去块滤波(Deblocking Filter)
  • 消除块效应
  1. Profile 与 Level
Profile 用途
Baseline 视频通话、低延迟
Main 标清/高清广播
High 蓝光、高清存储
High 10 10bit
High 4:4:4 专业

Level:限制分辨率、码率、宏块数等(如 Level 4.1 支持 1080p30)

  1. 优缺点

优点:

  • 压缩率高(比 MPEG-2 高 2~3 倍)
  • 兼容性极好,几乎所有设备支持
  • 硬件编解码成熟

缺点:

  • 相比 H.265 压缩率低
  • 4K/8K 下码率仍偏高

9.2 H.265

全称:H.265 / HEVC(High Efficiency Video Coding)
发布:2013 年
目标:在相同画质下,码率比 H.264 降低 50%

  1. 相对 H.264 的改进
方面 H.264 H.265
基本单元 16×16 宏块 CTU 最大 64×64
块划分 固定几种 四叉树灵活划分
变换 4×4 / 8×8 4×4 ~ 32×32
帧内预测 9 种方向 35 种方向
运动补偿 1/4 像素 1/4 像素 + 更多模式
熵编码 CABAC/CAVLC 仅 CABAC(改进版)
并行处理 有限 Tile、WPP
环路滤波 Deblocking Deblocking + SAO
  1. 关键技术

① CTU(Coding Tree Unit)

  • 最大 64×64
  • 用四叉树递归划分到 8×8
  • 大块适合平坦区,小块适合细节区

② 35 种帧内预测方向

  • H.264 只有 9 种
  • 更精确的方向预测 → 残差更小

③ SAO(Sample Adaptive Offset)

  • 在去块滤波后,逐像素补偿
  • 减少振铃效应,提升画质

④ WPP / Tile 并行

  • Wavefront Parallel Processing
  • 多核并行编码/解码
  1. Profile 与 Level
Profile 用途
Main 8bit 4:2:0
Main 10 10bit 4:2:0(HDR)
Main Still Picture 单帧图像
Main 4:4:4 专业
  1. 优缺点

优点:

  • 压缩率比 H.264 高 50%
  • 支持 4K/8K、HDR、10bit
  • 适合带宽受限场景

缺点:

  • 专利授权复杂(多个专利池)
  • 编码复杂度高(比 H.264 高 2~10 倍)
  • 老旧设备不支持
  • 浏览器支持不如 H.264 广泛

十、常见格式数据量对比

以 1920×1080 为例:

格式 每像素占用 单帧大小
RGB888 3 Byte 6.22 MB
YUYV 2 Byte 4.15 MB
NV12 1.5 Byte 3.11 MB
MJPEG 压缩后 0.1~1 MB

常用图像格式介绍
http://example.com/2026/08/15/常用图像格式介绍/
作者
Yu xin
发布于
2026年8月15日
许可协议