Home

Awesome

Keypoint-Learning

Description

This framework demonstrates the use of a random forest, trained with the method proposed in [1], as a keypoints detector. The framework is composed by three different projects:

If you use this code please refer to:

[1] Learning a Descriptor-Specific 3D Keypoint Detector, Samuele Salti, Federico Tombari, Riccardo Spezialetti, Luigi Di Stefano; The IEEE International Conference on Computer Vision (ICCV), 2015, pp. 2318-2326.

[2] Learning to Detect Good 3D Keypoints, Alessio Tonioni, Samuele Salti, Federico Tombari, Riccardo Spezialetti, Luigi Di Stefano; International Journal of Computer Vision (IJCV), 2017.

Usage

GenerateTrainingSet: implementation of training set generation for random forest train describer in[1].

The algorithm requires a set of calibrated 2.5D views of 3d objects (divided into folders: object_name/2.5D_views/), along with two files, groundTruth.txt containing groundtruth matrix (affine transformation from 2.5D views to full 3d model) and overlappingAreas.txt a list of overalapping areas between 2.5D pairs. For details, refer to the examples in: data/example_groundTruth.txt and data/example_overlappingAreas.txt.

For what concern the descriptor to use, the algorithm is customizable by modifying the function computeDescriptorsPerView() in view_manager.hpp.

To increase efficiency, is possible to enable multithreading defining global variables: MULTITHREAD and MULTIVIEW. The required console arguments are the following:

TrainDetector: this sample train and save random forest using features described in [1]. The required console arguments are the following:

TestDetector: example of keypoints detection on point cloud. The required console arguments are the following:

Data

The folder random_forest contains trained random forest for Laser Scanner dataset:

The folder point_cloud contains examples of 2.5D views obtained from Laser Scanner dataset.

Dependencies

The code has been tested on Windows 10 and Microsoft Visual Studio 2015.