Обнаружение движущейся камеры 3d. Правильно ли я делаю?

Я работаю над проблемой 3D-обнаружения движущейся монокулярной камеры. Пока что он состоит из двух основных компонентов:

  1. Обнаружение объекта в плоскости изображения (2d) с помощью сверточной сети (F-RCNN, SSD, YOLO). Я могу обнаружить один и тот же объект как минимум в двух кадрах движущейся камеры.
  2. Определение трехмерного местоположения обнаруженного объекта с помощью триангуляции. Для этого я строю мой (упрощенный) вариант процесса перестройки Local Bundle родственным здесь. Мои шаги:
    • Инициализация. Извлеките функции (ORB, SWIFT) из первых двух кадров, сопоставьте их (FLANN), найдите EssentialMatrix, найдите матрицу камеры второго кадра (R|t) и триангулируйте совпадения в 3D.
    • Для каждого последовательного кадра: извлеките функции, сопоставьте с предыдущим, найдите совпадения, которые уже имеют соответствующие трехмерные точки, найдите матрицу камеры кадра (через PnP), а затем триангулируйте совпадения, у которых еще нет трехмерных точек, чтобы создать новые трехмерные точки. После этого я запускаю оптимизацию локального пакета (на Ceres), чтобы настроить позы n последних камер (кадров) и трехмерных точек.
    • Результаты, которые я получаю:

Орто-вид моих текущих результатов

Может ли кто-нибудь подтвердить, что то, что я делаю, имеет смысл для этой цели? Я что-то пропускаю? Можно ли сделать это проще? Есть подобные примеры? Спасибо!

0 ответов

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