stringtranslate.com

Трассировка изображений

В компьютерной графике трассировка изображений , преобразование растра в вектор или растровая векторизация — это преобразование растровой графики в векторную графику .

Фон

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

Изображение не имеет никакой структуры: это просто набор отметок на бумаге, зерен на пленке или пикселей на растровом изображении . Хотя такое изображение полезно, оно имеет некоторые ограничения. Если изображение достаточно увеличено, появляются его артефакты. Становятся очевидными полутоновые точки, зерна пленки и пиксели. Изображения с острыми краями становятся нечеткими или неровными. См., например, пикселизацию . В идеале векторное изображение не имеет такой проблемы. Края и заполненные области представлены в виде математических кривых или градиентов, и их можно увеличивать произвольно (хотя, конечно, конечное изображение также должно быть растрировано для рендеринга, и его качество зависит от качества алгоритма растеризации для данных входных данных). .

Задача векторизации — преобразовать двумерное изображение в двумерное векторное представление изображения. Это не изучение изображения и попытка распознать или извлечь трехмерную модель, которая может быть изображена; т.е. это не система видения . Для большинства приложений векторизация также не предполагает оптического распознавания символов ; символы рассматриваются как линии, кривые или заполненные объекты, не придавая им никакого значения. При векторизации форма персонажа сохраняется, поэтому остаются художественные украшения.

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

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

Фотографии с непрерывным тоном (например, живые портреты) не являются хорошими кандидатами для векторизации.

Входными данными для векторизации является изображение, но изображение может иметь множество форм, например фотографию, рисунок на бумаге или один из нескольких форматов растровых файлов . Программы, выполняющие преобразование растра в вектор, могут принимать растровые форматы, такие как TIFF , BMP и PNG .

На выходе получается файл векторного формата . Распространенными векторными форматами являются SVG , DXF , EPS , EMF и AI .

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

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

Процесс

Оригинальный PNG-файл (16 КБ)
Ручная конвертация в SVG (49 КБ)

Векторизация начинается с изображения.

Руководство

Изображение можно векторизовать вручную. Человек мог посмотреть на изображение, провести некоторые измерения, а затем вручную записать выходной файл. Так было с векторизацией технической иллюстрации нейтрино. На иллюстрации несколько геометрических фигур и много текста; конвертировать фигуры было относительно легко, а векторный формат SVG позволяет легко вводить текст (даже нижние и верхние индексы).

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

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

Как только появится машиночитаемое растровое изображение, его можно импортировать в программу графического редактирования (например, Adobe Illustrator , CorelDRAW или Inkscape ). Затем человек может вручную отслеживать элементы изображения, используя возможности редактирования программы. Кривые исходного изображения можно аппроксимировать линиями, дугами и кривыми Безье. Программа иллюстраций позволяет регулировать шлицевые узлы для плотного прилегания. Ручная векторизация возможна, но это может быть утомительно.

Хотя программы для графического рисования существуют уже давно, художникам могут показаться неудобными средства рисования от руки, даже если используется планшет для рисования. Вместо использования программы Пеппер рекомендует сделать первоначальный набросок на бумаге. Вместо того, чтобы сканировать эскиз и обводить его от руки на компьютере, Пеппер утверждает: «Те, кто владеет графическим планшетом и стилусом, могут внести следующие изменения непосредственно в CorelDRAW, используя отсканированный эскиз в качестве подложки и рисуя поверх него. Я предпочитаю пользоваться пером, тушью и световым столом»; большая часть окончательного изображения была нарисована вручную чернилами. Позже изображение, нарисованное линией, было отсканировано с разрешением 600 точек на дюйм, очищено в программе рисования, а затем автоматически прорисовано с помощью программы. [1] После того, как черно-белое изображение оказалось в графической программе, к нему были добавлены некоторые другие элементы, и фигура была раскрашена.

Точно так же Плох воссоздал дизайн по цифровой фотографии. Был импортирован JPEG, и некоторые «базовые формы» были нарисованы вручную и раскрашены в программе графического рисования; более сложные формы обрабатывались по-другому. Плох использовал растровый редактор, чтобы удалить фон и обрезать более сложные компоненты изображения. Затем он распечатал изображение и обвел его вручную на кальке, чтобы получить чистый черно-белый линейный рисунок. Этот рисунок был отсканирован, а затем векторизован с помощью программы. [2]

Автоматический

Некоторые программы автоматизируют процесс векторизации. Примерами программ являются Adobe Streamline (снято с производства), Corel PowerTRACE и Potrace . Некоторые из этих программ имеют интерфейс командной строки, а другие являются интерактивными, что позволяет пользователю настраивать параметры преобразования и просматривать результат. Adobe Streamline — это не только интерактивная программа, но также позволяющая пользователю вручную редактировать входное растровое изображение и выходные кривые. Доступ к PowerTRACE Corel осуществляется через CorelDRAW; CorelDRAW можно использовать для изменения входного растрового изображения и редактирования выходных кривых. Adobe Illustrator имеет возможность отслеживать отдельные кривые. [3]

Автоматизированные программы могут давать неоднозначные результаты. Программа (PowerTRACE) использовалась для преобразования карты PNG в SVG. Программа хорошо справилась с границами карты (самая утомительная задача при трассировке) и в настройках выпал весь текст (мелкие объекты). Текст был вставлен заново вручную.

Карта в формате PNG (13 КБ)
Карта после автоматического преобразования и ретуширования, чтобы повторно добавить метки и настроить цвета (18 КБ)

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

Отсканированные изображения часто содержат много шума. Для очистки растрового изображения может потребоваться много работы. Сотрите случайные следы и заполните линии и области.

Совет Corel: положите изображение на светлый стол, накройте его пергаментом ( калькой ), а затем вручную обведите нужные контуры. Затем отсканируйте пергамент и используйте для этого сканирования программу автоматического преобразования растра в вектор.

Параметры

Хотя эти линии могут выглядеть цельными, они далеки от совершенства. Линии нарисованы на пергаменте перьевой ручкой, гелевой ручкой 0,7 мм и карандашом HB 0,5 мм. Изображения были отсканированы с разрешением 600 пикселей на дюйм с использованием 24-битного RGB. Ширина линий в конечном итоге составляет от 10 до 14 пикселей. Цвета чернил неоднородны и имеют зеркальные отражения , из-за которых светлые пиксели попадают в линии. Карандашные линии также имеют внутренние дефекты из-за шероховатости (зубчатости) бумаги. Сканирование также имеет некоторые нерезкие артефакты маскировки.

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

Один из вопросов заключается в том, какие формы преобладают. Если изображение заполненной формы, то, скорее всего, оно будет состоять только из вертикальных и горизонтальных линий постоянной ширины. Векторизация программы должна это учитывать. С другой стороны, чертеж САПР может иметь линии под любым углом, могут быть изогнутые линии и может быть несколько весов линий (толстые для объектов и тонкие для размерных линий). Вместо кривых (или в дополнение к ним) изображение может содержать контуры, заполненные тем же цветом. Adobe Streamline позволяет пользователям выбирать комбинацию распознавания линий (горизонтальных и вертикальных линий), распознавания осевой линии или распознавания контуров. [4] Streamline также позволяет выбрасывать небольшие контурные фигуры; идея в том, что такие маленькие формы — это шум. [5] Пользователь может установить уровень шума от 0 до 1000; контур, имеющий меньше пикселей, чем этот параметр, отбрасывается.

Другая проблема — количество цветов в изображении. Даже изображения, созданные в виде черно-белых рисунков, могут иметь множество оттенков серого. Некоторые процедуры рисования линий используют сглаживание; пиксель, полностью покрытый линией, будет черным, а пиксель, покрытый лишь частично, — серым. Если исходное изображение находится на бумаге и отсканировано, результат аналогичен: краевые пиксели будут серыми. Иногда изображения сжимаются (например, изображения JPEG), и при сжатии появляются уровни серого.

Многие программы векторизации группируют пиксели одного цвета в линии, кривые или очерченные фигуры. Если каждый возможный цвет сгруппировать в свой объект, объектов может быть огромное количество. Вместо этого пользователю предлагается выбрать конечное число цветов (обычно менее 256), изображение сокращается до использования такого количества цветов (этот шаг — квантование цвета ), а затем на уменьшенном изображении выполняется векторизация. [6] Для изображений с непрерывными тонами, таких как фотографии, результатом квантования цвета является постеризация . Градиентные заливки также будут постеризованы. [7]

Уменьшить количество цветов в изображении часто помогает гистограмма. В качестве представителей могут быть выбраны наиболее распространенные цвета, а другие цвета сопоставляются с их ближайшими представителями. Если для количества цветов установлено значение два, пользователю может быть предложено выполнить настройки порога и контрастности. [8] Настройка контрастности учитывает значительные изменения цвета пикселей, а не конкретного цвета; следовательно, он может игнорировать постепенные изменения цвета градиентной заливки . После извлечения контура пользователь может вручную повторно ввести градиентную заливку.

Программа векторизации захочет сгруппировать область одного цвета в один объект. Это можно сделать, заставив границу области точно следовать границам пикселей, но в результате граница часто будет состоять из коротких ортогональных линий. В результате преобразования возникнут те же проблемы с пикселизацией, что и у растрового изображения при его увеличении. Вместо этого программе векторизации необходимо аппроксимировать границу области линиями и кривыми, которые точно повторяют границы пикселей, но не являются границами пикселей в точности. Параметр допуска сообщает программе, насколько точно она должна следовать границам пикселей. [9]

Конечным результатом многих программ векторизации являются кривые, состоящие из кубических кривых Безье . Граница области аппроксимируется несколькими сегментами кривой. Чтобы кривая оставалась гладкой, стыки двух кривых ограничиваются таким образом, чтобы касательные совпадали. Одна из проблем — определить, где кривая изгибается настолько резко, что она не должна быть гладкой. [10] Гладкие участки кривой затем аппроксимируются с помощью процедуры аппроксимации кривой Безье. Можно использовать последовательное деление. Такая процедура аппроксимации пытается подогнать кривую к одной кубической кривой; если посадка приемлема, то процедуру прекращают. В противном случае он выбирает какую-то выгодную точку на кривой и разбивает кривую на две части. Затем он подходит к деталям, сохраняя при этом касательную. Если соответствие по-прежнему неприемлемо, кривая разбивается на большее количество частей. [11]

Некоторые векторизаторы представляют собой автономные программы, но многие имеют интерактивные интерфейсы, которые позволяют пользователю настраивать параметры программы и быстро видеть результат. PowerTRACE, например, может отображать исходное изображение и предварительно просматривать преобразованное изображение, чтобы пользователь мог их сравнить; программа также сообщает такую ​​информацию, как количество кривых. [12]

Пример

Справа — иллюстрация, показывающая работу радулы у моллюсков. Верхняя часть в основном представляет собой контурную диаграмму, заполненную шириной в одно перо, но она имеет сетчатую градиентную заливку вдоль нижней части скорлупы и нижней части продукта. В левом верхнем углу корпуса также есть несколько художественных кистей. В нижней части иллюстрации четыре толщины линий и несколько маленьких символов; Цветовая заливка простая, за исключением градиента на зубчатых линиях.

Трассировалось изображение размером 531×879 пикселей; Использовалось 50 цветов. Большинство (если не все) строк были потеряны; они были превращены в черные области, а их эффективная ширина линий различалась. Черный контур вокруг синей еды в верхней части исчез. Градиентные заливки и закрашенные пятна были потеряны из-за квантования/постеризации цвета; некоторые пятна кисти исчезли. Некоторые буквы пережили векторизацию с искажением, но большинство букв было отброшено. Потеря букв не является большой проблемой; редактирование после преобразования может потребовать удалить аннотацию и заменить ее текстом, а не кривыми. Тонкие линии, пересекающиеся под небольшим углом, образовывали закрашенные области, а пересекающиеся контуры закрашенных областей путались; см. нижний правый угол. Трассировка также имеет некоторые странные особенности. Многие черные контуры соприкасаются, поэтому они становятся большими и сложными объектами, а не просто контурами определенных областей. Вместо фона два очерченных прямоугольника разделяет прямоугольная белая область. Объекты, помеченные op , rp и rr , не являются простыми многослойными фигурами; желаемый результат будет иметь наложение rr на rp , который накладывается на op .

Домены использования

Векторизация эффективна для одноцветных неградиентных входных данных, таких как подписи.

Изображения с непрерывным тоном

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

Смотрите также

Рекомендации

  1. ^ Перец 2005, стр. 68–71.
  2. ^ Плох 2005, с. 17
  3. ^ Adobe 1998, стр. 100–101.
  4. ^ Adobe 1992, стр. 39
  5. ^ Adobe 1992, стр. 40–41.
  6. ^ Adobe 1992, стр. 53
  7. ^ Adobe (1998, стр. 348–350) обсуждает цветовые полосы в градиентных заливках.
  8. ^ Adobe 1992, стр. 54–55.
  9. ^ Adobe 1992, стр. 59–60.
  10. ^ Ито и Оно 1993
  11. ^ Шнайдер 1990
  12. ^ Корел 2005, с. 217

дальнейшее чтение

Внешние ссылки