@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.
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.
This code was tested on Ubuntu 20.04 distro.
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
- Specific version of OpenCV:
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
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
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>
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.
For the following, we assume you are either inside the Docker container or in the root of the code after manually compiling.
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
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
The ETTCM code is licensed under CC BY-NC-SA 4.0. Commercial usage is not permitted.