Searching for image in large database

asked 2019-04-23 08:09:53 -0500

termos gravatar image


I am trying to build image search engine that would allow searching for image/part of the image inside a large database of images.

The plan is following:

1) Index all database images by extracting their SURF feature descriptors
2) Extract SURF descriptors from the file we want to find
3) Find the best match inside a database

I am stuck in a 3) where I cannot perform really fast search inside a database. Approaches like "Feature Matching with FLANN" work, but are slow and unscalable on large datasets.

Please point me to the right direction on how to: 1) perform a really fast search 2) prepare SURF descriptors so that they could be indexed (the size of outgoing descriptors varies from image to image, and I guess needs to be normalized somehow)

edit retag flag offensive close merge delete


Have you tried using image pyramids for feature matching? I recall having a similar problem and it helped me speed up the process

eshirima gravatar imageeshirima ( 2019-04-23 08:41:54 -0500 )edit

@eshirima, no, I haven't. But I am reading about it right now and haven't found any similar use cases.

termos gravatar imagetermos ( 2019-04-23 08:49:07 -0500 )edit

Approaches like "Feature Matching with FLANN" work

no, you're wrong about it. this kind of matching is good to find a homography between 2 images, but most keypoints / descriptors are statistically irrelevant for similarity search, and the matching algorithm is not made for your task (it won't ever give you ameasure of "similarity").


so that they could be indexed (the size of outgoing descriptors varies from image to image

usually, some kind of clustering is used (kmeans / BoW / VLAD), followed by some ml /tree based search.

please do more research on this (CBIR), there are also some ready made solutions to inspect (like pastec)

berak gravatar imageberak ( 2019-04-24 02:10:39 -0500 )edit