Преобразование начальной мировой системы координат монокулярного удара

Начальная система координат монокулярного удара случайна и неизвестна в масштабе.

Но я хочу знать, как преобразовать исходную систему координат в другую систему координат (из маркера, например, шахматной доски).

Есть ли какие-либо документы или блоги.

Большое спасибо!


person zdczdcc    schedule 11.04.2017    source источник


Ответы (1)


Это сложная проблема в монокулярных условиях, для которых ИИМ дают довольно хорошие результаты (например, здесь). Но похоже, что у вас в настоящее время нет никаких датчиков, кроме камеры. В этом случае оценка масштаба с помощью шахматной доски или маркеров не является идеальным решением, поскольку потребует от вас большого контроля над движением вашей камеры при инициализации. Например, один простой способ, который приходит на ум, таков: держите шахматную доску точно вертикально и зафиксируйте камеру на расстоянии N, а ее ось ортогональна доске. Теперь убедитесь, что вы перемещаете камеру точно параллельно доске в течение времени t. В этот промежуток времени все объекты, которые вы обнаружите на доске, будут находиться на расстоянии N от камеры. Это означает, что если их глубина в ваших координатах SLAM составляет s, то ваш масштаб будет N/s. Однако держать движение точно параллельно неудобно. Я ожидаю (не стесняйтесь поправлять меня), что другие подходы, основанные на маркерах, будут такими же плохими.

Лучшим, но значительно более трудоемким (с точки зрения разработки) вариантом является использование трекера на основе моделей (богатая литература, на ум приходит очень старый пример: pwp3D). Возьмите известный объект в вашей среде (простой, для которого вы можете легко получить модель в САПР, в которой масштаб является истинным масштабом). Теперь ваша проблема заключается в выравнивании вашей ссылки SLAM на ссылку объектного пространства. Для этого вы можете использовать обнаружение контуров на исходном изображении, спроецировать модель CAD и попытаться выровнять их как можно лучше (обратите внимание, что вы должны выровнять эти контуры на достаточном количестве изображений, используя разные точки обзора, в способ регулировки пучка).

Другой возможностью является использование нейронной сети для прогнозирования глубины (богатая литература по этому вопросу), но оценка обычно будет менее точной.

Решение проблемы выравнивания с наземными координатами:

Из вашего комментария я понимаю, что вы хотите согласовать свои координаты SLAM с ранее известным референсом. Я думаю, что изучение систем SLAM с географической привязкой может быть полезным для вас, поскольку они сталкиваются с той же проблемой, что и вы, при инициализации. Теперь, чтобы вернуться к проблеме, вот как я это сделаю:

Соответствие объекта между двумя системами координат

Давайте отметим G желаемую систему координат, и пусть S будет эталоном SLAM. Ваш алгоритм SLAM реконструирует объекты по маркеру, который мы назовем f'_1,f'_2,f'_3. Они будут соответствовать функциям f_1,f_2,f_3 на вашем маркере. Важно, чтобы вы могли правильно сопоставить эти функции на основе их внешнего вида (текстуры или цвета и т. д.). После того, как у вас есть эти совпадения, проблема состоит в том, чтобы найти сходство sim=[sR sT;0 1] (с использованием обозначений, подобных matlab/octave), где R — это поворот, T — перевод, а >s — параметр масштаба. Теперь вы должны быть в состоянии сформулировать свою проблему как своего рода

argmin_{R,T,s} sum(d(f'_i, sim*f_i))

где сумма выполняется для индексов 1,...,N (на рисунке N=3), а d обозначает расстояние (я бы сказал, евклидово) между объектами в референциальном G и их совпадениями в референтном S. Конечно, это широкая формулировка, но я думаю, что она может служить общей основой для вашего решения. Обратите внимание, однако, что будет намного лучше, если вы сможете получить априорные значения R,T,s до минимизации такой функции стоимости, поскольку алгоритмы минимизации для таких задач имеют тенденцию застревать в локальные минимумы.

person Ash    schedule 11.04.2017
comment
Спасибо за ваш ответ! pwp3D великолепен. Но я не хочу получать масштаб с помощью монокулярного удара. Я изучаю безмаркерную дополненную реальность и хочу поместить 3D-модель в начало мировой системы координат. Но удар инициирует случайную мировую координату, поэтому я хочу поместить маркер в вид, который мог бы поместить 3D-модель в исходную точку маркера. Не могли бы вы дать мне какое-нибудь предложение? Большое спасибо! - person zdczdcc; 12.04.2017
comment
Спасибо за ваш отличный и подробный ответ! Ваше предложение может помочь мне решить проблему. Но мне интересно узнать, есть ли более простой способ получить преобразование между двумя координатами. Я уже получил позу камеры от маркера. как pose1, а поза камеры из SLAM как pose2. - person zdczdcc; 12.04.2017
comment
У меня также есть другая идея. SLAM инициализируется с объектом (3 реконструированные точки, в системе координат SLAM, как PLANE1) и маркером (3 точки были реконструированы на маркере в системе координат SLAM, и известны соответствующие точки в системе координат маркера, как PLANE2). Затем можно рассчитать жесткое преобразование между PLANE1 и PLANE2. - person zdczdcc; 12.04.2017
comment
Я думаю, что между pose1 и pose2 может быть сложное преобразование (упомянутое в комментарии выше). Если нет более простого способа получить преобразование, я бы попытался сделать это с помощью вашей идеи. Большое спасибо! - person zdczdcc; 12.04.2017
comment
Могу я получить ваш адрес электронной почты? Мой адрес электронной почты [email protected]. - person zdczdcc; 13.04.2017
comment
Нет проблем, я отправлю вам письмо. - person Ash; 13.04.2017
comment
Доставка почты не работает. Я добавил адрес электронной почты в свой профиль. - person Ash; 13.04.2017