Can anyone suggest a good open-source image processing library in Java? I want to develop an OMR reader using it.
Is Java good for image processing?
Java is a widely used high-level programming language in the modern world. It provides various functions to handle digital image processing.
Which Java software is used in image processing?
ImageJ is a Java-based image processing program developed at the National Institutes of Health and the Laboratory for Optical and Computational Instrumentation (LOCI, University of Wisconsin).
There are a number of options out there, each with their own features and drawbacks. If you want to discuss your needs in more detail, I can touch on the specific attributes of each library as it relates to your project:
- ImageJ - http://rsbweb.nih.gov/ij/index.html -- Note that ImageJ is primarily a self-contained application. However, the underlying API is very easy to use in your own applications without having to invoke the GUI.
- Fiji - http://pacific.mpi-cbg.de/wiki/index.php/Main_Page -- This is ImageJ with a number of additional features. I have no personal experience with this library, but it looks promising.
- JAI - http://www.oracle.com/technetwork/articles/javaee/jai-142803.html -- This is Sun's image processing Java offering. Limited in functionality, but it can be used as a basis for more powerful libraries.
- jMagick - http://www.jmagick.org/index.html -- This is just a Java wrapper around ImageMagick and uses JNI to interface with the ImageMagick API
- Apache Sanselan - http://commons.apache.org/imaging/ -- This library mostly does image IO, but it has a handful of features that can facilitate image analysis.
- JIU (Java Imaging Utilities) - http://sourceforge.net/projects/jiu/ -- A Java library for loading, editing, analyzing and saving pixel image files.
- Endrov - http://www.endrov.net/wiki/index.php?title=Main_Page -- Endrov is a multi-purpose image analysis program. I get the impression that the underlying API is usable outside of the application, but it also seems that not everything is implemented in Java. I have no personal experience with this library and am only throwing it in because it seems to have a number of useful features.