Я ищу простой алгоритм для обнаружения оптического потока всего входа.
В OpenCV функциональность отслеживания точек Lucas-Kanade действительно хороша, но она очень медленная для нескольких точек. Я ищу результат, основанный на изображении, а не точечный. Единственная информация, которую я могу найти, касается отслеживания LK.
Я могу рассчитать величина движения на основе простой разности кадров, но я хочу знать направление тоже. В основном я хочу получить текстуру поля оптического потока, которую я могу использовать для симуляции жидкости графического процессора.
Должен быть какой-то простой алгоритм, основанный на элементарных детекторах движения или что-то в этом роде. Что-то вроде комбинации разности кадров, масштабирования и размытия с 3 последовательными кадрами.
Просто чтобы быть супер ясным, я не хочу информацию о методе Лукаса-Канаде.
OpenCV имеет BackgroundSubtractor класс, который делает различие кадров, я думаю, вы должны будете сделать размытие самостоятельно. Это, однако, не строго расчет оптического потока.
У Farneback есть метод для плотного оптического потока, реализованный в OpenCV через резюме :: calcOpticalFlowFarneback (..) метод. Он будет генерировать матричный «поток», который имеет составляющие величины и направления. Метод Хорна-Шунка не является встроенным в OpenCV.
PS: Лукас Канаде не очень медленный. Это, вероятно, медленное извлечение характерных точек. Попробуйте использовать детектор cv :: FAST.
Других решений пока нет …