Почему проекция opengl модели не дает таких же результатов, как проекция opencv? - PullRequest
2 голосов
/ 07 мая 2019

Я работаю над проектом, в котором я использую cv :: solvePnP, чтобы получить позу камеры, и использую эту позу для проецирования 3D-модели в окне OpenGL.

Я использовал эту ссылку чтобы перейти от внутренних и внешних матриц opencv к mvp-матрицам opengl.

Проекция кажется хорошей, когда я увеличиваю объект, она немного больше с opengl, как показано на изображении : слева - объект, видимый камерой, а справа - то, что дает мне проекция opengl.

Я думал, что у меня будет точно такая же проекция.Это из-за поля искажения или я использую неправильную матрицу проекции в opengl?

1 Ответ

2 голосов
/ 07 мая 2019

Исходное изображение имеет искажение в бочкообразной линзе.Это нелинейное искажение изображения, которое не может быть описано проекционной матрицей.OpenGL, с другой стороны, использует прямолинейную проекцию : проекцию прямых линий на прямые.Таким образом, он не может учитывать искажения объектива в исходном изображении.

Чтобы решить эту проблему должным образом, необходимо визуализировать изображение, используя прямолинейную проекцию, а затем исказить его, используя коэффициенты искажения объектива, которые вы должны быть в состоянии получить.из внутренних параметров камеры OpenCV.Это потребует рендеринга в текстуру, а затем выборки из этой текстуры в правильных координатах.Подробнее см. Искажение в Википедии .

...