Данный репозиторий представляет собой проект, на базе которого будут выполняться практические упражнения из курса по Оптимизации приложений компьютерного зрения в рамках зимней школы 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
— информация о проекте, которую вы сейчас читаете.
Описание практических заданий можно найти в следующих документах: