OpenCV: goodFeaturesToTrack и calcOpticalFlowPyrLK для движущейся камеры

#opencv #opticalflow

#opencv #opticalflow

Вопрос:

Я попробовал код, написанный здесь: http://i-vizon.blogspot.ch/2013/03/optical-flow-using-opencv-library-on.html

Он работает довольно хорошо, но не очень хорошо работает в случае движущейся камеры, потому что все функции удаляются при смене сцены.

По сути, код составлен так:

  • Первый кадр: goodFeaturesToTrack (grayFrames, points1,MAX_COUNT,0.01,5, Mat(),3,0,0.04);

  • Другие кадры: calcOpticalFlowPyrLK (prevGrayFrame, grayFrames, points2,points1, статус, ошибка, winSize,3, termcrit, 0,0.001); goodFeaturesToTrack (grayFrames, points1,MAX_COUNT,0.01,10, Mat(),3,0,0.04); с обменом точками и копиейтекущий кадр в предыдущем.

Проблема: когда я использую его с камерой, обрабатывая ее на руке, когда я меняю первые сцены, оптический поток не создается, я полагаю, потому что начальные функции больше не содержатся в новых кадрах. Как я могу обновить характеристическую точку в этом коде, чтобы продолжить работу? Что является хорошим условием обновления? Основываясь, например, на количестве функций?

Большое вам спасибо.

Комментарии:

1. Какова цель использования opticalflow? Чего вы пытаетесь достичь в своем приложении? Дайте нам некоторую информацию..

2. На первом этапе я просто хочу отслеживать оптический поток для движущейся камеры. Алгоритм, указанный в ссылке, хорошо работает только на стационарной камере (например, на веб-камере).

3. Есть ли особая причина, по которой вы хотите использовать goodFeaturesToTrack? Будет ли для вас работать постоянная сетка? Кроме того, вы можете включить свой код в вопрос.

4. Спасибо Sarid за ответ. Я думаю, что буду использовать постоянную сетку.