我希望找到一种方法,可以比较图像(查询)的SIFT描述符和SQL数据库中包含不同图片的许多描述符的描述符。
实际上,我的最终目的是开发一个应用程序,可以将一个图片与数据库中的许多图片进行比较(不在我的设备中,而是在SQL数据库中)。
我最初想到的是将每个描述符存储在SQL数据库中,并使用Brute Force方法或FlanneBased方法将每个描述符与另一个描述符进行比较。问题在于,在SQL数据库中,由于匹配背后的“数学”(例如欧几里得距离是sqrt(a²+b²+...)),计算匹配需要很长时间,而且无法在大型数据库中进行这种比较。
例如,如果我没记错的话,一个SIFT描述符包含128个数字,因此想象一下比较每个描述符的每个数字所需的时间。
是否有其他方法来完成这项工作?我知道在SQL数据库中,当您使用类似“SELECT a FROM b WHERE ...”之类的东西时,请求是有效的。
因此,我想知道是否有一种有效地存储SIFT描述符的方法?例如,我考虑将描述符“加密”成一种大字符串链,并且每个链都是唯一的,因此我可以将它们相互比较,但我不知道这是否是一个好的解决方案。
我已经阅读了这篇文章:Comparing SIFT features stored in a mysql database,但它没有帮助我。谢谢。
实际上,我的最终目的是开发一个应用程序,可以将一个图片与数据库中的许多图片进行比较(不在我的设备中,而是在SQL数据库中)。
我最初想到的是将每个描述符存储在SQL数据库中,并使用Brute Force方法或FlanneBased方法将每个描述符与另一个描述符进行比较。问题在于,在SQL数据库中,由于匹配背后的“数学”(例如欧几里得距离是sqrt(a²+b²+...)),计算匹配需要很长时间,而且无法在大型数据库中进行这种比较。
例如,如果我没记错的话,一个SIFT描述符包含128个数字,因此想象一下比较每个描述符的每个数字所需的时间。
是否有其他方法来完成这项工作?我知道在SQL数据库中,当您使用类似“SELECT a FROM b WHERE ...”之类的东西时,请求是有效的。
因此,我想知道是否有一种有效地存储SIFT描述符的方法?例如,我考虑将描述符“加密”成一种大字符串链,并且每个链都是唯一的,因此我可以将它们相互比较,但我不知道这是否是一个好的解决方案。
我已经阅读了这篇文章:Comparing SIFT features stored in a mysql database,但它没有帮助我。谢谢。