Digital Image Processing

University of Oulu
Home Noppa 521467A >  Assignments


The course is not in progress or the course does not use Noppa. Contents of this page may be out of date.

Programming exercise

The digital image processing course contains a mandatory Python programming exercise that is done in groups of one or two students. The programming exercise is independent work, so there are no guided laboratory sessions. The programming exercise is divided into pre-tutorial and five assignments, each of which must be returned within one week after they have been published on this page .

It is possible to earn 15 points from the assignments. These points will be added to the exam points to determine the final grade. In order to take the exam you need at least 8 points (acceptance limit).

The assignments consist of image processing tasks that need to be completed with few lines of Python code, and possibly some questions about the related theory. The basic idea is that you also need to study the theory first in order to solve these tasks and answer the questions.

If you experience problems that you cannot solve using the course material, including the pre-tutorials, or related Python documentation, or have any questions regarding to the programming assignments in general, please do not hesitate to contact the teaching assistant.

The following table summarizes the tentative schedule, points and topics for the programming assignments:










Pre-tutorial to NumPy and image processing with Python





Histogram processing & spatial filtering





Geometric transformations





Fourier transform and frequency domain filtering





Image restoration and denoising in spatial and frequency domain





Image segmentation - global thresholding and watershed

Possible changes and updates concerning, e.g. dates and instructions, are announced updated on this page and in the news section, thus email notifications will be also sent to student who have registered to the course.


The point table for the assignments graded so far is in the results page.

Late homework policy

Returning an assignment late will result in deducted number of points for that part based on the following rules:

  • 0-2 days → 75%
  • 2-4 days → 50%
  • 4-6 days → 25%
  • 6+ days → 0%

These point reductions are taken into account when adding to the exam points. They are not affected to the minimum requirement of 8 points.

Validy of points

Assignment points are valid for grading only one year.


The programming assignments are delivered as browser-based Jupyter notebooks, which are documents containing both live code and rich text elements, like headers, paragraphs, equations, figures and links. In practice, this means that you should download the assignment notebook from this website and perform the requested image processing tasks in the reserved code shells, and answer the questions written in bold.

Naturally, it is possible to do the programming part with your favorite Python editor, etc. However, it is highly recommended to work directly on the provided notebooks because they provide detailed step-by-step instructions how to perform the image processing tasks, and you will have to put your code in the notebook form in the end anyway.


The easiest and recommended way of using Jupyter notebooks is to install Anaconda (Python 3.7 version) on your own computer. Anaconda is an open-source scientific package manager that includes all the packages you will use while making the programming assignments, including matplotlib, NumPy, SciPy, scikit-image and Jupyter.

For installation follow these instructions (use Python 3.7 version).

CSC notebooks

For those who do not want to install Anaconda to their computer, one option is to use the Jupyter notebooks provided by CSC. Here are brief instructions:

1. In a browser open the page and log in with Haka and the university credentials.

2. Select the environment Jupyter Machine Learning and press Launch new.

3. Wait few seconds for the environment to be initialized.

4. Press Open in browser to lauch the file manager view.

5. Press New and Terminal to open a terminal tab.

6. In the terminal write:

pip install scikit-image

exit    (and close the tab)

7. In the file manager view press New and Python 3 to launch a new notebook.

Notice! Lifetime of the notebooks is limited to 10 hours. You need to download your work before the time runs out.

Using Jupyter notebooks

To begin working with Jupyter notebooks, just navigate to the folder where you have downloaded the assignment files, and run a notebook served from command line (using terminal on Mac/Linux or command prompt on Windows) by typing:

jupyter notebook

This opens the Jupyter notebook dashboard in your web browser at your current working directory where you are able to open the interactive Python notebook (.ipynb) files.

Basic commands:

  • Click a cell or press enter to enter 'edit mode' when you can type into the cell like a normal text editor 
  • Press esc to enter 'command mode' when you are able to edit the notebook as a whole but not type into individual cells
  • The keyboard shortcuts are active only in 'command mode'
  • Run the notebook document step-by-step (one cell a time) by pressing shift + enter 
  • Run the whole notebook by clicking on the menu Cell -> Run All
  • Restart the kernel, i.e. clear variables, etc., by clicking on the menu Kernel -> Restart or the restart button

For more detailed tutorial on Jupyter notebooks, please refer to this video, for instance.

It is recommended to go through the pre-tutorial notebooks to learn some basic functions and practices needed for making the programming assignments. Another resource for learning Python and Jupyter is the Course Introduction to Python notebook provided by CSC.

If you are familiar with MATLAB, there are several NumPy related tutorials and reference cheat sheets that will be handy.

Instructions for the first week to get started with the programming exercise:

  1. Install Anaconda (Python 3.7 version) or use the CSC notebooks
  2. Watch the video tutorial on Jupyter notebooks
  3. Go through the pre-tutorials

Frequently asked questions: 

  • You are allowed to use the built-in functions provided in NumPy, SciPy and Skimage, etc. for e.g. filtering if they are not explicitly forbidden for performing a specific task in the instructions. However, make sure that the function actually performs the task you were supposed to do (e.g. filtering in spatial vs frequency domain).

Expand all | Collapse all
19 Mar 19 at 23.59 Pre-tutorial
This is a brief introduction to NumPy and basic image manipulation using Python. Run the notebooks and try to understand the code. Do not submit the results.
27 Mar 19 at 23.59 Assignment #1
This programming assignment involves basic histogram processing and spatial filtering tasks.
03 Apr 19 at 23.59 Assignment #2
This programming assignment involves geometric transformation of images.
10 Apr 19 at 23.59 Assignment #3
This programming assignment involves frequency domain filtering tasks.
18 Apr 19 at 23.59 Assignment #4
This programming assignment involves image restoration tasks in spatial and frequency domain.
25 Apr 19 at 23.59 Assignment #5
This programming assignment involves image segmentation tasks.
Printable version
Updated 18 Apr 19 at 20:53

University of Oulu oulun.yliopisto(at)
Tel. +358 294 48 0000
Fax +358 8 553 4112
PL 8000
FI-90014 Oulun yliopisto