In this repo students from Department of Physics makes vectorise oscilloscope display for playing in the game
Данная программа позволяет осуществлять обработку цифрового изображения в формате .png .jpg. jpeg и др. для дальнейшего вывода этого изображения на экран осциллографа. Для этого были реализованы алгоритмы:
- canny edge (определения краев объектов на изображении)
- Преобразование картинки в ч/б
- Фильтрация шумов
- Определение градиента и интенсивности
- Утоньшение линий
- Фильтрация по градиенту
- Векторизации: -распознование пикселей краев с одинаковым направлением градиента с точностью до tau -расчет на основе полученного множества пикселей направленного прямоугольника (вектора)
- Упорядочивания
- модифицированный алгоритм Краскала
- рекурсивный обход дерева
- Преобразования координат в звуковую дорожку, для вывода по двухканальному выходу на входы х и у осциллографа
В программе реализована возможность менять множество параметров, влияющих на процесс обработки информации:
- canny edge
- Размер Гауссового ядра k
- Среднеквадратическое отклонение sigma
- Верхний порог для ярких пикселей highThrRat в долях от максимального значения амплитуды
- Нижний порог для ярких пикселей lowThrRat в долях от максимального значения амплитуды
- Число циклов отсеиваний numOfHyst
- Векторизация
- Погрешность угла, при которой направление считается совподающим tau
- Минимальный размер множества пикселей в векторе, при котором он считается пригодным для обработки regMinSize
- Максимальное расстояние между концами двух векторов в одном кластере radius
Также реализовано окно дебага, в котором можно посмотреть на результаты обработки на каждом этапе Изменение параметров обработки, параметров чтения/вывода и управление окном дебага происходит через консоль.
- engine ключевые файлы. Связь всех модулей программы и управление ими. Обработка ввода команд из консоли
- factory Модуль отвечающий за обработку и хранение изображения
- edge Модуль отвечающий за canny edge
- vectors Модуль отвечающий за векторизацию
- map Модуль отвечающий за упорядочивание векторов и их сшивание
- io Модуль отвечающий за чтени и ввывод, а также за окно дебага
- args Модуль отвечающий за обработку команд из консоли и хранение аргументов работы программы
- debug Модуль отвечающий за работу окна дебага
- input Модуль отвечающий за чтение картинок
- output Модуль отвечающий за вывод аудио на осциллограф