zloy_molo4nik 0 Жалоба Опубликовано February 3, 2013 Привет, Дело было вечером, делать было нечего. Начал я делать диплом. Если в общем описать, то нужно реализовать алгоритм SLAM. Есть 1 камера.Все было отлично до того момента, пока дело не дошло до 3D реконструкции. В программе уже реализовано: 1) захват видео с камеры; 2) поиск ключевых точек(Лукас-Канаде); 3) построение оптического потока; 4) Определение движения камеры из оптического потока; Как теперь дальше делать 3D реконструкцию непонятно. Тоесть как из найденных ключевых точек построить карту? Объясните плз как из наборов ключевых точек строить карту. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 3, 2013 Могу поделиться материалом, матлабовские файлы (работает, проверял), pdf-ки, и проект для студии (перевод с МАТЛАБА я его так и не добил) Matlab-вариант: https://docs.google.com/file/d/0Bxk3hR536PxSeng1WGFVYVpWcWs/edit?usp=sharing Взят вроде отсюда (уже не помню): http://openslam.org/ekfmonoslam.html С++ вариант и pdf-ки https://docs.google.com/file/d/0Bxk3hR536PxSUVJBdjZXeGZwTkU/edit?usp=sharing 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloy_molo4nik 0 Жалоба Опубликовано February 3, 2013 Спасибо огромное, буду читать. В инете нашел такое: Что бы реализовать слам из оптического потока нужно: 1) при движении камеры считать триангуляцию, то есть решать задачу обратную проетированию,для этого нужно найти фундаментальную матрицу. 2) далее разделить на трансформацию 3) по ней составить уравнение проектирование 4) решаем обратную задачу Пункт 1 сделал, использовал cvFindFundamentalMat. А вот пункт 2 непонятно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 3, 2013 Гладко на бумаге, реально все сложнее. Почитайте pdf-ки, это одна из лучших реализаций которые я находил. Также, можно в дебаге MATLAB-а посмотреть что и как считается. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано February 4, 2013 а что вкратце делает программа из 2 поста? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloy_molo4nik 0 Жалоба Опубликовано February 4, 2013 Что запускать из матлаба? какой файл, или какая функция, какие у нее параметры Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 4, 2013 В readme написано: ------------------------------------------------------------ Quick start ------------------------------------------------------------ After unzipping: 1) Go to matlab_code directory 2) Run mono_slam.m по-моему параметров там не нужно, все вбито в скрипт. а что вкратце делает программа из 2 поста? Программа нужна для вычисления перемещения камеры (6 координат) по последовательности изображений. Вот видео программы тех же авторов. 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloy_molo4nik 0 Жалоба Опубликовано February 4, 2013 А 3D рекнструкция карты делается с помощью SLAM? или это уже другой метод? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 4, 2013 SLAM - simultaneous localisation and mapping. Переводится как "одновременное локализация и составление карты". Здесь карта разреженная состоит из тех особенностей. Еще можно встретить под названием PTAM "parallel tracking and mapping". Есть и другой метод DTAM, "Dense tracking and mapping" Еще может быть интересно будет посмотреть библиотеку MRPT, в нее входят разные SLAM. http://www.mrpt.org/ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloy_molo4nik 0 Жалоба Опубликовано February 4, 2013 Имея только одну камеру, это реально реализовать? Или будет куча проблем и лучше искать 2 камеры? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 4, 2013 Можно, использовать одну, но проблем много. Лучше всего использовать kinect, для него и проект готовый с открытым кодом есть (kinfu называется входит в PCL). вот пример работы: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloy_molo4nik 0 Жалоба Опубликовано February 4, 2013 Это да, но есть только 1 камера, если очень напрячься, то можно достать 2. На Kinect денег не хватит. Мне просто на диплом поставили задачу. Есть мобильный робот. Передавать видео с камеры телефона на комп. и делать 3D реконструкцию карты местности имея только видео (1 поток). Я так понял, что пора менять тему. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 4, 2013 Тяжелый случай, я бы сменил тему Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано February 5, 2013 Для реконструкции можно попробовать использовать пары последовательных кадров в качестве стереопары(Через оптический поток вычислять расстояние между положениями камеры, а при помощи особых точек восстанавливать глубину точек сцены). Но для того, чтобы SLAM считался слэмом необходимо, чтобы он мог пройти тест с замыканием траекторий, а насколько я знаю эта задача до сих пор никем не решена для случая монокамеры... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BeS 53 Жалоба Опубликовано February 5, 2013 Можно, использовать одну, но проблем много. Лучше всего использовать kinect, для него и проект готовый с открытым кодом есть (kinfu называется входит в PCL). вот пример работы: В классическом kinfu объем сцены ограничен кубом 3*3*3 метра, но есть разновидность kinfu LargeScale для произвольного объема сцены. Но насколько я помню нет имплементации kinfu на CPU, только на GPU. И вряд-ли мобильный робот имеет на борту GPU и достаточного размера аккумулятор чтобы все это переваривать дольше пары минут) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 21, 2015 Еще один SLAM с исходниками: http://vision.in.tum.de/research/lsdslam?redirect=1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах