图像数据格式研究:RAW、RGB、YUV 详解

图像数据格式研究:RAW8/RAW10/RGB565/RGB888/YUV
详解

摘要:图像数据格式是数字图像处理的基础。本文系统研究了
RAW8、RAW10、RGB565、RGB888、YUV
等常见图像数据格式的结构、特点、应用场景及转换方法,为嵌入式图像系统设计提供技术参考。


1. 引言

在嵌入式图像处理系统中,选择合适的图像数据格式对系统性能至关重要。格式选择影响:
– 内存占用 – 传输带宽 – 处理速度 – 图像质量 – 功耗

常见格式分类

  • RAW
    格式
    (传感器原始数据):RAW8、RAW10、RAW12、RAW14
  • RGB 格式(真彩色):RGB565、RGB888、RGBA8888
  • YUV 格式(亮度 +
    色度):YUV444、YUV422、YUV420

2. RAW 格式详解

2.1 RAW8 格式

位深度: 8 bit/pixel

内存计算: 图像大小 = 宽度 × 高度 × 1 byte

示例: 1920×1080 RAW8 = 2,073,600 bytes ≈ 2MB

特点:

优点 缺点
内存占用最小 需要 Demosaic 处理
传输带宽最低 不能直接显示
保留传感器原始信息 动态范围有限

应用场景: 资源受限的嵌入式系统、高速图像采集

2.2 RAW10 格式

位深度: 10 bit/pixel

打包方式: 每 4 个像素打包为 5 字节

内存计算: 图像大小 = 宽度 × 高度 × 1.25 bytes

示例: 1920×1080 RAW10 = 2,592,000 bytes ≈ 2.5MB

特点:

优点 缺点
更高动态范围(1024 级) 需要解包处理
更好的低光照表现 内存占用增加 25%
减少量化噪声 处理复杂度略高

应用场景:
高动态范围场景、专业摄影、医疗影像、工业检测


3. RGB 格式详解

3.1 RGB565 格式

位深度: 16 bit/pixel

位分配: – 红色:5 bit (32 级) – 绿色:6 bit (64 级)
– 蓝色:5 bit (32 级)

颜色总数: 65,536 色

内存计算: 图像大小 = 宽度 × 高度 × 2 bytes

示例: 1920×1080 RGB565 = 4,147,200 bytes ≈ 4MB

特点:

优点 缺点
内存占用适中 颜色精度有限
可直接驱动 LCD 绿色渐变可能有 banding
硬件支持广泛 不适合高质量显示

应用场景: 嵌入式 LCD 显示、资源受限的 GUI 系统

3.2 RGB888 格式

位深度: 24 bit/pixel

颜色总数: 1677 万色

内存计算: 图像大小 = 宽度 × 高度 × 3 bytes

示例: 1920×1080 RGB888 = 6,220,800 bytes ≈ 6MB

特点:

优点 缺点
真彩色(1677 万色) 内存占用大
图像质量高 传输带宽高
通用性强 功耗较高

应用场景: 高质量图像显示、图像处理算法输入


4. YUV 格式详解

4.1 YUV 色彩模型

YUV 将图像分为亮度 (Y) 和色度 (U/V)
分量,利用人眼对亮度敏感、对色度不敏感的特性进行压缩。

4.2 采样格式对比

格式 Y 采样 U 采样 V 采样 带宽比例
YUV444 100% 100% 100% 100%
YUV422 100% 50% 50% 67%
YUV420 100% 25% 25% 50%

4.3 YUV420 格式(NV12)

位深度: 平均 12 bit/pixel

内存布局: Y 平面 + UV 交错平面

内存计算: 图像大小 = 宽度 × 高度 × 1.25 bytes

示例: 1920×1080 NV12 = 3,110,400 bytes ≈ 3MB

特点:

优点 缺点
带宽节省 50% 色度分辨率降低
视频编码标准格式 需要转换才能显示
适合压缩编码 处理复杂度较高

应用场景: 视频编码
(H.264/H.265)、视频流传输、视频会议

4.4 YUV422 格式(UYVY)

位深度: 平均 16 bit/pixel

内存计算: 图像大小 = 宽度 × 高度 × 2 bytes

应用场景: USB 摄像头、专业视频采集


5. 格式对比分析

5.1 内存占用对比(1920×1080)

格式 位深 大小 相对比例
RAW8 8 bit 2.0 MB 100%
RAW10 10 bit 2.5 MB 125%
YUV420 12 bit 3.1 MB 150%
RGB565 16 bit 4.0 MB 200%
YUV422 16 bit 4.0 MB 200%
RGB888 24 bit 6.0 MB 300%
RGBA8888 32 bit 8.0 MB 400%

5.2 带宽需求对比(1080p@60fps)

格式 带宽 接口要求
RAW8 995 Mbps MIPI 2 车道
RAW10 1.2 Gbps MIPI 2 车道
YUV420 1.5 Gbps MIPI 4 车道
RGB565 2.0 Gbps MIPI 4 车道
RGB888 3.0 Gbps MIPI 8 车道

5.3 图像质量对比

格式 颜色数 动态范围 适用场景
RAW8 Bayer 8 bit 采集
RAW10 Bayer 10 bit 专业采集
RGB565 65K 5-6 bit 预览
RGB888 16.7M 8 bit 显示/处理
YUV420 16.7M 8 bit 视频编码

6. 格式转换方法

6.1 RGB565 转 RGB888

void rgb565_to_rgb888(uint16_t *rgb565, uint8_t *rgb888, int count) {
    for (int i = 0; i < count; i++) {
        uint16_t pixel = rgb565[i];
        uint8_t r5 = (pixel >> 11) & 0x1F;
        uint8_t g6 = (pixel >> 5) & 0x3F;
        uint8_t b5 = pixel & 0x1F;
        
        rgb888[i * 3] = (r5 << 3) | (r5 >> 2);
        rgb888[i * 3 + 1] = (g6 << 2) | (g6 >> 4);
        rgb888[i * 3 + 2] = (b5 << 3) | (b5 >> 2);
    }
}

6.2 RGB 转 YUV420(BT.601)

Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B + 128
V = 0.615R - 0.515G - 0.100B + 128

6.3 常用转换工具

工具 用途
FFmpeg 视频格式转换
OpenCV 图像格式处理
libyuv Google YUV 库

7. 应用场景推荐

7.1 嵌入式图像采集流程

阶段 推荐格式 理由
传感器输出 RAW10 高动态范围
ISP 处理 RAW10/RGB888 保留质量
内存存储 YUV420 节省空间
显示输出 RGB565 直接驱动

7.2 视频传输

场景 推荐格式 带宽
本地传输 YUV422 中等
网络传输 YUV420 + H.264
高质量传输 RGB888 + 压缩

7.3 图像处理算法

算法 推荐格式 理由
边缘检测 YUV/Y 仅需亮度
色彩处理 RGB888 完整色彩
目标检测 RGB888 深度学习输入
图像增强 RAW10 高动态范围

8. 总结

8.1 格式选择原则

  1. 采集阶段 – 优先 RAW 格式,保留最大信息量
  2. 处理阶段 – 根据算法需求选择 RGB 或 YUV
  3. 传输阶段 – 优先 YUV420,节省带宽
  4. 显示阶段 – 根据显示器选择 RGB565/888

8.2 关键指标对比

指标 最优格式 次优格式
内存效率 RAW8 YUV420
图像质量 RAW14 RGB888
处理速度 RGB565 YUV420
通用性 RGB888 YUV420

8.3 快速参考表

格式 位深 字节/像素 颜色数 主要用途
RAW8 8 1 Bayer 采集
RAW10 10 1.25 Bayer 专业采集
RGB565 16 2 65K 显示
RGB888 24 3 16.7M 处理/显示
YUV420 12 1.5 16.7M 视频
YUV422 16 2 16.7M 视频

参考文献

  1. ITU-R BT.601: Encoding parameters of digital television for
    studios
  2. ITU-R BT.709: Parameter values for the HDTV standards
  3. MIPI Alliance: MIPI CSI-2 Specification
  4. Google: libyuv Library Documentation

本文档最后更新:2026-04-02

通讯更新

请输入您的电子邮件地址进行订阅

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注