Карта глубины из стереопары
Модераторы: Vlad Sidash, Ledmaster, Anastasiya
Карта глубины из стереопары
Допустим, Вы имеете возможность приобрести две фотокамеры и сделать из них спарку для съемки стереопар.
Но для получения хороших результатов, двух кадров явно недостаточно.
Давайте посмотрим, как на практике получают глубину из стереопары.
Для двух камер с параллельными осями объективов любой объект в кадре тем сильнее "смещается" на левом и правом снимке пары, чем ближе к камерам он расположен.
На рисунке видно, что на месте персонажа в последних кадрах - темное пятно. Это результат вычитания уровня яркостей левого и правого кадра.
Чтобы понять принцип восстановления глубины, можно сделать следущее:
1. Взять любую стереопару и открыть ее кадры в GIMP или Photoshop как слои.
2. Выровнять стереопару по яркости, контрасту, перекосам и т.п.
3. Преобразовать изображение в градации серого и убрать шумы, "постеризовав" затем, чтобы оставить поменьше уровней яркости. Так проще работать с "математикой" и нагляднее результат.
4. Далее, совместим любой крупный объект на переднем плане, двигая один слой относительно другого.
5. Применив вычитание к слоям, видим, что на месте объекта получилась "дыра", которая легко преобразуется в контур, например.
На практике получить карту высот можно так:
Предварительно выровняв и постеризовав кадры стереопары, сдвигаем один слой (кадр) относительно другого на некоторое количество пикселей.
Затем вычитаем кадры друг из друга.
Результат сохраняем как новый слой.
Снова сдвигаем кадры на то же расстрояние (после вычитания дыры оставлять не надо, двигаем то что было до предыдущего вычитания).
Снова вычитаем, снова сохраняем как новый слой.
В результате нескольких повторов получим стопку слоев, соответствующих разностям сдвигов (параллаксов) для разных расстояний. Чем больше сдвиг, тем ближе к камерам, соответственно.
Эту стопку слоев обрабатываем. Например инвертируем, подчищаем шумы. Получается стопка "силуэтов". Суммируем их между собой и получаем нечто, очень похожее на "карту высот".
Далее, если использовался GIMP, ищем "Фильтры" - "Карта" - "Смещение" и получаем с помощью данного фильтра необходимое количество псевдоракурсов, из которых делаем либо анимированный GIF, например.
Но для получения хороших результатов, двух кадров явно недостаточно.
Давайте посмотрим, как на практике получают глубину из стереопары.
Для двух камер с параллельными осями объективов любой объект в кадре тем сильнее "смещается" на левом и правом снимке пары, чем ближе к камерам он расположен.
На рисунке видно, что на месте персонажа в последних кадрах - темное пятно. Это результат вычитания уровня яркостей левого и правого кадра.
Чтобы понять принцип восстановления глубины, можно сделать следущее:
1. Взять любую стереопару и открыть ее кадры в GIMP или Photoshop как слои.
2. Выровнять стереопару по яркости, контрасту, перекосам и т.п.
3. Преобразовать изображение в градации серого и убрать шумы, "постеризовав" затем, чтобы оставить поменьше уровней яркости. Так проще работать с "математикой" и нагляднее результат.
4. Далее, совместим любой крупный объект на переднем плане, двигая один слой относительно другого.
5. Применив вычитание к слоям, видим, что на месте объекта получилась "дыра", которая легко преобразуется в контур, например.
На практике получить карту высот можно так:
Предварительно выровняв и постеризовав кадры стереопары, сдвигаем один слой (кадр) относительно другого на некоторое количество пикселей.
Затем вычитаем кадры друг из друга.
Результат сохраняем как новый слой.
Снова сдвигаем кадры на то же расстрояние (после вычитания дыры оставлять не надо, двигаем то что было до предыдущего вычитания).
Снова вычитаем, снова сохраняем как новый слой.
В результате нескольких повторов получим стопку слоев, соответствующих разностям сдвигов (параллаксов) для разных расстояний. Чем больше сдвиг, тем ближе к камерам, соответственно.
Эту стопку слоев обрабатываем. Например инвертируем, подчищаем шумы. Получается стопка "силуэтов". Суммируем их между собой и получаем нечто, очень похожее на "карту высот".
Далее, если использовался GIMP, ищем "Фильтры" - "Карта" - "Смещение" и получаем с помощью данного фильтра необходимое количество псевдоракурсов, из которых делаем либо анимированный GIF, например.
Re: Карта глубины из стереопары
AnDrian писал(а):На практике получить карту высот можно так:
...
Приветствую, AnDrian!
А Вы сами пробовали использовать такой алгоритм?
Конечно, теоретически, чем больше ракурсов используется для генерации карты глубины, тем точноее мог бы быть результат. Практически же, разброс параметров камер и неточность их геометрической установки превращают этот процесс во "всенародное голосование", когда в целом все "за", но по поводу каждого конкретного пикселя возникают разногласия.
P.S. Старайтесь избегать повторов в разных ветках форума ( это я о картинках, которые уже приводились Вами в другой подборке).
Re: Карта глубины из стереопары
Ledmaster писал(а):AnDrian писал(а):На практике получить карту высот можно так:
...
Приветствую, AnDrian!
А Вы сами пробовали использовать такой алгоритм?
Много лет назад в институте делали работу для "зрения" робота. Восстановление глубины по двум телекамерам. К сожалению, заснул вчера, не успев попробовать. Сейчас постараюсь воспроизвести в GIMP по какой-нибудь стереопаре.
Re: Карта глубины из стереопары
Ledmaster писал(а):
P.S. Старайтесь избегать повторов в разных ветках форума ( это я о картинках, которые уже приводились Вами в другой подборке).
Извините за повтор. Тут именно монитор с изображением и "стадиями" обработки хотел показать, как идею. А много там ракурсов или всего два - не важно.
AnDrian писал(а):Понимаю, что это "эрзац"-способ, и будет работать не всегда. Однако, такие манипуляции позволяют получать карты высот с градиентами, что при ручном "промывании" маски сделать сложнее.
Артефакты, разумеется, придется подчищать руками, но их не столь много, как видно из данного примера.
Ну, из данного примера еще ничего не видно, если не лень, явите в студию готовый результат.
Что касается "традиционной" технологии, изображения искуственного происхождения, наподобие этого, гораздо легче поддаются автоматической конверсии, чем "живые", поскольку они гораздо "правильнее" с точки зрения соответствия пикселей в стереопаре.
-
- Сообщений: 38
- Зарегистрирован: Пн июн 29, 2009 2:24 am
Этот плагин в Widows пишет ошибку .AnDrian писал(а):Готовый плагин для GIMP, делающий карту высот по стереопаре:
http://registry.gimp.org/node/10217
karelkysino писал(а):AnDrian писал(а):Этот плагин в Widows пишет ошибку .
Не переживайте. У меня он тоже сначала не компилировался.
Идея не в том, чтобы доказать ненужность коммерческого софта. Такого как 3DMasterKit. Он то как раз нужен кому-то.
Идея в другом. Комп, стоящий на проходном месте или в офисе с вывеской будет иногда подвергаться некоторой процедуре... Почему? Потому что когда коту делать нечего, он яйца лижет. Когда коты из отдела "К" гоняют молодежь по торговым точкам в поисках средств на жизнь, оргтехника подвергается.
Нормальная, здоровая ситуация, готовить хотя бы машины для рабочих мест где принимаются заказы таким образом, чтобы совокупная стоимость владения ПО была рана нулю.
Это отдельная задача, требующая вдумчивости.
В свое оправдание могу сказать, что в сишном коде плагина содержится некий алгоритм. Может кому то на курсовичок сгодится. Или даже на ди-плом (две доски). Процесс совковой проклейки описал честно, а в pc-фаговых вопросах могу немного и поиздеваться.
Тут в общем случае все просто. Восстановить третью координату из стереопары можно. Это один из устоявшихся методов "зрения роботов".
Кто не осиливает - платит десятки рублей господам потрудолюбивее и пообразованнее.
Извините за садизм. Так честно.
Если такой ответ разозлит Вас и Вы разберетесь с математикой, не ища пачта от готовых программ - буду очень доволен.
Еще раз прошу пощения за такой способ выражать свою точку зрения на жизнь.
-
- Сообщений: 38
- Зарегистрирован: Пн июн 29, 2009 2:24 am
А чего так расщеперился то . Пальцы об косяки не задевают ? Не фига твой метод создания карты глубины из стереопары не работает . Пока лучше Стереотрейсера для этого дела не увидел . Я хоть и не математик , но для стерео тоже использую только фотошоп . Извини за грубость , но как аукнется , и так и далее .
karelkysino писал(а):А чего так расщеперился то . Пальцы об косяки не задевают ? Не фига твой метод создания карты глубины из стереопары не работает . Пока лучше Стереотрейсера для этого дела не увидел . Я хоть и не математик , но для стерео тоже использую только фотошоп . Извини за грубость , но как аукнется , и так и далее .
Да мне как то все равно. Вы для меня никто и звать никак. Надеюсь, я для вас - тоже.
Вернуться в «StereoTracer/3D с помощью карты глубины»
Кто сейчас на форуме
Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 7 гостей