Стерео реконструкция OpenCV В чем разница между использованием Q-матрицы и триангуляцией?

Я реализовал стерео конвейер в Matlab несколько раз, и теперь я пытаюсь реализовать его в OpenCV. Я следил за реконструкцией Мартина Периса: http://blog.martinperis.com/2012/01/3d-reconstruction-with-opencv-and-point.html

При реализации с помощью Matlab мой конвейер выглядит следующим образом: калибровка -> исправление -> сопоставление стерео -> сопоставление без исправления / искажения -> сопоставление с триангуляцией.

В OpenCV конвейер выглядит следующим образом: калибровка -> исправление -> сопоставление стерео -> reprojectTo3D

с функцией reprojectTo3D здесь: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void%20reprojectImageTo3D%28InputArrayQue%20disparity%20Oray%20Array%20bool%20handleMissingValues,%20int%20ddepth%29

Разве это не триангуляция? Как это возможно? Предполагается, что камеры уже находятся в канонической конфигурации и параллельны?


person user3608728    schedule 06.05.2014    source источник


Ответы (1)


Конвейер OpenCV получает карту несоответствия для триангуляции на основе стереосопоставления и матрицы проекций камер на этапах калибровки и исправления. Вы можете использовать triangualtePoints с положениями точек, просматриваемых с обеих камер и их матрицы проекции из функции stereoRectify. Основной алгоритм тот же, вы просто используете немного разные промежуточные продукты.

person morynicz    schedule 07.05.2014
comment
На мой взгляд, в ответе есть небольшая ошибка. Вы можете использовать triangualtePoints с позициями точек, просматриваемых с обеих камер, и их матрицами проекции (а не их положениями) из функции stereoRectify. - person Jogging Song; 08.05.2014
comment
Да, ты прав. Я думал, что матрицы проекции содержат информацию о положениях камеры, но даже если это правда, это намного больше. Фиксированный. - person morynicz; 08.05.2014