在Java中实现SIFT

所以我正在研究一个简单的Java应用程序,它允许用户将图像作为查询输入,并让应用程序将其与图像数据库进行比较(基本上只是不同图像的目录)。 我基本上正在研究几种图像相似度测量技术,以找出哪些适合比较汽车图片。

我一直在做一些阅读,除了FFT / SSIM,我读过SIFT算法可以产生非常好的结果。 但是,作为一个只有一年左右的基本Java经验的人,老实说我不确定我是否是一个足够好的程序员才能实现它。 天啊,由于它的明显复杂性,我仍然无法理解算法的核心概念。

所以我想问那些经验比我多的人。 首先为此目的实施SIFT是否实用? 我可以单独使用JDK(没有其他插件,如果可能的话)吗? 我该怎么做呢?

提前致谢

斐济图像处理软件包扩展了ImageJ,它有一个wiki网站,上面有关于其SIFT插件的信息:

http://pacific.mpi-cbg.de/wiki/index.php/Feature_Extraction

java中的SIFT实现的源代码可以在mpicbg.git存储库中找到:

http://pacific.mpi-cbg.de/cgi-bin/gitweb.cgi?p=mpicbg.git

当您下载斐济时,包含SIFT特征提取和特征匹配的库是mpicbg.jar,位于Fiji.app/jars/文件夹下。

斐济可以从这里下载:

http://pacific.mpi-cbg.de/wiki/index.php/Downloads

使用SIFT插件的一个示例是在电子显微镜堆栈中注册连续切片。 看这个页面:

http://pacific.mpi-cbg.de/wiki/index.php/Register_Virtual_Stack_Slices

源代码将教您如何使用库进行SIFT特征提取以及从多组匹配特征计算转换模型:

http://pacific.mpi-cbg.de/cgi-bin/gitweb.cgi?p=fiji.git;a=blob;f=src-plugins/register_virtual_stack_slices/register_virtual_stack/Register_Virtual_Stack_MT.java;hb=HEAD

您可能需要考虑ImageJ – http://en.wikipedia.org/wiki/ImageJ

有一个SIFT插件。

并在此处检查stackoverflow上的答案 – 使用SIFT增强现实