OPEN SOURCE
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