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} }