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, нет необходимости указывать коэффициенты искажения и для этой функции.