У меня проблема при использовании solvePnPRansac для отслеживания копланарных маркеров. Я записал видео проблемы здесь:OpenCV solvePnPRansac на копланарных плоскостях дает случайное одно из двух решений
В видео вы видите розовый кубик, нарисованный OpenCV листать примерно каждые 2-3 кадров. Вы также видите сверху стабильную систему координат, которую я визуализирую с помощью OpenGL, но вы можете ее игнорировать, я не применяю значения вращения, вычисленные трекером, поэтому переключение не передается в сцену OpenGL.
Я предполагаю, что проблема кроется в решенииPnPRansac OpenCV, поскольку входы (точки 2D и 3D) очень похожи на каждый кадр, но вычисленная матрица проекции отличается журналом, как вы можете видеть в видео. Отслеживаемые точки выглядят отлично. В видео я также представляю оси координат, и вы можете видеть, что ось z перевернута/перевернута, а остальные оси (ось Y: зеленая вниз и ось X: красная точка справа) остаются правильными ,
Моих используемых параметры для solvePnPRANSAC: я использовал резюме :: итерационного на solvePnPRANSAC со стандартной ошибкой перепроецирования 8.0 (пробовал несколько раз с разными значениями, но не повез) и я переключился на внешней догадке ложь.
Есть ли у вас 2 правильных решения pnp для копланарных маркеров, и именно поэтому он случайно переключается между ними? Могу ли я избежать такого поведения. Я искал людей с похожими проблемами, но все, что я мог найти по этому поводу, - это два старых вопроса, которые звучат, как будто это может быть та же проблема: http://answers.opencv.org/question/6373/cv2solvepnp-axis-flip-with-rotation/# и http://answers.opencv.org/question/11915/solvepnp-similar-input-returns-very-different-output/