Получение мировых координат объекта по координатам его изображения
Я следовал этой документации, чтобы использовать OpenCV. В приведенной ниже формуле я успешно рассчитал как внутренние, так и внешние матрицы (я использовал процедуру solvePnP() для получения этих матриц). Поскольку объект лежит на земле, я заменил Z = 0. Затем я просто удалил третий столбец внешней матрицы и умножил его на собственную матрицу, чтобы получить матрицу проекции 3X3. Я взял его обратно и умножил на координаты изображения, т.е. su, sv и s.
Однако все точки в мировых координатах кажутся отклоненными на 1 мм или меньше, и поэтому я получаю не очень точные координаты. Кто-нибудь знает, где я могу пойти не так?
Спасибо
1 ответ
Калибровка камеры, вероятно, всегда будет несколько неточной, поскольку для более чем 2 калибровочных изображений вместо получения одного истинного решения системы уравнений, полученного из калибровочных изображений, вы получите решение с наименьшей ошибкой.
То же самое относится к cv:: solvePnP (). Вы используете один из трех методов оптимизации множества возможных решений для данной системы уравнений.
Я не понимаю, как Вы получили внутренние и внешние матрицы из cv:: solvePnP (), который используется для вычисления поворота и перемещения объекта в системе координат камеры.
Что ты можешь сделать:
- Попытайтесь получить лучшие внутренние параметры
- Попробуйте другие способы для решения PNP, такие как EPNP, или проверьте версию RANSAC.