Написать программу по обработке и анализу изображений 1 500 руб
Антон Конушин, Тимур Ибадов.
1 Обзор задания
В задании нужно будет применить знания по обработке и анализу
изображений для поиска пути от начальной точки, обозначенной крас-
ной стрелкой, до «клада». Для успешного выполнения задания требуется
реализовать несколько методов для обработки изображений, а также су-
меть воспользоваться этими методами для успешного решения задачи
распознавания.
На изображениях для обработки находятся 3 типа объектов интереса:
Белые стрелки, указывающие путь.
Начальная стрелка (всегда красного цвета).
«Клад» — некоторый объект на который указывает последняя в
пути стрелка.
Рис. 1: Исходное изображение (слева) и результат работы (справа).
2 Базовая часть задания
Требуется реализовать следующий алгоритм:
1. Загрузить изображение в формате BMP (можно использовать биб-
лиотеку EasyBMP).
12. Преобразовать изображения в бинарное с помощью любого из рас-
сказанных на лекции алгоритмов.
3. Выделить связные области любым из алгоритмов, рассказаных на
лекции.
4. Найденные области разделить на стрелки и все остальное (среди
этого класса будет «клад»). Для этого стоит использовать различ-
ные признаки: цвет, характеристики связных областей (площадь,
длина периметра, эксцентриситет и т.д.), любые другие признаки,
которые придумаете.
5. Среди стрелок найти начальную (она всегда будет красной).
6. Определить направление, куда она указывает. Например, можно
подсчитать центр масс и главную ось инерции. Это дает направ-
ление и точку начала пути. Для того, чтобы определить в какую
сторону от центра масс двигаться, можно воспользоваться зеле-
ным пятном на стрелке, посчитав по какую сторону от центра масс
вдоль направления оси инерции лежит большее число пикселей с
зеленой компонентой, доминирующей над остальными.
7. По этому направлению двигаться по изображению, пока не встре-
тится следующая стрелка.
8. Повторять шаги 6, 7 пока не получится, что последняя стрелка
указывает не на следующую стрелку, а на другой объект («клад»).
9. На исходном изображении нарисовать вокруг «клада» ограничива-
ющий прямоугольник минимального размера.
10. Для каждой стрелки пути соединить ее центр с центром объекта,
на который она указывает (отрезком на исходном изображении).
11. Сохранить полученное изображение.
Полученный алгоритм должен корректно работать на всех примерах
из папки «simple». За выполнение базовой части можно получить 15
баллов, для этого она должна быть реализована полностью. Баллы за
бонусную часть не начисляются, если не была выполнена базовая часть.
23 Дополнительная часть задания
В архиве с примерами есть пять изображений в папке «complex». За
каждое изображение, которое будет корректно обработано, Вы получи-
те +1 балл. Алгоритм должен обрабатывать все изображения с одина-
ковыми параметрами: запрещается выбирать параметры вручную для
каждого примера (но эти параметры могут автоматически оцениваться
алгоритмом, например, в зависимости от зашумленности изображения).
Для улучшения результата могут быть использованы следующие мето-
ды:
Фильтрация шума (медианная фильтрация, фильтр Гаусса).
Операции математической морфологии (сужение, расширение, за-
крытие, открытие).
Автоматическая коррекция контрастности/цветности («серый мир»,
растяжение диапазона).
Выделение краев для нахождения объектов.
Любой другой метод, который поможет улучшить результат.
4 Интерфейс программы
Программа должна иметь консольный интерфейс и принимать в ка-
честве аргументов два параметра: имя файла с исходным изображением
и имя файла, в который нужно будет сохранить результат. Пример:
find_treasure in.bmp out.bmp
5 Требования к реализации задания
Для выполнения задания можете использовать любую операционную
систему и любую среду разработки. Язык реализации - C/C++. Будьте
готовы показывать программу на своей машине, если у проверяющего
возникнут сложности с запуском Вашей работы.
Вы можете переделать шаблон для первого задания, это может упро-
стить выполнение некоторых частей алгоритма. Запрещается использо-
вать сторонние библиотеки, кроме упомянутых выше и тех, что содер-
жатся в шаблоне для первого задания.
Зарегистрируйтесь или войдите на сайт под своим именем.