Векторизация на основе триангуляции: удаление паразитных ответвлений и обработка сочленений

ВЕСТНИК ТОМСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА

2007 Управление, вычислительная техника и информатика № 1

УДК 681.3.06

Ю.Л. Костюк, А.А. Чертов ВЕКТОРИЗАЦИЯ НА ОСНОВЕ ТРИАНГУЛЯЦИИ: УДАЛЕНИЕ ПАРАЗИТНЫХ ОТВЕТВЛЕНИЙ И ОБРАБОТКА СОЧЛЕНЕНИЙ

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

Данная статья является продолжением работы [1]. Предлагаются две модификации к алгоритму векторизации на основе триангуляции [2,3]. Первая из них позволяет устранять древовидные паразитные ответвления на этапе обработки триангуляции, до построения векторной модели. При помощи второй модификации получаются более корректные векторные модели пересечений нескольких линий за счёт того, что в скелете могут появляться вершины степени 4 и выше. Представлены соответствующие алгоритмы и проиллюстрированы результаты их применения.

1. Алгоритм удаления ложных ответвлений

Проблема паразитных ответвлений присуща не только рассматриваемому алгоритму векторизации [4, 5]. Обычно она решается с помощью эвристических процедур постобработки. При векторизации на основе триангуляции паразитные ответвления появляются там, где все три вершины треугольника лежат на одной стороне векторизуемого линейного объекта. Данные явления более характерны для «толстых» линейных объектов. На конфигурациях, подобных изображённой на рис. 1, образуются древовидные паразитные ответвления, снижающие качество векторной модели.

Рис. 1. Триангуляция и соответствующий скелет

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

При векторизации на основе триангуляции существует строгое соответствие между звеньями скелета и треугольниками. Описываемый алгоритм выделяет группы треугольников, являющиеся причиной возникновения паразитных ответвлений. Будем называть треугольники, закрашенные цветом объекта, «чёрными», а цветом фона - «белыми».

Сформулируем признак паразитного ответвления. Группа смежных чёрных треугольников Т\, Т2,...,ТК считается паразитным ответвлением, если она удовлетворяет следующим условиям:

1. Граф смежности треугольников этой группы является деревом.

2. Среди треугольников есть ровно один треугольник Тр, смежный с некоторым чёрным треугольником, не принадлежащим данной группе (обозначим его Т*).

3. Отношение квадрата длины ребра т, разделяющего треугольники Тр и Т*, к сумме площадей треугольников Ть Т2,...,ТК превышает порог е (рис. 2):

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

Для произвольного чёрного треугольника Т обозначим сумму площадей треугольников, лежащих по другую сторону его г-го (г = 1,...,3) ребра через ДТ, г).

Для случая А верны следующие равенства:

где Б(Т) - площадь треугольника. Для конфигурации Б Б(Т0, 3) = 0, а величины -Р(Т0, 1) и -Р(Т0, 2) не могут быть посчитаны, так как имеется цикл. В общем случае для вычисления Б(Т, г) достаточно следующих двух тривиальных правил.

Рис. 2. Критерий паразитного ответвления

Д7Ь, 1) = Що, 3) = 0, Д7Ь, 2) = ВД + ВД + ВД + ВД,

Правило 1. Если по другую сторону г-го ребра треугольника Т нет чёрного треугольника (т.е. есть белый либо это граница триангуляции), то Б(Т, г) = 0.

Правило 2. Пусть есть два соседних чёрных треугольника ТА и Тв. Пусть г-е ребро треугольника ТА смежно треугольнику Тв. Пусть также д- иу2-е рёбра треугольника Тв не смежны треугольнику ТА. Если известны ДТв,7^) и ДТв,у2), то Ща, 0 = ДТв,у і) + ^(Тв,72) + ВД.

Рис. 3. Вычисление ^

Алгоритм вычисления ДТ, г) состоит в итеративном применении правил к треугольникам. Вычисления завершаются, когда правила нельзя применить ни к одному треугольнику. При реализации удобно использовать структуру данных «очередь». Поиск паразитных ответвлений сводится к перебору отношений ДТ, г) к квадратам длин соответствующих рёбер.

Не все треугольники паразитных ответвлений должны быть перекрашены в белый цвет. Если к внутреннему треугольнику (треугольник называется внутренним, если у него 3 чёрных соседа) примыкает одно паразитное ответвление, то можно провести перестроение, после которого только часть треугольников будет перекрашена. Перестроение (рис. 4) затрагивает сам треугольник, и некоторые треугольники ответвления. За счёт этого форма объекта остаётся максимально близкой к исходной.

Рис. 4. Паразитное ответвление до (слева) и после (справа) перестроения

Трудоёмкость алгоритма удаления паразитных ответвлений линейная относительно числа треугольников. В качестве порогового значения е обычно выбирается число от 4 до 8 (рис. 5).

Рис. 5. Результат применения алгоритма (е = 5) к триангуляции с рис. 1. Удалено 14 ответвлений

2. Модификация алгоритма построения скелетной линии

Скелет изображения, полученный при помощи алгоритма, описанного в [3], обладает серьёзным недостатком. В нём не могут существовать вершины степени выше 3. Пересечение двух линий вместо вершины степени 4 представляется, как две соединённые вершины степени 3 (рис. 6). Если в одной точке пересекаются три линии, то получится уже четыре вершины степени 3.

Рис. 6. Пересечение линий и соответствующий скелет

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

Алгоритм построения скелетных линий для внутренних треугольников следующий:

Шаг 1. Найти очередной непомеченный внутренний треугольник. Если поиск закончился неудачей, то алгоритм завершает работу.

Шаг 2. Найти группу связных внутренних треугольников, которая включает треугольник, найденный на предыдущем шаге. Область, состоящую из этих треугольников, обозначим Я. Пометить все треугольники, входящие в Я.

Шаг 3. Пусть R является N-угольником. Каждая сторона соответствует линии, примыкающей к R. При помощи метода наименьших квадратов [6] получить оценки направлений этих линий в виде векторов vi, v2vN . Обозначим также середины сторон R через Pb P2,..., PN. Прямую, проходящую через P и параллельную vi, обозначим /;• (г = 1,..., N).

Шаг 4. Найти положение узловой точки.

4.1. Найти два направления (v a, vb), близких (в смысле порогового значения угла а) к противоположным. Если таких направлений не существует, то в качестве узловой точки берётся центр масс области R. Иначе считается, что эти два ответвления являются частями одной линии.

4.2. Если в пункте 4.1 поиск успешен, то из оставшихся направлений ищутся другие два (vc, vd ), близкие к противоположным. Если они найдены, то в качестве узловой точки берётся пересечение прямых PaPb и PcPd .

4.3. Если же вторую пару направлений найти не удалось, то в качестве узловой точки берётся медианная из точек пересечений прямой PaPb с прямыми /;-(г Ф a,b).

Шаг 5. Соединить найденную узловую точку с точками P1, P2,..., PN. Перейти на шаг 1.

Конец алгоритма.

Трудоёмкость обработки каждого сочленения составляет O(N log N). На практике N редко бывает больше четырёх. Алгоритм корректно обрабатывает случаи, когда в месте сочленения лежит единственная группа смежных внутренних треугольников (рис. 7).

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

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

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

Рис. 8. Случай нескольких групп смежных внутренних треугольников

Представленные алгоритмы позволяют, во-первых, находить более широкий класс паразитных ответвлений, чем в [1], и, во-вторых, более корректно обрабатывать сочленения нескольких линейных объектов. Алгоритмы достаточно эффективны и практически не влияют на время, затрачиваемое на векторизацию.

ЛИТЕРАТУРА

1. Костюк Ю.Л., Абдуллин Ю.Э., Чертов А.А. Первичная векторизация многоцветных растров с использованием триангуляции и процедуры постобработки // Вестник ТГУ. 2006. № 293. С. 147 - 150.

2. Костюк Ю.Л., Новиков Ю.Л. Графовые модели цветных растровых изображений высокого разрешения // Вестник ТГУ. 2002. № 275. С. 153 - 160.

3. Костюк Ю.Л., Кон А.Б., Новиков Ю.Л. Алгоритмы векторизации цветных растровых изображений на основе триангуляции и их реализация // Вестник ТГУ. 2003. № 280. С. 275 - 280.

4. Ogniewicz R. L., Kubler O. Hierarchic Voronoi skeletons [Электронный ресурс]: поисковая база данных CiteSeer. - режим доступа: http://citeseer.ist.psu.edu/article/ogniewicz95 hierarchic.html, свободный.

5. Bai X., Latecki L. J., and Liu W.-Y. Skeleton Pruning by Contour Partitioning with Discrete Curve Evolution [Электронный ресурс]: List of Publications of Longin Jan Latecki. - режим доступа: http://www.cis.temple.edu/~latecki/Papers/publications.html, свободный.

6. Weisstein E. Least Squares Fitting - Perpendicular Offsets [Электронный ресурс]: MathWorld, a Wolfram Web Resource. - режим доступа: http://mathworld.wolfram.com/ LeastSquaresFittingPerpendicularOffsets.html, свободный.

Статья представлена кафедрой теоретических основ информатики факультета информатики Томского государственного университета, поступила в научную редакцию 29 июня 2007 г.