Image processing can be taught very effectively by complementing the basic lectures with computer laboratories where the participants can actively process and manipulate images. This offering is made even more attractive by allowing the students to develop their own image processing code within a reasonable time frame. The learning of the mathematical concepts of the image processing is facilitated with hands-on experimentation. The first level of involvement is to apply the algorithms to real images and to see the results. The second is to take part in the programming itself and to truly experience how formulas translate into algorithms. This is the purpose IP-LAB, a series of computer laboratories designed for teaching image-processing programmation.
These have been developped for the EPFL master course and are made available to others. We provide also a collection of online demonstrations.
The computer laboratories are part of the Image Processing I and Image Processing II. They are individual work and they are graded. The goal of these sessions is to have students practice image processing by developing some basic algorithms in Java. These have been developped for the students of the engineering section and life science section. Image Processing I Winter semester
Image Processing II Summer Semester
|
The laboratories are built around ImageJ (a public domain software for image analysis). It has a user-friendly interface and a basic set of commands. It is extensible through the addition of plugins. These can be developed by students and added to the plugins library. The students are challenged with simple practical imaging problems and they acquire hands on practice by experimenting with image processing operators. In the process, they also learn how to program the standard image processing algorithms in Java. This is made possible thanks to a programmer-friendly environment and a software interface which greatly facilitates the developments of plugins for ImageJ.
Reference:
D. Sage, M. Unser, Teaching Image-Processing Programming in Java, IEEE Signal Processing Magazine, vol. 20, no. 6, 2003. |
ImageAccess is a programmer-friendly software layer to simplify and robustify the access to pixels data without having to worry about the technicalities and interfacing with ImageJ.
Full information on ImageAccess
We have developed a class, named ImageAccess, that provides a high-level and foolproof way of accessing the pixels of an image in ImageJ. The access is independent of the image type. The data retrieved by the methods of the ImageAccess class are always in "double" format. Hence, the image-processing code is written once only in double (best precision); the type conversion is handled automatically. The typical way to program is to retrieve an image block by using a method that begins with get...(). The block is processed and the result is written in the image using a put...() method. The block can be a single pixel, a row, a column, a 3*3 or a 5*5 neighborhood window. For locations outside the image, the methods of the ImageAccess class return pixel values by applying mirror boundary conditions. For example, when a student wants to retrieve a 3*3 block of an image centered on (0,0), the interface layer provides the block with mirror conditions. This frees the programmer from having to worry about what happens at the boundaries. It produces simpler code and results in more pleasant results (no frame or border artifacts on the output).
Conceptually, there is a clear advantage in separating the image-processing code (algorithm) from the access of the pixels, since the latter is a technical part that depends on the language, the platform, or the frame grabber. However this is not the approach taken in ImageJ because is has a computational cost associated with it. As a result, the typical image-processing routines in ImageJ are faster than ours but also significantly more complicated. Our method of access leads to an overhead. We consider this as an acceptable price to pay for substantial simplifications in algorithm transcription. Thanks to this layer, an algorithm can be translated into Java almost literally, not to mention that the code is independent of the data type. This is in contrast with ImageJ's own operators which need to be implemented for each data type (e.g., byte, 32 bits).
Fill the form
giving your email. We will return to you a email with a username and a password that
will give you access to session pages so that you can download the subject and the plugins of old sessions.
Introduction and Fourier |
||
Digital Filtering |
||
Morphological operators |
||
Edge Detection |
||
Interpolation and Geometric Transformation |
||
Wavelets Transform |
||
Tomography and Backprojection |
||
Deconvolution |
Upon request |
Upon request |
Image Analysis |
Upon request |
Upon request |
Reference to cite: D. Sage, M. Unser, Teaching Image-Processing Programming in Java, IEEE Signal Processing Magazine, vol. 20, no. 6, 2003.
Copyright (C) 2000-2018, Biomedical Imaging Group Ecole Polytechnique Fédérale de Lausanne (EPFL).
© 2020 EPFL • webmaster.big@epfl.ch • 09.04.2020