Я разрабатываю приложение AR на Android с помощью Eclipse. У меня есть 4 угловые координаты маркера, которые должен увеличить виртуальный объект. Мой вопрос: как я могу вызвать функцию калибровки OpenCV для расчета внешних параметров камеры, включая вектор вращения и вектор перевода? Я был бы очень признателен, если бы вы ответили мне быстро :-) Я новичок в OpenCV. Я нашел http://docs.opencv.org/java/org/opencv/calib3d/Calib3d.html, но я не знаю, как использовать эти функции и с чего начать.
вызов функций калибровки OpenCV для вычисления вектора вращения и вектора перевода
Ответы (1)
Если я вас правильно понимаю, у вас есть 4 точки на изображении, и вы знаете их мировые координаты (у вас есть 4 соответствия 2D-3D), чтобы найти матрицу вращения и вектор смещения (известный как поза камеры), вы можете использовать файл solvePnP.
Эта функция принимает в качестве входных данных 3D-координаты, 2D-координаты, матрицу камеры (фокусное расстояние и центр проекции) и коэффициенты искажения, которые вы должны были получить в процессе внутренней калибровки. Результатом являются векторы вращения и перемещения. Полученный вектор вращения можно преобразовать в матрицу вращения с помощью функции Rodrigues.
Существует также версияsolvePnP который использует алгоритм RANSAC для отбрасывания выбросов.
Вы можете найти здесь документ с некоторыми теория оценки позы.
Изменить
Получение внутренних параметров камеры называется калибровкой камеры. Инструкции по ее выполнению можно найти в этом документ OpenCV. Существует также старое руководство с исходным кодом здесь.