I’m looking for a Java library that is Comerically Opensource that has the following features:
Converts to Grayscale
Convolution
Hough Transform
Most important: Easily convert RGB pixel data into an int/char/short [][][3] (1 2D array for each value of RGB)
While you may understand signal processing, the application of signal processing to images, or image processing is something you should pay attention to if you intend to leverage your signal processing to images in a non-wasteful (reinvent the wheel) manner.
“Writing it from scratch”, using the 2D API performs grayscale color space translation in about 4 lines. Not too heavy price to pay. From page 175.
Convolutions are handled in chapter 10. The convolution exercise demonstrates a 3×3 blur kernel on pages 206-208. The framework can be used for any kind of convolution.
Hugh Transforms are not to be found in a typical image-processing library. Look to an edge detection / object detection library. If you port / modify a Fernandes / Oliveira styled algorithm, you can even leverage the kernel engine of the 2D API to render an image representing the findings of the transform.
Getting the pixel data as an array is an odd requirement. It’s already in array format.
Again, I recommend the book, and a week to read it. It will literally save you weeks of programming time, if you attempt a “try to learn it as you go” approach using the lower level concepts of signal processing. That said, when you get to the kernel engine particulars, your signal processing knowledge is going to pay off in spades.
It seems that there are two sides to this question. One is specifically about an open source Java API for low level image manipulation, the other is for more general documentation concerning low level image manipulation (color models, etc.).
I would recommend that you obtain a copy of “Java 2D Graphics” by Jonathan Knudsen. It is a bit out-of-date when it talks about non Java 2D constructs (the examples chain into the drawing subsystem the outdated way, and they don’t launch the windows in a thread-safe manner); however, it is a good learning reference for the actual 2D graphics system, which hasn’t changed.
In this book, it goes into color models in detail, and other low level pixel related items (font hints, antialiasing, transformation, etc). As such it can be a very valuable tool.
The 2D API is part of the Java standard libraries. There is no need for a “lower” image processing library, but depending on your needs, you might want a library to lie above it (and simplify common image processing tasks). Once you have a grasp of the primitives, perhaps you can find one of the previously reviewed libraries to have sufficient documentation to achieve your needs.