表格

格式 类型 压缩 存储内容 典型用途 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 is not 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)

工程特点

  1. 只能在最前端获取:mipi_cam 底层 VIO 接收层;一旦经过 ISP,输出就不再是 RAW。
  2. 文件后缀常见 .raw / .bayer无法直接使用普通图片软件打开。
  3. 适用场景:镜头标定、调试 Sensor 寄存器、排查曝光 / 噪点问题。
  4. ⚠️ 不能直接送入 FCOS/YOLO 神经网络!网络只能接收 YUV/RGB。

在地平线 Demo【2. 摄像头图像本地保存】中,可以选择抓取 RAW 帧用于底层调试。


2. NV12(YUV420 Semi-Planar,重中之重)

内存布局(关键!)

分为两个平面,连续存放

  1. Y 平面:全部亮度信息(分辨率 H × W)
  2. UV 平面色度信息,U、V 交错存储(分辨率 H/2 × W/2)

plaintext

YYYYYYYY
YYYYYYYY
UVUVUVUV
UVUVUVUV

采样比例 4:2:0:色度分辨率宽高各减半。

嵌入式核心优势(RDK X5 标准)

  1. MIPI 相机 ISP 默认输出格式:你的mipi_cam节点 /image_combine_raw 话题就是 NV12;
  2. 硬件编解码原生支持:hobot_codec H264/H265 编码输入优先使用 NV12;
  3. VPS、BPU 零拷贝友好:地平线硬件单元全部原生支持 NV12,避免转 RGB 带来内存拷贝;
  4. 相比 RGB24 节省 50% 内存带宽

常见坑

  • NV12没有文件头,单纯二进制数据;保存成文件后播放器无法直接打开,必须附带分辨率。
  • AI 推理注意:网络输入要求 RGB 时,需要在 ISP/VPS 或 CPU 完成 NV12→RGB 转换。

3. JPG(JPEG,有损压缩图像)

核心说明

基于 YUV420 进行离散余弦有损压缩,带文件头、元信息,通用图片格式。

在项目里的链路位置

NV12 图像 → hobot 硬件 JPEG 编码器 → JPG 码流 对应你日志里的参数: out_format: jpegjpg_quality:85、websocket 接收/image_combine_jpeg

✅优点:通用、体积小,浏览器直接解码;

❌缺点:

  1. 有损压缩,损失图像细节,不建议送入 AI 目标检测网络;
  2. 多一层编码开销;
  3. 不适合作为算法输入,仅用于预览、上传、存档。

在整套视觉链路中的标准数据流推荐

plaintext

MIPI Sensor → RAW(Bayer) → ISP处理 → NV12(主链路)
├─分支1:NV12直接送入VPS缩放 → FCOS/YOLO推理(最优,无多余转换)
├─分支2:NV12送入硬件JPEG编码器 → JPG → websocket网页预览
├─分支3:NV12送入H264编码器 → .h264视频录像
├─分支4:调试抓帧:保存RAW(底层调试) / 保存NV12(算法调试)

选型决策速查表

  1. AI 算法推理输入 → 优先 NV12(禁止使用 JPG)
  2. 网页远程预览、截图存档JPG
  3. 调试 Sensor、标定镜头、排查底层图像问题RAW
  4. 本地硬件编码录像 → 使用原始 NV12 送入编码器

补充实操(RDK X5)

  1. mipi_cam 输出话题:/image_combine_raw = NV12
  2. hobot_codec:NV12 → JPG / H264
  3. 如果你保存裸 NV12 文件,播放命令示例(必须指定分辨率)

bash

运行

ffplay -f rawvideo -pixel_format nv12 -video_size 1280x720 frame.nv12

p>

运行

ffplay -f rawvideo -pixel_format nv12 -video_size 1280x720 frame.nv12
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐