Graphic STI
logo EPFL
text EPFL
english only
Biomedical Imaging Group
IP-LAB • Image Processing Laboratories • EPFL
EPFL > BIG > Teaching > IP-lAB

Home Page





Tutorials and Reviews


Download Algorithms

Jobs and Trainees

Student Projects








Image Processing Laboratories

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.

EPFL Master Course: Image Processing

Ongoing session
Pratical information at a glance

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

Autumn semester

Prof. M. Unser and Prof. D. Van De Ville

IP-LAB-0 Introduction
IP-LAB-1 Pixelwise Operation and Fourier Analysis
IP-LAB-2 Digital Linear Filtering
IP-LAB-3 Morphological Operators

Image Processing II

Spring Semester

Prof. M. Unser and Prof. D. Van De Ville

IP-LAB-4 Edge Detection or Directional Image Analysis
IP-LAB-5 Interpolation and Geometrical Transformation
IP-LAB-6 Wavelets, Image Transforms
IP-LAB-7 Deconvolution, Computed Tomography

Dissemination: Series of computer laboratoires for image-processing programmation in Java

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.


D. Sage, M. Unser, Teaching Image-Processing Programming in Java, IEEE Signal Processing Magazine, vol. 20, no. 6, 2003.

Key points


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).

Examples of (very) old sessions

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

Read the assignment

Download the plugin

Digital Filtering

Read the assignment

Download the plugin

Morphological operators

Read the assignment

Download the plugin

Edge Detection

Read the assignment

Download the plugin

Interpolation and Geometric Transformation

Read the assignment

Download the plugin

Wavelets Transform

Read the assignment

Download the plugin

Tomography and Backprojection

Read the assignment

Download the plugin


Upon request

Upon request

Image Analysis

Upon request

Upon request

Usage and Publications

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).

  1. The laboratories are built around ImageJ, a public domain software for image analysis.
  2. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: the source code or binary code must retain the above copyright notice, this list of conditions and the following disclaimer.
  3. This software is provided by the author and contributors "as is'' and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the author or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.

© 2017 EPFL • • 27.11.2017