Во время обучения мне посчастливилось приобщиться к методу кросс-корреляции. В университете в этот момент был заказ на разработку системы сбора и обработки данных с достаточно специфического объекта. В качестве одного из видов измерений на объекте применялась обработка видеосигнала.
Получаемый видеосигнал оценивал состояние тепловых потоков в помещении. Благодаря конвективному теплообмену частицы пыли в помещении совершали вихревое перемещение, которое и отслеживала камера.
Чтобы выделить частицы в помещении использовался лазер с линзой, раскладывающей лазерный луч в вертикальную плоскость. Полученный луч подсвечивал в пространстве частицы водяной пыли(распыляемой спец устройством). Перпендикулярно плоскости частиц устанавливался штатив видеокамеры(таким образом получен кадр выше). Использовалась камера с высокой частотой съемки, чтобы полученные соседние кадры были достаточно последовательны в отношении к скорости движения частиц пыли.
Имея на руках исходные данные можно получить скорость группы частиц по которым рисуется карта скоростей среза вихревого потока частиц. Для этого используется метод кросс-корреляции.
Кросс-корреляция
Это достаточное простое преобразование, которое имеет большие перспективы практического применения. Необязательно вдаваться в глубины преобразований, достаточно понять принцип. Я постараюсь его донести.
Перед тем как воспользоваться методом требуется подготовить полученные кадры:
1. кадр переводиться в градации серого
2. производиться фильтрация
Результатом вышеуказанных действий в идеале должна являться плоскость с расположенными на них точками.
Полученные кадры являются матрицами, которые уже легко можно использовать при кросс-корреляции.
Я повторяюсь, что сложности описанные выше обусловлены требованием высокой точности. В качестве исходных данных могут использоваться любые матрицы, однако схожие между собой (correlate — находить связь)
Допустим мы имеем два кадра:
Ну а теперь матемагия:
1. производим над обеими матрицами быстрое преобразование Фурье (БПФ или FFT).
2. над базовой матрицей производим комплексное сопряжение (умножаем на «-1» комплексное слагаемое(еще помню:))
3. полученные матрицы перемножаем
4. производим процедуру обратного быстрого преобразования Фурье (Inverse FFT)
Вуаля! Получаем матрицу исходной размерности на которой максимальное значение является концом вектора проведенным от начала координат к текущему положению группы объектов(тут ребята я не помню точно возможно от центра матрицы, даже скорее всего).
Зная время между кадрами можно получить величину скорости.
Данный метод не ограничивается плоскостным измерением, его можно использовать и для объемных задач, но это потребует некоторых изменений, которых я в рамках университета ува не коснулся.
Плюсы:
1.чистая математика, думаю библиотеки имеются в наличие в сети
2.возможность следить за группами объектов
3.группа объектов может перемещаться в пространстве друг относительно друга, это не страшно, фурье проглотит
4.возможность отслеживать объекты распознанные благодаря OpenCV
Минусы:
Для достоверности измерений. В случае достаточно стохастических перемещений, рекомендуется измерять группы от 5 до 12 объектов (пруф-линка не будет, со слов передаю)
Пользуясь случаем выражаю признательность Юрасу Станиславу Федоровичу, за полученные знания.
При желании могу скинуть файл и инструкции, как это чудо запустить в LabView 8.6.
0 комментариев на «“Использование метода кросс-корреляции для определения скоростей”»
Спасибо! Отличная статья!
немного поправил теги 🙂
Здравствуйте! Очень интересная информация, пишу сейчас исследовательскую работу, очень мало информации по этому методу в исследуемом мной направлении, оказалось очень кстати. Нужны и файл, и инструкция, как запустить, если можно.)
свяжусь с вами завтра вечером
Хорошо! Буду ждать
Здравствуйте))) хотела бы попросить вас файл и инструкцию как запустить в labview))) если это возможно буду очень признательна_))))
Добрый день! Пришлите пожалуйста файл и инструкции для LabView, буду очень благодарен.
скажите, а нет литературы почитать и может практических материалов как это всё работает?