|
Visual Vibration Tracking 0.2
|
Программа глобально имеет 4 модуля (режима работы). Фактически они располагаются в порядке, который предполагается как наиболее логичный способ использования программы.
Каждый имеет модуль имеет общий интерфейс взаимодействия:
Выход из режима на клавишу 'Q'
Пауза на 'пробел'
Перед началом работы с записанными видео с конкретной камеры необходимо выполнить её калибровку. Она выполняется один раз, после чего полученные в её процессе значения будут применены при удалении дисторсии.
После нахождения коэффициентов в пункте 1. мы можем удалять дисторсию с видео, записанных на камеру, для которой мы нашли эти самые коэффициенты дисторсии.
Это нужно для снижения влияния оптических искажений на результат работы программы.
Основной режим работы приложения. Описание управления и пояснения представлены ниже.
Выполняется визуальное увеличение вибрации (маленьких и незаметных движений).
В этом режиме можно добавить нажатием на ЛКМ точки, перемещение которых будет покадрово отслежено (с помощью алгоритма Лукаса-Канаде) и проанилизировано. С помощью быстрого преобразования Фурье (на вход которого будет поданы координаты точек, а на выходе получены гармоники, составляющие входной сигнал) будут найдены частоты вибрации, которые есть у выбранной точки. Самая большая по магнитуде частота будет выведена справа от точки. На остальные пики можно посмотреть, нажав ПКМ в области взаимодействия точки
Этот режим предназначен для выделения (с помощью зажатой ЛКМ) области интереса - прямоугольника, в котором впоследствии будут найдены наиболее подходящие для трекинга точки (см. детектор углов Харриса и cv::cornerMinEigenVal())
После "отпускания" ПКМ режим будет автоматически изменён на Стандартный, после чего с найденными в области интереса точками будут производиться те же действия, что и с "одиночными" (описано выше), за исключением того, что вместо выведения максимальной магнитуды справа от точки в виде текста, эта максимальная магнитуда будет отображаться в виде цвета точки.
Для наглядности снизу появится градиентная шкала, чтобы можно было соотносить информацию о цвете с частотой в цифрах
Этот режим ставит на паузу программу нажатием на 'пробел'
Для лучшего понимания, мне кажется, стоит сначала ознакомиться с FrameHandler (класс, отвечающий за работу с видео), а также LonelyPointHandler и ColoredPointHandler