ORB descriptor
Source: http://medium.com/data-breach/introduction-to-orb-oriented-fast-and-rotated-brief-4220e8ec40cf Backlinks: Descriptors in feature detection/extraction
- Oriented FAST and Rotated BRIEF, developed 2011
- Was developed as an alternative to SIFT and SURF, and ended up being better/faster than both
- Build on
- FAST keypoint detector
- BRIEF descriptor
ORB using FAST, but with (partial) scale invariance
Use a multiscale image pyramid
Each level of the pyramid is the same image, but scaled at different resolutions (reduced size as you go higher up)
Once the pyramid is computed, FAST is used to detect keypoints
ORB detection
- Compute scale pyramid
- Use FAST to detect keypoints using the scale pyramid
- An orientation is assigned to each keypoint (left/right facing)
- orientation depends on how the intensity changes around the keypoint
- intensity detection: intensity centroid
Brief (binary robust independent elementary feature)
- Converts all keypoints into a binary feature vector, in order to be able to represent an object with this vector
- Binary feature vector = binary feature descriptor
- Each keypoint is assigned a feature vector (128 to 512 bit-string)
How it works
- Image smoothing (Gaussian blur) to reduce descriptor’s sensitivity to high-frequency noise
- For one bit within the feature vector, perform a binary test:
- select a random pair of pixels in a neighbourhood (patch) around the keypoint
- p1 drawn from a Gaussian distribution centred around the KP, std = sigma
- p2 drawn from a Gaussian distribution centred around p1, std = 2sigma
- If p1 brighter than p2, bit is set to 1, else 0
- select a random pair of pixels in a neighbourhood (patch) around the keypoint
- If 128-bit vector, this process is repeated 128 times, with 128 random pairs
tau: binary test
p: patch
p(x): intensity at x
Resulting binary vector of one feature (one keypoint) using n binary tests
Drawbacks BRIEF isn’t invariant to rotation –> rBRIEF (rotation-aware BRIEF)
rBRIEF
For one feature with n binary tests we have the matrix S
ORB steers BRIEF according to the keypoint orientation, via
With theta = patch orientation, Rtheta = rotation matrix
Resulting rBRIEF feature vector