The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Каталог документации / Раздел "Операционные системы, Разное" (Архив | Для печати)

Обработка отсканированных рисунков при помощи Гимпа

Алексей Корельский aka snake
2005.02.25


Оригинал: posix.ru
  1. Вступление
  2. Рисунок шариковой ручкой на листе белой бумаги.
  3. Рисунок шариковой ручкой на листе в клетку. #1
  4. Рисунок шариковой ручкой на листе в клетку. #2
  5. Рисунок цветным карандашом на листе в клетку (разделение по цвету)

Вступление

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

Собственно, почему я решил оформить результаты своих изысканий? Дело в том, что посещая различные артсайты, особенно ориентированные на новичков и любителей, я обнаружил, что аналогичные проблемы стоят не только передо мной, это было очевидно, и так же то, что зачастую их решают крайне не рационально, а то и вовсе не решают никак... Так, например, на форуме одного такого сайта, я высказал мысль о полезности просветить новичков насчет простых методов обработки сканов, на что мне ответил, некто Dilandu, неплохой, кстати, художник:

"...мусор со сканов убирается ручками и терпением. Если текстура бумаги не важна, то просто вытирается ластиком в режиме "кисть", а если важна, то штампом...."

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

А между тем, покрайней мере частные решения проблемы, имеються. Далее, несколько конкретных примеров:

Рисунок шариковой ручкой на листе белой бумаги.

Это необработанный и уменьшенный в три раза рисунок. Сканирование происходило в режиме "шкала серого" и с разрешением 800 dpi. Как видите, сканер великолепно справился с задачей и очень четко вопроизвел и чернильные штрихи, и фактуру бумаги. Вот кусочек изображения в натуральную величину:

А это кусок фона, также в натуральном размере:

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

А теперь посмотрим гистограмму отдельно фона:

Вы видите тоже, что и я? За пик в области светов ответственен именно фон, в то время как полезное изображение сосредаточенно в тенях. Для пущей наглядности наложим друг на друга две гистограммы:

Теперь совершенно очевидно, что сместив точку белого (крайний правый движек) на первой гистограмме мы заставим все точки фона стать белыми:

Здесь я также наложил гистограмму фона. И вот что мы получим в итоге всех манипуляций:

Для дополнительной выразительности я еще немного сместил серую точку, в область теней.

Резюмируя можно сказать, что в данном случае применяеться метод обработки состоящий из одного пункта: сместить точку белого так, что бы весь фоновой шум ушел бы в света. Делаеться это инструментом "уровни", который, кроме всего прочего, позволяеть визуально контролировать результат манипуляций прямо в окне с изображением. Но и это еще не все -- описанные манипуляции можно производить еще на этапе сканирования, благо XSane для этого прекрасно приспособлен, что демонстрируеться следующим скриншетом:

Прим: так расположил окна и обесцветил изображение я специально в целях уменьшения размера картинки и "веса" файла.

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

Рисунок шариковой ручкой на листе в клетку.

Случай с таким рисунком можно откаментировать так: "каждый сам себе злобный буратин!" Спрашиваеться -- зачем создавать себе лишние трудности и использовать для рисования явно неподходящие для этого материалы? Впрочем, ситуации в жизни бывают всякие и из такого рисунка можно что-нибудь выжать. Скажу сразу без потерь здесь не обойдется. Весь вопрос в том, какой уровень потерь можно счесть приемлемым. Ответ, разумеется, зависит от ваших дальнейших видов на данный эскиз и желания (не желания) тратить на него время.

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

Воспользовавшись советом Dilandu я очистил исходный рисунок в ручную один раз с сохранением текстуры бумаги ("залепил" клеточки "штампом") второй раз - без (просто "ластиком" потер фон):

В первом случае у меня ушло 10 минут, во втором -- 15. Что, по моему мнению, на такой несложный рисунок непозволительно долго. Ктому же, даже даже при пожатии в jpeg и уменьшении заметно невысокое качество обработки "ластиком", что бы его повысить придется затратить гораздо больше усилий: чаще менять кисти, аккуратнее обрабатывать края и т.п. Кроме того трудоемкость подобных "ручных" методов будет очень быстро возрастать при усложнении рисунка и увеличении колличества линий в нем.

Обратите внимание, что обсуждаемый здесь рисунок цветной следовательно отношение сигнал/шум будет неодинаковым в разных цветовых каналах. Этот факт прекрасно иллюстрируеться разборкой рисунка, например на RGB (Изображение -> Режим -> Разобрать -> RGB):

Обратите внимание на синюю компоненту, которая практически лишена клеточек! Правда, и яркость изображения там наименьшая.

Разобрать изображение можно не только на RGB. Слева канал "яркость" (разобрал как HSV), справа L-канал (LAB):

Как видите на этих изображениях яркость паразитных линий фона отличаеться от яркости линий рисунка, следовательно, фон, хотя бы частично, можно подавить при помощи "уровней". Слева на право, "L", "Яркость", "Синий":

Теперь, подклеиваем "Яркость", "Синий" к "L" в качестве слоев, и смешиваем все слои в режиме "Умножение":

Что к кому клеить я выбрал произвольно -- смысл от этого не меняеться, так же вы при желании можете поэксперементировать с методом смешивания слоев.

В полученом, после сведения, изображении все еще присутствует небольшой мусор, который, уже без особых усилий, можно удалить и в ручную:

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

Что бы покончить с этим пунктом -- последний штрих. Мы получили ч/б изображение. На мой взгляд этого вполне достаточно, но если по каким-то причинам у вас есть желание получить на выходе рисунок в первоначальных цветах, то можно сделать следующий финт ушами. В исходное изображение вклеиваем белый слой. К этому слою добавляем маску с параметрами "Белый (Абсолютно непрозрачный)" и вклеиваем в качестве маски полученное очищенное ч/б изображение:

Вот, что из этого у меня получилось:

Рисунок шариковой ручкой на листе в клетку. #2

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



И, вуаля! Эх, всегда бы так просто...

Рисунок цветным карандашем на листе в клетку
(разделение по цвету)

Графика в стиле поэтов - "певцов революции"? Возможно, но нас интересует другое, а именно синий канал и его гистограмма:


Ситуация в точности повторяет самый первый случай и поступать необходимо соответственно:

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

Собственно говоря, это абсолютно то же самое изображение только раскрашенное штриховкой. Если бы вместо красного карандаша применялся бы синий или сканирование бы проходило в режиме оттенков серого, избавление от клеточек превратилось бы в чертовски сложную проблему. А так нас опять выручает разложение на цветовые каналы:

Как видите самым важным каналом для нас оказываеться синий, который содержит почти исключительно полезную информацию, красный же напротив не несет ничего кроме клеточек фона, в зеленом примерно поровну и фона и изображения.

Вывод из этого можно сделать следующий: если вам очень приспичило порисовать, а под рукой ничего нет кроме клечаттого листа -- не осложняйте себе жизнь рисуйте чем угодно, но не синей шариковой ручкой, если есть возможность, используйте зеленую, касную, или даже черную ручку/карандаш (девушки могут воспользоваться губной помадой :) ) так вы избавите себя от большого колличества проблем в дальнейшем.

В заключении с получившимся рисунком можно произвести такую же операцию, что и в примере с лампочкой, и даже лучше. Создайте новое изображение такого же размера, что и полученное после обработки. Залейте фон нужным вам цветом, я не стал оригинальничать -- взял красный. Вклейте новый белый слой и дабавьте к нему в качестве маски обработанный синий канал.

И вот что получиться в итоге:

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


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor