图像数据格式研究: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 格式选择原则
- 采集阶段 – 优先 RAW 格式,保留最大信息量
- 处理阶段 – 根据算法需求选择 RGB 或 YUV
- 传输阶段 – 优先 YUV420,节省带宽
- 显示阶段 – 根据显示器选择 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 | 视频 |
参考文献
- ITU-R BT.601: Encoding parameters of digital television for
studios - ITU-R BT.709: Parameter values for the HDTV standards
- MIPI Alliance: MIPI CSI-2 Specification
- Google: libyuv Library Documentation
本文档最后更新:2026-04-02