Using acquired knowledge is the key to any successful education. To use knowledge practically, a project that can be completed in a short range of time is required. The JAVA-project during the second semester is such a project for the Associate Engineers specialized in Data Technology. It is closely linked to the basics acquired in the lessons before. The goal of the two-week project is the completion and presentation of a software product written in the object-oriented programming language JAVA.

This semester we faced the task of image processing. As image processing is a very wide range task area, we distinguished the exact task in the product specification. We had to develop a program that post-edits existing images by applying several filters, scalers and other tools. The program had to be capable of saving and also printing the images.
First, we dealt with this task by clarifying all the different requirements and as a result split up into different task-groups. We finally formed three groups: the filter-group, the graphical interface-group and the data-group.In the beginning there was no programming for the filter-group at all at all, because they first needed to acquire the theoretical knowledge on how contrasts work, how to generate a negative and how Gauss is related to image filters.
The data-group, on the other hand, faced a different problem. What is a digital image made of and, even more important, how can it be modified? Thus, methods were found to collect data concerning color values in every single pixel. This new information was immediately communicated to the filter-group, which now, after understanding the algorithms of the filters, faced mathematical and programming problems. We learned, for instance, which mathematical formula we needed to generate the new color values when the Gauss-filter is applied to an image.
The graphical-interface group soon realized, that their work was one of the most important elements of the program because the user interacts with the interface and not with the raw data. So the group had to reconstruct the image from the data while the others only dealt with numbers. Problems were also encountered in the requirement of a preview, which in turn led to the question of when and how a user input was to be applied to the original image. All these problems had to be solved, always keeping in mind that these modules needed to be later integrated into one program. Finally we developed an administration-layer responsible for the use of the different modules. This administration-layer originally was part of the graphical-user-interface. It receives an image-path from a dialogue box from which the file is picked. From this path the raw data is retrieved by generating a huge matrix containing color information for every pixel. The different filters of the filter-group work with this matrix.
To increase brightness, for example, all color values are increased; to add more contrast, the dark color values are decreased and the bright ones increased. The newly calculated data is sent back to the graphical-user-interface, which simultaneously takes care of generating a preview before applying the filter to the original. If the user is satisfied with the selection, the original image is recalculated and afterwards shown by the administration-layer.
Managing all these and other upcoming problems, we successfully completed a working version of our program, fulfilling all the requirements.
In conclusion we can say that the JAVA-project not only promoted the learning and understanding of the programming-language, but also provided very valuable experiences in project management and team working. We soon realized that good information flow is absolutely indispensable in a project team.
Dowload
- Java Program (zip) Written by Marcel Goretzki & Michael AddlingTranslated by Martin Freitag

