Search code examples
performanceopencvfeature-detectionorb

ORB vs FAST detectors


I'm trying to detect Keypoints all over the image so I tried dividing it into cells and detect on each cell. However, I didn't get the same results using ORB detector as using FAST detector. For ORB, I get way lesser Keypoints as I increase the number of cells (smaller cells).

The picture below shows the results for dividing the image on 10 rows and 10 cols and max Keypoints 1000. The one on the left is the result for FAST ( 894 Keypoint) and on the right is the result for Orb detector (142 Keypoint).

Can someone explain to me why I get different results? Because I thought ORB is based on FAST features. And is there a way to get the same number of Keypoints as FAST while using ORB?

FAST Vs ORB detection


Solution

  • Eventhough ORB uses FAST keypoint detector it's not the same that we have to get the same number of keypoints while using the FAST and ORB.

    ORB is just built on the FAST keypoint detector and the FAST detector is modified in ORB and it's not exactly the same(original one). In the official paper of ORB it states the additional contributions to the FAST detector in ORB and kindly have a look into it.

    "FAST does not produce a measure of cornerness, and we have found that it has large 
    responses along edges. We employ a Harris corner measure [11] to order the FAST keypoints. 
    For a target number N of keypoints, we first set the threshold low enough to get 
    more than N keypoints, then order them according to the Harris measure,
    and pick the top N points. "
    

    This might be one of the reasons why it is giving you less number of keypoints. What I can suggest you from my end is just minimise the threshold value and so you can get more number of keypoints.