This is a collection of traditional digital image processing algorithms, e.g., image filtering, restoration and morphological operations, implemented in JAVA. This is not an optimized code, since this is a self-study project developed while studying the book Digital Image Processing by Rafael C. Gonzalez and Richards E. Woods.
We first focus on image processing on the spatial domain. We implement basic gray level transformations pipelines as well as concrete operations like logarithmic, gamma, and negative. Second, we demonstrate how to perform enhancements by image histogram processing. Third, we code handy arithmetic and logical pixel-wise operations. Finally, we develop the standard spatial filtering operation, smoothing filters like median and mean, and sharpening filters based on gradient operators.
Some operations are easy to compute in the frequency domain. Then, we develop an engine to perform the Fourier and Inverse-Fourier transform which accomplish the space-frequency transformations of images. Moreover, we implement the homomorphic filter as an example of how to use such an engine.
Morphological operations are an interesting class of binary image transformations. Here, we code from basic erosion and dilatation operations, passing trough opening and closing, and finishing with applications of region filling and shape detection.
See ImageProcessor class for instructions on how to use these algorithms. However, note that this toolbox is not a substitute for Matlab or OpenCV image processing toolboxes, it is just a collection of programming exercises to better understand how image processing algorithms works.