Усреднение функций SIFT для оценки позы

Я создал облако точек нерегулярного (неплоского) сложного объекта, используя SfM. Каждая из этих трехмерных точек была просмотрена на нескольких изображениях, поэтому с ней связано несколько (SIFT) объектов.

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

Итак, мой вопрос: какой дескриптор я связываю с 3D-точкой, чтобы получить наилучшие результаты?

До сих пор я придумал несколько возможных решений...

  1. Усредните все дескрипторы, связанные с трехмерной точкой (взятые из конвейера SfM), и используйте этот "средний дескриптор" для сопоставления в PnP. Этот подход мне кажется немного надуманным - я не знаю достаточно о дескрипторах функций (в частности, SIFT), чтобы прокомментировать достоинства и недостатки этого подхода.
  2. "Зафиксируйте" все дескрипторы, вычисленные во время конвейера SfM, к их связанной трехмерной точке. Во время PnP у вас будут по существу одинаковые точки для сопоставления (один дубликат для каждого дескриптора). Это явно интенсивно.
  3. Найдите "центральную" точку зрения, в которой эта функция появляется (из конвейера SfM), и используйте дескриптор из этого представления для сопоставления PnP. Так что, если функция появляется на изображениях, сделанных в -30, 10, а также 40 градусов (от нормальной поверхности), используйте дескриптор из 10 дипломное изображение. Это мне кажется наиболее перспективным решением.

Есть ли стандартный способ сделать это? Я не смог найти ни одного исследования или совета в Интернете по этому вопросу, поэтому мне просто любопытно, есть ли лучшее решение или оно зависит от объекта / ситуации.

1 ответ

Дескрипторы, которые используются для сопоставления в большинстве систем SLAM или SFM, не зависят от поворота и масштаба (и в некоторой степени устойчивы к изменениям интенсивности). Именно поэтому мы можем сопоставить их с разных точек зрения в первую очередь. Так что, в общем, не имеет смысла пытаться использовать их все, усреднить их или использовать те из определенного изображения. Если сопоставление в вашем SFM было выполнено правильно, дескрипторы перепроецирования 3d Точка из вашего облака точек в любом из его наблюдений должна быть очень близко, поэтому вы можете использовать любое из них 1.

Кроме того, мне кажется, что вы пытаетесь напрямую сопоставить 2d указывает на 3d точки. С вычислительной точки зрения, я думаю, что это не очень хорошая идея, потому что путем сопоставления 2d указывает с 3d из них вы теряете пространственную информацию изображений и вынуждены искать совпадения методом грубой силы. Это в свою очередь может внести шум. Но, если вы сделаете свое сопоставление от изображения к изображению, а затем распространите результаты на 3-и точки, вы сможете навязать приоры (если вы примерно знаете, где находитесь, то есть из IMU, или если вы знаете, что ваши изображения закрыть), вы можете определить район, в котором вы ищете совпадения на ваших изображениях и т. д. Кроме того, как только вы вычислили свою позу и уточнили ее, вам нужно будет добавить больше очков, не так ли? Как вы будете делать это, если вы еще не сделали 2d/2d соответствие, но только 2d/3d соответствия?

Теперь способ реализации этого, как правило, зависит от вашего приложения (насколько у вас есть видимость или базовый уровень между позами от SFM и т. Д.). В качестве примера давайте отметим ваше изображение кандидата I_0и давайте отметим изображения из вашего SFM I_1, ..., I_n, Во-первых, матч между I_0 а также I_1, Теперь предположим, q_0 является 2-й точкой от I_0 который был успешно сопоставлен с q_1 от I_1что соответствует некоторой 3d точке Q, Теперь, чтобы обеспечить последовательность, рассмотрим перепроектирование Q в I_2и назовите это q_2, Матч I_0 а также I_2, Есть ли точка, к которой q_0 это матч в I_2 упасть близко к q_2? Если да, сохраните 2d/3d соответствие между q_0 а также Q, и так далее.

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

Изменить: Спасибо за ваши разъяснения в комментариях. Вот несколько мыслей (не стесняйтесь меня поправлять):

  1. Давайте рассмотрим SIFT дескриптор s_0 от I_0и отметим F(s_1,...,s_n) ваш агрегированный дескриптор (который может быть средним или конкатенацией дескрипторов SIFT s_i в их соответствующем I_i, так далее). Тогда при сопоставлении s_0 с F, вы хотите использовать только подмножество s_i которые принадлежат изображениям, которые имеют близкие точки зрения к I_0 (из-за 30deg проблема, которую вы упоминаете, хотя я думаю, что это должно быть 50deg). Это означает, что вы должны приписать вес каждому s_i это зависит от позы вашего запроса I_0, Вы, очевидно, не можете сделать это при построении Fтак что вы должны сделать это при сопоставлении. Однако, у вас нет сильного априора в позе (в противном случае, я полагаю, вам не понадобится PnP). В результате вы не можете действительно определить этот вес. Поэтому я думаю, что здесь есть два вывода / варианта:

    • Дескрипторы SIFT не адаптированы к задаче. Вы можете попытаться придумать инвариантный дескриптор. Есть немного литературы по этому вопросу.

    • Постарайтесь сохранить некоторую визуальную информацию в форме "ключевых кадров", как во многих системах SLAM. В любом случае не имеет смысла хранить все ваши изображения, просто держите несколько, которые хорошо распределены (по позе) в каждой области, и используйте их для распространения 2-мерных совпадений в 3-м случае.

  2. Если вы соответствуете только между 2d точка вашего запроса и 3d дескрипторы без какой-либо проверки целостности (как я предлагал ранее), вы внесете много шума...

Я хотел бы сохранить некоторые изображения.


1 Поскольку вы говорите, что получаете 3d-реконструкцию из трубопровода SFM, некоторые из них, вероятно, считаются внутренними, а некоторые - внешними (обозначенными булевым флагом). Если они являются выбросами, просто игнорируйте их, если они являются выбросами, то они являются результатом сопоставления и триангуляции, и их положение было уточнено несколько раз, так что вы можете доверять любому из их дескрипторов.

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