04 数据格式参考
事件相机数据在不同环节会以不同格式出现:传感器原始输出、标准事件流、可视化文本。本页汇总我方涉及的四种格式。事件原理见 基础原理,编解码 API 见 Toolkit API。
格式速查
| 格式 | 是什么 | 何时遇到 | 转换工具 |
|---|---|---|---|
| RAW8 | MIPI 原始数据包(板载录制) | RDK X5 等载板上 evs_live_player 录制得到 | raw8_to_evt2 |
| EVT2 | 标准事件流(与 Metavision 兼容) | 上位机、算法库的标准输入输出 | evt2_to_csv / MultiVision Studio |
| HVEventsFormat | 64 位紧凑事件编码(我方优化格式) | Toolkit 内部高效存储/传输 | Toolkit 编解码 API |
| CSV | 人类可读文本(x,y,p,t) | 离线分析、Python/MATLAB 处理 | evt2_to_csv |
EVT2(标准事件流)
EVT2 是与 Metavision SDK 兼容的标准事件流格式,我方 Windows 上位机(MultiVision Studio)与 Ubuntu 算法库均以其为标准输入输出。文件头结构:
struct EVT2Header {
std::string format_line; // 格式行
std::string integrator; // 集成器名称
std::string date; // 创建日期
uint32_t width; // 传感器宽度
uint32_t height; // 传感器高度
uint64_t start_timestamp; // 起始时间戳(微秒)
};事件通过 EventCDEncoder/EVT2Decoder 编解码(CD 事件),EventTriggerEncoder 处理外部触发事件,EventTimeEncoder 处理时间戳高位编码(N_LOWER_BITS_TH = 6,REDUNDANCY_FACTOR = 4)。类型 Timestamp = uint64_t(微秒)。完整 API 见 Toolkit API — hv_evt2_codec.h。
RAW8(MIPI 原始数据包)
RDK X5 等载板上,evs_live_player 录制时默认保存为 RAW8(MIPI 原始数据包)。RAW8 不能直接被上位机或算法库读取,需先转换为 EVT2:
./raw8_to_evt2 /userdata/hand_wave.RAW8 /userdata/output.raw为什么要先存 RAW8 再转 EVT2
高帧率时实时解码并显示会超出 CPU 算力(大于 120FPS 时画面卡顿)。录制时只保存原始包到内存,后续再用 raw8_to_evt2 转为标准 EVT2,兼顾实时显示与完整数据。
HVEventsFormat(64 位紧凑编码)
我方 Toolkit 提供的优化 64 位事件编码,用于高效存储与传输:
| 字段 | 位数 | 范围 |
|---|---|---|
| 时间戳 | 43 位 | 支持更长时序 |
| X 坐标 | 10 位 | 0–1023 |
| Y 坐标 | 10 位 | 0–1023 |
| 极性 | 1 位 | 0 / 1 |
魔数 HV_RAW_MAGIC = 0x48565241("HVRA")。提供单事件与批量编解码:encode_hv_event / decode_hv_event / encode_hv_events_batch / decode_hv_events_batch。完整接口见 Toolkit API — hv_events_format.h。
CSV(人类可读文本)
EVT2 可导出为 CSV,便于在 Excel 查看、用 Python/MATLAB 分析、用可视化工具绘图。列定义:
x,y,polarity,timestamp
352,240,1,1234567890
120,180,0,1234567920| 列 | 含义 | 取值 |
|---|---|---|
x | 横坐标 | 0 ~ (宽度-1),取决于传感器(如 768 宽 → 0–767;4096 宽 → 0–4095) |
y | 纵坐标 | 0 ~ (高度-1) |
polarity | 极性 | 0(变暗)/ 1(变亮) |
timestamp | 时间戳 | 微秒 |
./evt2_to_csv /userdata/hand_wave.raw /userdata/events.csv注意
长时间录制导出的 CSV 可能达数百 MB,直接打开易卡死,建议用脚本流式处理。Python 读取与分析示例见 Python 教程。
格式选择建议
- 板载录制(RDK X5 等):先存 RAW8,再按需转 EVT2。
- 上位机 / 算法库处理:统一用 EVT2。
- 跨平台交换、归档:EVT2(标准、紧凑)。
- 离线数据分析、入门调试:CSV(可读,但体积大)。
- 高性能内部管线:HVEventsFormat(64 位紧凑)。
