вызов функций калибровки OpenCV для вычисления вектора вращения и вектора перевода

Я разрабатываю приложение AR на Android с помощью Eclipse. У меня есть 4 угловые координаты маркера, которые должен увеличить виртуальный объект. Мой вопрос: как я могу вызвать функцию калибровки OpenCV для расчета внешних параметров камеры, включая вектор вращения и вектор перевода? Я был бы очень признателен, если бы вы ответили мне быстро :-) Я новичок в OpenCV. Я нашел http://docs.opencv.org/java/org/opencv/calib3d/Calib3d.html, но я не знаю, как использовать эти функции и с чего начать.


person saeede    schedule 08.09.2013    source источник


Ответы (1)


Если я вас правильно понимаю, у вас есть 4 точки на изображении, и вы знаете их мировые координаты (у вас есть 4 соответствия 2D-3D), чтобы найти матрицу вращения и вектор смещения (известный как поза камеры), вы можете использовать файл solvePnP.

Эта функция принимает в качестве входных данных 3D-координаты, 2D-координаты, матрицу камеры (фокусное расстояние и центр проекции) и коэффициенты искажения, которые вы должны были получить в процессе внутренней калибровки. Результатом являются векторы вращения и перемещения. Полученный вектор вращения можно преобразовать в матрицу вращения с помощью функции Rodrigues.

Существует также версияsolvePnP который использует алгоритм RANSAC для отбрасывания выбросов.

Вы можете найти здесь документ с некоторыми теория оценки позы.

Изменить

Получение внутренних параметров камеры называется калибровкой камеры. Инструкции по ее выполнению можно найти в этом документ OpenCV. Существует также старое руководство с исходным кодом здесь.

person Milo    schedule 13.09.2013
comment
привет, мистер Майло, большое спасибо за ваш ответ, но у меня есть только 2D-координата изображения :(, у меня тоже нет параметров камеры, я новичок в opencv. Я думаю, вы можете мне помочь. вы можете мне помочь? как я должны получить эти матрицы по 2D координатам изображения? - person saeede; 14.09.2013
comment
Большое спасибо, мистер Майло, я смог рассчитать матрицу камеры и коэффициенты искажения, используя шаблон круга. Я использую штрих-код вместо маркера. Я получаю 2-мерные координаты четырех углов маркера с помощью zxing. Теперь, как я могу получить 3-мерные координаты этих углов? как использовать opengl для увеличения объекта на штрих-коде? нужны ли opengl матрицы поворота и перевода? - person saeede; 17.09.2013