Алгоритм векторизации растровых изображений в общем виде

УДК 519.876.5:621.865.8

АЛГОРИТМ ВЕКТОРИЗАЦИИ РАСТРОВЫХ ИЗОБРАЖЕНИЙ В ОБЩЕМ ВИДЕ

С.Ю. Сташевский

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

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

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

В ГИС решение задачи векторизации осуществляется с помощью специальных программ. Их назначение - это обработка растровой карты местности с целью извлечения полезной информации об объектах на карте и сохранения этой информации в специальных векторных форматах данных на любом виде носителя или в базах данных.

Обзор векторизаторов ГИС

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

В этом классе продуктов наблюдается бум у российских разработчиков. Западные решения чрезмерно дороги и базируются исключительно на UNIX-машинах. Отечественные разработчики предлагают более 15 различных пакетов, функционирующих на разных платформах и по эффективности использования не уступающих зарубежным аналогам. Среди них отметим следующие: SpotLight, Vectory (Consistent Software, Россия); Easy Trace (Easy Trace Group, Россия ); MapEdit (АО «Резидент», Россия); AutoVEC(IBS, Россия).

Основные этапы векторизации

Термин «векторизация» подразумевает процесс преобразования растрового вида информации в векторный формат, который воспринимают программы автоматизированного проектирования.

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

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

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

Рис. 1 - Пример растрового изображения карты местности

В связи с такой интерпретацией данных о карте можно выделить следующие этапы преобразования растра в его векторное представление:

- загрузка растра (дисковые или другие операции);

- настройка изображения;

- выделение контуров и «крайних» точек областей;

- группировка точек одной области, формирование многоугольника (вектора);

- корректировка;

- формирование векторного формата.

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

- ручная настройка в растровом графическом редакторе (экспертная);

- автоматическая настройка с применением графических фильтров и методов обработки;

- комбинированная настройка.

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

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

Комбинированная настройка - результат синтеза двух предыдущих в зависимости от специфики проблемы.

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

Рис. 2 - Пример выделения контуров областей и крайних точек

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

Метод обхода контура является одним из самых популярных алгоритмов. Он прост в реализации, достаточно быстр и эффективен. В результате обработки алгоритмом растра могут быть получены списки «крайних» точек, а также всех остальных точек контура; в порядке направления обхода контура. Эти точки формируют многоугольники, описывающие области карты. Другие методы в этой работе не рассматриваются из-за их сложности.

Корректировка служит для удаления «лишних» многоугольников. Слово «лишние» говорит об избыточности информации. Обычно в таких задачах есть некоторые ограничения на количество областей, их линейные размеры и т.д. Для нас таким критерием служат линейные размеры областей.

Формирование векторного формата - конечный этап, на котором решаются дополнительные задачи. Сюда относят нахождение различных статистических характеристик как всего изображения, так и характеристик некоторых областей. Полученную векторную и другую (дополнительную) информацию заносят в определенную структуру данных, которая сохраняется на носителях и используется в дальнейшем сторонними приложениями. Такая структура определена заранее.

Состав растровой карты местности

Вся исходная информация о карте уже существует и хранится в растровом виде. Но эту информацию достаточно сложно описать математически.

Как отмечено ранее, существует два основных способа представления цифровых карт:

- векторный формат карты местности;

- растровый формат карты местности.

Предварительно рассмотрим состав и топологию растра. Растром может быть любая картинка, представленная в виде матрицы, элементами которой являются цвета.

Абстрактно растр может иметь в своем составе несколько видов областей (фигур и т.д.). Примеры таких областей представлены на рис. 3: области выпуклого вида (рис. 3, а); области невыпуклого вида (рис. 3, б); области в виде замкнутых колец (рис. 3, в).

Рис. 3 - Представления областей разных цветов на растре

Такое разнообразие классов фигур затрудняет решение задачи векторизации в целом. В этой работе решена задача векторизации для классов выпуклых и невыпуклых фигур.

Решение задачи векторизации в общем случае

Задача векторизации представляет собой задачу по поиску, выделению и фильтрации областей точек одинаковых цветов.

Предложенный подход к векторизации основан на серии предположений, идей и выводов, полученных в процессе анализа и поиска решения задачи преобразования растра в векторы.

Слова «фигура», «область», «многоугольник» и «полигон» впредь будем считать идентичными.

Рассмотрим схему (рис. 4), детально описывающую предложенное решение.

Рис. 4 - Алгоритм векторизации

Выделяются следующие этапы работы алгоритма векторизации:

- загрузка и инициализация;

- подсчет используемых уникальных цветов и формирование таблицы цветов;

- выделение контуров областей на растре;

- выделение крайних точек областей на растре;

- формирование массивов из точек, хаотически расположенных на изображении (по признаку принадлежности точек с одинаковым цветом массиву точек этого цвета);

- формирование векторной модели (на основе контуров всех областей, полученных при использовании алгоритма обхода контура);

- растеризация векторной модели (зрительная проверка на соответствие векторной модели растровой).

Результатом всего процесса векторизации является структура, в которой будет вся необходимая для алгоритма информация по всем областям.

Основные проблемы при реализации возникают на этапах формирования массивов и векторной модели. Они заключаются в специфических требованиях к векторной модели, например для нашего случая - «все полигоны должны храниться в выпуклом виде». Одна из идей получения выпуклых полигонов из невыпуклых основывается на ряде свойств: треугольник всегда выпуклый; многоугольник с числом вершин четыре может иметь только одну точку невыпуклости; многоугольник с числом вершин N может иметь, максимум, N-3 точек невыпуиднвпичто простейшее решение - разбить невыпуклый многоугольник на элементарные треугольники путем последовательного удаления по одной точке из полигона, так как любые три точки описывают треугольник. Этот метод известен под названием «Триангуляция» (рис. 5).

Впервые задача триангуляции была представлена в 1934 г. в работе советского математика Б.Н. Делоне и названа в дальнейшем «триангуляцией Делоне».

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

Алгоритмов триангуляции существует достаточно много, их описание и сравнительный анализ можно найти в работе [1].

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

Заключение

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

В этом материале из-за большого количества аналитической информации не рассмотрены следующие вопросы:

- привязка объектов к реальным координатам;

- интерактивный режим обработки изображения;

- распознавание образов объектов.

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

ЛИТЕРАТУРА

1. Скворцов А.В. Применение триангуляции для решения задач вычислительной геометрии / А.В. Скворцов, Ю.Л. Костюк // Геоинформатика. Теория и практика. Вып. 1. - Томск: Изд-во Том. гос. ун-та, 1998. - С. 22-47.