Expand description
§Binary descriptors for lines extracted from an image
§Introduction
One of the most challenging activities in computer vision is the extraction of useful information from a given image. Such information, usually comes in the form of points that preserve some kind of property (for instance, they are scale-invariant) and are actually representative of input image.
The goal of this module is seeking a new kind of representative information inside an image and providing the functionalities for its extraction and representation. In particular, differently from previous methods for detection of relevant elements inside an image, lines are extracted in place of points; a new class is defined ad hoc to summarize a line’s properties, for reuse and plotting purposes.
§Computation of binary descriptors
To obtatin a binary descriptor representing a certain line detected from a certain octave of an
image, we first compute a non-binary descriptor as described in LBD . Such algorithm works on
lines extracted using EDLine detector, as explained in EDL . Given a line, we consider a
rectangular region centered at it and called line support region (LSR). Such region is divided
into a set of bands , whose length equals the one of line.
If we indicate with the direction of line, the orthogonal and clockwise direction to line
can be determined; these two directions, are used to construct a reference frame
centered in the middle point of line. The gradients of pixels
inside LSR can be projected
to the newly determined frame, obtaining their local equivalent
.
Later on, a Gaussian function is applied to all LSR’s pixels along direction; first,
we assign a global weighting coefficient
to
i-th row in LSR, where
is the distance of i-th row from the center row in LSR,
and
is the width of bands (the same for every band). Secondly,
considering a band
and its neighbor bands
, we assign a local weighting
, where
is the distance of k-th
row from the center row in
and
. Using the global and local weights, we obtain,
at the same time, the reduction of role played by gradients far from line and of boundary effect,
respectively.
Each band in LSR has an associated band descriptor(BD) which is computed considering
previous and next band (top and bottom bands are ignored when computing descriptor for first and
last band). Once each band has been assignen its BD, the LBD descriptor of line is simply given by
To compute a band descriptor , each k-th row in it is considered and the gradients in such
row are accumulated:
with .
By stacking previous results, we obtain the band description matrix (BDM)
with the number of rows in band
:
Each can be obtained using the standard deviation vector
and mean vector
of
. Thus, finally:
Once the LBD has been obtained, it must be converted into a binary form. For such purpose, we consider 32 possible pairs of BD inside it; each couple of BD is compared bit by bit and comparison generates an 8 bit string. Concatenating 32 comparison strings, we get the 256-bit final binary representation of a single LBD.
Modules§
Structs§
- Binary
Descriptor - Class implements both functionalities for detection of lines and computation of their binary descriptor.
- Binary
Descriptor Matcher - furnishes all functionalities for querying a dataset provided by user or internal to class (that user must, anyway, populate) on the model of [features2d_match]
- Binary
Descriptor_ Params - List of BinaryDescriptor parameters:
- Draw
Lines Matches Flags - KeyLine
- A class to represent a line
- LSDDetector
- LSDParam
- Lines extraction methodology
Constants§
- Draw
Lines Matches Flags_ DEFAULT - Output image matrix will be created (Mat::create), i.e. existing memory of output image may be reused. Two source images, matches, and single keylines will be drawn.
- Draw
Lines Matches Flags_ DRAW_ OVER_ OUTIMG - Output image matrix will not be created (using Mat::create). Matches will be drawn on existing content of output image.
- Draw
Lines Matches Flags_ NOT_ DRAW_ SINGLE_ LINES - Single keylines will not be drawn.
- MLN10
- RELATIVE_
ERROR_ FACTOR
Traits§
- Binary
Descriptor Matcher Trait - Mutable methods for crate::line_descriptor::BinaryDescriptorMatcher
- Binary
Descriptor Matcher Trait Const - Constant methods for crate::line_descriptor::BinaryDescriptorMatcher
- Binary
Descriptor Trait - Mutable methods for crate::line_descriptor::BinaryDescriptor
- Binary
Descriptor Trait Const - Constant methods for crate::line_descriptor::BinaryDescriptor
- Binary
Descriptor_ Params Trait - Mutable methods for crate::line_descriptor::BinaryDescriptor_Params
- Binary
Descriptor_ Params Trait Const - Constant methods for crate::line_descriptor::BinaryDescriptor_Params
- LSDDetector
Trait - Mutable methods for crate::line_descriptor::LSDDetector
- LSDDetector
Trait Const - Constant methods for crate::line_descriptor::LSDDetector
Functions§
- draw_
keylines - Draws keylines.
- draw_
keylines_ def - Draws keylines.
- draw_
line_ matches - Draws the found matches of keylines from two images.
- draw_
line_ matches_ def - Draws the found matches of keylines from two images.