Усреднение функций SIFT для оценки позы - PullRequest
0 голосов
/ 27 мая 2018

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

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

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

Пока что я нашел несколько возможных решений ...

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

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

1 Ответ

0 голосов
/ 27 мая 2018

Дескрипторы, которые используются для сопоставления в большинстве систем 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 - это двухмерная точка из I_0, которая была успешно сопоставлена ​​с q_1 из I_1, что соответствует некоторой трехмерной точке 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. Если вы сопоставляете только точку 2d вашего запроса и 3d дескрипторов без какой-либо проверки целостности (как я предлагал ранее), вы введете многошум ...

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


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

...