Вопрос или проблема
В настоящее время я работаю над проектом оценки позы камеры. Я использую метод solvepnp для вычисления векторов вращения и преобразования. Я использую PTZ-камеру, где могу видеть фактические значения панорамы, наклона и зума камеры. Меня в основном интересует значение наклона. Моя цель – оценить позу камеры с использованием маркеров ArUco и не зависеть от значений с камеры. Я разлагаю вектор вращения, чтобы получить его углы Эйлера, и сравниваю эти значения с моими эталонными данными (внутренними значениями от PTZ-камеры).
1 – camera_tilt(GroundTruth) = -24.30 , pnp_tilt = -25.7
2 – camera_tilt(GroundTruth) = -90 , pnp_tilt = -0.3
3 – camera_tilt(GroundTruth) = -90 , pnp_tilt = -89
Вот три различных сценария, в которых вы можете увидеть, как маркеры размещены в сцене. Когда я размещаю маркеры перпендикулярно к земле, я получаю самые точные значения оценки позы от алгоритма pnp.
На первом изображении вычисленное значение наклона близко совпадает со значением наклона камеры, но когда я укладываю свои маркеры плоско на поверхности, мои значения pnp_tilt становятся совершенно неправильными.
Является ли причиной этого то, что когда мы укладываем маркер плоско на землю, мы теряем большую часть информации по оси Z (синей)? Но когда мы помещаем его перпендикулярно к земле, у нас есть самая большая информация о глубине от маркера ArUco, и поэтому наш pnp вычисляет самые точные значения наклона в этом сценарии?
На втором изображении я уложил маркер ArUco плоско на поверхности и установил наклон камеры на -90 (смотрю прямо вниз), и в этом случае алгоритм pnp вычислил значение как 0.3. Что алгоритм считает, что он смотрит над горизонтом, а не на землю. Это проблема блокировки кардана? Где ось Z маркера ArUco совпадает с осью X камеры, и поэтому она не может различить, смотрим ли мы на землю или на горизонт?
Но на третьем изображении, где я размещаю маркер перпендикулярно к земле, я получаю гораздо лучшие результаты.
Мой главный вопрос заключается в том, можем ли мы разместить его плоско на поверхности и все равно получить точные результаты? Это возможно? Я хочу уложить его плоско на поверхность, потому что это будет гораздо проще в реальном мире, где в некоторых сценах мы не всегда можем разместить его полностью перпендикулярно к земле.
Ответ или решение
Вопрос о размещении маркеров ArUco и их влиянии на оценку позы камеры является ключевым аспектом в проектах компьютерного зрения и робототехники. В контексте активного использования метода solvePnP
для вычисления векторов вращения и перемещения в условиях изменяющегося угла наклона камеры, необходимо учитывать несколько критически важных факторов.
Факторы, влияющие на оценку позы камеры
-
Ориентация маркеров ArUco: Как вы сами отметили, размещение маркеров вертикально относительно поверхности предоставляет значительно больше информации о глубине и пространственном положении. Когда маркеры размещены под углом 90 градусов, система получает полную информацию о трехмерном пространстве, что позволяет более точно оценить наклон камеры. В этом случае векторы вращения и перемещения смогут более точно соответствовать реальным значениям, зафиксированным вашими измерительными устройствами.
-
Проблема с потерей информации по оси Z: Когда маркеры располагаются горизонтально, информация, помимо оси X и Y, теряется. Как вы правильно заметили, это может привести к тому, что алгоритм не сможет корректно интерпретировать положение камеры. Это связано с тем, что в таком положении ось Z маркера совпадает с одной из осей координат камеры, что может привести к неоднозначности в определении ориентации.
-
Гимбал-лок (Gimbal Lock): Эта проблема возникает, когда две из трех осей вращения становятся параллельными, что приводит к потере одной степени свободы. В вашем случае, когда камера наклонена на -90 градусов, а маркер расположен горизонтально, алгоритм может "запутаться", так как именно указываемая ось Z маркера будет совпадать с осью X камеры. Это приводит к неадекватной оценке положения, как показано во втором изображении.
Возможные решения
-
Пускай маркеры над землёй: Если возможно, держите маркеры вертикально. Однако это не всегда удобно или практично, особенно в реальных сценариях применения.
-
Использование нескольких маркеров: Поместите несколько маркеров в различных ориентациях. Это позволит алгоритму получать больше информации о пространственном положении и углах.
-
Подбор компараторов для отбора значений: Разработайте дополнительную логику для фильтрации неадекватных показаний. Например, можно анализировать отклонения и применять статистические методы к оценкам для фильтрации выводов.
-
Калибровка алгоритма: Разработайте процедуру калибровки, чтобы улучшить результаты, получаемые в различных сценариях размещения маркеров.
Заключение
Создание надежной системы, способной адекватно оценивать позу камеры в широком спектре условий размещения маркеров, требует тщательного подхода к выбору стратегии размещения. Полагайтесь на предварительные исследования и тестирование нескольких методов, чтобы выяснить, какие решения будут наиболее эффективными в вашем конкретном случае. В конечном итоге, ключевым фактором в успешности вашего проекта будет понимание не только техники размещения маркеров, но и всех факторов, которые могут повлиять на результаты вашей системы.