Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

понедельник, 4 января 2010 г.

Панорамы. Как в Gimp дорисовывать/удалять объекты используя слои.

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

Как-то раз я узнал, что есть возможность исправить глюк. "Как?" - спросил себя я и полез в гугл. Видимо урок этот очень простой, чтобы о нем писали в сети, думаю потому я ничего не нашел. Вместе с тем были подозрения, что это делается как-то через слои. Photoshop у меня не стоит, зато есть Gimp (GNU Image Manipultion Programm). Долгое время пользовался Paint Brush и делал там много сложных вещей. Наверное по этой причине я предпочел Gimp тяжеловесному Photoshop. Пару часов работы и я нашел способ как это сделать. Еще пару дней экспериментов и теперь хочу поделиться результатом. Может кому-то пригодится...

Кстати, эта статья - ответ на вопрос, который я недавно поставил перед собой. Если впереди много деревьев, а за ними красивый горизонт, то как, сделав пару кадров и воспользовавшись эффектом параллакса, избавиться от этих деревьев? Возможно есть более интеллектуальные инструменты автоматизирующие процесс. Тут я расскажу как это сделать руками с помощью Gimp.

Итак исходный материал - склеенная панорама и запчасти из которых она склеивалась (профессиональные программы для работы с панорамами поддерживают режим сохранения в слои). Вот папка с включенным предпросмотром изображений.

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

Открываем склеенную панораму в Gimp. Меню Файл-Открыть... - ну как привыкли :), и видим нашу несовершенную панораму.

Красным я выделил пару мест, которые требуют доработки.

Следующим шагом мы открываем панель Слои (Меню Окна-Панели-Слои) и перетаскиваем туда один слой, на котором область прорисована полностью. Если начать с машины, то из 5 исходных слоев я выберу этот.

 После перетаскивания панель Слои будет выглядеть так.

Нам стоит поменять их порядок. Порядок в списке сверху вниз соответствует порядку расположения слоев от самого поверхностного к самому глубокому. А если мы хотим добавить на исходную панораму объект из другого слоя, то слой этот стоит расположить в самый низ как фон.

Чтобы понять что будет дальше происходить - скажу так: мы будем делать в верхнем слое дырки, так, чтобы было видно то, что происходит на нижнем слое. Если на нижнем слое цельная машина - то сквозь дыру в исходной панораме мы ее увидим. Для этого нам стоит добавить Альфа-канал к верхнему слою (к исходной панораме, которую будем дырявить). Делается это правым кликом на слое в панели Слои с последующим выбором из контекстного меню пункта Добавить альфа канал. То же можно сделать из основного меню
Слой-Прозрачность-Добавить альфа канал, перед тем выбрав верхний слой на панели Слои. Выглядит это так:

После этих действий с помощью инструмента Ластик мы будем делать дырки в верхнем слое. Если не включить альфа канал, то ластик рисовал бы как цветная кисть. Но нам нужны дырки!

Выбираем инструмент Ластик и форму кисти - круг с плавными краями. Подбираем необходимый размер кисти (под размер объекта) и начинаем делать дырку.

Но дырки мы не увидим, зато увидим как постепенно проявляется нижний слой, а на нем необходимый нам объект.

Теперь можно понять почему я говорил про дырки, если на время сделать нижний слой (с машиной) невидимым то увидим верхний слой (исходную панораму) с дыркой.


Перед сохранением нам надо объединить слои вместе. Для этого надо кликнуть на верхнем слое (исходная панорама) на панели Слои правой кнопкой мыши и в контекстном меню выбрать пункт Объединить с предыдущим. Это же можно сделать выбрав слой на панели Слои а потом в основном меню: Слой-Объединить с предыдущим.

В результате все что мы видели сольется в один слой.

Дальше удаляем из слоя альфа канал. Контекстное меню слоя - Удалить альфа канал или меню Слой-Прозрачность-Удалить альфа канал.

Если в этой итерации мы не смогли исправить все дефекты, то не стоит удалять альфа канал. Можно добавить очередной слой и проделать с ним то же, что мы сделали выше. В общем, альфа канал удаляется в самом конце, перед сохранением результата.

Вот и все. Несколько подобных итераций и вот, что у меня получилось.

Кстати, с тем же успехом я мог удалить машину и всех людей.

Конец.

1 комментарий: