Mathematical Image Processing in MatLab/C++

This repository includes C++ and MatLab implementations of exercises from the methematical image processing lectures by Prof. Berkels held in 2015/2016: "Foundations of Mathematical Image Processing" and "Variational Methods in Image Processing". Both lectures included several programming assignments:

  • Task 1: Implement histogram equalization for grayscale images.
  • Task 2: Implement the following filters: average/box filter, Gaussian filter, Binomial filter and median filter.
  • Task 3: Implement Canny edges (without hysteresis thresholding and non-maximum suppression).
  • Task 4: Implement erosion, dilation and the isodata algorithm.
  • Task 5.1: Implement gradient descent using the Armijo rule for controlling the step size. Use the implementation to denoise one-dimensional signals by minimizing the following functionals:

    $J_a(x) = \sum_{i = 1}^n (x_i - f_i)^2 + \lambda \sum_{i = 1}^{n - 1} (x_{i + 1} - x_i)^2$,

    $J_b(x) = \sum_{i = 1}^n (x_i - f_i)^2 + \lambda \sum_{i = 1}^{n - 1} |x_{i + 1} - x_i|_\epsilon$

    where $x, f \in \mathbb{R}^n$ and $|t|_\epsilon = \sqrt{t^2 + \epsilon^2}$.

  • Task 5.2: The minimizer of $J_a$ can uniquely be identified with the solution to a linear system of equations. Implement the minimization procedure of $J_a$ by means of solving a system of linear equations.

For more details on these exercises see this article.

Image Processing Exercises on GitHub