OpenCV время для контакта с оптическим потоком

Я пытаюсь написать программу на C ++ и OpenCV, которая вычисляет оставшееся время (кадры) до столкновения с объектом. В качестве примера видео у меня камера движется к доске.

Мой подход к этому следующий:

  1. обнаружение отслеживаемых функций (пробовал goodFeaturesToTrack () или настройку точек «вручную»)
  2. рассчитать оптический поток с помощью calcOpticalFlowPyrLK ()
  3. вычислить фундаментальную матрицу предыдущих и текущих найденных функций с помощью findFundamentalMat ()
  4. проверить правильность фундаментальной матрицы
  5. рассчитать эпиполярные линии и эпиполя — фокус расширения в видео

Наконец, я планировал использовать метод времени для контакта, чтобы вычислить оставшиеся кадры до столкновения.

До сих пор моя самая большая проблема — найти правильную фундаментальную матрицу и, следовательно, эпиполь. Расчетная матрица, похоже, неверна, как и эпиполярные линии. Будет ли мой запланированный подход правильным? У кого-нибудь есть рабочий пример получения FoE из видео или какого-либо другого руководства по тому, что я должен делать?

Я был бы очень рад любой помощи на всех!

Спасибо!

4

Решение

Я думаю, что оптический поток LK будет обнаруживать только 2D поток. Хотя в принципе вы можете выводить информацию из движения в части изображения (то есть в первом квадранте), фундаментальная матрица нуждается в стереопаре изображений, а не в последовательных.

Из головы в голову, я не знаю идеальных шагов для решения вашей проблемы. Но я думаю, исследования структура из движения может помочь вам, потому что этот метод решает проблему создания трехмерных данных из движения, но без пары стереокамер.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]