Построение 3D модели / Отслеживание движений

Модератор: Модераторы

Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 31.08.2015 12:19:13

Всем привет и хорошего настроения!

Построение 3D модели с камеры: http://www.youtube.com/watch?v=SW-SqE7HyPQ
Отслеживание движений с камеры: https://www.youtube.com/watch?v=r42z259-HHE
Или вот здесь на 46 минуте, сканирование мира + подстановка анимированного объекта в него: https://www.youtube.com/watch?v=HH0HLhwfDgM

:?: Интересно для Lazarus есть такие(похожие) наработки?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение Pavia » 01.09.2015 00:49:33

А с какой целью интересуетесь?
1) Элементарный градиент плюс положена какая-то модель нормализации. Судя по всему код из 90-тых годов.
2) Отслеживание реализуется не трудно. Выделяешь углы и далее ищешь лучшее положение модели. Ищется итерационными методами. Реализовать не трудно.
Забавный ведущий. Плюс технология [s]подвижных[/s] параметрических моделей.
С руками вернее пальцами тяжелее, видимо ребята поработали хорошо.
3) Как и предыдущие ролики являются постановочным. Тут код по сложнее будет.

Лучше вот это видео посмотрите. У них это по лучше работает:
http://vision.in.tum.de/research/vslam

Добавлено спустя 4 минуты 50 секунд:
PS. Особо на паскале не искал. Но и не встречал. Хотя это и странно. На СИ есть на матлабе есть. А вот на паскале почти ничего нету.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 01.09.2015 01:38:47

Pavia писал(а):Элементарный градиент

Градиент чего? По градиенту Z-ось?(ближе дальше), но тогда будут ошибки, т.к. свет с разных сторон может поступать.
Pavia писал(а):Выделяешь углы

Наверно не углы, а яркие точки и по ним синхронизация. Да?
Pavia писал(а):далее ищешь лучшее положение модели

это непонятно.
Pavia писал(а):С руками вернее пальцами тяжелее

Безусловно, но на мой взгляд - одно и тоже, только добавлено движение и вычисляется скелет по сгибам.
Pavia писал(а):Лучше вот это видео посмотрите.

Да хорошее видео, там он тоже говорит про градиент, но мой English not up to the mark...
Pavia писал(а):А с какой целью интересуетесь?

Целей для такого кода много, я просто хочу научиться.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение Pavia » 01.09.2015 18:30:53

vitaly_l писал(а):Градиент чего? По градиенту Z-ось?(ближе дальше)

Градиент по русски это перепад он может быть только по высоте. В данном случаи имеется по яркости.
vitaly_l писал(а): но тогда будут ошибки, т.к. свет с разных сторон может поступать.

А я и не обещал что будет работать везде. Я же написал что видео постановочное. Для восстановления 3D лица использовались студийные фота, сделанные с правильным освещением.
Но при этом артефакты видны.

Есть работы по восстановления 3D скульптур по фотографий из интернета. Вот там применяют нормализацию цвета и освещения. Большая часть фотографий просто отбраковывается как мусор. HSV, YUV, Lab цветовые модели которые предназначены для разделения цвета, градиента и яркости. Это первое приближение для компенсации.
Второй рубеж это принципы компонентного анализа. Применяется для сортировки и выявления пикселей с равномерным освещением от неравномерного(засвеченых, затемнённых, с тенью) .


vitaly_l писал(а):Наверно не углы, а яркие точки и по ним синхронизация. Да?

Такая методика тоже есть. Но не на каждом предмете есть блёстки/стразы. Во вторых единичные точки считаются не столь устойчивыми. В отличии от границ. Но так как на одной границе много точек, что тоже плохо, то на них дополнительно ищут углы. Углы- это места изменения кривой. Выбираются наиболее углы с наиболее сильным перепадом.
На самом деле сейчас то, что называется углами ближе к ярким точкам. Сам варианты не сравнивал поэтому сказать однозначно что лучше что хуже не могу и судя по всему правда где-то посередине.

vitaly_l писал(а):далее ищешь лучшее положение модели- это непонятно.

У тебя есть особые точки. И есть математическая модель объекта. К примеру для руки экто кости кисти руки. Для лица модель это 3D модель губы глаза, овал лица. Которые могут
изменяться в прострнатсве перемещать относительно друг друга. Но также имеют ограничения к примеру губы могут двигаться только по Y но не могут двигаться по X.
А вот далее решается задачи наилучшего совмещения точек на фото и точек модели. Надо определить какая точка какой соответствует. Затем найти матрицы которые параметры матрицы которые отвечают за поворот, наклон, смещение и перемещение. Т.е надо минимизировать эти параметры так, чтобы после применения операторов вращения, перемещения над дочками 3D модели. Ошибка равная сумме всех расстояния между точками 3D модели и особыми точками на фото.

vitaly_l писал(а):Да хорошее видео, там он тоже говорит про градиент, но мой English not up to the mark...

Для реконструкции 3D сцены или объекта используют разные методы, вернее их комбинация. Ищутся особые точки вычисляются углов. По ним используя математику(эпиполярные преобразования) восстанавливается положение камеры и вычисляется расстояние от камеры, до точки. На основе границ более точно востанавливается глубина. Точек мало они прыгают особенно дальние.
А вот вблизи напротив имеется недостаток и тех и тех приходится анализировать текстуру(что происходит от слова тесктиль, ткань) . Вычисляются градиенты они позволяют восстановить мелкую фактуру и плавные перепады. Тем самым отделить рельеф от текстуры.

Заметьте немец очень сильно качает и трясёт камеру из стороны в сторону. Камера у них хорошая -поэтому снимки не смазываются и не отбрасываются.
Так вот многочисленное покачивание позволяет найти больше особых точек и более точно определить их положение в пространстве.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 01.09.2015 19:57:00

Pavia писал(а):многочисленное покачивание позволяет найти больше особых точек и более точно определить их положение в пространстве

Ага... понял. Действительно при движении (или наличии двух камер), можно построить любой объект и рассчитать все расстояния по Z.

Что конкретно вычисляется градиентом, не понимаю, точнее не могу представить реализацию. Слишком сложные вычисления, у градиента нужны. Можно и без градиентов всё построить. Вроде вижу, спасибо БОЛЬШОЕ. Если есть у кого какие дополнения и примеры, думаю многим будет интересно.
Хорошего дня и настроения!


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение sts » 02.09.2015 00:05:59

на приведенных видео используется самое узколобое решение - спецкамера с лазерной подсветкой, так что ничего выдающегося в алгоритмах нету, основную работу делает камера, поставляя "разжеванные" данные.
что касается исходного вопроса - берете их sdk, камеру, подключаете к fpc и вперед.
если хотите на произвольной камере, то нету готового такого, есть попытки но они сливаются кудато, последний раз года 4 назад видал.
видимо не зря интел костыль в виде спецкамеры используют, не все так просто.

Добавлено спустя 1 минуту 26 секунд:
(точнее стали использовать)
sts
постоялец
 
Сообщения: 406
Зарегистрирован: 04.04.2008 12:15:44
Откуда: Тольятти

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 02.09.2015 00:28:10

sts писал(а):не зря интел костыль в виде спецкамеры используют, не все так просто

Pavia писал(а):многочисленное покачивание позволяет найти больше особых точек

Выше Pavia привёл верное решение и оно 100% будет работать (при наличии освещения).
А интел - далеко не ангельское заведение и деньги с лицемерием, в их мире - имеют приоритет над всем.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение eugeneloza » 02.09.2015 14:52:45

Интересно для Lazarus есть такие(похожие) наработки?

Очень вряд-ли. Слишком сложная задача, по зубам только крутым фирмам, которые вряд-ли будут, вложив очень много денег, выкладывать исходники.
eugeneloza
новенький
 
Сообщения: 24
Зарегистрирован: 26.05.2015 13:13:08

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 02.09.2015 15:02:35

eugeneloza писал(а):Слишком сложная задача

Это уже не имеет значения, важно что, она 100% решаемая и я это вижу.
eugeneloza писал(а):по зубам только крутым фирмам

Я уверен, если у меня хоть, что-то не получится, то на этом форуме мне помогут найти решение.


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение Pavia » 20.09.2015 22:09:39

Пока решил поработать в одном потоке.
- Сделал предобработку.
- Сделал детектор углов.
- Подобрал пороги для детектора углов.
Находит слишком много углов. От 100 до 2 000 штук. Надо как-то адаптивно фильтровать. Плюс к этому думаю над использованием RANSAС.
В целом не страшно один проход 120-150 мс, на 800 Мгц, на 3200 МГц нормально обрабатывает 30 кадров/с. :D Хотелось бы быстрее, но это на будущее. У Англичан конечно код быстрее 2 мс против моих 40, так как я по старинки использовал углы Харра, а они быстрые углы.

Теперь можно заняться геометрий и математикой. Сделать решатель для нахождения параметров камеры. Всё бы ничего только у меня камера дешёвая. И судя по всему произвольно меняет внутренние параметры.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 20.09.2015 23:49:13

Pavia писал(а):заняться геометрий и математикой. Сделать решатель для нахождения параметров камеры. Всё бы ничего только у меня камера дешёвая. И судя по всему произвольно меняет внутренние параметры.

Это не камера, это: WFV - меняет параметры камеры, выставляет баланс белого. Что за решатель нахождения параметров камеры?
Pavia писал(а):Подобрал пороги для детектора углов

Интересно: Какие пороги? Как это выглядит? Принт скрин порогов есть?
Pavia писал(а):Плюс к этому думаю над использованием RANSAС. .. я по старинки использовал углы Харра, а они быстрые углы

Что за углы Харра? И что за быстрые углы?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение Pavia » 21.09.2015 00:29:52

vitaly_l писал(а):Интересно: Какие пороги? Как это выглядит? Принт скрин порогов есть?

Зелёными пикселями. Они там маленькие, обозначены найденные особые точки(углы).
Изображение
vitaly_l писал(а):Что за углы Харра? И что за быстрые углы?

Углы Харра.
http://www.bmva.org/bmvc/1988/avc-88-023.pdf
Быстрые углы.
http://www.edwardrosten.com/work/fast.html
Прочие особые точки:
https://en.wikipedia.org/wiki/Feature_d ... ter_vision)
vitaly_l писал(а):Это не камера, это: WFV - меняет параметры камеры, выставляет баланс белого. Что за решатель нахождения параметров камеры?

VFW, сам ничего не меняет меняет драйвер или камера. На самом деле драйвер я свежий поставил там глюков меньше всего: автобаланс белого доделали. автоуровнь яркости тоже сделали. Но такое впечатления что иногда срабатывает автоматический зум.
Под параметрами камеры понимают её положение в пространстве, её повороты(внешние параметры).
И внутренние параметры: фокусное расстояние, соотношения сторон, наклоны матрицы. Искривления вносимые линзой.
https://en.wikipedia.org/wiki/Camera_resectioning
Вот решатель нужен что-бы найти эти параметры автоматически.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 21.09.2015 03:17:33

Pavia писал(а):фокусное расстояние.

Вы можете управлять фокусным расстоянием?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Построение 3D модели / Отслеживание движений

Сообщение Pavia » 21.09.2015 13:15:31

vitaly_l писал(а):Вы можете управлять фокусным расстоянием?

Поменял камеру вот тебе и другое фокусное расстояние.
Или взять камеру с трансфокатором. Дословно устройство для изменения фокуса. Его можно и самому изготовить из 2-х линз.
Взять биноколь или подзорную трубу.

Есть и более экстатический способ. Можно и на одной линзе менять фокусное расстояние. Через цифровой зум.

Но у меня камера простая. Там пожалуй только резкость меняется.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Построение 3D модели / Отслеживание движений

Сообщение vitaly_l » 21.09.2015 13:40:33

Pavia писал(а):Можно и на одной линзе менять фокусное расстояние. Через цифровой зум.

Это не фокусное расстояние, это масштабирование (scale).
А почему Вы не используете Fast, а берёте алгоритм Харриса? (2 мс против 40 мс, приличный прирост)

Кстати вот весь список детекторов углов:
Moravec
Harris
Shi-Tomasi
Förstner
SUSAN
Trajkovic
FAST
CSS
Детектор, основанный на глобальных и локальных свойствах кривизны
CPDA


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

След.

Вернуться в Графика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru