Can anyone suggest a good open-source image processing library in Java? I want to develop an OMR reader using it.
Asked
Active
Viewed 4.3k times
35
-
3possible duplicate of [What is the best java image processing library/approach?](http://stackoverflow.com/questions/603283/what-is-the-best-java-image-processing-library-approach) – ripper234 Nov 28 '11 at 15:46
5 Answers
50
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.
-
-
I have no personal experience with OMR (Optical Mark Recognition, right?), but http://www.cs.uwaterloo.ca/~a3seth/udai/OMRProj/README.html seems to be a viable starting point. – RTBarnard Mar 09 '10 at 07:31
-
I just noticed that this question was also asked by you, but I'll leave it here for posterity: "You might also take a look at this related question: http://stackoverflow.com/questions/2399458/open-source-library-for-optical-mark-reader" – RTBarnard Mar 09 '10 at 07:33
-
@RTBarnard: I need to get the pixel value of `.tif` image as described here: http://stackoverflow.com/questions/7421904/getting-the-pixel-value-of-a-tiff-image-in-java; Speed is one of my main concerns, what would you suggest for this? Thanks – Marsellus Wallace Sep 14 '11 at 19:32
1
I would suggest using JAI, as mentioned, for the imaging side, but for writing an OMR application you will need template registration. This can be achieved using OpenCv. This works with Java (as well as many other languages and platforms).
Without good image registration, regardless of image processing library, you will end up missing some of the marks on some scans, as you will find that some scans are shifted due to the way scanners work.

Paul Bartlett
- 673
- 1
- 9
- 14