Задание 2. Вариационные методы повышения качества изображений

Задание в рамках курса «Вариационные методы обработки изображений».

Обязательная часть задания

Требуется написать программу, реализующую метод обращения свёртки (деконволюции) изображений через минимизацию регуляризирующего функционала. Выбор нормы невязки, стабилизатора на усмотрение студента. Рекомендуемый стабилизатор — функционал полной вариации, либо функционал полной обобщённой вариации. Рекомендуемое количество итераций — 100.

Требования к программе

Язык реализации - Python 3. Программа либо должна состоять из одного файла, либо иметь главный файл с именем main.py. Допустимо использовать библиотеки, общепринятые для обработки изображений (scipy, numpy).
Готовое решение должно быть либо загружено на сайт, либо отправлено на почту khvostikov@cs.msu.ru.

Критерии оценки

Уже хорошо, если программа выдаст результат, и он по качеству будет лучше исходного изображения для простых ядер размытия (фильтр Гаусса).

Рекомендации

При тестировании будут использоваться изображения с гауссовским шумом со стандартным отклонением в диапазоне [0, 20] и со следующими ядрами размытия: фильтр Гаусса (параметр от 0.5 до 5), круг (радиус от 0.5 до 5), а также реальные сложные ядра, возникающие при движении (motion blur). Рекомендуется самостоятельно смоделировать различные ситуации и найти оптимальные параметры в зависмости от уровня шума.

Формат параметров командной строки

Программа должна поддерживать запуск из командной строки со строго определённым форматом команд:
%programname% (input_image) (kernel) (output_image) (noise_level)
Аргументы:
input_image Имя файла — входное размытое и зашумлённое изображение
kernel Имя файла — ядро размытия, изображение
output_image Имя файла — выходное изображение
noise_level Уровень шума на входном изображении
Ядро размытия после чтения из файла должно быть нормализовано таким образом, чтобы сумма коэффициентов стала равна 1. Уровень шума — вещественное число, среднеквадратичное отклонение (корень из дисперсии), для диапазона значений пикселей [0, 255].

Примеры исходных данных и результатов

Примеры данных: ZIP. В архиве находятся исходное размытое изображение, ядро размытия, референсное изображения и пример результата.