Skip to content

Time-to-contact map by joint estimation of up-to-scale inverse depth and global motion using a single event camera

License

Notifications You must be signed in to change notification settings

SpikeAI/2024_time-to-contact-maps

 
 

Repository files navigation

ETTCM

License: CC BY-NC-SA 4.0

Code for Time-to-Contact Map by Joint Estimation of Up-to-Scale Inverse Depth and Global Motion using a Single Event Camera, ICCV 2023

@inproceedings{nunesTimeToContact2023,
	title = {Time-to-Contact Map by Joint Estimation of Up-to-Scale Inverse Depth and Global Motion using a Single Event Camera},
	booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
	author = {Nunes, Urbano Miguel and Perrinet, Laurent Udo and Ieng, Sio-Hoi},
	year = {2023},
	pages = {23653-23663},
}

The authors provide this code in the hope it will be useful for understanding the proposed method, as well as for reproducibility of the results.

For more information and more open-source software please visit the neuromorphic-paris' Github page: https://github.com/neuromorphic-paris.

Datasets

We provide all the sequences evaluated in the paper ready to be used: VL (104.2MB) or run on a terminal

wget https://figshare.com/ndownloader/files/44987794 --output-document 'VL.zip'

The original data can be found here.

Manual Installation

This code was tested on Ubuntu 20.04 distro.

Dependencies

For a complete list of the dependencies you can also refer to the Dockerfile.

  • Base dependencies:
sudo apt-get install build-essential cmake git graphviz pkg-config libeigen3-dev
  • Specific version of Eigen that needs to be installed separately, e.g., in .local folder:
git clone https://gitlab.com/libeigen/eigen.git && cd eigen && git checkout 27367017bd0aef15a67ce76b8e263a94c2508a1c
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=~/.local
cmake --build build
cmake --build build --target install
git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 82ac7ea23620fb13b7b6be225fa1b0e848f5e72d
cd ..
git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout c4027ab7f912a3053175477d41b1a62d0078bc5f
cd ../opencv
cmake -S . -B build -DOPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -DCMAKE_INSTALL_PREFIX=~/.local
cmake --build build
cmake --build build --target install

General

After all the dependencies have been installed, to compile this code, assuming you are on the code directory and the specific versions of Eigen and OpenCV were installed on the .local folder, run on a terminal:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DEigen3_DIR=~/.local/share/eigen3/cmake -DOpenCV_DIR=~/.local/lib/cmake/opencv4 -DETTCM_BUILD_DOC=OFF
cmake --build build

Dockerfile

Just install Docker and then build a container by running on a terminal:

docker build -t <name-of-the-container> .

This will take a while (~6100s or ~1h40m in a standard laptop) since it will build all the necessary packages, including OpenCV. After everything is built, to run inside the container, on a terminal run:

docker run -it <name-of-the-container>

Documentation

To build the documentation, you need to have Doxygen installed:

sudo apt-get install doxygen

Then, recompile:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DEigen3_DIR=~/.local/share/eigen3/cmake -DOpenCV_DIR=~/.local/lib/cmake/opencv4 -DETTCM_BUILD_DOC=ON
cmake --build build
make -C build doc

The documentation is built by default using the Docker file. It can be accessed inside the folder doc.

Experimental Evaluation

For the following, we assume you are either inside the Docker container or in the root of the code after manually compiling.

Tab. 2 Partial Results

Only the 2D-odd and 3D sequences provided are evaluated. To get the partial results in terms of accuracy shown in Tab. 2 just run on a terminal:

bash table_2_partial_results.sh

Tab. 2 Complete Results

You need to download the data provided here, uncompress the zip file and move it to the datasets folder. To get the results in terms of accuracy shown in Tab. 2 just run on a terminal:

bash table_2_results.sh

License

The ETTCM code is licensed under CC BY-NC-SA 4.0. Commercial usage is not permitted.

About

Time-to-contact map by joint estimation of up-to-scale inverse depth and global motion using a single event camera

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.2%
  • CMake 2.9%
  • Shell 2.7%
  • Dockerfile 1.2%