Мини-курс читался старшеклассникам-олимпиадникам в течении 7 занятий по полтора часа и состоял из лекций + практик.
Компьютерное зрение существовало многие годы до массового использования Эй Ай ой ой ай, и многие задачи до сих пор решаются лучше (по скорости обработки и стоимости обработки) именно традиционными методами.
В рамках мини-курса решим задачу сборки пазла:
-
Была прямоугольная картинка, ее нарезали прямыми линиями на куски
-
Куски были сфотографированы на черном фоне (например на черной футболке)
-
Автоматически распознаем какие пиксели принадлежат темному фону, а какие - кусочкам пазла:
- Найдем все куски и сопоставим их друг с другом по состыковке текстуры их сторон:
- Восстановим оригинальную картинку:
На этом пути мы будем использовать C++ и узнаем:
-
немного про статистику и работу с данными: в частности медиана и перцентили
-
немного про алгоритмы олимпиадного программирования: поиск в ширину и система непересекающихся множеств (СНМ)
-
немного про геометрию: имея геометрическую цепочку из точек найти точки-углы цепочки и разбить цепочку на четыре почти ровные стороны
-
немного про компьютерное зрение: как построить текстурное описание (дескриптор) для сторон кусочков пазла чтобы их сопоставить
-
немного про преобразование изображений: морфология (эрозия и дилатация), как склеить из нескольких изображений (кусков пазла) единое оригинальное изображение (через матрицу Гомографии)
-
немного про ускорение алгоритмов через многопоточность: с помощью OpenMP
На курсе скорее всего будут лилипуты, клоуны, и уж точно будет скоморох.
Курс рассчитан и лекции читались школьникам-олимпиадникам старших классов.
Ожидается что вас не пугает написание базового кода на C++ и не пугает умножение вектора на матрицу.