3D рендеринг в OpenCV

Я делаю проект по 3D-рендеринга сцены. Я использую OpenCV. Шаги, которые я делаю, такие:

Taking two images of a scene. Calculating object correspondence using SURF feature matching. Calculating camera fundamental matrix. Calculating the Disparity image.

Теперь у меня есть два вопроса

After calculating fundamental matrix how can I calculate the Q matrix? (I can't calibrate the camera)

How can I render in 3D using opencv or any other library?

Ответы на вопрос(3)

Для 3D-части вы можете визуализировать вашу сцену с помощью OpenGL или PCL. У вас есть два решения:

For each pixel, you make a point with the right color extracted from the camera's image. This will give you a point cloud which can be processed with PCL (for 3D features extraction for example). You apply a triangulation algorithm, but in order to apply this algorithm you must have the extrinsic matrices of your camera.

Вы можете найти больше информации об этих методах здесь:

Point Cloud technique Triangulation algorithm

Если вы хотите использовать OpenGL, вы должны открыть действительный контекст OpenGL. Я рекомендую вамSFML библиотека или Qt. Эти библиотеки очень просты в использовании и имеют хорошую документацию. У обоих есть учебники о 3D рендеринге с OpenGL.

Для визуализации можно использоватьPCL или жеВТК (визуализация PCL основана на vtk, но для меня более проста в реализации).

Если вы просто хотите посмотреть на вывод, вы можете просто использовать некоторые программы, такие какMeshLab

ура

Вы можете получить матрицу Q из стерео выпрямления с помощью метода openCV:

cv::stereoRectify

Я думаю, вы хотите, чтобы матрица Q реконструировала 3D. Тем не менее, вы можете восстановить из внутренних параметров с помощью:

X = (u-cu)*base/d
Y = (v-cv)*base/d
Z = f*base/d 

где (u, v) является 2D-точкой в системе координат изображения, (cu, cv) является главной точкой камеры, f является фокусным расстоянием, base является базовой линией, d является диспаратностью и (X, Y, Z) является трехмерной точкой в системе координат камеры.

Ваш ответ на вопрос