#matlab #image-processing #numpy #computer-vision #opticalflow
#matlab #обработка изображений #numpy #компьютерное зрение #Оптический поток
Вопрос:
Я работаю над оптическим потоком, и на основе конспектов лекций здесь и некоторых примеров в Интернете я написал этот код на Python.
Весь код и примеры изображений также присутствуют. Для небольших смещений около 4-5 пикселей вычисленное направление вектора кажется правильным, но величина вектора слишком мала (вот почему мне пришлось умножить u, v на 3 перед их построением).
Это из-за ограничения алгоритма или ошибки в коде? В приведенной выше заметке к лекции также говорится, что движение должно быть небольшим: «u, v меньше 1 пикселя», может быть, именно поэтому. В чем причина этого ограничения?
Комментарии:
1. LK использует приближение первого порядка, и поэтому (u, v) в идеале должно быть << 1, если нет, то в поведении доминируют члены более высокого порядка, и вы тост. Для преодоления этой проблемы на слайдах 20 и 21 автор предлагает использовать последовательность последующих шагов, начиная с очень низкого разрешения, а затем увеличивая его. Однако алгоритм не полностью объяснен в вашем источнике.
Ответ №1:
@belisarius говорит: «LK использует приближение первого порядка, и поэтому (u, v) в идеале должно быть << 1, если нет, то в поведении доминируют члены более высокого порядка, и вы тост «..
Ответ №2:
Стандартный вывод из уравнения ограничения оптического потока (ОФИС, слайд 5 вашей ссылки) заключается в том, что «ваше движение должно быть меньше пикселя, меньше членов высшего порядка убивают вас». Хотя технически это верно, вы можете преодолеть это на практике, используя большие окна усреднения. Для этого требуется, чтобы вы выполняли разумную статистику, то есть не чисто среднее значение наименьших квадратов, как предложено на слайдах. Одинаково быстрые вычисления и гораздо более высокие результаты могут быть достигнуты с помощью регуляризации Тихонова. Это требует установки значения настройки (константа Тихонова). Это можно сделать как глобальную константу или настроить ее на локальную информацию в изображении (например, доверительный коэффициент Ши-Томази, он же определитель тензора структуры).
Обратите внимание, что это не заменяет необходимость многомасштабных подходов для работы с большими движениями. Это может немного расширить диапазон для того, с чем может справиться любой отдельный масштаб.
Реализации, визуализации и код доступны здесь в формате учебника, хотя и в Matlab, а не в Python.