/Oscilloscope-Music-Display

In this repo students from Department of Physics makes vectorise oscilloscope display for playing in the game

Primary LanguageJava

Oscilloscope-Music-Display

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 Модуль отвечающий за вывод аудио на осциллограф