cvReprojectImageTo3D -3d моделирование из выпуска 2d изображений-
Мне нужна твоя помощь по этому вопросу. я пытаюсь смоделировать простую сцену в 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 (карта диспаратности, 3 изображения, Q)
но я не знаю, что передать в качестве входных данных в StereRectify, у меня есть только 2 изображения, у меня нет никакой информации о камерах. (может быть, я могу использовать вместо него StereoRectifyUncalibrated, если так, как я?)
пожалуйста помогите спасибо
1 ответ
Извлечение из документа opencv:
"Функция stereoRectify вычисляет матрицы вращения для каждой камеры, которые (фактически) делают обе плоскости изображения камеры одной и той же плоскостью. Следовательно, это делает все эпиполярные линии параллельными и, таким образом, упрощает проблему плотного стерео соответствия. При вводе функция берет вычисленные матрицы с помощью StereoCalibrate() и на выходе она дает 2 матрицы вращения, а также 2 матрицы проекции в новых координатах. "
Ответ:
Это означает 3 варианта:
Или у вас есть два изображения, и вы знаете модель вашей камеры (intrisics), которую вы загрузили из XML, например loadXMLFromFile() => стерео Rectify() => reprojectImageTo3D()
Или у вас их нет, но вы можете откалибровать камеру => stereoCalibrate() => стерео Rectify() => reprojectImageTo3D()
Или вы не можете откалибровать камеру (это ваш случай, потому что у вас нет камеры сэра Цукубы, тогда: вам нужно найти пару ключевых точек на обоих изображениях с SURF, например, SIFT (вы можете использовать любой детектор BLOB-объектов)), затем вычислить дескрипторы этих ключевых точек, затем сопоставить ключевые точки из правого и левого изображений в соответствии с их дескрипторами, а затем найти основную матрицу из них. Обработка намного сложнее и будет выглядеть так: обнаружение ключевых точек (SURF, SIFT) => извлечь дескрипторы (SURF, SIFT) => сравнить и сопоставить дескрипторы (подходы, основанные на BruteForce, Flann) => найти фундаментальный мат (findFundamentalMat()) из этих пар => стерео RectifyUncalibrated() => reprojectImageTo3D()
Я надеюсь, что это помогло вам, если нет, пожалуйста, дайте мне знать
Жюльен,