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
typedef Descriptor<float, 128> siftDescriptorData;

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

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


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]
typedef Descriptor<float, 128> DescriptorT;

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

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

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