Обязательная часть задания
Программа должна открывать и сохранять изображения в формате BMP или в семействе форматом PBM/PGM/PPM.
Должны быть реализованы следующие алгоритмы:
- Вычисление метрик сравнения изображений: MSE и PSNR
- Вычисление метрик сравнения изображений: SSIM и MSSIM
- Алгоритм детектирования контуров Канни
- Фильтр Габора с произвольными параметрами
Дополнительная часть задания
- Обнаружение сосудов на изображениях глазного дна с помощью фильтров Габора
Замечания и рекомендации
В метрике SSIM рассматривается один блок — всё изображение. Для метрики MSSIM (Mean-SSIM) предлагается разбиение изображения на блоки 8х8.
В алгоритме Канни должны быть корректно реализованы все его вспомогательные этапы: вычисление модуля градиента, подавление немаксимумов и гистерезис.
Входными параметрами алгоритма Канни являются три числа: параметр фильтра Гаусса (сигма), используемый для вычисления производных, и два пороговых значения, задаваемых в виде коэффициента относительно максимального значения модуля градиента на изображении.
Для отладки фильтра Габора удобно взять чёрное изображение с белой точкой посередине, тогда результатом свёртки будет ядро фильтра Габора.
Результат необходимо отконтрастировать и преобразовать аналогично фильтру Собеля, добавив серую подложку.
Обнаружение сосудов предлагается реализовать как взятие максимума (или минимума в зависимости от реализации) отклика среди фильтров Габора нескольких направлений.
Формат параметров командной строки
Программа должна поддерживать запуск из командной строки со строго определённым форматом команд:
%programname% (command) [parameters...] (input_image) (output_image)
%programname% (command) (input_image_1) (input_image_2)
Список команд:
mse | | Вычисление метрики MSE, на вход подаётся два изображения, результат выводится в консоль - одно число |
psnr | | Вычисление метрики PSNR |
ssim | | Вычисление метрики SSIM |
mssim | | Вычисление метрики MSSIM |
canny (sigma) (thr_high) (thr_low) | | Детектирование границ с помощью алгоритма Канни. Первый параметр — сигма для вычисления частных производных, следующие два параметра - больший и меньший пороги соответственно |
gabor (sigma) (gamma) (theta) (lambda) (psi) | | Свёртка с фильтром Габора (вещественной частью), углы задаются в градусах |
vessels (sigma) | | Обнаружение сосудов заданного масштаба |
Примеры изображений
 Исходное изображение для алгоритма Канни |
 Результат детектирования контров Канни с параметрами σ=2, thr_high = 0.02, thr_low = 0.002 |
 Визуализация ядра фильтра Габора: σ=3, γ=1, θ=π/6, λ=6, ψ=0 |
 Ещё пример ядра фильтра Габора |
 Исходное изображение для применения фильтров Габора |
 Результат обработки исходного изображения с помощью фильтра Габора, вызов с параметрами: &programname% gabor 3 1 30 6 0 input.png output.png |
 Изображение для выделения сосудов |
 Результат выделения сосудов для σ=2 — взятие для каждого пикселя максимального по модулю значения свёртки с фильтром Габора и сохранение только отрицательных значений |
Справочные материалы