Алексей Корельский aka snake
2005.02.25
Активизировав в последнее время свои попытки научиться рисовать я столкнулся с проблемой сканирования и обработки набросков и рисунков. Должен заметить, что в основном такие эскизы являлись лишь промежуточным результатом, а дальнейшая работа с ними предполагает комьютерную обработку и прорисовку. Т.е. мне потребовался быстрый и эффективный, в смысле отношения затраченных усилий к полученному результату, способ обработки. В ходе экспериментов я выработал некоторые методы решения этих задач.
Собственно, почему я решил оформить результаты своих изысканий? Дело в том, что посещая различные артсайты, особенно ориентированные на новичков и любителей, я обнаружил, что аналогичные проблемы стоят не только передо мной, это было очевидно, и так же то, что зачастую их решают крайне не рационально, а то и вовсе не решают никак... Так, например, на форуме одного такого сайта, я высказал мысль о полезности просветить новичков насчет простых методов обработки сканов, на что мне ответил, некто Dilandu, неплохой, кстати, художник:
"...мусор со сканов убирается ручками и терпением. Если текстура бумаги не важна, то просто вытирается ластиком в режиме "кисть", а если важна, то штампом...."
Т.е. фактически предлагаеться затратить усилия сравнимые с перерисовкой рисунка! Если в отношении законченных произведений, переводимых с бумаги в электронную форму, это может иметь смысл, да и то не всегда, то для набросков и всяких промежуточных эскизов такой подход представляеться явно избыточным.
А между тем, покрайней мере частные решения проблемы, имеються. Далее, несколько конкретных примеров:
Это необработанный и уменьшенный в три раза рисунок. Сканирование происходило в режиме "шкала серого" и с разрешением 800 dpi. Как видите, сканер великолепно справился с задачей и очень четко вопроизвел и чернильные штрихи, и фактуру бумаги. Вот кусочек изображения в натуральную величину:
А это кусок фона, также в натуральном размере:
Однако, в большинстве случаев фактура бумаги не нужнее пятого колеса и избавляться от нее необходимо. Выше нам предлагали это делать при помощи ластика, но мы поступим иначе. Давайте откроем наш гимп и взглянем на гистограмму первого рисунка:
А теперь посмотрим гистограмму отдельно фона:
Вы видите тоже, что и я? За пик в области светов ответственен именно фон, в то время как полезное изображение сосредаточенно в тенях. Для пущей наглядности наложим друг на друга две гистограммы:
Теперь совершенно очевидно, что сместив точку белого (крайний правый движек) на первой гистограмме мы заставим все точки фона стать белыми:
Здесь я также наложил гистограмму фона. И вот что мы получим в итоге всех манипуляций:
Для дополнительной выразительности я еще немного сместил серую точку, в область теней.
Резюмируя можно сказать, что в данном случае применяеться метод обработки состоящий из одного пункта: сместить точку белого так, что бы весь фоновой шум ушел бы в света. Делаеться это инструментом "уровни", который, кроме всего прочего, позволяеть визуально контролировать результат манипуляций прямо в окне с изображением. Но и это еще не все -- описанные манипуляции можно производить еще на этапе сканирования, благо XSane для этого прекрасно приспособлен, что демонстрируеться следующим скриншетом:
Прим: так расположил окна и обесцветил изображение я специально в целях уменьшения размера картинки и "веса" файла.
Недостатком такого метода являеться то, что применять его можно только на тех изображениях, где фон и полезный рисунок резко отличаються по яркости, как в приведенном примере. Бумага, может быть не обязательно чисто белой вполне допустимо наличие бледной клетки или какого-либо другого узора, главное при этом четкий и насыщенный контур сделанный ручкой, тушью или карандашем. Для рисунков содержащих тонкую штриховку данный способ применим не всегда.
Случай с таким рисунком можно откаментировать так: "каждый сам себе злобный буратин!" Спрашиваеться -- зачем создавать себе лишние трудности и использовать для рисования явно неподходящие для этого материалы? Впрочем, ситуации в жизни бывают всякие и из такого рисунка можно что-нибудь выжать. Скажу сразу без потерь здесь не обойдется. Весь вопрос в том, какой уровень потерь можно счесть приемлемым. Ответ, разумеется, зависит от ваших дальнейших видов на данный эскиз и желания (не желания) тратить на него время.
Поскольку, средние яркости клеточек фона и линий рисунка хоть и не слишком сильно, но все же отличаються, возможно применить метод описанный в предыдущем примере. Вот, примерно, что из этого может получиться:
Воспользовавшись советом Dilandu я очистил исходный рисунок в ручную один раз с сохранением текстуры бумаги ("залепил" клеточки "штампом") второй раз - без (просто "ластиком" потер фон):
В первом случае у меня ушло 10 минут, во втором -- 15. Что, по моему мнению, на такой несложный рисунок непозволительно долго. Ктому же, даже даже при пожатии в jpeg и уменьшении заметно невысокое качество обработки "ластиком", что бы его повысить придется затратить гораздо больше усилий: чаще менять кисти, аккуратнее обрабатывать края и т.п. Кроме того трудоемкость подобных "ручных" методов будет очень быстро возрастать при усложнении рисунка и увеличении колличества линий в нем.
Обратите внимание, что обсуждаемый здесь рисунок цветной следовательно отношение сигнал/шум будет неодинаковым в разных цветовых каналах. Этот факт прекрасно иллюстрируеться разборкой рисунка, например на RGB (Изображение -> Режим -> Разобрать -> RGB):
Обратите внимание на синюю компоненту, которая практически лишена клеточек! Правда, и яркость изображения там наименьшая.
Разобрать изображение можно не только на RGB. Слева канал "яркость" (разобрал как HSV), справа L-канал (LAB):
Как видите на этих изображениях яркость паразитных линий фона отличаеться от яркости линий рисунка, следовательно, фон, хотя бы частично, можно подавить при помощи "уровней". Слева на право, "L", "Яркость", "Синий":
Теперь, подклеиваем "Яркость", "Синий" к "L" в качестве слоев, и смешиваем все слои в режиме "Умножение":
Что к кому клеить я выбрал произвольно -- смысл от этого не меняеться, так же вы при желании можете поэксперементировать с методом смешивания слоев.
В полученом, после сведения, изображении все еще присутствует небольшой мусор, который, уже без особых усилий, можно удалить и в ручную:
Несмотря на кажущуюся громоздкость, метод достаточно прост и позволяет без особых усилий быстро обрабатывать изображения с любым количеством деталей. Причем, ручная доводка если и требуеться, то только на самом последнем этапе и являеться на порядок более простой, чем полная ручная обработка исходного изображения.
Что бы покончить с этим пунктом -- последний штрих. Мы получили ч/б изображение. На мой взгляд этого вполне достаточно, но если по каким-то причинам у вас есть желание получить на выходе рисунок в первоначальных цветах, то можно сделать следующий финт ушами. В исходное изображение вклеиваем белый слой. К этому слою добавляем маску с параметрами "Белый (Абсолютно непрозрачный)" и вклеиваем в качестве маски полученное очищенное ч/б изображение:
Вот, что из этого у меня получилось:
Что опять!? Нет, на этот раз все действительно очень просто -- никаких шаманских плясок с разборкой на каналы не потребуеться. Для каждого канала в отдельности подгоняем уровни (на форме инструмента присутствует специальный переключатель каналов):
И, вуаля! Эх, всегда бы так просто...
Графика в стиле поэтов - "певцов революции"? Возможно, но нас интересует другое, а именно синий канал и его гистограмма:
Ситуация в точности повторяет самый первый случай и поступать необходимо соответственно:
Все это, конечно, хорошо, но главная изюминка метода заключаеться в том, что мы получаем в свои руки способ очищать от клеточек полутоновые рисунки. Кто хоть раз озадачивался такой проблемой понимает насколько это важно. Итак у нас имееться вот такой вот рисунок:
Собственно говоря, это абсолютно то же самое изображение только раскрашенное штриховкой. Если бы вместо красного карандаша применялся бы синий или сканирование бы проходило в режиме оттенков серого, избавление от клеточек превратилось бы в чертовски сложную проблему. А так нас опять выручает разложение на цветовые каналы:
Как видите самым важным каналом для нас оказываеться синий, который содержит почти исключительно полезную информацию, красный же напротив не несет ничего кроме клеточек фона, в зеленом примерно поровну и фона и изображения.
Вывод из этого можно сделать следующий: если вам очень приспичило порисовать, а под рукой ничего нет кроме клечаттого листа -- не осложняйте себе жизнь рисуйте чем угодно, но не синей шариковой ручкой, если есть возможность, используйте зеленую, касную, или даже черную ручку/карандаш (девушки могут воспользоваться губной помадой :) ) так вы избавите себя от большого колличества проблем в дальнейшем.
В заключении с получившимся рисунком можно произвести такую же операцию, что и в примере с лампочкой, и даже лучше. Создайте новое изображение такого же размера, что и полученное после обработки. Залейте фон нужным вам цветом, я не стал оригинальничать -- взял красный. Вклейте новый белый слой и дабавьте к нему в качестве маски обработанный синий канал.
И вот что получиться в итоге:
Конечно, применимость всех этих способов сильно зависит от внешних факторов и желаемого качества результата, но принебрегать ими полностью было бы, на мой взгляд, неразумно.