Векторизация

Аннотация

При помощи Inkscape можно векторизовать растровое изображение, то есть превратить его в SVG-элемент <path>. О том, как работает эта функция программы и рассказывается в настоящем документе.

В настоящее время для векторизации Inkscape использует код программы Potrace Питера Селинджера (potrace.sourceforge.net). В будущем возможно подключение других программ, но уже сейчас Potrace вполне достаточно.

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

Potrace получает на входе чёрно-белые растровые изображения и отдаёт на выходе набор контуров. Существует три входных фильтра для преобразования исходного изображения в понятный для Potrace формат.

Как правило, чем темнее пикселы в изображениях, тем больше работы для Potrace. Чем больше работает векторизатор, тем больше используются ресурсы центрального процессора и тем больше описание контура (элемента <path>). Поэтому рекомендуется начать с более светлых версий изображения, постепенно затемняя их до получения желаемого уровня детализации конечного контура и пропорций.

Для использования векторизатора загрузите или импортируйте изображение, выберите его и используйте функцию «Контуры > Векторизовать растр...», либо комбинацию клавиш Shift+Alt+B.

Вы увидите три фильтра:

Этот фильтр просто использует сумму красного, зелёного и синего (или оттенки серого) компонентов пиксела в качестве индикатора, воспринимать ли его как чёрный или же как белый. Значение порога яркости может быть задано в диапазоне от 0.0 (чёрный) до 1.0 (белый). Чем выше значение, тем меньше пикселов будет воспринято как белые и тем темнее станет изображение.

Этот фильтр использует алгоритм определения краёв, придуманный Дж. Канни (J. Canny) как способ быстрого поиска изоклин и подобных контрастов. Этот фильтр создаёт картинку, меньше похожую на оригинал, чем результат первого фильтра, но предоставляет информацию о кривых, которая при использовании других фильтров была бы проигнорирована. Значение порога здесь (0.0 — 1.0) регулирует порог яркости между смежными пикселами, в зависимости от которого смежные пикселы будут или не будут становиться частью контрастного края и, соответственно, попадать в вывод. Фактически, этот параметр определяет темноту или толщину края.

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

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

После векторизации рекомендуется воспользоваться функцией Контуры > Упростить (Ctrl+L) на полученном контуре, чтобы уменьшить количество узлов. Это делает результат работы Potrace более лёгким для редактирования. Вот пример типичной векторизации изображения Старика с Гитарой:

Обратите внимание на чудовищное количество узлов. После нажатия Ctrl+L результат будет таким:

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