PARP Research Group | Universidad de Murcia |
QVBRIEFDetector Class Reference
|
Public Member Functions | |
unsigned int | distance (const QVector< unsigned int > &descriptorsA, const QVector< unsigned int > &descriptorsB, const int indexA=0, const int indexB=0) const |
Evaluates the Hamming distance between two binary descriptors. | |
QVBRIEFDetector (const unsigned int descriptorInts=4, const unsigned int windowRadius=16) | |
Main constructor. | |
QVector< unsigned int > | getDescriptors (const QVImage< uChar, 1 > &image, const QVector< QPointF > &keypoints, const unsigned int octave=1) const |
Gets the descriptor for a set of features in an image. |
Simple implementation of BRIEF (Binary Robust Independent Elementary Features) descriptors.
BRIEF descriptors are designed to perform accelerated image keypoint matching.
These descriptors are variant to scale and orientation, but their lightweight evaluation and matching speed make them suitable for many different image matching applications.
BRIEF descriptors are binary strings representing a pattern of pair-wise comparations of pixels or tests, located inside a patch on the image centered at the given keypoint.
This class obtains BRIEF descriptors for points from an input image, and can be used to perform an efficient matching between them.
The following is an example usage code:
// Init BRIEF detector. // The detector will generate 3*32 test patterns. // Each descriptor contains 3 integer values, and 32 bits for each integer value store tests results. // The maximal distance between the tested pixels in the pattern to the feature location is 5 pixels. // The binary test pattern is different for each BRIEF detector object created. QVBRIEFDetector BRIEFDetector(3,5); // Init images and keypoint lists QVImage<uChar, 1> imageA, imageB; QVector<QPointF> keypointsA, keypointsB; [...] // Get descriptors for keypoints and images. // It is important to use the same BRIEF detector to compare descriptors from different images. // Each vector of binary descriptors will contain n*m integers, where 'n' is the size of the keypoint list, // and 'm' is the number of integers per descriptor (in this case, m = 3). QVector<unsigned int> binaryDescriptorsA = BRIEFDetector.getDescriptors(imageA, keypointsA), // Get descriptors for keypoints in image A. binaryDescriptorsB = BRIEFDetector.getDescriptors(imageB, keypointsB); // Get descriptors for keypoints in image B. [...] // Example code to obtain the distance between the descriptor for each keypoint in A, and the descriptor for each point in B. // The result is stored in the following distance matrix. QVMatrix distanceMatrix(keypointsA.count(), keypointsB.count(), 0.0); for(int i = 0; i < keypointsA.count(); i++) for(int j = 0; j < keypointsB.count(); j++) // Get distance between i-th descriptor from image A, and j-th descriptor from image B. // The comparison must be done with the same BRIEF detector used to obtain the descriptors. distanceMatrix(i,j) = BRIEFDetector.distance( binaryDescriptorsA, binaryDescriptorsB, i, j);
Definition at line 86 of file qvbriefdetector.h.
QVBRIEFDetector::QVBRIEFDetector | ( | const unsigned int | descriptorInts = 4 , |
|
const unsigned int | windowRadius = 16 | |||
) | [inline] |
Main constructor.
descriptorInts | Size of the descriptor. Each element of the descriptor is an integer containing 32 bit tests. | |
windowRadius | Max radius for the testing window around the pixel. |
Definition at line 129 of file qvbriefdetector.h.
unsigned int QVBRIEFDetector::distance | ( | const QVector< unsigned int > & | descriptorsA, | |
const QVector< unsigned int > & | descriptorsB, | |||
const int | indexA = 0 , |
|||
const int | indexB = 0 | |||
) | const [inline] |
Evaluates the Hamming distance between two binary descriptors.
This method uses the xor operator and the qvNiftyParallelBitCount function to evaluate the number of bits which differ between two binary descriptors.
descriptorsA | set of descriptors for the first image. | |
descriptorsB | set of descriptors for the second image. | |
indexA | index for the feature descriptor in the first image. | |
indexB | index for the feature descriptor in the second image. |
Definition at line 111 of file qvbriefdetector.h.
QVector<unsigned int> QVBRIEFDetector::getDescriptors | ( | const QVImage< uChar, 1 > & | image, | |
const QVector< QPointF > & | keypoints, | |||
const unsigned int | octave = 1 | |||
) | const [inline] |
Gets the descriptor for a set of features in an image.
Definition at line 166 of file qvbriefdetector.h.