views:

76

answers:

5

I'm developing a project for doing Content Based Image Retrieval where front end will be in java.

The main issue is about choosing tool for performing image processing. Since Matlab provides a lot of functionality for doing CBIR. But the main problem about using Matlab is that you need to have Matlab installed on every computer using the application.

Is there any other way in which I can do my project (Using other tools or driver) so that my application will run without using any other tools ???

Or can I develop entire application in Matlab only and deploy it as a standalone application ??? Thank you..

+2  A: 

Matlab is an excellent tool for prototyping as already pointed out by carlosdc. Matlab offers limited options with regard to UI programming. GUIDE is ok for small projects, but hinders more than it helps on bigger ones.

With MATLAB Builder JA you're able to compile your Matlab code into Java classes.

With regard to plotting time series in real time, libraries like JFreeChart are way slower.

zellus
+5  A: 

There are plenty of image processing libraries, for example for Java: ImageJ, there is also one by the Apache Commons project. If you need higher-level computer vision libraries there is OpenCV for C++ that also has bindings for Java, for example.

You can also develop the entire application in Matlab, but to deploy a stand alone application requires this requires licensing Mathworks Builder NE (which can be expensive). Matlab is very good for research and prototyping purposes.

There are other alternatives that are amenable to quick prototyping for example Python and PIL.

I think the bottom line is that there are plenty of options.

carlosdc
+5  A: 

Java image utilities library: A Java library for loading, editing, analyzing and saving pixel image files.

It supports various file formats.

Provides demo applications for the command line. It has AWT GUI toolkit too.

JavaGeek
+2  A: 

I think OpenCV is one of the best libraries out there for image processing but Java Advanced Imaging is also quite good but doesn't has as much features and examples. Color similarity would be simple in JAI but shape probably would involve more code.

If you choose to use OpenCV I think you have at least two possible binding implementations for Java. The one my group uses is this one. It has some Processing dependencies.

Regardless of what library you choose be prepared for some frustration. Matlab users are used to all the nice features it provides and when they have to port their code to other languages end having to write a lot more code.

jassuncao
thanx for the review of other tools also..
Mew 3.2
but one question..if I am using Matlab for Feature extraction then I can wrap those representations in the form of class objects...then how will I have to write more codes ???and will it be fine to use Matlab and Java connectivity ??I haven't written any code for Matlab+ Java connectivty yet..will it be will be fine for us ...
Mew 3.2
If you compile your .m files into jar files, you can use those jars in your own java application, without having to write the feature extraction code in Java. I mentioned writing a lot more code in case you use some of the mentioned frameworks instead of using Matlab. For example code for matrix operations (or use some java library for that purpose).
jassuncao
+1  A: 

Well, after a long search finally I've found the way to deploy Matlab code along with java that too standalone application..

The steps are simple::-- 1. Go and get Javabuilder.jar file located at location::

Matlab\toolbox\javabuilder\jar\javabuilder.jar

Next type deploytool in Matlabs command line...

deploytool window will open now create a new java project. Select Matlab files that you want to use.

The deploytool will now convert the .m file to .jar file.

Now use both of the above mentioned jar files and develop your java compatible matlab code

and thats the way you can create the standalone application of matlab..

Mew 3.2
Needs some editing though!
JavaGeek
I'm not sure of this, but probably you will also have to bundle MATLAB Compiler Runtime (MCR) with your jar to be able to run it in one machine without Matlab.
jassuncao