Данный репозиторий представляет собой проект, на базе которого будут выполняться практические упражнения из курса по Оптимизации приложений компьютерного зрения в рамках зимней школы 2016 года, совместно проводимой компанией Itseez и ННГУ им. Лобачевского.
Приложение реализует относительно простой алгоритм — скелетонизация символов. Данный алгоритм включает в себя несколько базовых операций из области обработки изображений: конвертация из одного цветового пространства в другое, масштабирование изображения, морфологические операции и некоторые другие. Однако, несмотря на кажущуюся простоту операций, можно убедиться, что первоначальная версия может работать несколько секунд, что крайне медленно. Поэтому в рамках практических занятий программная реализация должна будет оптимизироваться с использованием различных приёмов, позволяющих сократить время работы алгоритма.
Проект реализован на языке С++ и имеет распространенную в настоящее время структуру. Он содержит статическую библиотеку, реализующую основной алгоритм, небольшое демо-приложение, и две сборки с автоматическими тестами (регрессионные и на производительность). Для построения проекта используется инструмент CMake, тесты реализованы при помощи фреймворка Google Test, также для удобства используется библиотека OpenCV, предоставляющая структуры данных и некоторые полезные функции для работы с изображениями.
Далее, рассмотрим назначение каждой из директорий:
3rdparty— директория, содержащая сторонние коды, необходимые для реализации автоматических тестов. В целом её можно игнорировать.include,src— директории, содержащие реализацию фильтра скелетонизации. Они компилируются в статическую библиотекуskeleton_filter.sample— директория с консольным приложением, загружающим изображение и производящим его скелетонизацию.test,perf— директории, содержащие реализации регрессионных тестов и тестов на производительность.testdata— директория с тестовыми изображениями, которые можно подавать на вход демо-приложению..gitignore— служебный файл Git, перечисляющий файлы, которые следует игнорировать..travis.yml— конфигурационный файл для системы автоматического тестирования Travis-CI.CMakeLists.txt— корневой файл для сборки проекта при помощи CMake.README.md— информация о проекте, которую вы сейчас читаете.
Описание практических заданий можно найти в следующих документах: