У меня есть два изображения из стереокамеры той же сцены, но несколько разных точек зрения (imgLeft и imgRight). Теперь я хочу найти ROI (красный прямоугольник на изображении ниже) правого изображения в левом. Мне нужно сделать это очень быстро, потому что я делаю это в видео. Как я могу это сделать? У меня нет незанятого OpenCV; но у меня установлен CUDA.OpenCV Image Matching
1
A
ответ
0
Это должно быть ваш друг http://docs.opencv.org/2.4/modules/video/doc/motion_analysis_and_object_tracking.html#calcopticalflowpyrlk
Все, что вам нужно сделать, это найти характерные точки внутри этого прямоугольника и передать их в cv::calcopticalflowpyrlk
попасть сверстников во втором изображении. Возможно, вам понадобится сделать некоторую фильтрацию для очков, чтобы убедиться, что отслеживание было идеальным, например, передать их cv::findHomography
с использованием флага CV_RANSAC
и проверить выход маски.
Операция выполняется быстро и в режиме реального времени. Существует также версия CUDA этого метода.
Вы откалибровали стереопару? Если вы знаете матрицы камер, это должно быть просто. – dhanushka
Да, я сделал это. Но поскольку я не знаю расстояния до ROI, я не могу вычислить их с помощью этих матриц. Вместо этого я должен использовать тип алгоритма соответствия. Любая идея, какая из них лучше? Поскольку изображения очень похожи, мне не нужно использовать такие алгоритмы, как SURF или SIFT. Есть ли быстрый, который работает с подобными изображениями? –
Вы можете параметризовать целевые точки с использованием глубины, которая неизвестна. Таким образом, полученное соотношение линейно по глубине (справа?). Возможно, вы можете использовать эту информацию, чтобы сократить пространство поиска. – dhanushka