В репозитории представлена реализация метода кросскорреляции для определения локальных смещений оптического потока. Основная область применения – это измерения жидких и газообразных потоков (PIV), измерения деформации твердых тел (Digital Image Correlation) и восстановление 3d-формы поверхности объекта при стереосъемке (стереозрение).
demos: демонстрация проекта на примерах и результаты измерения точности
matlab: код проекта, описание методов и функциональная схема
Пример запуска проекта находится в скрипте main.
Описание модулей в readme каталога matlab.
В main приведены примеры различных сценариев обработки.
В зависимости от задачи можно индивидуально собирать процесс
обработки (сценарий) для формирования оптимального решения.
Основная идея этого проекта – это создание модульной основы (скелета)
для разработки собственных решений на основе метода кросскорреляционной
обработки. Текущая реализация уступает в точности проекту OpenPIV,
но имеет более гибкую настройку. OpenPIV ограничен размерами окон опроса
степени 2 и не позволяет настраивать отдельно параметры на каждой итерации.
Возможно в большинстве приложений не требуется большего, но текущий проект
предлагает большую свободу в настройки сценария обработки как в
размерах окон опроса, так и в параметрах на каждой итерации.
Применять проект изначально предполагалось не только для измерения потоков
но и для задач стереозрения. Изображения для задачи стереозрения получены на стенде, имитирующем деформацию поверхности крыла летательного аппарата (или из магистерской работы страница 74 рисунок 36).
Для удобной визуализации результатов написан простой пользовательский интерфейс show с различными параметрами отображения
Достигнуть точность сравнимой с OpenPIV возможно, если переработать
модули resize(multigrid), deform_images(deform), validate_outliers,
interpolate и smoothing. В этих методах используется простые обработки на
основе встроенных функций в Matlab. Это сделано с целью более простого
понимания процесса обработки в проекте. Возможно относительная простота и
модульность проекта позволит использовать его в качестве не только основы
(скелета) для других решений, но и в образовательных целях.
Пример точности OpenPIV приведен в скрипте test_processing
в переменных mean_target и max_target. Также в каталоге openpiv_data
есть примеры обработки OpenPIV с визуализацией как из python,
так и из Matlab. Обработка осуществлена 3-ёх проходным методом с деформацией
окна опроса с размерами окон опроса 32, 16, 8 пикселей.
В readme каталога demos приведено сравнение точности
для 5-ти различных сценариев на примере датасета для PIV.
Этот проект не отличается высокой надежностью. Добиться ошибки выполнения довольно
просто, например, после метода smoothing поставить subpixel_peak, т.к.
subpixel_peak не обрабатывает дробные смещения, или в методе pass на первом
проходе задать параметр ‘type_pass’ = ‘next’ и тому подобное. Проектом можно
пользоваться как готовой программой, но в первую очередь он рассчитан на программистов,
которые могут использовать его как основу для разработки собственных решений.
По поводу обработки границ изображения. Отказался от расширения изображения для
расчета векторов до границы. На данный момент ближайший вектор к границе
находится на расстоянии половины окна опроса последнего прохода.
Буду рад аргументированной критике и советам по улучшению проекта.