表格
| 格式 | 类型 | 压缩 | 存储内容 | 典型用途 | CPU 开销 |
|---|---|---|---|---|---|
| JPG | 封装图像(有损压缩) | 有损压缩 | RGB 压缩码流 | 图片存储、网页推流、websocket | 解压开销中等 |
| RAW | 传感器原始裸数据 | 无压缩 | Sensor 光电原始采样(Bayer 拜耳) | 相机底层调试、图像标定 | 极高,必须 ISP 做去马赛克 |
| NV12 | YUV 平面格式(未压缩) | 无压缩 | 亮度 Y + 交错 UV | MIPI 相机输出、硬件编解码、BPU 推理输入 | 极低,嵌入式标准格式 |
1. RAW(Bayer Raw,传感器原始数据)
核心说明
The data directly output by the MIPI camera sensor isnot an image, but merely the photoelectric signal collected by photosensitive diodes. Common formats:RGGB8/RGGB10(OV5647/IMX219/IMX335). Data arrangement example (RGGB):
plaintext
R G R G G B G B R G R G G B G B✅ 需要经过ISP 流水线才能生成可视图像: 去马赛克 (Demosaic) → 白平衡 → 降噪 → 伽马校正 → 输出 YUV (NV12)
工程特点
- 只能在最前端获取:mipi_cam 底层 VIO 接收层;一旦经过 ISP,输出就不再是 RAW。
- 文件后缀常见
.raw/.bayer;无法直接使用普通图片软件打开。 - 适用场景:镜头标定、调试 Sensor 寄存器、排查曝光 / 噪点问题。
- ⚠️不能直接送入 FCOS/YOLO 神经网络!网络只能接收 YUV/RGB。
在地平线 Demo【2. 摄像头图像本地保存】中,可以选择抓取RAW 帧用于底层调试。
2. NV12(YUV420 Semi-Planar,重中之重)
内存布局(关键!)
分为两个平面,连续存放:
- Y 平面:全部亮度信息(分辨率 H × W)
- UV 平面:色度信息,U、V 交错存储(分辨率 H/2 × W/2)
plaintext
YYYYYYYY YYYYYYYY UVUVUVUV UVUVUVUV采样比例 4:2:0:色度分辨率宽高各减半。
嵌入式核心优势(RDK X5 标准)
- MIPI相机 ISP 默认输出格式:你的
mipi_cam节点/image_combine_raw话题就是 NV12; - 硬件编解码原生支持:hobot_codec H264/H265 编码输入优先使用 NV12;
- VPS、BPU 零拷贝友好:地平线硬件单元全部原生支持 NV12,避免转 RGB 带来内存拷贝;
- 相比 RGB24 节省50% 内存带宽。
常见坑
- NV12没有文件头,单纯二进制数据;保存成文件后播放器无法直接打开,必须附带分辨率。
- AI 推理注意:网络输入要求 RGB 时,需要在 ISP/VPS 或 CPU 完成 NV12→RGB 转换。
3. JPG(JPEG,有损压缩图像)
核心说明
基于 YUV420 进行离散余弦有损压缩,带文件头、元信息,通用图片格式。
在项目里的链路位置
NV12 图像 → hobot 硬件 JPEG 编码器 → JPG 码流 对应你日志里的参数:out_format: jpeg、jpg_quality:85、websocket 接收/image_combine_jpeg
✅优点:通用、体积小,浏览器直接解码;
❌缺点:
- 有损压缩,损失图像细节,不建议送入 AI 目标检测网络;
- 多一层编码开销;
- 不适合作为算法输入,仅用于预览、上传、存档。
在整套视觉链路中的标准数据流推荐
plaintext
MIPI Sensor → RAW(Bayer) → ISP处理 → NV12(主链路) ├─分支1:NV12直接送入VPS缩放 → FCOS/YOLO推理(最优,无多余转换) ├─分支2:NV12送入硬件JPEG编码器 → JPG → websocket网页预览 ├─分支3:NV12送入H264编码器 → .h264视频录像 ├─分支4:调试抓帧:保存RAW(底层调试) / 保存NV12(算法调试)选型决策速查表
- AI 算法推理输入→ 优先NV12(禁止使用 JPG)
- 网页远程预览、截图存档→JPG
- 调试 Sensor、标定镜头、排查底层图像问题→RAW
- 本地硬件编码录像→ 使用原始 NV12 送入编码器
补充实操(RDK X5)
- mipi_cam 输出话题:
/image_combine_raw= NV12 - hobot_codec:NV12 → JPG / H264
- 如果你保存裸 NV12 文件,播放命令示例(必须指定分辨率)
bash
运行
ffplay -f rawvideo -pixel_format nv12 -video_size 1280x720 frame.nv12p>
运行
ffplay -f rawvideo -pixel_format nv12 -video_size 1280x720 frame.nv12