4

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

我一直在做一些阅读,除了 FFT/SSIM,我读到 SIFT 算法可以产生非常好的结果。然而,作为一个只有大约一年基本 Java 经验的人,我真的不确定我是否是一个足够优秀的程序员来实现它。地狱,由于它明显的复杂性,我仍然无法理解算法的核心概念。

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

提前致谢

4

3 回答 3

9

扩展 ImageJ 的 Fiji 图像处理包有一个 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

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

斐济可以从这里下载:

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

于 2011-06-02T22:03:01.610 回答
1

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

它有一个 SIFT 插件。

并在此处查看有关 stackoverflow 的答案 - Using SIFT for Augmented Reality

于 2011-03-08T23:57:47.163 回答
0

openimaj 中的本教程展示了如何使用 OpenImaj 库中的 SIFT 的分步过程。

http://openimaj.org/tutorial/sift-and-feature-matching.html

但是,如果您需要 java 实现,如教程所述,

我们将使用我们用 SIFT 描述符描述的高斯差分特征检测器。我们发现的特征以一种使它们不受大小变化、旋转和位置变化的方式描述。这些功能非常强大,可用于各种任务。OpenIMAJ 中 SIFT 的标准实现可以在 DoGSIFTEngine 类中找到:

可以通过以下链接找到“DoGSIFTEngine”的 API 方法参考。

http://openimaj.org/apidocs/org/openimaj/image/feature/local/engine/DoGSIFTEngine.html

这是完整实现的链接

http://openimaj.org/apidocs/src-html/org/openimaj/image/feature/local/engine/DoGSIFTEngine.html

于 2019-03-09T11:32:23.713 回答