Пересчет 3D-координат точек на 2D-изображении с картой глубины

Я новичок в графике и видении, и у меня есть некоторые проблемы с тем, как вычислить 3D-координаты. Мне дано изображение, и я хотел бы пересчитать исходные координаты для определенного пикселя. У меня есть глубина этого пикселя, а также положение камеры (x_c, y_c, z_c) и ориентация камеры (x_o, y_o, z_o). На мой взгляд, одной этой информации недостаточно, поскольку мне нужно какое-то фокусное расстояние, чтобы получить угол пикселя относительно главной оси.

У меня, правда, проекционная матрица камеры 4 на 4. Сначала я не понял, почему эта матрица имеет размеры 4*4, ведь я всегда думал, что они должны быть 3*4. Во-вторых, я хотел спросить, есть ли способ получить фокусное расстояние из матрицы проекции, или есть ли более простой способ вычислить 3D-координаты, чем вычисление фокусного расстояния, а затем линии, на которой должна быть 3D-точка. на.

Спасибо!


person bKaestle    schedule 16.06.2020    source источник


Ответы (1)


Если вы используете OpenCV, используйте reprojectImage3d(). Но вам требуется QMatrix в качестве входных данных. Вы можете сгенерировать эту QMatrix на этапе исправления.

Вы можете обратиться к приведенному ниже образцу для справки, как использовать этот API.

https://github.com/bkornel/Reproject-Image-To-3D/blob/master/main.cpp

person vishnukumar    schedule 22.06.2020