Содержание

Методы векторизации растровых изображений

(также: Vectorizing/Tracing images)

Подходит для векторизации логотипов, карт, схем, простых рисунков с малым количеством цветов. Векторные изображения могут использоваться позже в программах редактирования векторных изображений, таких как CorelDRAW, Adobe Illustrator, Macromedia FreeHand и их некоммерческих аналогов, например, Inkscape, Sodipodi, Skencil.

Этапы трассировки:

Обработка растрового изображения с помощью фильтров

Удаление «шумов» в виде мелких разнородных областей, которые только мешают качественной трассировке. Можно применить в Фотошопе фильтр Cutout. Этот фильтр сокращает количество цветов в изображении и выделяет контур.

Перевод изображения в одноцветное (Ч/Б, 1-bit).

Опционально. Этот пункт обязателен только для перевода изображений с градациями серых оттенков (Grayscale). Если имеется логотип плохого качества, то можно попробовать улучшить его (предварительно увеличив размеры в 2 и более раза) с помощью размывания Gaussian Blur и затем с Treshold перевести его в Ч/Б вариант.

Собственно, сама трассировка растрового изображения.

Есть множество программ, выполняющих трассировку (векторизацию) изображений. Я пробовал Corel Trace, Algolab Raster to Vector Conversion Toolkit, Autotrace, Potrace. Последние 2 вполне могут заменить Corel Trace как свободные программы. Но если имеется всё же полный пакет программ Corel Draw, то лучше им и воспользоваться.

Все преобразования в Corel Trace я производил с помощью Advanced Outline.

Для изображений с большим количеством цветов желательно применить Outline Filter: High (Corel Trace)

Чтобы уменьшить количество узлов выберите где-то 25 % Node reduction (Corel Trace).

Желательно также увеличить минимальный размер (в пикселях) для векторных объектов: Minimum Object Size (Corel Trace) или turdsize (Potrace) до 4-х пикселей и больше в зависимости от изображения.

Примеры

Примером идеального для оконтуривания изображения является двухцветное, обесшумленное изображение, как на рисунке 1.

рисунок 1


Примером неидеального изображения будет

рисунок 2

и его прежде следует хорошенько обработать.

Применим функцию Порог (Threshold) в редакторе GIMP или Photoshop для приведения изображения к чёрно-белому:

Применение порога

И получаем такой результат (обработанный, готовый к векторизации):

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

Примечание: Рекомендуется уменьшать изображения большого размера (> 640×480), т.к. излишняя детальность только вредит. Но при этом следить, чтобы нужные элементы изображения не исчезали.

После векторизации

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

Дополнения и замечания

Векторизация «за один заход» в командной строке

$ jpegtopnm image.jpg > image.pnm
$ potrace --svg image.pnm --output image.svg

Добавив, к примеру, параметр -k 0.6 , можно изменить порог с 0.5 (по-умолчанию) на 0.6. Конечный файл будет в формате SVG.