tag:blogger.com,1999:blog-921642355023354132.post636884607610893988..comments2014-10-12T15:23:19.515+03:00Comments on Мысли вслух...: HackDay#25. Проект Virtualens. Отчет.valexeyhttp://www.blogger.com/profile/02594309440030597264noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-921642355023354132.post-60359932976720978722013-04-17T01:17:12.399+03:002013-04-17T01:17:12.399+03:00belbes: спасибо за эрозию. Буду пробовать.
По пов...belbes: спасибо за эрозию. Буду пробовать.<br /><br />По поводу сверток - вначале горизонтальная а затем вертикальная дает ту же сложность, что и реализованный мной разностный метод, то есть O(W*H*N). <br /><br />FFT не рассматривалось в силу того, что куду мы прикрутить просто не успели бы скорее всего, к тому же мы в тот момент не знали на каком ноуте будем демонстрировать (изначально предполагали демонстрировать на том что Интел выдал, однако в последний момент все переигралось), я по этим граблям уже бегал, так что постарался сделать так, чтобы приложение минимально от железа зависело.<br /><br />Да, когда я думал в сторону 3Д сканера, я находил папиры с описанием методик использование RGB в сочетании с методами Super Resolution (для ToF камер). Реалтайм конечно же даже и не рассматривался - вначале много данных соберем, а потом будем медленно, но верно их жевать.<br /><br />Советую поэкспериментировать с камерой и бликами. С разными материалами. На человеке (не важно каком месте человека, важно чтобы там была кожа) камера дает наилучшую картинку на самом деле. Видимо за счет того, что кожа у нас полупрозрачная и неплохо все это рассеивает, почти без бликов. Пластик, бумага, металл - все намного хуже. С человеком могут сравниться только мягкие игрушки пожалуй :-)valexeyhttps://www.blogger.com/profile/02594309440030597264noreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-25828383148483773322013-04-16T22:15:35.569+03:002013-04-16T22:15:35.569+03:00Так, по поводу сверток: в лоб решать плохая идея. ...Так, по поводу сверток: в лоб решать плохая идея. Первый вариант: вместо квадратного ядра использовать 2 одномерных(горизонтальное и вертикальное), тогда сложность оценивается как O(h*w*n) + O(h*w*n) - для больших ядер получается быстрее чем решение в лоб. Второй вариант: считаем свертку по Гауссу через Быстрое Преобразование Фурье, тогда оценка сложности будет иметь вид O(n*log(n)). Последний способ предпочтительней ввиду того, что FFT хорошо ложится на CUDA(даже есть реализация fft в виде стандартной библиотеки для CUDA cufft). <br /><br />По поводу операции эрозии: это операция из области математической морфологии, по сути тоже свертка, только с бинарным ядром и применяемая для бинарных изображений(масок), достаточно неплохо ММ описана на хабре вот тут: http://habrahabr.ru/post/113626/ <br /><br />По поводу 3D сканирования: большая часть бликов будет сглаживаться за счет избыточности данных при "сшивке" большого количества облаков. Хотя вы правы, блики и шумы все равно будут и по хорошему чтобы с ними бороться, нужно анализировать еще и RGB картинку, но это уже совсем нетривиальная задача. А на реалтайм даже с GPU особо расчитывать не приходится, это вполне нормально, когда просчет модели идет несколько минут.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-12711873715520917382013-04-16T19:59:27.832+03:002013-04-16T19:59:27.832+03:00 belbes: ок, жду. belbes: ок, жду.valexeyhttps://www.blogger.com/profile/02594309440030597264noreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-75927823257027657322013-04-16T14:31:50.735+03:002013-04-16T14:31:50.735+03:00По поводу математики отвечу вечером(неудобно набив...По поводу математики отвечу вечером(неудобно набивать на телефоне сообщения))<br />А по поводу последнего пункта: fusion ябы не стал писать с PerC SDK. Для этих целей был-бы написан драйвер доя работы с камерой в обход SDK(найти способ юзать стандартный драйвер мимо SDK найти не удалось). Собственно чем я и займусь, как руки до железки дойдут)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-49219573281543550552013-04-16T14:06:41.341+03:002013-04-16T14:06:41.341+03:00Svetlana, я эту демку как раз и смотрел, и на осно...Svetlana, я эту демку как раз и смотрел, и на основе увиденного идею и отверг. Через минуту просмотра начинает болеть шея. Иллюзия не создается во-первых из за лага и потери лица (тут еще угла у камеры не хватает), а во-вторых из за немного не правильной визуализации - там при смещении головы похоже отрабатывают поворот сцены, а не смещение наблюдателя/искажение перспективы.<br /><br />У головы огра, по моему была та же проблема. Ну, то есть демкам есть куда расти :-)<br /><br />На счет конкурса - мы постараемся, но я не смог разобраться чем первая фаза отличается от второй фазы проведения конкурса (интуитивно кажется, что победители первой переходят во вторую, но это похоже не так) кроме размера призового фонда. Там ведь видимо другие требования к приложениям? По срокам подачи заявок тоже не ясно. Зарегистрироваться не удалось.valexeyhttps://www.blogger.com/profile/02594309440030597264noreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-23414060027600359302013-04-16T14:00:17.798+03:002013-04-16T14:00:17.798+03:00Сложность же алгоритма свертки (в случае реализаци...Сложность же алгоритма свертки (в случае реализации по определению) равна O(W*H*N^2). Вопрос - при каком N (размере ядра) оно давало реалтайм?<br /><br />В плане ареола - я был вообще не в курсе как картинки обрабатываются :-) То есть я в курсе как например h264 работает, в курсе про i,p,b-frame'ы и так далее. Про вейвлеты. В курсе как из сигнала выделить полезную составляющую (всяко разно DSP), но приемы именно для обработки изображений мне внове. Так что мы старательно изобретали велосипеды.<br /><br />Да, кстати, а где можно прочесть (ну или может сам опишешь кратко) что такое эрозия этого самого блоба? Я правильно понимаю, что предлагается размыть у фореграунд-слоя края и уже размывать фон с учетом этих краев.<br /><br />На счет точности 3Д я в курсе как это работает. Там проблема не в шумах, а какого уровня блики оно ловит даже от матовых поверхностей - предметы пришлось бы пудрить, и пришлось бы бороться с яркостью встроенного фонарика. Ну и мы не осилили бы математуку для object-трекинга за 48 часов, чтобы было достаточно просто покрутить предмет перед камерой и оно построило бы 3д модель (а это в этих сканерах есть).<br /><br />Ну, например вот http://www.artec3d.com/ru/3d_scanners_for_fun/<br /><br />Или вот: http://reconstructme.net/<br />И еще: http://skanect.manctl.com/<br /><br />Да, и я не собирался прям таки в реалтайме строить модель. Естественно берем массу кадров и фильтруем.<br /><br />Да, кстати, а как противоречит 3Д сканер PerC SDK? Вы бы ведь брали информацию с ИК-камеры именно через PerC SDK. Так что под конкурс оно подпадало бы. Более того, в том челендже большом интеловском, среди победителей есть как раз скажем 3д сканер лица.valexeyhttps://www.blogger.com/profile/02594309440030597264noreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-48693510028263288882013-04-16T13:52:04.682+03:002013-04-16T13:52:04.682+03:00Алексей, мои поздравления! Отдельное спасибо за от...Алексей, мои поздравления! Отдельное спасибо за отчет! С удовольствием почитала :)<br />Кстати, насчет вашей первой идеи по head tracking - коллеги подсказали, что подобная демка есть в пакете PerC SDK, называется HeadCoupledPerspective. Работает, конечно, не так идеально, как на примере с Wii, но работает)<br />И насчет Utrabook Intel - это не мы производим устройства, а их производят для нас, возможно тот же самсунг. Эти устройства презназначены для внутренних целей и для передачи другим компаниям в целях тестирования и разработки приложений с тач и сенсорами.<br /><br />Обязательно регистрируйтесь для участия в конкурсе. Будем ждать доработанной версии VirtuaLens! Удачи! :)<br /><br /> Svetlanahttps://www.blogger.com/profile/13860400092471286230noreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-13369974860505210112013-04-16T13:21:52.343+03:002013-04-16T13:21:52.343+03:00Поздравляю с победой!
Странно что у вас были лаги ...Поздравляю с победой!<br />Странно что у вас были лаги с fps, при помощи свертки например с Гауссовым ядром 5мп бодро размывают картинку в реалтайме. Кстати, если бы вы делали эрозию блоба фореграунда, прежде чем размывать бэкграунд, то у вас не было бы нимба вокруг силуэта на финальном изображении) <br />А мы в PercDJ что-то особо не заморочились фронт-энд частью, убив все время на написание ядра(отладка драйвера виртуального устройства + дебаг 10-пальцевого мультитача у нас занял все 2 дня =) ) в тоге особо ковырять протокол midi было уже лень, и пришлось ваять демку покрывающую толко базовые команды протокла, поэтому на выходе какая-то фигня получилась:-D Да и железку мы первый раз увидели уже на контесте (вообще участвовать решили просто по фану за вечер жо мероприятия)) <br />А насчет 3D сканера - это вы зря) У Kinect погрешность вообще >1см, точность в сканерах достигают не за счет железки, а за счет глобальной оптимизации при матчинге облаков в сцену) Большую точность только на лидаре можно получить, но и стоит он уже не 300$ а в районе 100000$ (= У нас была идея сканер реализовать, но ребята из Intel сказали что надо писать только при помощи PerC SDK, поэтому пришлось идею отвергнуть)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-921642355023354132.post-1046747802422901632013-04-16T11:00:36.953+03:002013-04-16T11:00:36.953+03:00Хохо)) круто) На самом деле ничего ты не смазал на...Хохо)) круто) На самом деле ничего ты не смазал на питче, твоя фраза "только математика, только хардкор" была самой классной!Anonymoushttps://www.blogger.com/profile/14842682286741159726noreply@blogger.com