2016-01-09 6 views
1

У меня есть два изображения из стереокамеры той же сцены, но несколько разных точек зрения (imgLeft и imgRight). Теперь я хочу найти ROI (красный прямоугольник на изображении ниже) правого изображения в левом. Мне нужно сделать это очень быстро, потому что я делаю это в видео. Как я могу это сделать? У меня нет незанятого OpenCV; но у меня установлен CUDA.OpenCV Image Matching

imgRight: enter image description here

imgLeft: enter image description here

+1

Вы откалибровали стереопару? Если вы знаете матрицы камер, это должно быть просто. – dhanushka

+0

Да, я сделал это. Но поскольку я не знаю расстояния до ROI, я не могу вычислить их с помощью этих матриц. Вместо этого я должен использовать тип алгоритма соответствия. Любая идея, какая из них лучше? Поскольку изображения очень похожи, мне не нужно использовать такие алгоритмы, как SURF или SIFT. Есть ли быстрый, который работает с подобными изображениями? –

+0

Вы можете параметризовать целевые точки с использованием глубины, которая неизвестна. Таким образом, полученное соотношение линейно по глубине (справа?). Возможно, вы можете использовать эту информацию, чтобы сократить пространство поиска. – dhanushka

ответ

0

Это должно быть ваш друг http://docs.opencv.org/2.4/modules/video/doc/motion_analysis_and_object_tracking.html#calcopticalflowpyrlk

Все, что вам нужно сделать, это найти характерные точки внутри этого прямоугольника и передать их в cv::calcopticalflowpyrlk попасть сверстников во втором изображении. Возможно, вам понадобится сделать некоторую фильтрацию для очков, чтобы убедиться, что отслеживание было идеальным, например, передать их cv::findHomography с использованием флага CV_RANSAC и проверить выход маски.

Операция выполняется быстро и в режиме реального времени. Существует также версия CUDA этого метода.

 Смежные вопросы

  • Нет связанных вопросов^_^