Обязательная часть задания
Должны быть реализованы следующие алгоритмы:
- Визуализация дискретизированных направлений градиента (составная часть алгоритма Канни)
- Подавление немаксимумов модуля градиента (составная часть алгоритма Канни)
- Конечный результат алгоритма детектирования контуров Канни
Указания
Градиент должен вычисляться как в первом задании — через свёртку с производными функции Гаусса.
Дискретизированные направления градиента должны быть визуализированы следующим образом:
- 0 — модуль градиента равен нулю;
- 64 — направление градиента наиболее близко к оси Ox;
- 128 — направление градиента наиболее близко к оси Oy;
- 192 — направление градиента наиболее близко к главной диагонали;/li>
- 255 — направление градиента наиболее близко к побочной диагонали.
Вывод результата немаксимального подавления должен быть аналогичен вычислению модуля градиента из первого задания: диапазон [0, gmax] должен быть отмасштабирован до [0, 255].
Результатом работы алгоритма Канни является бинарная маска контуров — значения пикселей должны быть 0 или 255.
В алгоритме Канни должны быть корректно реализованы все его вспомогательные этапы: вычисление модуля градиента, подавление немаксимумов и гистерезис. Входными параметрами алгоритма Канни являются три числа: параметр фильтра Гаусса (сигма), используемый для вычисления производных, и два пороговых значения, задаваемых в виде коэффициентов относительно максимального значения модуля градиента gmax после немаксимального подавления.
Формат параметров командной строки
Программа должна поддерживать запуск из командной строки со строго определённым форматом команд:
%programname% (command) [parameters...] (input_image) (output_image)
Список команд:
dir (sigma) |
|
Визуализация направлений градиента |
nonmax (sigma) |
|
Результат немаксимального подавления |
canny (sigma) (thr_high) (thr_low) |
|
Детектирование границ с помощью алгоритма Канни. Первый параметр — сигма для вычисления частных производных, следующие два параметра — вещественные числа — больший и меньший пороги соответственно |
Примеры изображений
 Исходное изображение для алгоритма Канни |
 Результат детектирования контуров Канни canny 2 0.02 0.002 |
Справочные материалы