Замена фона на фотографии

Заменить фон на фотографии - типичная задача цифровой обработки изображений. И Photoshop допускает достаточно много путей решения этой задачи. Выделение объекта с четкими краями, как правило, больших проблем не вызывает даже у начинающих. Гораздо сложнее работать с объектами, не имеющими четких границ. Пример - портрет девушки с развевающимися волосами. Получить красивые волосы на новом фоне достаточно сложно. Но, все-таки, возможно. Пути решения этой задачи уже неоднократно описывались. Однако, рискну поделиться собственным опытом в этой области, ведь подобную задачу мне приходится решать достаточно часто (раз 300 - 400 в неделю). Поэтому возникающие при этой операции проблемы мне достаточно хорошо знакомы. При описании процесса замены фона полагаю, что съемка была выполнена специально для этой цели, т.е. случай, когда нужно из групповой фотографии, снятой на вечеринке, вырезать портрет любимой девушки и поместить его на фоне Эйфелевой башни, здесь не рассматривается… Наиболее часто замену фона можно разделить на три этапа:

  1. Точная обрезка по контуру выделяемого объекта;
  2. Устранение рефлексов - паразитной засветки лица и волос и края контура отраженным от фона светом;
  3. Точное выделение волос.

Сразу оговорюсь, что для получения наилучшего результата важна не только технология обрезки, но и технология съемки. Чтобы задача дальнейшей обрезки максимально упростилась, фон, на котором проводится съемка, должен быть достаточно мягкого, не насыщенного цвета. Он должен быть равномерно и достаточно хорошо освещен и размещен достаточно далеко от объекта съемки. Иногда целесообразно использование дополнительной подсветки фона. Желательно также, чтобы цвет фона при съемке был близким к преобладающему цвету нового фона. Если это невозможно, то нужно придерживаться хотя бы того принципа, что при перестановке на темный фон снимать также нужно на темном фоне, а при перестановке на светлый фон - на светлом. Этот очевидный совет позволит сделать незаметными огрехи даже достаточно грубой обрезки и существенно сократит время для получения качественного результата. Если вырезанный объект переставляется на белый фон, съемку рекомендую на светло-сером фоне.

Собственно обрезку выполнять настоятельно рекомендую при помощи маски. Это очень облегчает обработку края обрезки и устранение ошибок в выделении. Выделяю область фона чаще всего "волшебной палочкой" (magic wand tool) с Tolerance=16. Затем расширяю выделенную область на 1-4 пикселя, инвертирую и делаю маску. Затем маску размываю по Гауссу с радиусом, равным значению расширения области (1-4 пикселя). Получаю вырезанный контур с мягкой и достаточно точной границей. Для женских портретов с распущенными или вьющимися волосами для выделения часто использую Color Range, но тогда после создания маски приходится дорабатывать ее в области изображения, восстанавливая исчезнувшие детали.

Рефлексы на волосах убираю кистью в режиме Color, Opacity=20. Цвет выбираю по образцу цвета волос. Для одежды - тоже самое, с соответствующим образцом цвета. Иногда рефлексы можно убрать и цветом нового фона.

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

Рис. 1
Рис. 2
Рис. 3
Рис. 4
Рис. 5
Рис. 6
Рис. 7
Рис. 8

Более подробно это выглядит так:
1. Загружаю фото.
2. Любым доступным способом выделяю фон. Чаще всего пользуюсь "волшебной палочкой" - magic wand tool. Но с трудными прическами, типа выбранной в качестве примера фотографии девочки, лучше справляется "выделение по цвету" - Color Range (Рис.1).

Затем преобразую background в слой (двойной щелчок мыши по background) и инвертирую выделение (Рис. 2).

После этого создаю маску (кнопка Add layer mask на панели слоев или соответствующая команда в меню Layer). Захожу в маску и размываю ее Gaussian Blur (Рис. 3).

Накладываю получившийся слой с маской на новый фон. Команда Color Range, в отличие от других вариантов выделения, может захватывать лишнее и фон проступает там, где его быть не должно - см. глаза, щека, отделка футболки (Рис. 4).

Это все убираю, подтирая маску ластиком достаточно большого диаметра (Рис. 5).

Получился вполне приемлемый вариант, но волосы слегка "поедены". Для улучшения обрезки волос создаю дубликат слоя. Для нижнего из слоев включаю режим умножения и подтираю маску ластиком, чтобы она уже не подрезала волосы (с разумным запасом) - (рис. 6).

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

И вроде бы все. Вот результат обрезки с одним и с двумя слоями (Рис. 8).

Операции преобразования фона в слой, создание маски и ее размытие у меня записаны в Action. Весь процесс замены фона занимает 1-3 минуты.
В рассматриваемом примере перестановка шла на светлый фон. Если же фон темный, то вместо режима умножения (Multiply mode) нужно применять Linear Light mode или Hard light mode. Для того, чтобы волосы были проработаны более четко, к нижнему слою можно применить достаточно сильное нерезкое маскирование (Unsharp Mask filter)

Рассмотренный способ, естественно, не является единственным. Для выделения иногда можно использовать Magic Lasso или Pen Tool. Для подчистки волос можно пользоваться Background Eraser, а для отделения объекта от фона - командой Extract. Но путь создания масок мне кажется более гибким. К тому же, качество обрезки зависит только от числа этапов обработки. Вам гарантировано не придется возвращаться к самому началу и искать более приемлемый способ, если конечный результат вас не удовлетворил. Ко всем фото применяется единый алгоритм, но в более простых случаях он для экономии времени не доводится до конца. Такой подход очень важен при поточной обработке.