java - 在 Java 中实现 SIFT

标签 java image comparison 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时在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

关于java - 在 Java 中实现 SIFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234517/

相关文章:

java - netty接收事件是并发的吗?下游和上游事件怎么样?

html - 如何将一个图像放在另一个图像之上

c# - LINQ MoreThan(predicate, limit) 扩展而不是 Count(predicate) > limit?

string - CMake 整数比较不起作用

java - WildFly - 创建具有长时间运行的应用程序的应用程序

java - 已删除的文件保留文件描述符直到垃圾回收

java - 无法从 servlet 访问 WEB-INF 文件夹中的文件

c++ - 无法在 OpenCV 中加载和叠加透明图像

jquery - 试图创建一个 jQuery 图像旋转器,但只能让它的前半部分工作

scala - F# 和 Scala 中的 ADT