在 Java 中实现 SIFT

发布于 2024-10-22 03:00:01 字数 354 浏览 12 评论 0原文

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

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

所以想请教一下比我更有经验的人。为此目的实施 SIFT 是否可行?我可以单独使用 JDK 来完成它吗(如果可能的话,没有其他插件)?我该怎么做呢?

提前致谢

So I'm working on a simple Java app that allows a user to input an image as a query and have the app compare it against a database of images (which is basically no more than a directory of different images). I'm basically investigating several image similarity measurement techniques to find out which ones are appropriate for comparing pictures of cars.

I've been doing some reading and apart from FFT/SSIM, I've read that the SIFT algorithm can yield very good results. However, as someone with only about a year's worth of basic Java experience, I'm honestly not sure if I'm a good enough programmer to be able to implement it. Hell, I'm still having trouble understanding the core concepts of the algorithm due to it's apparent complexity.

So I'd like to ask those with much more experience than me. Is it even practical in the first place to implement SIFT for such purpose? Could I do it with the JDK alone (no other addons, if even possible)? How would I go about doing it?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

℡Ms空城旧梦 2024-10-29 03:00:01

Fiji 图像处理包扩展了 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

The Fiji image processing package, which extends ImageJ, has a wiki website with information on its SIFT plugin:

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

The source code of the SIFT implementation in java is available in the mpicbg.git repository:

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

The library that includes the SIFT feature extraction and feature matching is the mpicbg.jar, under Fiji.app/jars/ folder when you download Fiji.

Fiji can be downloaded from here:

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

An example of usage of the SIFT plugin is the registration of consecutive slices in an electron microscopy stack. See this page:

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

The source code will teach you how to use the library for SIFT feature extraction and for computing transformation models from sets of matching features:

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

朮生 2024-10-29 03:00:01

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

有一个 SIFT 插件。

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

You might want to consider ImageJ - http://en.wikipedia.org/wiki/ImageJ

There is a SIFT plugin for it.

And check answers on stackoverflow here -
Using SIFT for Augmented Reality

感情洁癖 2024-10-29 03:00:01

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

This tutorial in openimaj shows a step by step procedure on how to use SIFT from OpenImaj library.

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

However, If you need to the java implementation, as the tutorial says,

We’ll use the difference-of-Gaussian feature detector which we describe with a SIFT descriptor. The features we find are described in a way which makes them invariant to size changes, rotation and position. These are quite powerful features and are used in a variety of tasks. The standard implementation of SIFT in OpenIMAJ can be found in the DoGSIFTEngine class:

The API method reference for the "DoGSIFTEngine" can be found by going through the following link.

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

Here is the link to the full implementation

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文