Ethan Rublee, Vincent Rabaud, Kurt Konolige, and Gary R. Bradski created Oriented FAST and Rotated BRIEF (ORB) in the OpenCV laboratories in 2011 as an efficient and feasible alternative to SIFT and SURF. Because SIFT and SURF are patented algorithms, ORB was created. ORB, on the other hand, is entirely free to use.

ORB outperforms SIFT (and beats SURF) in the job of feature detection while being nearly two orders of magnitude quicker. The ORB descriptor is based on the well-known FAST keypoint detector. Both of these methods are appealing due to their high efficiency and low cost. The following are ORB’s significant contributions:

- FAST now includes a fast and precise orienting component.
- The calculation of orientated BRIEF characteristics in an effective manner
- Analysis of variance and correlation of BRIEF characteristics that are orientated
- A method for learning to decorate BRIEF features under rotational invariance, resulting in improved performance in nearest-neighbor applications.

## Fast(Features from Accelerated and Segments Test)

Fast compares the brightness of a pixel p in an array to the brightness of the surrounding 16 pixels in a tiny circle around p. The pixels in the circle are then divided into three groups (lighter than p, darker than p, or similar to p). It is picked as a key point if darker or brighter than p by more than 8 pixels. As a result, the key points discovered by quick provide us with information on the location of determining edges in a picture.

FAST characteristics, on the other hand, lack an orientation component and multiscale features. As a result, the orb method employs a multiscale picture pyramid. An image pyramid is a multiscale depiction of a single image made up of a series of images, each of which is a different resolution version of the image.

Each level of the pyramid features a downscaled replica of the preceding level’s picture. Orb utilizes the quick method to find key points in the picture after it has constructed a pyramid. Orb successfully locates important points at a different scale by identifying keypoints at each level. ORB is partly scaled invariant in this way.

After finding keypoints, the orb now assigns each keypoint an orientation, such as left or right facing, based on how the intensity levels vary around that keypoint. Orb utilizes an intensity centroid to detect intensity changes. The intensity centroid posits that the intensity of a corner is offset from its center. Thus it may be used to infer an orientation.

## Brief (Binary Robust Independent Elementary Feature)

Brief converts all of the keypoints discovered by the fast method into a binary feature vector, which may then be used to represent an object. A binary feature vector, also known as a binary feature descriptor, is a feature vector that includes just the numbers 1 and 0. In a nutshell, each keypoint is represented by a feature vector, which is a 128–512 bit string.

To avoid the descriptor from being susceptible to high-frequency noise, begin by smoothing the picture using a Gaussian kernel. Then, in a specified region surrounding that keypoint, choose a random pair of pixels. A patch is a square of some pixel width and height that defines the specified neighborhood surrounding a pixel.

The first pixel in the random pair is taken from a Gaussian distribution with a stranded deviation or spread of sigma centered around the keypoint. The second pixel in the random pair is selected from a Gaussian distribution with a standard deviation or spread of sigma by two, centered on the first pixel. If the first pixel is brighter than the second, the corresponding bit is set to 1; otherwise, it is 0.

Select a random pair and assign a value to them once again. For a keypoint in a 128-bit vector, repeat this method 128 times. For each keypoint in a picture, construct a vector similar to this. BRIEF is not invariant to rotation. Therefore orb uses rBRIEF instead (Rotation-aware BRIEF). ORB aims to incorporate these features while maintaining BRIEF’s speed.

It then discretizes the angle into 2/30 (12 degree) increments and creates a lookup database of precomputed BRIEF patterns. The proper collection of points S will be utilized to compute its description as long as the keypoint orientation is constant across views.

The rBRIEF algorithm is defined as follows by ORB:

1) Compare each exam to all of the training patches.

2) Form the vector T by ordering the tests by their distance from a mean of 0.5.

3) Greedy hunt:

Remove the first test from T and place it in the result vector R.

Take the next exam from T and compare it to the rest of R’s tests. If the absolute correlation is larger than a threshold, it is discarded; otherwise, it is added to R.

Rep the previous step till R has 256 tests. If the number of results is less than 256, increase the threshold and try again.

In comparison to guided BRIEF, rBRIEF demonstrates a substantial improvement in invariance and correlation.

## Theory

The ORB comes from “OpenCV Labs,” which is the most significant thing to me as an OpenCV fan. Ethan Rublee, Vincent Rabaud, Kurt Konolige, and Gary R. Bradski proposed this method in their 2011 work ORB: An efficient alternative to SIFT or SURF. It is a good alternative to SIFT and SURF in terms of processing cost, matching performance, and, most importantly, patents.

Yes, SIFT and SURF are patented, and you must pay a fee to utilize them. ORB, on the other hand, is not!!!

ORB is essentially a hybrid of the FAST keypoint detector and the BRIEF descriptor, with several enhancements. It first finds keypoints with FAST, then uses the Harris corner measure to determine the top N points. Pyramid is also used to create multiscale elements. FAST, on the other hand, does not compute the orientation. So, what’s the deal with rotation invariance? The authors came up with the following change.

It calculates the patch’s intensity weighted centroid with the corner at the center. The direction of the vector determines the orientation from this corner point to the centroid. Moments are computed with x and y that should be in a circular zone of radius r, where r is the patch size, to enhance rotation invariance.

ORB now uses BRIEF descriptors for descriptors. However, we’ve previously shown that BRIEF struggles with rotation. As a result, ORB “steers” BRIEF based on the direction of keypoints. Define a 2n matrix, S, that includes the coordinates of these pixels for every feature set of n binary tests at location (xi,yi). Then, based on the orientation of the patch, its rotation matrix is determined, and the S is rotated to obtain the steered(rotated) version S.

ORB discretizes the angle into 2/30 (12 degrees) increments and creates a lookup database of precomputed BRIEF patterns. The proper collection of points S will be utilized to compute its description as long as the keypoint orientation is constant across views.

Each bit characteristic, in BRIEF, has a significant variation and a mean around 0.5, which is an essential attribute. However, when orientated in the keypoint direction, it loses this characteristic and becomes more dispersed. Because it responds differently to diverse inputs, a character with high variance is more discriminative. Another desirable feature is uncorrelated tests, as each test will contribute to the outcome.

ORB uses a greedy search across all feasible binary tests to discover those with large variance and means near to 0.5, as well as being uncorrelated, to fix all of these issues. rBRIEF is the name given to the end outcome.

Multi-probe LSH, which improves on standard LSH, is used for descriptor matching. The study claims that ORB is significantly quicker than SURF and SIFT and that the ORB descriptor outperforms SURF. ORB is a suitable solution for panorama stitching and other low-power devices.