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

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

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

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

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

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

Буду очень рад любой помощи!

Спасибо!


person roboneko42    schedule 07.06.2013    source источник


Ответы (1)


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

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

person sebkraemer    schedule 22.04.2015