I would like to find a way to compare the SIFT descriptor of the image (query) with the descriptors in the SQL database, which contains many descriptors of different images.
In fact, my ultimate goal is to make an application that allows you to compare one image with a large number of images in the database (not on my device), but in the SQL database.
The first thing I thought of was to stock each SQL database descriptor and compare each descriptor with a different Brute Force method or FlanneBased method. The problem is that it will take a long time in the SQL database to calculate the correspondence due to the “math” after matching (for example, the Euclidean distance is sqrt (a² + b² + ...)), and this is impossible for such a comparison in a huge database.
For example, the SIFT descriptor contains 128 numbers, if I'm not mistaken, so imagine a time comparing each number of each descriptor together.
If there is another way to do this? I know in a SQL database, queries are effective when you use something like "SELECT a FROM b WHERE ..."
So I wonder if there is a way to use SIFT descriptors efficiently? For example, I thought about “encrypting” the descriptors in the form of a large chain of strings, and each chain would be unique, and therefore I could compare them together, but I do not know if this is a good solution.
I already read this post: Comparing the SIFT capabilities stored in the mysql database , but that didn't help me. Thanks.
c ++ mysql sql-server opencv sift
lilouch
source share