Удаление фона путём общих преобразований

Дмитрий Маштаков
  Прецизионное удаление фона методом локальных воздействий, таких, как «зачерчивание веером» http://proza.ru/2021/09/15/420 или работа  кистью http://proza.ru/2021/10/07/526 хоть и эффективны, но всё же довольно кропотливы. Поэтому очень неплохо иметь возможность удалить фон, воздействуя на рисунок не локально, а делая общие преобразования всей картинки целиком.

  Исходная картинка показана на иллюстрации в левом верхнем углу. А полученный результат – справа-снизу. Модель с пушистым капюшоном отделена от слегка отличающегося от неё окружающего фона и перенесена на фон тёмного леса. Видно, что отдельные пушинки на капюшоне выделены хорошо, и даже кое-где просвечивают. А вот онлайн-сервис http://www.remove.bg/ru с поставленной задачей не справился – капюшон выделен ровным краем, без прорисовки деталей.

  В программе DM_Paint среди кнопок, осуществляющих общие преобразования, имеется кнопка «У». Основная задача этой кнопки – удалять бледный фон, окружающий изображение, делая этот фон совершенно белым.
  В одной из опций - когда активирована рамка «д», а на кнопке активного цвета установлен значок #, эта кнопка не только делает фон белым, но и перекрашивает в выбранный цвет всё остальные пиксели. Так из цветной картинки можно получить чёрно белую маску, силуэтно выделяющую пиксели тёмного цвета.
  Вы уже поняли, к чему я клоню – сделав неполную маску, показывающую только край капюшона, совсем нетрудно закрасить вручную белым – наружные области, и чёрным – внутренние области, и сделать чёрный силуэт того, что мы должны оставить на рисунке. А дальше, как говорится, дело техники.
  Однако, расскажу обо всём, и по порядку.

  Картинка вовсе не такая маленькая, какой она показана на иллюстрации, она – во весь экран. Мы кликаем углы картинки и нажимаем кнопочку «д». Кнопка становится голубой, и появляется рамка, показывающая выделенную область.
  Чтобы привязать кнопки преобразований к этой области, кликаем одну из кнопок ПРАВОЙ кнопкой мыши. Кнопки окрашиваются в голубой цвет. Теперь и наша кнопка «У» к созданию двуцветного рисунка готова.
  Однако сразу применять эту кнопку мы не будем. Вы видите, край капюшона у нас светлый, а фон за ним – чуть темнее. Поэтому капюшон станет белым, а фон чёрным. А нам нужно наоборот.
  Чтобы решить эту проблему, мы инвертируем картинку в цвете – нажимаем клавиши Ctrl/i и картинка становится синей. Закрепим её на рисунке, кликнув кнопку «закр».

  Теперь надо определиться с порогом преобразования. Капюшон на инвертированном изображении темноватый, а край его совсем тёмный. Я взял с рисунка промежуточный цвет, но достаточно тёмный, и, кликнув по кнопке фона, показал выбранный цвет на кнопке фона.
 
  Теперь можно поставить знак # на кнопке активного цвета и пробовать.
  Тонкая регулировка порога делается столбиком на левой панели около палитры. Подбирая кликами нужный коэффициент, мы можем получить различную прорисовку границы между капюшоном и окружающим его фоном. Так, как это показано на иллюстрации.
  Графика после преобразования является незакреплённой, поэтому, в случае неудачи её можно счистить кнопкой «cls» и возвратиться к синему рисунку.
  На иллюстрации мы видим, что после преобразования с коэффициентом k=0.13 край капюшона прекрасно прорисован чёрным цветом, за исключением самой нижней, левой его части. Для нашего преобразования тут не хватило черноты и надо бы уровень появления черноты в этом месте поднять.

  Поднимаем уровень черноты, установив k=0.21. Теперь мы видим, что проблемное место внизу-снизу прорисовано хорошо, однако усилилась чернота на остальной части капюшона, и подробности там пропали.
  И что же нам делать?

  Делаем просто – записываем результат с k=0.21 на поле_2, а поле рисунка очищаем и делаем на нём преобразование с k=0.13. Устанавливаем «розовый» ластик и, работая им в проблемной части, локально переносим изображение с поля_2 на наш силуэт, вполне хороший во всех остальных частях.

  Выключаем розовый ластик, берём чёрный цвет и закрашиваем силуэт изнутри. Берём белый цвет, и закрашиваем чёрные места снаружи силуэта. Получаем результат, показанный на иллюстрации справа вверху. Переносим этот результат на поле_2, сохраняя его на этом поле.
  Теперь считываем из файла основной, исходный рисунок и набрасываем на него канву. Что такое «канва» и как с ней работать, написано здесь http://proza.ru/2020/05/21/586 но нам собственно канва и не нужна, поэтому мы тут же её удаляем с помощью кнопки «cls».
  Мы хотим воспользоваться «буфером канвы».
  В буфер канвы можно изображение записывать, можно эту запись и считывать – просто считывать, считывать «на прозрачном фоне», считывать в полупрозрачном виде и «считывать на клей».
 
  Вот эта последняя опция нам и нужна. Мы нажимаем клавишу «k» на клавиатуре ноутбука и записываем рисунок в буфер канвы. Возвращаем чёрный силуэт с поля_2 и устанавливаем чёрный цвет фона. А на кнопке активного цвета устанавливаем знак # - это и есть указание «считывать на клей».
  Нажимаем клавишу «L» на нижнем регистре и получаем результат – изображение нашей модели «приклеилось» к чёрным пикселям силуэта, а на белом фоне вокруг никакого изображения не появилось.

  Наша работа близится к завершению. Убираем знак # с кнопки активного цвета и устанавливаем белый цвет на кнопке фона – в дальнейшем, при считывании из буфера канвы белый цвет, считаясь прозрачным, считываться не будет.
  Нажав кнопку «k», запоминаем в буфере канвы изображение на прозрачном фоне. Загружаем на рисунок картинку тёмного леса и, нажав клавишу «L» на нижнем регистре, накладываем поверх тёмного леса изображение модели с пушистым капюшоном. Работа закончена.
__________
27.10.2021