In order to reproduce results presented in the paper, follow the procedure below:
- Download the PlaceRecognition and LoopDetection datasets. The datasets structure are the following:
PlaceRecognition
│ stereo_params_sequence1.txt #stereo parameters for SLAM for Sequence1
| stereo_params_sequence2.txt #stereo parameters for SLAM for Sequence2
| SLAM_Poses_Sequence1.txt #poses of Sequence1 obtained by SLAM
| SLAM_Poses_Sequence2.txt #poses of Sequence2 obtained by SLAM
│ road_marking_centroids_sequence1.txt #road markings centroids&label of Sequence1 images (not used for provided codes)
| road_marking_centroids_sequence2.txt #road markings centroids&label of Sequence2 images (not used for provided codes)
| road_marking_centroids_combined.txt #road markings centroids&label of Sequence1 and Sequence2 images (not used for provided codes)
| road_marking_centroids_3Dposition.txt #road markings centroids&label 3D position of both sequences (give path to this to run the codes)
└───Sequence1 #stores rectified images from Left and Right cameras
│ └───Left
│ | 000000.png
│ | 000001.png
│ | ...
│ └───Right
│ 000000.png
│ 000001.png
│ ...
│
└───Sequence2 #stores rectified images from Left and Right cameras
│ └───Left
│ | 000000.png
│ | 000001.png
│ | ...
│ └───Right
│ 000000.png
│ 000001.png
│ ...
LoopDetection
│ stereo_params_sequence.txt #stereo parameters for SLAM for Sequence
| SLAM_Poses_Sequence.txt #poses of Sequence obtained by SLAM
│ road_marking_centroids.txt #road markings centroids&label of Sequence images
| road_marking_centroids_3Dposition.txt #road markings centroids&label 3D position of both sequences (give path to this to run the codes)
└───Sequence #stores rectified images from Left and Right cameras
│ └───Left
│ | 000000.png
│ | 000001.png
│ | ...
│ └───Right
│ 000000.png
│ 000001.png
│ ...
- Provide paths to appropriate files:
- set the following in AlgorithmCode/input_info.txt file ( make sure you do not have spaces in your path!):
- search window size
- path to road_marking_centroids_3Dposition.txt
- path to image_matches.txt (the code creates this file by itself)
- Matlab codes (LoopDetectionDrawPoses.m, VisualizeImageMatches.m, VisualizeMatchedRegionOnMap.m) in both PlaceRecognition and LoopDetection folders contain path parameters that have to be set appropriately.
- Compile main code code (written in cpp) in AlgorithmCode directory using cmake:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release .. #for Release mode
cmake -DCMAKE_BUILD_TYPE=Debug .. #for Debug mode
make
To run the code ./Place_Recognition ../input_info.txt
.
Run Matlab codes from appropriate foldes (PlaceRecognition or LoopDetection) to visualize results.
If you use this code or dataset in your research, please cite:
@article{bailo2017light,
title={Light-weight place recognition and loop detection using road markings},
author={Bailo, Oleksandr and Rameau, Francois and Kweon, In So},
journal={arXiv preprint arXiv:1710.07434},
year={2017}
}