|
Ocean
|
This class implements a Vocabulary Forest holding several Vocabulary Trees. More...
#include <VocabularyTree.h>
Public Types | |
| typedef TDescriptor | Descriptor |
| The descriptor type of this forest. | |
| typedef TDistance | Distance |
| The distance data type of this forest. | |
| typedef std::vector< TDescriptor > | TDescriptors |
| Definition of a vector holding descriptors. | |
| typedef std::vector< TDistance > | TDistances |
| Definition of a vector holding distances. | |
| typedef VocabularyTree< TDescriptor, TDistance, tDistanceFunction > | TVocabularyTree |
| Definition of the Vocabulary Tree object. | |
| using | Match = Match< TDistance > |
| Definition of a Match object using the distance data type of this tree. | |
| using | Matches = Matches< TDistance > |
| Definition of a vector holding Match objects. | |
| using | ClustersMeanFunction = TDescriptors(*)(const unsigned int numberClusters, const TDescriptor *treeDescriptors, const Index32 *descriptorIndices, const Index32 *clusterIndicesForDescriptors, const size_t numberDescriptorIndices, Worker *worker) |
| Definition of a function pointer allowing to determine the mean descriptors for individual clusters. | |
| template<typename TMultiDescriptor > | |
| using | MultiDescriptorFunction = const TDescriptor *(*)(const TMultiDescriptor &, const size_t) |
| Definition of a function pointer to a function allowing to return individual descriptors from a multi-descriptor. | |
| template<typename TMultiDescriptorGroup , typename TMultiDescriptor > | |
| using | MultiDescriptorGroupFunction = const TMultiDescriptor *(*)(const TMultiDescriptorGroup &, const size_t) |
| Definition of a function pointer to a function allowing to return individual multi-descriptors from a group of multi-descriptors. | |
| using | ReusableData = typename TVocabularyTree::ReusableData |
| Re-definition of the ReusableData object. | |
Public Types inherited from Ocean::Tracking::VocabularyStructure | |
| enum | InitializationStrategy : uint32_t { IS_INVALID = 0u , IS_PURE_RANDOM , IS_LARGEST_DISTANCE } |
| Definition of individual strategies to initialize the clustering of each tree node. More... | |
| enum | MatchingMode : uint32_t { MM_INVALID = 0u , MM_FIRST_BEST_LEAF , MM_ALL_BEST_LEAVES , MM_ALL_GOOD_LEAVES_1 , MM_ALL_GOOD_LEAVES_2 } |
| Definition of individual matching modes for descriptors. More... | |
| template<typename TDistance > | |
| using | Matches = std::vector< Match< TDistance > > |
| Definition of a vector holding matches. | |
Public Member Functions | |
| VocabularyForest ()=default | |
| Creates a new empty forest without trees. | |
| VocabularyForest (const size_t numberTrees, const TDescriptor *treeDescriptors, const size_t numberTreeDescriptors, const ClustersMeanFunction &clustersMeanFunction, const Parameters ¶meters=Parameters(), Worker *worker=nullptr, RandomGenerator *randomGenerator=nullptr) | |
| Creates a new forest with several trees for given descriptors. | |
| template<MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| Index32 | matchDescriptor (const TDescriptor *candidateDescriptors, const TDescriptor &queryDescriptor, TDistance *distance=nullptr, const ReusableData &reusableData=ReusableData()) const |
| Matches a query descriptor with all candidate descriptors in this forest. | |
| template<MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| Index32 | matchMultiDescriptor (const TDescriptor *candidateDescriptors, const TDescriptor *queryMultiDescriptor, const size_t numberQuerySingleDescriptors, TDistance *distance=nullptr, const ReusableData &reusableData=ReusableData()) const |
| Matches a query multi-descriptor with all candidate descriptors in this forest. | |
| template<typename TMultiDescriptor , MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| Index32 | matchMultiDescriptor (const TDescriptor *candidateDescriptors, const TMultiDescriptor &queryMultiDescriptor, TDistance *distance=nullptr, const ReusableData &reusableData=ReusableData()) const |
| Matches a query multi-descriptor with all candidate descriptors in this forest. | |
| template<typename TMultiDescriptorGroup , typename TMultiDescriptor , MultiDescriptorGroupFunction< TMultiDescriptorGroup, TMultiDescriptor > tMultiDescriptorGroupFunction, MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| Index32 | matchMultiDescriptorGroup (const TDescriptor *candidateDescriptors, const TMultiDescriptorGroup &queryMultiDescriptorGroup, TDistance *distance=nullptr, const ReusableData &reusableData=ReusableData()) const |
| Matches a query group of multi-descriptors with all candidate descriptors in this forest. | |
| template<MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| void | matchDescriptors (const TDescriptor *candidateDescriptors, const TDescriptor *queryDescriptors, const size_t numberQueryDescriptors, const TDistance maximalDistance, Matches &matches, Worker *worker=nullptr) const |
| Matches several query descriptors with all candidate descriptors in this forest. | |
| template<typename TMultiDescriptor , MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| void | matchMultiDescriptors (const TDescriptor *candidateDescriptors, const TMultiDescriptor *queryMultiDescriptors, const size_t numberQueryMultiDescriptors, const TDistance maximalDistance, Matches &matches, Worker *worker=nullptr) const |
| Matches several query multi-descriptors with all candidate descriptors in this forest. | |
| template<typename TMultiDescriptorGroup , typename TMultiDescriptor , MultiDescriptorGroupFunction< TMultiDescriptorGroup, TMultiDescriptor > tMultiDescriptorGroupFunction, MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode = MM_FIRST_BEST_LEAF> | |
| void | matchMultiDescriptorGroups (const TDescriptor *candidateDescriptors, const TMultiDescriptorGroup *queryMultiDescriptorGroups, const size_t numberQueryMultiDescriptorGroups, const TDistance maximalDistance, Matches &matches, Worker *worker=nullptr) const |
| Matches several query groups of multi-descriptors with all candidate descriptors in this forest. | |
Public Member Functions inherited from Ocean::Tracking::VocabularyStructure | |
| virtual | ~VocabularyStructure ()=default |
| Destructs this object. | |
Static Public Attributes | |
| static constexpr TDistance(* | distanceFunction )(const TDescriptor &, const TDescriptor &) = tDistanceFunction |
| The pointer to the function determining the distance between two descriptors of this forest. | |
Protected Types | |
| typedef std::vector< TVocabularyTree > | TVocabularyTrees |
| Definition of a vector holding VocabularyTree objects. | |
Protected Member Functions | |
| template<MatchingMode tMatchingMode> | |
| void | matchDescriptorsSubset (const TDescriptor *candidateDescriptors, const TDescriptor *queryDescriptors, const TDistance maximalDistance, Matches *matches, Lock *lock, const unsigned int firstQueryDescriptor, const unsigned int numberQueryDescriptors) const |
| Matches a subset of several query descriptors with all forest candidate descriptors. | |
| template<typename TMultiDescriptor , MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode> | |
| void | matchMultiDescriptorsSubset (const TDescriptor *candidateDescriptors, const TMultiDescriptor *queryMultiDescriptors, const TDistance maximalDistance, Matches *matches, Lock *lock, const unsigned int firstQueryMultiDescriptor, const unsigned int numberQueryMultiDescriptors) const |
| Matches a subset of several query multi-descriptors with all forest candidate descriptors. | |
| template<typename TMultiDescriptorGroup , typename TMultiDescriptor , MultiDescriptorGroupFunction< TMultiDescriptorGroup, TMultiDescriptor > tMultiDescriptorGroupFunction, MultiDescriptorFunction< TMultiDescriptor > tMultiDescriptorFunction, MatchingMode tMatchingMode> | |
| void | matchMultiDescriptorGroupsSubset (const TDescriptor *candidateDescriptors, const TMultiDescriptorGroup *queryMultiDescriptorGroups, const TDistance maximalDistance, Matches *matches, Lock *lock, const unsigned int firstQueryMultiDescriptorGroup, const unsigned int numberQueryMultiDescriptorGroups) const |
| Matches a subset of several query groups of multi-descriptors with all candidate descriptors in this forest. | |
Protected Member Functions inherited from Ocean::Tracking::VocabularyStructure | |
| VocabularyStructure ()=default | |
| Default constructor. | |
Protected Attributes | |
| TVocabularyTrees | vocabularyTrees_ |
| The trees of this forest. | |
Additional Inherited Members | |
Static Public Member Functions inherited from Ocean::Tracking::VocabularyStructure | |
| static constexpr Index32 | invalidMatchIndex () |
| Returns an invalid matching index. | |
Static Protected Member Functions inherited from Ocean::Tracking::VocabularyStructure | |
| static std::vector< uint8_t > | generateBitSeparationLookup8 () |
| Returns the lookup table which separates the bits of a byte into 8 individual bytes. | |
This class implements a Vocabulary Forest holding several Vocabulary Trees.
Using several trees with individual clustering can increase the probability to determine the correct descriptor.
| TDescriptor | The data type of the descriptors for which the tree will be created |
| TDistance | The data type of the distance measure between two descriptors, e.g., 'unsigned int', 'float' |
| tDistanceFunction | The pointers to the function able to calculate the distance between two descriptors |
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::ClustersMeanFunction = TDescriptors(*)(const unsigned int numberClusters, const TDescriptor* treeDescriptors, const Index32* descriptorIndices, const Index32* clusterIndicesForDescriptors, const size_t numberDescriptorIndices, Worker* worker) |
Definition of a function pointer allowing to determine the mean descriptors for individual clusters.
| typedef TDescriptor Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::Descriptor |
The descriptor type of this forest.
| typedef TDistance Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::Distance |
The distance data type of this forest.
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::Match = Match<TDistance> |
Definition of a Match object using the distance data type of this tree.
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::Matches = Matches<TDistance> |
Definition of a vector holding Match objects.
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::MultiDescriptorFunction = const TDescriptor*(*)(const TMultiDescriptor&, const size_t) |
Definition of a function pointer to a function allowing to return individual descriptors from a multi-descriptor.
A feature point can be described with a multi-descriptor if the feature point has been seen from individual distances (to be scale invariant to some extent). First function parameter is the multi-descriptor, second parameter is the index of the actual descriptor to return, returns nullptr if the index is out of range
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::MultiDescriptorGroupFunction = const TMultiDescriptor*(*)(const TMultiDescriptorGroup&, const size_t) |
Definition of a function pointer to a function allowing to return individual multi-descriptors from a group of multi-descriptors.
A feature point can be described with a group of multi-descriptors if the feature point has been seen from individual locations or at individual moments in time (e.g., day vs. night). First function parameter is the multi-descriptor group, second parameter is the index of the actual multi-descriptor to return, returns nullptr if the index is out of range
| using Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::ReusableData = typename TVocabularyTree::ReusableData |
Re-definition of the ReusableData object.
| typedef std::vector<TDescriptor> Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::TDescriptors |
Definition of a vector holding descriptors.
| typedef std::vector<TDistance> Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::TDistances |
Definition of a vector holding distances.
| typedef VocabularyTree<TDescriptor, TDistance, tDistanceFunction> Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::TVocabularyTree |
Definition of the Vocabulary Tree object.
|
protected |
Definition of a vector holding VocabularyTree objects.
|
default |
Creates a new empty forest without trees.
| Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::VocabularyForest | ( | const size_t | numberTrees, |
| const TDescriptor * | treeDescriptors, | ||
| const size_t | numberTreeDescriptors, | ||
| const ClustersMeanFunction & | clustersMeanFunction, | ||
| const Parameters & | parameters = Parameters(), |
||
| Worker * | worker = nullptr, |
||
| RandomGenerator * | randomGenerator = nullptr |
||
| ) |
Creates a new forest with several trees for given descriptors.
The given descriptors must not change afterwards, the descriptors must exist as long as the forest exists.
| numberTrees | The number of trees to be created within the forest, with range [1, infinity) |
| treeDescriptors | The descriptors for which the new tree will be created, must be valid |
| numberTreeDescriptors | The number of tree descriptors, with range [1, infinity) |
| clustersMeanFunction | The function allowing to determine the mean descriptors for individual clusters, must be valid |
| parameters | The parameters used to construct the forest, must be valid |
| worker | Optional worker object to distribute the computation |
| randomGenerator | Optional explicit random generator object |
| Index32 Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchDescriptor | ( | const TDescriptor * | candidateDescriptors, |
| const TDescriptor & | queryDescriptor, | ||
| TDistance * | distance = nullptr, |
||
| const ReusableData & | reusableData = ReusableData() |
||
| ) | const |
Matches a query descriptor with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryDescriptor | The query descriptor for which the best matching tree candidate descriptor will be determined |
| distance | Optional resulting distance, nullptr if not of interest |
| reusableData | An reusable object to speedup the search, should be located outside of the function call if several function calls are done after each other |
| tMatchingMode | The mode which is used for matching |
| void Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchDescriptors | ( | const TDescriptor * | candidateDescriptors, |
| const TDescriptor * | queryDescriptors, | ||
| const size_t | numberQueryDescriptors, | ||
| const TDistance | maximalDistance, | ||
| Matches & | matches, | ||
| Worker * | worker = nullptr |
||
| ) | const |
Matches several query descriptors with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryDescriptors | The query descriptors for which the best matching tree candidate descriptors will be determined, can be nullptr if 'numberQueryDescriptors == 0' |
| numberQueryDescriptors | The number of given query descriptors, with range [0, infinity) |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| worker | Optional worker object to distribute the computation |
| tMatchingMode | The mode which is used for matching |
|
protected |
Matches a subset of several query descriptors with all forest candidate descriptors.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryDescriptors | The query descriptors for which the best matching tree candidate descriptors will be determined, must be valid |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| lock | Optional lock when executed in multiple threads in parallel, nullptr otherwise |
| firstQueryDescriptor | The index of the first query descriptor to be handled, with range [0, infinity) |
| numberQueryDescriptors | The number of query descriptors to be handled, with range [1, infinity) |
| tMatchingMode | The mode which is used for matching |
| Index32 Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchMultiDescriptor | ( | const TDescriptor * | candidateDescriptors, |
| const TDescriptor * | queryMultiDescriptor, | ||
| const size_t | numberQuerySingleDescriptors, | ||
| TDistance * | distance = nullptr, |
||
| const ReusableData & | reusableData = ReusableData() |
||
| ) | const |
Matches a query multi-descriptor with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptor | The first single descriptor of the query multi-descriptor for which the best matching tree candidate descriptor will be determined |
| numberQuerySingleDescriptors | The number of single descriptors within the multi-descriptor, with range [1, infinity) |
| distance | Optional resulting distance, nullptr if not of interest |
| reusableData | An reusable object to speedup the search, should be located outside of the function call if several function calls are done after each other |
| tMatchingMode | The mode which is used for matching |
| Index32 Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchMultiDescriptor | ( | const TDescriptor * | candidateDescriptors, |
| const TMultiDescriptor & | queryMultiDescriptor, | ||
| TDistance * | distance = nullptr, |
||
| const ReusableData & | reusableData = ReusableData() |
||
| ) | const |
Matches a query multi-descriptor with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptor | The query multi-descriptor for which the best matching tree candidate descriptor will be determined |
| distance | Optional resulting distance, nullptr if not of interest |
| reusableData | An reusable object to speedup the search, should be located outside of the function call if several function calls are done after each other |
| TMultiDescriptor | The data type of the multi-descriptor |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
| Index32 Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchMultiDescriptorGroup | ( | const TDescriptor * | candidateDescriptors, |
| const TMultiDescriptorGroup & | queryMultiDescriptorGroup, | ||
| TDistance * | distance = nullptr, |
||
| const ReusableData & | reusableData = ReusableData() |
||
| ) | const |
Matches a query group of multi-descriptors with all candidate descriptors in this forest.
A feature point can be described with a group of multi-descriptors if the feature point has been seen from individual locations or at individual moments in time (e.g., day vs. night).
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptorGroup | The query group of multi-descriptors (all representing one query feature) for which the best matching tree candidate descriptor will be determined |
| distance | Optional resulting distance, nullptr if not of interest |
| reusableData | An reusable object to speedup the search, should be located outside of the function call if several function calls are done after each other |
| TMultiDescriptorGroup | The data type of the multi-descriptor group |
| TMultiDescriptor | The data type of the multi-descriptor |
| tMultiDescriptorGroupFunction | The function pointer to a static function allowing to access one multi-descriptor of a group of multi-descriptors, must be valid |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
| void Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchMultiDescriptorGroups | ( | const TDescriptor * | candidateDescriptors, |
| const TMultiDescriptorGroup * | queryMultiDescriptorGroups, | ||
| const size_t | numberQueryMultiDescriptorGroups, | ||
| const TDistance | maximalDistance, | ||
| Matches & | matches, | ||
| Worker * | worker = nullptr |
||
| ) | const |
Matches several query groups of multi-descriptors with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptorGroups | The query groups of multi-descriptors for which the best matching tree candidate descriptors will be determined, can be nullptr if 'numberQueryMultiDescriptors == 0' |
| numberQueryMultiDescriptorGroups | The number of given query groups of multi-descriptors, with range [0, infinity) |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| worker | Optional worker object to distribute the computation |
| TMultiDescriptorGroup | The data type of the multi-descriptor group |
| TMultiDescriptor | The data type of the multi-descriptor |
| tMultiDescriptorGroupFunction | The function pointer to a static function allowing to access one multi-descriptor of a group of multi-descriptors, must be valid |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
|
protected |
Matches a subset of several query groups of multi-descriptors with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptorGroups | The query groups of multi-descriptors for which the best matching tree candidate descriptors will be determined, can be nullptr if 'numberQueryMultiDescriptors == 0' |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| lock | Optional lock when executed in multiple threads in parallel, nullptr otherwise |
| firstQueryMultiDescriptorGroup | The index of the first query group of multi-descriptors to be handled, with range [0, infinity) |
| numberQueryMultiDescriptorGroups | The number of query groups of multi-descriptors to be handled, with range [1, infinity) |
| TMultiDescriptorGroup | The data type of the multi-descriptor group |
| TMultiDescriptor | The data type of the multi-descriptor |
| tMultiDescriptorGroupFunction | The function pointer to a static function allowing to access one multi-descriptor of a group of multi-descriptors, must be valid |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
| void Ocean::Tracking::VocabularyForest< TDescriptor, TDistance, tDistanceFunction >::matchMultiDescriptors | ( | const TDescriptor * | candidateDescriptors, |
| const TMultiDescriptor * | queryMultiDescriptors, | ||
| const size_t | numberQueryMultiDescriptors, | ||
| const TDistance | maximalDistance, | ||
| Matches & | matches, | ||
| Worker * | worker = nullptr |
||
| ) | const |
Matches several query multi-descriptors with all candidate descriptors in this forest.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptors | The query multi-descriptors for which the best matching tree candidate descriptors will be determined, can be nullptr if 'numberQueryMultiDescriptors == 0' |
| numberQueryMultiDescriptors | The number of given query multi-descriptors, with range [0, infinity) |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| worker | Optional worker object to distribute the computation |
| TMultiDescriptor | The data type of a multi-descriptor |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
|
protected |
Matches a subset of several query multi-descriptors with all forest candidate descriptors.
| candidateDescriptors | The entire set of tree candidate descriptors which have been used to create the tree, from which the best matching descriptor will be determined, must be valid |
| queryMultiDescriptors | The query multi-descriptors for which the best matching tree candidate descriptors will be determined, must be valid |
| maximalDistance | The maximal distance between two matching descriptors, with range [0, infinity) |
| matches | The resulting matches |
| lock | Optional lock when executed in multiple threads in parallel, nullptr otherwise |
| firstQueryMultiDescriptor | The index of the first query multi-descriptor to be handled, with range [0, infinity) |
| numberQueryMultiDescriptors | The number of query multi-descriptors to be handled, with range [1, infinity) |
| TMultiDescriptor | The data type of a multi-descriptor |
| tMultiDescriptorFunction | The function pointer to a static function allowing to access one single-descriptor of a multi-descriptor, must be valid |
| tMatchingMode | The mode which is used for matching |
|
staticconstexpr |
The pointer to the function determining the distance between two descriptors of this forest.
|
protected |
The trees of this forest.