Scene flow represents the 3D cartesian motion of points in the world and can be used for applications such as: navigation in dynamic environments, human-robot interaction or non-rigid motion analysis, among others. Despite the potential benefits of event cameras for motion estimation tasks due to their high temporal resolution and low-latency, not many works have yet addressed their use for scene flow estimation. Progress may be limited by the unconventional data adding complexity to established processing pipelines, but also due to the lack of event camera datasets with scene flow ground truth. With the aim of filling this gap, we present E-MOTION: a large and versatile dataset recorded with high-resolution event cameras suitable for depth, optical flow and scene flow estimation. Moreover, it features a number of independent moving objects for which ground truth poses and segmentation masks are also available. We release a total of 43 sequences with dense ground truth maps and poses at 200 Hz.
CITATION
@inproceedings{rodriguez2026emotion,
title={E-MOTION: A Dataset for Event-Based Scene Flow Estimation with Independent Moving Objects},
author={Gutierrez Rodriguez, Ivan and Moreau, Julien and Bartolozzi, Chiara and Glover, Arren},
booktitle={European Conference on Computer Vision},
year={2026},
organization={Springer}
}
LICENSE
This dataset is provided under the ODbL v1.0 license. This means that the data can be freely shared, modified, and used, provided that proper credit is given and any redistributed or publicly used modified database is kept open under the same license.
CONTACT
igrodriguez@utc.fr
Data is provided in HDF5 files. Each sequence is composed of two files: events.h5 containing the event streams of both cameras and gt.h5 containing all ground truth maps and poses. Both files contain all calibration and rectification information. Please use the menus below to explore the HDF5 groups, attributes, and datasets in each of them.
Event data is compressed using Blosc2 with the ZSTD codec.
events.h5
disparity_to_depth
float32
[4x4]
Q matrix to recover depth from disparity images (see OpenCV docs).
left
sensor_resolution
int32
[2]
Camera sensor resolution. The format is \( [h \: w] \).
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the left camera (see OpenCV docs).
dist_coeffs
float32
[4]
Distortion parameters of the left camera. We use a radial-tangential distortion model with 2 parameters for each type of distortion. The format of the vector is \( [k_1 \: k_2 \: p_1 \: p_2] \) (see OpenCV docs).
extrinsics
float32
[4x4]
Transformation matrix \({}^LT_R\) from left camera \(L\) to right camera \(R\). It transforms points in the \(R\) coordinate frame into the \(L\) coordinate frame.
events
duration
uint64
[1]
Sequence duration in microseconds.
num_events
uint64
[1]
Number of events recorded with the left camera.
t_offset
uint64
[1]
Time offset in microseconds that must be added to the timestamps of the events to have them in the same clock as the ground truth (similar to DSEC).
ms_to_idx
uint64
[Nms]
Mapping from milliseconds to event indices (similar to DSEC).
t
uint32
[Nev]
Timestamps of the events in microseconds.
x
uint16
[Nev]
Column indices of the events.
y
uint16
[Nev]
Row indices of the events.
p
uint8
[Nev]
Polarities of the events.
rect
R
float32
[3x3]
Rotation matrix from the rectified left camera \(R_L\) to the left camera \(L\). It transforms points in the \(L\) coordinate frame into the \(R_L\) coordinate frame.
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the rectified left camera (see OpenCV docs).
right
sensor_resolution
int32
[2]
Camera sensor resolution. The format is \( [h \: w] \).
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the right camera (see OpenCV docs).
dist_coeffs
float32
[4]
Distortion parameters of the right camera. We use a radial-tangential distortion model with 2 parameters for each type of distortion. The format of the vector is \( [k_1 \: k_2 \: p_1 \: p_2] \) (see OpenCV docs).
extrinsics
float32
[4x4]
Transformation matrix \({}^RT_L\) from right camera \(R\) to left camera \(L\). It transforms points in the \(L\) coordinate frame into the \(R\) coordinate frame.
events
duration
uint64
[1]
Sequence duration in microseconds.
num_events
uint64
[1]
Number of events recorded with the right camera.
t_offset
uint64
[1]
Time offset in microseconds that must be added to the timestamps of the events to have them in the same clock as the ground truth (similar to DSEC).
ms_to_idx
uint64
[Nms]
Mapping from milliseconds to event indices (similar to DSEC).
t
uint32
[Nev]
Timestamps of the events in microseconds.
x
uint16
[Nev]
Column indices of the events.
y
uint16
[Nev]
Row indices of the events.
p
uint8
[Nev]
Polarities of the events.
rect
R
float32
[3x3]
Rotation matrix from the rectified right camera \(R_R\) to the right camera \(R\). It transforms points in the \(R\) coordinate frame into the \(R_R\) coordinate frame.
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the rectified right camera (see OpenCV docs).
gt.h5
disparity_to_depth
float32
[4x4]
Q matrix to recover depth from disparity images (see OpenCV docs).
num_images
int32
[1]
Number of ground truth samples in the sequence.
num_imos
int32
[1]
Number of independent moving objects in the sequence.
time_stamps
float64
[Nim]
Timestamps of the ground truth samples in the sequence in seconds.
left
sensor_resolution
int32
[2]
Camera sensor resolution. The format is \( [h \: w] \).
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the left camera (see OpenCV docs).
dist_coeffs
float32
[4]
Distortion parameters of the left camera. We use a radial-tangential distortion model with 2 parameters for each type of distortion. The format of the vector is \( [k_1 \: k_2 \: p_1 \: p_2] \) (see OpenCV docs).
extrinsics
float32
[4x4]
Transformation matrix \({}^LT_R\) from left camera \(L\) to right camera \(R\). It transforms points in the \(R\) coordinate frame into the \(L\) coordinate frame.
depth
uint16
[NimxHxW]
Ground truth depth maps for the left camera. Depth values are in cm.
optical_flow
int16
[NimxHxWx2]
Ground truth optical flow maps for the left camera. Optical flow vectors are in px/s.
scene_flow
int16
[NimxHxWx3]
Ground truth scene flow maps for the left camera. Scene flow vectors are in cm/s.
pose
float64
[Nimx7]
Pose of the left camera. Format: \([x \: y \: z \: q_w \: q_x \: q_y \: q_z]\).
rect
R
float32
[3x3]
Rotation matrix from the rectified left camera \(R_L\) to the left camera \(L\). It transforms points in the \(L\) coordinate frame into the \(R_L\) coordinate frame.
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the rectified left camera (see OpenCV docs).
depth
uint16
[NimxHxW]
Ground truth depth maps for the rectified left camera. Depth values are in cm.
optical_flow
int16
[NimxHxWx2]
Ground truth optical flow maps for the rectified left camera. Optical flow vectors are in px/s.
scene_flow
int16
[NimxHxWx3]
Ground truth scene flow maps for the rectified left camera. Scene flow vectors are in cm/s.
right
sensor_resolution
int32
[2]
Camera sensor resolution. The format is \( [h \: w] \).
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the right camera (see OpenCV docs).
dist_coeffs
float32
[4]
Distortion parameters of the right camera. We use a radial-tangential distortion model with 2 parameters for each type of distortion. The format of the vector is \( [k_1 \: k_2 \: p_1 \: p_2] \) (see OpenCV docs).
extrinsics
float32
[4x4]
Transformation matrix \({}^RT_L\) from right camera \(R\) to left camera \(L\). It transforms points in the \(L\) coordinate frame into the \(R\) coordinate frame.
depth
uint16
[NimxHxW]
Ground truth depth maps for the right camera. Depth values are in cm.
optical_flow
int16
[NimxHxWx2]
Ground truth optical flow maps for the right camera. Optical flow vectors are in px/s.
scene_flow
int16
[NimxHxWx3]
Ground truth scene flow maps for the right camera. Scene flow vectors are in cm/s.
pose
float64
[Nimx7]
Pose of the right camera. Format: \([x \: y \: z \: q_w \: q_x \: q_y \: q_z]\).
rect
R
float32
[3x3]
Rotation matrix from the rectified right camera \(R_R\) to the right camera \(R\). It transforms points in the \(R\) coordinate frame into the \(R_R\) coordinate frame.
camera_matrix
float32
[3x3]
Camera matrix with intrinsic parameters of the rectified right camera (see OpenCV docs).
depth
uint16
[NimxHxW]
Ground truth depth maps for the rectified right camera. Depth values are in cm.
optical_flow
int16
[NimxHxWx2]
Ground truth optical flow maps for the rectified right camera. Optical flow vectors are in px/s.
scene_flow
int16
[NimxHxWx3]
Ground truth scene flow maps for the rectified right camera. Scene flow vectors are in cm/s.
imo_i ( i \(\in\) [0, Nimos - 1] )
name
str
[NA]
Name of the independent moving object (IMO).
pose
float64
[Nimx7]
Pose of the IMO with respect to the left camera. Format: \([x \: y \: z \: q_w \: q_x \: q_y \: q_z]\).
left
mask
uint8
[NimxHxW]
Segmentation masks of the IMO in the left camera.
rect
mask
uint8
[NimxHxW]
Segmentation masks of the IMO in the rectified left camera.
right
mask
uint8
[NimxHxW]
Segmentation masks of the IMO in the right camera.
rect
mask
uint8
[NimxHxW]
Segmentation masks of the IMO in the rectified right camera.