Searching for image in large database
Hi,
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)
Have you tried using image pyramids for feature matching? I recall having a similar problem and it helped me speed up the process
@eshirima, no, I haven't. But I am reading about it right now and haven't found any similar use cases.
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").
.
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)