solvePnP/solvePnPRansac не дает хорошей оценки положения камеры

Я пытаюсь использовать этот код, чтобы найти положение камеры, найдя плоское изображение на картинке:

https://docs.opencv.org/3.3.1/d1/de0/tutorial_py_feature_homography.html

Для этой картины это работает правильно:

и находит образец. Я использую cv2.projectPoints, чтобы нарисовать изображение поверх фоновой картинки:

Но иногда solvePnP возвращает сумасшедшие результаты, например, для этого изображения:

Я получаю сумасшедшее положение изображения, если я перепроектирую образец:

Для этого случая я проверил SIFT точки, они выглядят правильно и соответствуют:

Я попытался использовать solvePnPRansac вместо solvePnP, но это не помогло, предполагаемая позиция все еще остается на одном уровне. В чем может быть причина и как я могу решить эту проблему?

1 ответ

Решение

Хорошо, мне удалось улучшить оценку позы в этом случае, установив матрицу искажения в np.array([]), потому что я уже исправляю изображение до SIFT. То же самое относится к cv2.projectPoints, нет необходимости указывать коэффициенты искажения и для этой функции.

Другие вопросы по тегам