Sample implementation of the method described in
@InProceedings{Balntas_2015_CVPR, author = {Balntas, Vassileios and Tang, Lilian and Mikolajczyk, Krystian}, title = {BOLD - Binary Online Learned Descriptor For Efficient Image Matching}, journal = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, month = {June}, year = {2015} }
Download the paper from http://www.iis.ee.ic.ac.uk/~vbalnt/bold/BOLD-Binary-Online-Learned-Descriptor.pdf
Steffen Urban has an alternative implementation of BOLD, with more
openCV
friendly test definitions.
In order to run the example described in main.cpp
you need to download the sample datasets from http://www.iis.ee.ic.ac.uk/~vbalnt/bold/dataset-ubc-bold.tar.gz
and extract the file inside the main git folder.
To compile the code type
cmake .
make
and run ./bold
to run a simple patches experiment on the notredame
dataset from from the
UBC Patches Dataset
The program will run print a series of evaluation results for the patch pairs from the dataset above eg.
0 296 136
1 125 31
1 237 77
.
.
.
1 147 39
0 292 136
1 125 26
The first column contains the patch pair label (0 negative, 1 positive), the second row contains the unmasked distance between the two patches of the pair, and the third the masked distance using the methodology described in our paper.
Notice that the new masked distance in the case of positive patches is (in terms of ratio) much smaller than the original compared to the negative patches. This confirms the findings that the masked distance is more discriminative.
Currently the BOLD code works with 32x32
patches. In order to
generalize it, convert the indexes of the patch tests in the
bold.descr
file.