cvReprojectImageTo3D -3d моделирование из выпуска 2d изображений- - PullRequest
3 голосов
/ 19 июля 2011

Мне очень нужна ваша помощь по этому вопросу.я пытаюсь смоделировать простую сцену в 3d из 2d изображений.я использую 2 изображения (слева и справа - знаменитая сцена цукуба) http://www.cc.gatech.edu/classes/AY2003/cs7495_fall/ProblemSets/Data/tsukuba-right.bmp я получаю карту диспаратности.как этот.http://www.robots.ox.ac.uk/~ojw/2op/tsukuba_score.png

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

cvStereoRectify (чтобы получить Q) cvReprojectImageTo3D (карта диспаратности, 3dimage, Q)

, но я не знаю, что передать в качестве входных данных в StereoRectify, у меня есть только 2 изображенияЯ не имею никакой информации о камерах.(может быть, я могу использовать вместо него StereoRectifyUncalibrated, если да, то как мне?)

пожалуйста, помогите спасибо

1 Ответ

12 голосов
/ 19 июля 2011

Выписка из документа opencv:

"Функция stereoRectify вычисляет матрицы вращения для каждой камеры, которые (фактически) делают обе плоскости изображения камеры одной и той же плоскостью. Следовательно, это делает все эпиполярные линии параллельными и, таким образом, упрощает проблему плотного стерео соответствия. При вводе функция принимает матрицы, вычисленные функцией stereoCalibrate (), и на выходе они дают 2 матрицы вращения, а также 2 матрицы проекций в новых координатах. "

Ответ:

Это означает 3 варианта:

  • Или у вас есть два изображения, и вы знаете модель вашей камеры (intrisics), которую вы загрузили из XML, например loadXMLFromFile () => стереоRectify () => reprojectImageTo3D ()

  • Или у вас их нет, но вы можете откалибровать камеру => StereoCalibrate () => StereoRectify () => reprojectImageTo3D ()

  • Или вы не можете откалибровать камеру (это ваш случай, потому что у вас нет камеры сэра Цукубы, тогда: вам нужно найти пару ключевых точек на обоих изображениях, например, SURF, SIFT (вы на самом деле может использовать любой детектор BLOB-объектов), затем вычислить дескрипторы этих ключевых точек, затем сопоставить ключевые точки из правого и левого изображений в соответствии с их дескрипторами, а затем найти основную матрицу из них. Обработка намного сложнее и будет выглядеть следующим образом: обнаружение ключевых точек (SURF, SIFT) => извлечение дескрипторов (SURF, SIFT) => сравнение и сопоставление дескрипторов (подходы, основанные на BruteForce, Flann) => найти фундаментальный мат (findFundamentalMat ()) из этих пар => stereoRectifyUncalibrated () => reprojectImageTo3D ()

Я надеюсь, что это помогло вам, если нет, пожалуйста, дайте мне знать

Julien

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...