Автоматическая векторизация
Для автоматической векторизации в комплект поставки CorelDRAW 12 включается отдельная утилита CorelTRACE 12. Эта программа позволяет но исходным изображениям в формате пиксельной графики автоматически строить векторные изображения в формате СМХ, который в семействе графических программ фирмы Corel используется для обмена графической информацией. Для перехода к автоматической векторизации импортированного пиксельного изображения следует выделить его инструментом Pick (Выбор) и выбрать команду Bitmaps › Trace Bitmap (Пиксельное изображение › Трассировать пиксельное изображение).
К сожалению, объем этой книги не позволяет подробно остановиться на приемах работы с программой CorelTRACE 12. Отметим только, что наиболее часто употребляются два режима ее работы: трассировка по контурам и трассировка по осевой линии. На рис. 17.6, а представлены исходное монохромное пиксельное изображение и результаты его автоматической векторизации программой CorelTRACE 12 по контурам (рис. 17.6, б) и по осевой линии (рис. 17.6, б).
Рис. 17.6. Пиксельное изображение и результаты его векторизации
На рисунке к изображениям добавлены увеличивающие линзы с точками обзора, наведенными на один и тот же сучок изображенного дерева. В линзе, наведенной на пиксельное изображение, четко виден эффект искажения растрирования, возникающий при сильном увеличении – становятся заметными отдельные пикселы.
При векторизации по контурам векторизованное изображение составляется из объектов областей с примерно одинаковой окраской – этот цвет становится заливкой объекта. При векторизации штриховых изображений (как на рис. 17.6) такой подход дает неплохие результаты, однако, если в исходном пиксельном изображении присутствует штриховка обширных областей рисунка (что бывает очень часто), число построенных в процессе векторизации объектов становится огромным, что сильно замедляет дальнейшую работу с ним. При векторизации цветных изображений, напечатанных плашечными цветами, этот метод дает хорошие результаты, но он совершенно непригоден для векторизации отсканированных фотографий – даже при небольшом размере пиксельного изображения количество построенных контуров может превышать десятки тысяч.
Чтобы все-таки векторизовать отсканированную цветную фотографию, можно порекомендовать предварительно преобразовать пиксельное изображение с помощью эффекта постеризации (см. выше), что снизит количество построенных контуров (увы, снизив и качество преобразования).
Векторизация по осевой линии выполняется несколько иным способом. Программа векторизации для каждого найденного ею участка пиксельного изображения с одинаковой заливкой пытается за заданное число итераций найти осевую линию. Совокупность таких осевых линий толщиной в один пиксел и составляет результат векторизации. Этот метод практически пригоден только для штриховых изображений – для отсканированных изображений плашечной печати и фотографий (даже монохромных) он дает причудливые, но совершенно неприемлемые результаты.
Даже при относительно удачном результате автоматической векторизации структура построенных объектов, как правило, не дает возможности раскрашивать векторизованное изображение. Поэтому область применения автоматической векторизации, несмотря на кажущуюся привлекательность и эффективность, остается на практике весьма ограниченной.
Несмотря на недостатки автоматической векторизации, ее творческое использование позволяет добиваться интересных эффектов. Рассмотрим только один из них. Представьте, что необходимо изобразить множество (больше сотни) мелких векторных объектов округлой, но неправильной формы, похожих, но не одинаковых, более или менее регулярно, но все-таки неравномерно расположенных на плоскости. Такая задача может возникнуть, например, при изображении града, капель жидкости в струе пульверизатора, пятен ветрянки. Рисовать каждый из объектов вручную и перетаскивать его на свое место – такая тактика потребует слишком много времени и терпения.
Вместо этого можно воспользоваться побочными эффектами, возникающими при преобразовании векторного изображения в пиксельное в режиме имитации (dithering). Последовательность действий должна быть следующей.
- Строится объект, задающий форму области, которая будет заполнена мелкими, случайным образом разбросанными объектами. Он дублируется, его копия уменьшается раза в четыре, отменяется ее обводка и назначается заливка более или менее светлым оттенком серого цвета. Чем светлее оттенок и чем сильнее уменьшается копия, тем реже будут располагаться объекты – точные значения следует подбирать экспериментально.
- Копия преобразуется в штриховое изображение (глубина цвета – 1 бит) с обязательным включением режима имитации и самым низким разрешением (72 dpi). В результате получается скопление черных пикселов, не слишком равномерно разбросанных на белом фоне.
- Габариты полученного пиксельного изображения увеличиваются до совмещения заполненной точками области с исходным объектом. Увеличенное изображение еще раз преобразуют в пиксельное изображение, но на этот раз – в полутоновое монохромное (глубина цвета – 8 бит). Разрешение на этот раз выбирается побольше – минимум 150 dpi. После увеличения внешний вид пиксельного изображения не меняется, но эти операции необходимы для подготовки следующего этапа.
- Полученное монохромное изображение размывается по Гауссу, в результате прямоугольные очертания черных пятен, получившихся из пикселов, превращаются в более или менее округлые и размытые по краям серые пятна. Это изображение с помощью эффекта Edge Detect (Поиск кромок) преобразуется в совокупность замкнутых фигур. Это почти решает задачу, но изображение пока остается пиксельным. Перед заключительным этапом пиксельное изображение еще раз преобразуется в штриховое с тем же разрешением, что использовалось на шаге 3.
- Остается только выбрать команду Bitmaps › Trace Bitmap (Пиксельное изображение › Трассировать пиксельное изображение) и выполнить векторизацию по осевой линии. После выхода из программы CorelTRACE, которая автоматически запускается этой командой, в CorelDRAW будет возвращен результат векторизации в виде группы векторных объектов, размещенной поверх векторизованного пиксельного изображения. Пиксельное изображение больше не потребуется, его можно удалить, а для совокупности полученных объектов остается только назначить заливку и контурные линии.