因此,我正在开发一个简单的Java应用程序,该应用程序允许用户输入图像作为查询,并使该应用程序将其与图像数据库进行比较(基本上只不过是不同图像的目录)。我基本上是在研究几种图像相似性测量技术,以找出哪些适合比较汽车图片。
我一直在做一些阅读,除了FFT / SSIM之外,我还阅读了SIFT算法可以产生非常好的结果。但是,作为只有大约一年的Java基本经验的人,老实说,我不确定我是否有足够的能力来实现它。 hell ,由于算法的复杂性,我仍然难以理解算法的核心概念。
所以我想问那些比我经验更多的人。为此目的首先实施SIFT甚至可行吗?我可以单独使用JDK吗?(即使可能,也不要其他插件)吗?我将如何去做?
提前致谢
最佳答案
扩展了ImageJ的斐济图像处理软件包具有一个Wiki网站,其中包含有关其SIFT插件的信息:
http://pacific.mpi-cbg.de/wiki/index.php/Feature_Extraction
mpicbg.git存储库中提供了Java中SIFT实现的源代码:
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