Struct opencv::line_descriptor::BinaryDescriptorMatcher [−][src]
pub struct BinaryDescriptorMatcher { /* fields omitted */ }
Expand description
furnishes all functionalities for querying a dataset provided by user or internal to class (that user must, anyway, populate) on the model of @ref features2d_match
Once descriptors have been extracted from an image (both they represent lines and points), it becomes interesting to be able to match a descriptor with another one extracted from a different image and representing the same line or point, seen from a differente perspective or on a different scale. In reaching such goal, the main headache is designing an efficient search algorithm to associate a query descriptor to one extracted from a dataset. In the following, a matching modality based on Multi-Index Hashing (MiHashing) will be described.
Multi-Index Hashing
The theory described in this section is based on MIH . Given a dataset populated with binary
codes, each code is indexed m times into m different hash tables, according to m substrings it
has been divided into. Thus, given a query code, all the entries close to it at least in one
substring are returned by search as neighbor candidates. Returned entries are then checked for
validity by verifying that their full codes are not distant (in Hamming space) more than r bits
from query code. In details, each binary code h composed of b bits is divided into m
disjoint substrings , each with length
or
bits. Formally, when two codes h and g differ
by at the most r bits, in at the least one of their m substrings they differ by at the most
bits. In particular, when
(where
is the Hamming norm), there must exist a substring k (with
) such that
That means that if Hamming distance between each of the m substring is strictly greater than
, then
must be larger that r and that is a
contradiction. If the codes in dataset are divided into m substrings, then m tables will be
built. Given a query q with substrings
, i-th hash table is
searched for entries distant at the most
from
and a set of
candidates
is obtained. The union of sets
is a superset of the r-neighbors
of q. Then, last step of algorithm is computing the Hamming distance between q and each
element in
, deleting the codes that are distant more that r from q.
Implementations
Create a BinaryDescriptorMatcher object and return a smart pointer to it.
Constructor.
The BinaryDescriptorMatcher constructed is able to store and manage 256-bits long entries.
Trait Implementations
Stores algorithm parameters in a file storage
simplified API for language bindings Stores algorithm parameters in a file storage Read more
Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read
Saves the algorithm to a file. In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs). Read more
Returns the algorithm string identifier. This string is used as top level xml/yml node tag when the object is saved to a file or string. Read more
For every input query descriptor, retrieve the best matching one from a dataset provided from user or from the one internal to class Read more
For every input query descriptor, retrieve the best k matching ones from a dataset provided from user or from the one internal to class Read more
For every input query descriptor, retrieve, from a dataset provided from user or from the one internal to class, all the descriptors that are not further than maxDist from input query Read more
Store locally new descriptors to be inserted in dataset, without updating dataset. Read more
Update dataset by inserting into it all descriptors that were stored locally by add function. Read more
For every input query descriptor, retrieve the best matching one from a dataset provided from user or from the one internal to class Read more
For every input query descriptor, retrieve the best k matching ones from a dataset provided from user or from the one internal to class Read more
For every input query descriptor, retrieve, from a dataset provided from user or from the one internal to class, all the descriptors that are not further than maxDist from input query Read more
Performs the conversion.