0

Я слежу за this документации по использованию OpenCV. В приведенной ниже формуле я успешно вычислил как внутренние, так и внешние матрицы (я использовал процедуру solvePnP() для получения этих матриц). Поскольку объект лежит на земле, я заменил Z = 0. Затем я просто удалил третий столбец внешней матрицы и умножил его на внутреннюю матрицу, чтобы получить матрицу проекций 3X3. Я взял его обратно и умножил его на координаты изображения, то есть su, sv и s.
FormulaПолучение координат мира по координатам изображения

Однако все точки в мировых координатах, кажется, отключены на 1 мм или меньше, и, следовательно, я получаю не столь точные координаты. Кто-нибудь знает, где я могу ошибиться?

Благодаря

ответ

0

калибровки камеры, вероятно, всегда несколько неточным, так как более 2 калибровки изображений вместо того, чтобы одно истинное решение системы уравнений приобретенную от калибровки изображений, Вы получаете решение с наименьшей погрешностью.

То же самое касается cv::solvePnP(). Вы используете один из трех методов оптимизации множества возможных решений для данной системы уравнений.

Я не понимаю, как вы получили внутренние и внешние матрицы от cv::solvePnP(), которые используются для расчета вращения и трансляции объекта в системе координат камеры.

Что Вы можете сделать:

  • Try, чтобы получить более внутренние параметры
  • Попробуйте другие методы solvePnP like EPNP или проверить RANSAC version