Digital Image Processing

University of Oulu
Home Noppa 521467A >  Assignments

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 14 points from the assignments. In order to take the first course exam (on 26 October) you need at least 8 points. Extra points (9-14) will give you 1-6 points to the first exam, and 1-3 points to the second exam (on 4 December). However, please note that these points can only improve your exam/course grade so you will still have to pass the exam without the help of the extra points.

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 assistant by e-mail at address jukka.komulainen at oulu.fi or by visiting the office TS311. You can also join IRC channel #dkk @ IRCnet which probably has the shortest response time.

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

 Part

 Available

 Deadline

Points

Description

0

4.9.

-

0

Pre-tutorial to NumPy and image processing with Python

1

12.9.

18.9.

3

Histogram processing & spatial filtering

2

19.9.

25.9.

2

Frequency domain filtering

3

26.9.

2.10.

3

Image restoration

4

3.10.

9.10.

3

Image restoration, color image processing, wavelets & compression

5

10.10.

16.10.

3

Image segmentation - global thresholding and watershed

You can browse the corresponding notebooks in GitHub without Jupyter.

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.

Results 

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 will be valid only when you have earned extra points for the exam(s), i.e. the amount of total points is greater than 8.

The point table for the assignments graded so far can be seen in the results sub page or here.

Working environment 

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 2.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. Alternatively, you can use Jupyter notebooks remotely from a Linux server but there might be some performance issues like lag. 

The following links give more detailed instructions for installing Anaconda, using Jupyter notebooks remotely:

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.

Even though no points are given from the introductory programming exercise (assignment 0), it is highly recommended to go the pre-tutorial notebooks carefully through because they introduce many important functions and practices needed for making the programming assignments.

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

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

  1. Install Anaconda (Python 2.7 version) or try out remote connection
  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
Deadline  
Title
11 Sep 17 at 23.59 Pre-tutorial to NumPy and image processing with Python
The tutorial part introduces many important functions and practices needed for making the programming assignments.
18 Sep 17 at 23.59 Assignment #1
DIP programming assignment #1 consists of histogram processing and spatial filtering. The enclosed zip file includes test images and Jupyter notebook that you need to complete. See the notebook for more details, including submission guideline.
25 Sep 17 at 23.59 Assignment #2
DIP programming assignment #2 consists of frequency domain filtering. The enclosed zip file includes test image and Jupyter notebook that you need to complete. See the notebook for more details, including submission guideline.
02 Oct 17 at 23.59 Assignment #3
DIP programming assignment #3 consists of image restoration tasks. The enclosed zip file includes test images and Jupyter notebook that you need to complete. See the notebook for more details, including submission guideline.
09 Oct 17 at 23.59 Assignment #4
DIP programming assignment #4 consists of image restoration, colour image processing and image compression with wavelets. The enclosed zip file includes test images and Jupyter notebook that you need to complete. See the notebook for more details, including submission guideline.
16 Oct 17 at 23.59 Assignment #5
DIP programming assignment #5 consists of image compression tasks. The enclosed zip file includes test images and Jupyter notebook that you need to complete. See the notebook for more details, including submission guideline.
Printable version
Updated 12 Oct 17 at 14:27

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