Растровые изображения и вектор
Векторный графический редактор Inkscape идеально подходит для ручной векторизации в режиме рисования поверх растра. Имеется в нём и встроенный инструмент для автоматической векторизации, основанный на утилите Potrace Питера Селинджера (potrace.sourceforge.net). Возможно в будущем будут добавлены и другие программы, но даже на данном этапе имеющихся возможностей вполне достаточно.
Обратите внимание на то, что целью векторизации (перевода растра в контуры) не является создание точной копии исходного изображения или готового рисунка. Ни одному существующему алгоритму это пока не под силу. Все, что может сделать алгоритм векторизации - это превратить растровое изображение, например, фотографию в набор контуров, которые вы можете использовать в своих работах.
Как правило, чем темнее пиксели в изображениях, тем больше работы для алгоритма векторизации. Чем больше работает векторизатор, тем больше ему потребуется ресурсов компьютера и тем дольше ему придется работать. Поэтому рекомендуется начать с более светлых версий изображения, постепенно затемняя их до получения оптимального уровня детализации контура и пропорций.
Для того чтобы сделать из растрового изображения векторные контуры загрузите или импортируйте растровое изображение.
Наиболее естественным и простым способом добавления изображений на холст является перетаскивание мышкой файлов из файлового менеджера или окна браузера прямо в рабочую область Inkscape. Так же просто работает и вставка графических данных из буфера обмена (Ctrl+V или «Правка ►Вставить» из основного меню, «Вставить» из контекстного меню).
Предварительно поместить данные в буфер обмена можно из любого растрового редактора или того же браузера, если в нём предусмотрена такая возможность.
Имеется в Inkscape и специально предусмотренный механизм для импорта файлов. Достаточно вызывать диалог импорта из меню «Файл ►Импортировать…» (или Ctrl+I) и выбрать нужное изображение.
Добавленные на холст растровые изображения являются такими же графическими объектами как и все остальные. Их можно перемещать, масштабировать, вращать, в общем, применять к ним любые трансформации, накладывать маски и фильтры, составлять из них текстуры.
Выберите объект растровое изображение, которые будете переводить в контуры и в главном меню выберите команду Контуры ►Векторизовать растр..., либо используйте комбинацию клавиш Shift+Alt+B (рис. 28.1).
Рис. 28.1
Режимы разбиты на две группы. Первая — одиночное сканирование. В ней находятся режимы, формирующие один контур, который соответствует исходному растровому изображению. Вторая — множественное сканирование. Здесь создаются группы контуров (цветовые градации). Три параметра, влияющие на результирующий контур, по каким-то причинам вынесены на отдельную вкладку, остальные же перемешаны с режимами. Часть параметров влияет лишь на ту группу режимов, в которой они расположены, но некоторые применимы и к определённым режимам из другой группы. Например, инвертирование изображения может применяться в режиме «Шаги яркости», но не применяется в остальных режимах множественного сканирования.
В группе «Одиночное сканирование» вы увидите три фильтра. Первый из них "сокращение яркости". Этот фильтр просто использует сумму красного, зелёного и синего компонентов пикселя (иначе говоря, оттенки серого) в качестве индикатора, и решает, воспринимать ли его, как чёрный или как белый. Значение порога яркости может быть задано в диапазоне от 0,0 (чёрный) до 1,0 (белый). Чем выше значение, тем меньше пикселей будет воспринято как "белые" и тем больше черного станет на изображении (рис. 28.2).
Исходное изображение Исходное изображение |
Значение порога яркости = 0,400 Значение порога яркости = 0,400 |
Значение порога яркости = 0,200 Значение порога яркости = 0,200 |
Рис. 28.2
Вариант второй - "Определение краев". Этот фильтр использует алгоритм определения краев, придуманный Дж. Канни (J. Canny). Этот алгоритм векторизации представляет собой способ быстрого поиска изоклин (изоклина - линия, на всём протяжении которой наклон, определяемый уравнением, сохраняет постоянное значение) и подобных контрастов. Этот фильтр создает картинку, меньше похожую на оригинал, чем результат первого фильтра, но предоставляет информацию о кривых, которая при использовании других фильтров была бы проигнорирована. Значение порога здесь (от 0,0 до 1,0) регулирует порог яркости между смежными пикселями, в зависимости от которого смежные пиксели будут или не будут становиться частью контрастного края и, соответственно, попадать в контур. Фактически, этот параметр определяет темноту или толщину края (рис. 28.3).
Исходное изображение Исходное изображение |
Значение порога = 0,650 Значение порога = 0,650 |
Значение порога = 0,200 Значение порога = 0,200 |
Рис. 28.3
Третий вариант "Квантование цветов". Результатом работы этого фильтра является изображение, которое заметно отличается от результата работы двух предыдущих фильтров, но при этом тоже может оказаться полезным. Вместо того чтобы показывать изоклины яркости или контраста, этот фильтр ищет края, где меняется цвет, даже если смежные пиксели имеют одинаковую яркость и контраст. Параметр этого фильтра (количество цветов) определяет количество цветов на выходе, как если бы растровое изображение было цветным. После этого фильтр определяет чёрный это пиксель или белый в зависимости от чётности индекса цвета (рис. 28.4).
Исходное изображение Исходное изображение |
количество цветов = 8. количество цветов = 8. |
количество цветов = 4. количество цветов = 4. |
Рис. 28.4
Обратите внимание, что результат работы векторизатора хоть и расположен поверх исходного растрового рисунка, но представляет собой отдельный объект контуров. Этот объект сразу является выделенным и можно переместить его мышкой или стрелочками клавиатуры, что бы убедиться в его самостоятельности. Узлы объекта можно редактировать с помощью инструмента управления узлами. Стоит попробовать все три фильтра и внимательно рассмотреть различия в результатах обработки разных изображений. Все изображения индивидуальны. Обязательно найдётся такой рисунок, на котором один фильтр работает лучше, а другие хуже.
Результат применения вариантов множественного сканирования «цвет» и «градации серого» представлен на рис. 28.5.
Исходное изображение Исходное изображение |
«Цвет» «Цвет» |
«Градации серого» «Градации серого» |
Рис. 28.5
После векторизации рекомендуется воспользоваться функцией упрощения контуров, чтобы уменьшить количество узлов. Эта функция находится в главном меню Контуры ►Упростить или комбинация клавиш Ctrl+L. C уменьшением узлов результат работы после векторизации более лёгкий для редактирования (рис. 28.6).
Исходное изображение Исходное изображение |
«Цвет» «Цвет» |
Упрощение контуров Упрощение контуров |
Рис. 28.6
Ручная векторизация
В тех случаях, когда необходимо оконтурить растровое изображение плохого качества и при этом к векторной форме предъявляются повышенные требования, нас вряд ли устроит результат автоматической векторизации.
Рис. 28.7 Рис. 28.8
Ведь даже такой простой зонтик, как этот (рис. 28.7) при автоматической трассировке, в лучшем случае, выглядит так (рис. 28.8):
Можно упрощать контуры (Контур ►Упростить, Ctrl+L), но тогда возникают искажения. Можно вручную удалять лишние узлы и выпрямлять неровности, но какой тогда смысл в автоматике? Единственно верное решение в данном случае — обвести контур руками с использованием минимального количества узлов. Выбираем инструмент для рисования кривых Безье и прямых линий, строим ломаную с узлами в точках излома и перегиба, выгибаем отрезки инструментом редактирования контура так, чтоб ложились точно по фигуре (рис. 28.9).
Хотя, по возможности, лучше составлять фигуры из графических примитивов: эллипсов, прямоугольников и т.д. Например, купол нашего зонтика можно собрать из четырёх эллипсов, а ручку — выгнув одну кривую с толстой обводкой и закруглёнными концами (рис. 28.10).
Рис. 28.9 Рис. 28.9 |
Рис. 28.10 Рис. 28.10 |
Рис. 28.11 Рис. 28.11 |
Растеризация
Процесс, обратный векторизации — растеризация или растрирование. Он осуществляется каждый раз, когда векторное изображение или текст нужно вывести на экран. Осуществляется он и при экспорте вектора в графический файл растрового формата. Диалог экспорта вызывается из меню Файл ►Экспортировать в растр… (Shift+Ctrl+E) (рис. 28.12)
Рис. 28.12
Это достаточно гибкий инструмент, он позволяет указать как произвольную область экспорта, так и область, ограниченную страницей документа, выделением или всеми графическими объектами. Можно указать размер или разрешение итогового изображения (значение по умолчанию берётся из настроек). Если выбрано несколько объектов, их можно по отдельности пакетно экспортировать. Кроме того, есть возможность экспортировать не всю видимую в границах выделения область, а только те объекты, которые выделены.
Если при сохранении документа выбрать растровый формат, также будет произведена растеризация. Но сохранена в этом случае будет лишь область, ограниченная страницей, с разрешением, заданным в настройках программы.
В меню Правка ►Сделать растровую копию (Alt+B) есть ещё один инструмент растеризации. Он, по сути, создаёт растровый клон выделенного объекта (рис. 28.13). Начиная с версии Inkscape 0.48 это будет встроенное изображение. В более ранних — связанный файл.
Векторный рисунок |
Растровая копия |
Рис. 28.13