Pergunta

I'm using SURF to extract features from images and match them to others. My Problem is that some images have in excess of 20000 features which slows down matching to a crawl.

Is there a way I can extract only the n most significant features from that set?

I tried computing MSER for the image and only use features that are within those regions. That gives me a reduction anywhere from 5% to 40% without affecting matching quality negatively, but that's unreliable and still not enough.
I could additionally size the image down, but I that seems to affect the quality of features severely in some cases.
SURF offers a few parameters (hessian threshold, octaves and layers per octave) but I couldn't find anything on how changing these would affect feature significance.

Foi útil?

Solução

After some researching and testing I have found that the Hessian value for each feature is a rough estimate of it's strength, however using the top n features sorted by the hessian is not optimal.
I achieved better results when doing the following until number of features is below the target of n:

  • Size the image down, if it is overly large
  • Only features that lie in MSER regions are considered
  • For features that lie very close to each other, only the feature with the higher hessian is considered
  • Of the n features per image that I want to save, 75% are the features with the highest hessian values
  • The remaining features are taken randomly from the remainder, weighted by distribution of the hessian values computed through a histogram

Now I only need to find a suitable n, but around 1500 seems enough currently.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top