Smorodov 579 Жалоба Опубликовано July 6, 2011 Библиотеки AAMlibrary, ASMlibrary и STASM написаны с использованием OpenCV. И,естественно, понимают IplImage. Так что все равно будете писать программу на основе opencv Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bluebyte 1 Жалоба Опубликовано July 8, 2011 Одна из книг, на которую почти все ссылаются когда речь идет о геометрии в машинном зрении: Multiple View Geometry in computer vision Авторы Richard Hartley и Andrew Zisserman Спасибо за ссылки. Книга вот так сходу оказалась сложновата, да и конкретной темы я на этот счет там не нашел. Но, поискав другие книги, нашел "Компьютерное зрение" (авторы - Шапиро и Стокман), где нашел ответ на свой вопрос. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано July 12, 2011 2 библиотеки по 3D реконструкции по паре изображений. http://sourceforge.net/projects/estereo/ http://sourceforge.net/projects/reconststereo/ 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано July 20, 2011 возможно ли построение depth map используя только 1 камеру? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 20, 2011 Знаю что для Ламбертовых поверхностей строят, сам не пробовал. Вот, например: http://www.loria.fr/~kerautre/publications/Braquelaire05.pdf Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 20, 2011 Извиняюсь, Ваше исходное сообщение попортил. а есть такое чтобы например идет человек с камерой и строится ЗД сцена по этому видео. (я видел пока как восстанавливали по множеству фотографий город в виде поинт клаудов(кстати, а что им помещало сделать меши с текстурами из кусочков тех же изображений?(хотя может будет более уродски выглядеть)) и еще как восстанавливали модель домика картонного(его крутят перед камерой)) вроде бы было еще даже 3д модель головы человека по видео. SFM это называется или Structure From Motion. Библиотеки в тему: fvision libmv По поводу ламбертовых поверхностей: Ламберта закон (Lambert's cosine law) Яркость L рассеивающей свет (диффузной) поверхности одинакова во всех направлениях, а сила света, излучаемого плоской рассеивающей площадкой dS в каком-либо направлении, зависит от угла α между этим направлением и перпендикуляром к dS: Iα = I0cosα. Последнее выражение означает, что сила света плоской поверхности максимальна (I0) по нормали к ней и, убывая с ростом α, становится равной нулю в касательных к поверхности направлениях. Такая схема идеального рассеяния света очень удобна для теоретических исследований. Ламбертова поверхность (Lambertian surface) Идеальная поверхность для которой излучение распределяется по углу согласно закону Ламберта. Например гипсовые фигуры. Преимущественно матовые поверхности равномерно рассеивающие свет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано July 21, 2011 вот кстати прям с видео карта глубины. хотя там не понятно в реальном времени ли это и просто ли с видео. Structure From Motion я вроде бы даже смотрел как раз про восстановление города по фотографиям в поинт клауд, но там это все обрабатывалось на кластере, интересно есть ли что то ближе к реальному времени. по сути получается как склейка панорамы - допустим ведем камеру и нам не надо смотреть сопоставления дескрипторов все против всех, а можно только соседние изображения, только вот вопрос в том, что если мы например столб обходим и обошли 360 градусов, то эту ситуацию надо как то обработать, а тут уже получается надо все против всех смотреть(хотя бы как то быстро отметать, да и даже учитывая, что можно придумать быстрый алгоритм отсева(или хорошую структуру как их хранить) и все точки дескрипторов у нас просчитывались на каждом шаге, то их все таки надо хранить\читать с диска что накладывает ограничения) но вообще прежде чем говорить наверно надо документы почитать как серьезыне люди делают вообщем меня больше интересует вопрос насколько реально отсняв камерой(для простоты считаем, что каждый кадр фотография) помещение допустим получить потом его 3Д модель? или натренировать на особый класс объектов, т.е. получить с видео например 3д модель объекта, который на этом видео двигался. p.s. да и кстати я так и не понял как побороть Radial distortion т.е. с искажениями Sift/surf плохо работает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано July 21, 2011 еще вопрос вот тут вот depth map получают потому что камера "особенная"? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано July 21, 2011 Да, у Kinect идет еще один слой данных - глубина. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Gog 0 Жалоба Опубликовано September 15, 2011 Я так понял, что Вам нужна модель для AAM. Но тогда вопрос, какую библиотеку используете? Если ту, что я прикрепил сверху напишите e-mail, я отправлю модель. Не прикрепил, т.к. она большая (около 40 Мб, если память не подводит). Хочу поиграться с AAM_src.rar линк на данные на лицо не кините ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 15, 2011 Ссылка выше (в первом посте на этой странице) не работает, поэтому выкладываю архив здесь. aamlibrary_release_2.0.zip В нем есть все необходимое для построения моделей (см. папку example) в ней уже есть екзешник для построения модели (данные в папке image) build.exe (run-build.bat). И детектор fit.exe (run-fit.bat). Build-ом строите модель (файл с расширением .amf) и скармливаете его детектору. Впрочем, там по содержимому bat файла не сложно разобраться (при том есть еще и исходники обоих экзешников). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Gog 0 Жалоба Опубликовано September 16, 2011 Ссылка выше (в первом посте на этой странице) не работает, поэтому выкладываю архив здесь. aamlibrary_release_2.0.zip В нем есть все необходимое для построения моделей (см. папку example) в ней уже есть екзешник для построения модели (данные в папке image) build.exe (run-build.bat). И детектор fit.exe (run-fit.bat). Build-ом строите модель (файл с расширением .amf) и скармливаете его детектору. Впрочем, там по содержимому bat файла не сложно разобраться (при том есть еще и исходники обоих экзешников). Благодарствую. Поигрался с AAM и ASM точность откровенно хромает. Как вы думаете с каким методом стоит бороться дабы точность возросла ? Или есть мне неведомые альтернативы ? Нужны контрольные точки. Скорость не критична. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано September 16, 2011 AAM потенциально мощнее, но реализация его в данном исходнике не самая лучшая. Что касается направления куда смотреть, то я думаю в сторону 3D ASM/AAM (по фотографии, но с использованием трехмерных моделей), плюс не нужно забывать о каскадах Хаара, фильтрации по цвету и других методах Template matching, например. Ни один метод отдельно, на сегодняшний день, не даст необходимой точности. Можете еще пару продуктов посмотреть: Здесь есть скачиваемый бесплатно код (не открытый и с ограничениями): http://www.seeingmachines.com/product/faceapi/ и одна из передовых фирм в этой области (тут видео можно посмотреть, демка есть в меню Try Live - примерка очков) http://www.t-immersion.com/ 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано September 17, 2011 Я игрался с востановлением карты глубины по двум изображениям. Хочу поделиться результатами. В опенсв есть 2 функции: FindStereoCorrespondenceBM и cvFindStereoCorrespondenceGC Первая функция - это сравнение по блокам. Достаточно быстрая, может работать в реальном времени. Результат плохой - распознается небольшая часть изображения, границы смазаны. Вторая функция - работает по принципы минимизации энергии графа. На выходе 2 карты глубины для правого и левого изображений. Работает достаточно хорошо, границы четкие, но требует значительное время на обработку. Вот код на питоне: import cv L=cv.LoadImage("l.jpg",0) R=cv.LoadImage("r.jpg",0) size = (L.width, L.height) disparity = cv.CreateImage( size, cv.IPL_DEPTH_32F, 1) dLeft = cv.CreateImage( size, cv.IPL_DEPTH_16S, 1) dRight = cv.CreateImage( size, cv.IPL_DEPTH_16S, 1) Hleft = cv.CreateImage( size, cv.IPL_DEPTH_8U, 1) Hright = cv.CreateImage( size, cv.IPL_DEPTH_8U, 1) print "calculation started", time.ctime() state = cv.CreateStereoGCState(128, 100) cv.FindStereoCorrespondenceGC(L, R, dLeft, dRight, state, False) print "calculation complited", time.ctime() cv.ShowImage("L", L) cv.ShowImage("R", R) cv.AddWeighted(dRight, 2, dRight, 0, 0, dRight) cv.AddWeighted(dLeft, -2, dLeft, 0, 0, dLeft) cv.ConvertScale(dLeft, Hleft) cv.ConvertScale(dRight, Hright) cv.ShowImage("Disparity Left", Hleft) cv.ShowImage("Disparity Right", Hright) cv.SaveImage("Hleft.jpg", Hleft) cv.SaveImage("Hright.jpg", Hright) cv.WaitKey(5000) Расчет на одном ядре занял около 10 минут. Это наилучший результат, которого я смог добиться Экспериментально нужно подобрать параметры функции cv.CreateStereoGCState(128, 100) 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloibobig 4 Жалоба Опубликовано May 8, 2012 Доброго времени, господа. Соорудил конструкцию из двух камер, получаю карту глубины с помощью Semi-global block matching алгоритма, все хорошо. Использую Point CLoud Library пока что просто для вывода облака точек, кстати проверял расстояние меряет довольно точно - на реальном расстоянии в 2 метра погрешность была 5 см. Расчитываю с помощью визуальной одометрии матрицу поворота+переноса из предыдущего кадра в текущий. Теперь проблема. Хочу строить 3д карту помещения, просто вращая свою установку и не могу понять как сюда привязать одометрию и регистрацию облаков точек. По сути получается аналогия со склейкой изображений для панорам, только в 3д пространстве. Помогите люди добрые разобраться, бьюсь 4 месяца уже. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано May 9, 2012 Здесь смотрели? : http://openslam.org/ http://www.mrpt.org/ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано May 21, 2012 по идее имеем карту глубины для одного места и второго и они пересекаются, что эквивалентно двум облакам точек которые пересекаются. не знаю можно ли использовать "плоские" дескрипторы просто с изображений, но вроде в PCL есть 3Д дескрипторы, хотя может это не в тему. если не использовать дескрипторы то имеем 2 облака точек и их можно наложить друг на друга через ICP алгоритм, он тоже есть в PCL. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано June 5, 2012 http://www.umiacs.umd.edu/~huytho/research.htm пара документов про 3д дескрипторы. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах