所以我正在开发一个简单的 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时在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 特征提取和从匹配特征集计算转换模型:
关于java - 在 Java 中实现 SIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234517/