Карта глубины из стереопары

Вопросы создания 3D изображений методом "карты глубины", работа с программой StereoTracer

Модераторы: Vlad Sidash, Ledmaster, Anastasiya

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Карта глубины из стереопары

Сообщение AnDrian » Вс сен 19, 2010 4:44 am

Допустим, Вы имеете возможность приобрести две фотокамеры и сделать из них спарку для съемки стереопар.
Но для получения хороших результатов, двух кадров явно недостаточно.
Давайте посмотрим, как на практике получают глубину из стереопары.
Изображение
Для двух камер с параллельными осями объективов любой объект в кадре тем сильнее "смещается" на левом и правом снимке пары, чем ближе к камерам он расположен.
На рисунке видно, что на месте персонажа в последних кадрах - темное пятно. Это результат вычитания уровня яркостей левого и правого кадра.

Чтобы понять принцип восстановления глубины, можно сделать следущее:
1. Взять любую стереопару и открыть ее кадры в GIMP или Photoshop как слои.
2. Выровнять стереопару по яркости, контрасту, перекосам и т.п.
3. Преобразовать изображение в градации серого и убрать шумы, "постеризовав" затем, чтобы оставить поменьше уровней яркости. Так проще работать с "математикой" и нагляднее результат.
4. Далее, совместим любой крупный объект на переднем плане, двигая один слой относительно другого.
5. Применив вычитание к слоям, видим, что на месте объекта получилась "дыра", которая легко преобразуется в контур, например.

На практике получить карту высот можно так:
Предварительно выровняв и постеризовав кадры стереопары, сдвигаем один слой (кадр) относительно другого на некоторое количество пикселей.
Затем вычитаем кадры друг из друга.
Результат сохраняем как новый слой.
Снова сдвигаем кадры на то же расстрояние (после вычитания дыры оставлять не надо, двигаем то что было до предыдущего вычитания).
Снова вычитаем, снова сохраняем как новый слой.
В результате нескольких повторов получим стопку слоев, соответствующих разностям сдвигов (параллаксов) для разных расстояний. Чем больше сдвиг, тем ближе к камерам, соответственно.

Эту стопку слоев обрабатываем. Например инвертируем, подчищаем шумы. Получается стопка "силуэтов". Суммируем их между собой и получаем нечто, очень похожее на "карту высот".

Далее, если использовался GIMP, ищем "Фильтры" - "Карта" - "Смещение" и получаем с помощью данного фильтра необходимое количество псевдоракурсов, из которых делаем либо анимированный GIF, например.

Ledmaster
Сообщений: 317
Зарегистрирован: Пн май 05, 2008 11:23 pm

Re: Карта глубины из стереопары

Сообщение Ledmaster » Вс сен 19, 2010 12:33 pm

AnDrian писал(а):На практике получить карту высот можно так:
...

Приветствую, AnDrian!
А Вы сами пробовали использовать такой алгоритм?

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

P.S. Старайтесь избегать повторов в разных ветках форума ( это я о картинках, которые уже приводились Вами в другой подборке).

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Re: Карта глубины из стереопары

Сообщение AnDrian » Вс сен 19, 2010 3:11 pm

Ledmaster писал(а):
AnDrian писал(а):На практике получить карту высот можно так:
...

Приветствую, AnDrian!
А Вы сами пробовали использовать такой алгоритм?


Много лет назад в институте делали работу для "зрения" робота. Восстановление глубины по двум телекамерам. К сожалению, заснул вчера, не успев попробовать. Сейчас постараюсь воспроизвести в GIMP по какой-нибудь стереопаре.

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вс сен 19, 2010 4:16 pm

Изображение

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вс сен 19, 2010 4:20 pm

Взял исходное изображение
Изображение
Разрезал на слои.
Постеризовал
Размыл "гауссом"
Совместил "мышей"
Режим "Затемнение" на "верхнем слое" и движек "непрозрачность" довершили начатое.

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вс сен 19, 2010 4:24 pm

Понимаю, что это "эрзац"-способ, и будет работать не всегда. Однако, такие манипуляции позволяют получать карты высот с градиентами, что при ручном "промывании" маски сделать сложнее.
Артефакты, разумеется, придется подчищать руками, но их не столь много, как видно из данного примера.

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Re: Карта глубины из стереопары

Сообщение AnDrian » Вс сен 19, 2010 5:21 pm

Ledmaster писал(а):
P.S. Старайтесь избегать повторов в разных ветках форума ( это я о картинках, которые уже приводились Вами в другой подборке).

Извините за повтор. Тут именно монитор с изображением и "стадиями" обработки хотел показать, как идею. А много там ракурсов или всего два - не важно.

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вс сен 19, 2010 6:02 pm

Готовый плагин для GIMP, делающий карту высот по стереопаре:
http://registry.gimp.org/node/10217

Изображение
Изображение

Ledmaster
Сообщений: 317
Зарегистрирован: Пн май 05, 2008 11:23 pm

Сообщение Ledmaster » Вс сен 19, 2010 7:20 pm

AnDrian писал(а):Понимаю, что это "эрзац"-способ, и будет работать не всегда. Однако, такие манипуляции позволяют получать карты высот с градиентами, что при ручном "промывании" маски сделать сложнее.
Артефакты, разумеется, придется подчищать руками, но их не столь много, как видно из данного примера.

Ну, из данного примера еще ничего не видно, если не лень, явите в студию готовый результат.

Что касается "традиционной" технологии, изображения искуственного происхождения, наподобие этого, гораздо легче поддаются автоматической конверсии, чем "живые", поскольку они гораздо "правильнее" с точки зрения соответствия пикселей в стереопаре.

Изображение

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вс сен 19, 2010 7:44 pm

Ledmaster писал(а):Ну, из данного примера еще ничего не видно, если не лень, явите в студию готовый результат.

Если честно - лень.

karelkysino
Сообщений: 38
Зарегистрирован: Пн июн 29, 2009 2:24 am

Сообщение karelkysino » Пн сен 20, 2010 2:19 pm

AnDrian писал(а):Готовый плагин для GIMP, делающий карту высот по стереопаре:
http://registry.gimp.org/node/10217

Изображение
Изображение
Этот плагин в Widows пишет ошибку .

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Пн сен 20, 2010 7:37 pm

karelkysino писал(а):
AnDrian писал(а):Этот плагин в Widows пишет ошибку .

Не переживайте. У меня он тоже сначала не компилировался.

Идея не в том, чтобы доказать ненужность коммерческого софта. Такого как 3DMasterKit. Он то как раз нужен кому-то.
Идея в другом. Комп, стоящий на проходном месте или в офисе с вывеской будет иногда подвергаться некоторой процедуре... Почему? Потому что когда коту делать нечего, он яйца лижет. Когда коты из отдела "К" гоняют молодежь по торговым точкам в поисках средств на жизнь, оргтехника подвергается.
Нормальная, здоровая ситуация, готовить хотя бы машины для рабочих мест где принимаются заказы таким образом, чтобы совокупная стоимость владения ПО была рана нулю.
Это отдельная задача, требующая вдумчивости.

В свое оправдание могу сказать, что в сишном коде плагина содержится некий алгоритм. Может кому то на курсовичок сгодится. Или даже на ди-плом (две доски). Процесс совковой проклейки описал честно, а в pc-фаговых вопросах могу немного и поиздеваться.
Тут в общем случае все просто. Восстановить третью координату из стереопары можно. Это один из устоявшихся методов "зрения роботов".
Кто не осиливает - платит десятки рублей господам потрудолюбивее и пообразованнее.
Извините за садизм. Так честно.
Если такой ответ разозлит Вас и Вы разберетесь с математикой, не ища пачта от готовых программ - буду очень доволен.
Еще раз прошу пощения за такой способ выражать свою точку зрения на жизнь.

karelkysino
Сообщений: 38
Зарегистрирован: Пн июн 29, 2009 2:24 am

Сообщение karelkysino » Пн сен 20, 2010 10:41 pm

А чего так расщеперился то . Пальцы об косяки не задевают ? Не фига твой метод создания карты глубины из стереопары не работает . Пока лучше Стереотрейсера для этого дела не увидел . Я хоть и не математик , но для стерео тоже использую только фотошоп . Извини за грубость , но как аукнется , и так и далее .

AnDrian
Сообщений: 53
Зарегистрирован: Вс сен 19, 2010 1:34 am

Сообщение AnDrian » Вт сен 21, 2010 3:02 am

karelkysino писал(а):А чего так расщеперился то . Пальцы об косяки не задевают ? Не фига твой метод создания карты глубины из стереопары не работает . Пока лучше Стереотрейсера для этого дела не увидел . Я хоть и не математик , но для стерео тоже использую только фотошоп . Извини за грубость , но как аукнется , и так и далее .

Да мне как то все равно. Вы для меня никто и звать никак. Надеюсь, я для вас - тоже.

Ledmaster
Сообщений: 317
Зарегистрирован: Пн май 05, 2008 11:23 pm

Сообщение Ledmaster » Вт сен 21, 2010 3:49 am

Господа, умерьте пыл, еще немножко, и кого-то банить придется. :twisted:


Вернуться в «StereoTracer/3D с помощью карты глубины»

Кто сейчас на форуме

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