2013-06-07 4 views
4

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

Мой подход по этому вопросу заключается в следующем:

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

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

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

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

Спасибо!

ответ

0

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

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