Страница 1 из 2

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

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

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

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

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

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

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

Добавлено: Вс сен 19, 2010 12:33 pm
Ledmaster
AnDrian писал(а):На практике получить карту высот можно так:
...

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

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

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

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

Добавлено: Вс сен 19, 2010 3:11 pm
AnDrian
Ledmaster писал(а):
AnDrian писал(а):На практике получить карту высот можно так:
...

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


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

Добавлено: Вс сен 19, 2010 4:16 pm
AnDrian
Изображение

Добавлено: Вс сен 19, 2010 4:20 pm
AnDrian
Взял исходное изображение
Изображение
Разрезал на слои.
Постеризовал
Размыл "гауссом"
Совместил "мышей"
Режим "Затемнение" на "верхнем слое" и движек "непрозрачность" довершили начатое.

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

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

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

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

Добавлено: Вс сен 19, 2010 6:02 pm
AnDrian
Готовый плагин для GIMP, делающий карту высот по стереопаре:
http://registry.gimp.org/node/10217

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

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

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

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

Изображение

Добавлено: Вс сен 19, 2010 7:44 pm
AnDrian
Ledmaster писал(а):Ну, из данного примера еще ничего не видно, если не лень, явите в студию готовый результат.

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

Добавлено: Пн сен 20, 2010 2:19 pm
karelkysino
AnDrian писал(а):Готовый плагин для GIMP, делающий карту высот по стереопаре:
http://registry.gimp.org/node/10217

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

Добавлено: Пн сен 20, 2010 7:37 pm
AnDrian
karelkysino писал(а):
AnDrian писал(а):Этот плагин в Widows пишет ошибку .

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

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

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

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

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

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

Добавлено: Вт сен 21, 2010 3:49 am
Ledmaster
Господа, умерьте пыл, еще немножко, и кого-то банить придется. :twisted: