views:

295

answers:

5

hello everybody.
do i need "Java Advanced Imaging API" to learn "image processing" in Java?
and is there any good link for learning "image processing" in java?

+1  A: 

I'd say that if you want to learn image processing then you don't need JAI. At university we played around with PGM files, learned how to do basic transforms, basic filtering etc.

PGM is very easy to work with since it's greyscale and you can encode the image using ASCII. This means you can knock up a bit of code to read and write them in no time and then you can start building your own implmentation of image processing algorithms.

Check it out here: http://en.wikipedia.org/wiki/Portable_Gray_Map

Obviously if you want to do some serious image processing then check out a real API, but if you're wanting to play about and learn then this is where I'd start.

Tom Duckering
+2  A: 

If you are looking for learning very basic stuff, I'd say you should not start with JAI, because this library will help you processing images easily, but not learning how to process images -- you won't get to know the really low level stuff, like how to manipulate pixel arrays directly.

I started by reversing the image, cropping the image, creating histograms, doing histogram equalization, various affine transformation (scaling, rotating) etc.

This lecture might be a good start.. http://kevin.floorsoup.com/scholarship/ip2d/p12-burger.pdf

Sorry if you were looking for more sophisticated stuff :)

Enno Shioji
+1  A: 

It depends on what you mean by "to learn". If you want to understand the foundations of image processing, then, no, you don't need anything beyond a basic familiarity with the ImageIO class for reading and writing images, and the BufferedImage getRGB() and setRGB() methods.

If you want to learn how to use existing APIs for image processing, you can still get a lot done with the Java2D API, but the JAI gives you more file formats and more filters.

But in that case, I'd say try Python Imaging Library!

Jonathan Feinberg
+1  A: 

If your needs go beyond basic operations - I think the best toolkit out there to learn the entire gamut of image processing (from basic to advanced such as object recognition/computer vision) is Open CV. There are plenty of Open CV wrappers for Java.

Mikos
A: 

Consider Processing, it is based on Java (some extensions, like a color data type). The tutorials provide good introductions to general image processing concepts.

"Processing is an open source programming language and environment for people who want to create images, animations, and interactions." http://www.processing.org

Mark