This module provides generic container for features and associated descriptors.


Provide basic structure and IO to store Point based features.

Classes to store point characteristics:

  • PointFeature
    • Store the position of a feature (x,y).
  • SIOPointFeature
    • Store the position, orientation and scale of a feature (x,y,s,o).


Provide basic structure and IO for descriptor data.

  • template <typename T, std::size_t N> class Descriptor.
    • Store N value(s) of type T as contiguous memory.
// SIFT like descriptor
using siftDescriptorData Descriptor<float, 128>;

// SURF like descriptor
using surfDescriptorData = Descriptor<float, 64>;

// Binary descriptor (128 bits)
using binaryDescriptor_bitset = Descriptor<std::bitset<128>,1> binaryDescriptor_bitset;
// or using unsigned chars
using binaryDescriptor_uchar = Descriptor<unsigned char, 128/sizeof(unsigned char)>;


Store a collection of features and their associated descriptors: template<typename FeaturesT, typename DescriptorsT> class KeypointSet. Basic IO is provided.

// Define SIFT Keypoints:

// Define the SIFT descriptor [128 floating point value]
using Descriptor<float, 128> DescriptorT;

// Use SIFT compatible features (scale, orientation and position)
using FeatureT = SIOPointFeature;

// Describe what a collection of local feature is for a given image:
using FeatsT = std::vector<FeatureT>;
using DescsT = std::vector<DescriptorT>;

// Link features and their descriptors as a collection:
using KeypointSetT = KeypointSet<FeatsT, DescsT>;