Inspired by frame-based pre-processing techniques that reduce an image to a set of features, which are typically the input to higher-level algorithms, we propose a method to reduce an event stream to a corner event stream. Our goal is twofold: extract relevant tracking information (corners do not suffer from the aperture problem) and decrease the event rate for later processing stages. Our event-based corner detector is very efficient due to its design principle, which consists of working on the Surface of Active Events (a map with the timestamp of the latest event at each pixel) using only comparison operations. Our method asynchronously processes event by event with very low latency. Our implementation is capable of processing a million events per second on a single core (less than a micro-second per event) and reduces the event rate by a factor of 10 to 20.
Left: image with all events, right: image with only corner events. Event color depicts polarity (i.e., the sign of the brightness change).
This code also contains the Spatially-Adaptive Harris Method used for comparison. For more details, please read our BMVC'17 paper or have look at the poster.
If you use this code in an academic context, please cite the following BMVC'17 publication:
E. Mueggler, C. Bartolozzi, D. Scaramuzza: Fast Event-based Corner Detection. British Machine Vision Conference (BMVC), London, 2017.
@inproceedings{Mueggler17BMVC,
author = {Mueggler, Elias and Bartolozzi, Chiara and Scaramuzza, Davide},
title = {Fast Event-based Corner Detection},
booktitle = {British Machine Vision Conference (BMVC)},
year = {2017}
}
This code has been tested with ROS kinetic on Ubuntu 16.04. This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed. The source code is released under a GNU General Public License (GPL). For a commercial license, please contact the Davide Scaramuzza
- Install the DVS/DAVIS ROS driver (you only need the
dvs_msgs
anddvs_renderer
packages). - Clone the repository to your ROS workspace
git clone https://github.com/uzh-rpg/rpg_corner_events
- Build it using the following command:
roscd corner_event_detector catkin build --this
To get a bag file from the Event-Camera Dataset:
wget http://rpg.ifi.uzh.ch/datasets/davis/shapes_6dof.bag
Run the detector and visualization launch file:
roslaunch corner_event_detector bag.launch
In a separate terminal, run a bag file, e.g.:
rosbag play shapes_6dof.bag
Please run the file:
roslaunch corner_event_detector davis_live.launch