SIFT implementation in Java

So, I am working on a simple Java application that allows the user to enter an image as a query and compare the application with an image database (which is basically not something more than a catalog of different images). I mainly study several methods for measuring image similarity to find out which methods are suitable for comparing car photos.

I did the reading, and besides FFT / SSIM I read that the SIFT algorithm can give very good results. However, as someone who has only a basic Java experience for a year, I'm honestly not sure that I'm a good programmer to be able to implement it. Hell, it’s still hard for me to understand the basic concepts of the algorithm because of the obvious complexity.

Therefore, I would like to ask those who have more experience than me. Is it even practical to primarily implement SIFT for this purpose? Can I only do this with JDK (no additional add-ons, if at all possible)? How can I do it?

Thank you in advance

+4
source share
2 answers

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

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

The source code for 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, which includes the extraction of the SIFT function and the function, is the mpicbg.jar file in the Fiji.app/jars/ folder when loading Fiji.

Fiji can be downloaded here:

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

An example of the use of the SIFT plugin is the registration of sequential slices in a stack of electron microscopy. See this page:

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

The source code will teach you to use the library to extract the SIFT function and to calculate transformation models from sets of corresponding functions:

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

+9
source

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

There is a SIFT plugin for it.

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

+1
source

Source: https://habr.com/ru/post/1342841/


All Articles