Текст
                    Л. М. Местецкий
НЕПРЕРЫВНАЯ МОРФОЛОГИЯ
БИНАРНЫХ ИЗОБРАЖЕНИЙ:
ФИГУРЫ, СКЕЛЕТЫ, ЦИРКУЛЯРЫ
МОСКВА ®
ФИЗМАТЛИТ
2009


УДК 519.72 ББК 22.19; 32.97 Μ 53 Местецкий Л.Μ. Непрерывная морфология бинарных изображений: фигуры, скелеты, циркуляры. — М.: ФИЗМАТЛИТ, 2009. — 288 с. — ISBN 978-5-9221-1050-1. Книга посвящена исследованию способов описания формы объектов в цифровых бинарных изображениях с помощью непрерывных моделей. Использование непрерывных моделей существенно упрощает решение многих задач анализа, распознавания и преобразования изображений. В книге в качестве универсальной непрерывной модели формы используется понятие фигуры — замкнутой области, граница которой состоит из конечного числа непересекающихся жордановых кривых. Рассматриваются три взаимосвязанных способа представления фигур: многоугольными границами, скелетами, семействами кругов (циркулярами). Задача построения непрерывной модели для бинарного изображения состоит в аппроксимации его фигурами. В книге описываются разработанные автором методы решения этой задачи и их практические приложения. Книга рассчитана на научных работников и инженеров, профессионально занимающихся вопросами математического обеспечения цифровой обработки и анализа изображений. Она также может быть полезна аспирантам и студентам соответствующих специальностей. Оформление обложки: Анна Аренштейн В оформлении обложки использовано изображение антропозооморфного идола с птичьими крыльями, сильно выступающими в стороны, и широким головным убором. I—III вв. Из раскопок Н.Н. Новокрещеных 1896-1897 гг. на Гляденовском костище (Пермской обл.). Бронза, литье. 14,5 χ 9 см. Изображение опубликовано в книге: В. А. Оборин, Г. Н. Чагин. Чудские древности Рифея. Пермский звериный стиль. Серия «Искусство Прикамья». — Пермь: Пермское книжное издательство, 1988. © ФИЗМАТЛИТ, 2009 ISBN 978-5-9221-1050-I © Л.М. Местецкий, 2009
ОГЛАВЛЕНИЕ Предисловие 7 Глава 1. Введение 15 1.1. Бинарные изображения 15 1.2. Принципы непрерывного подхода 16 1.3. История вопроса 20 1.4. Структура книги 23 ЧАСТЬ I ФОРМЫ И ФИГУРЫ Глава 2. Непрерывные модели формы 25 2.1. Содержательное понятие формы 25 2.2. Фигура как модель формы 26 2.3. Граничное представление фигуры 28 2.4. Скелетное представление фигуры 30 2.5. «Пожар в прерии» и дистанционная функция 33 2.6. Вычисление и регуляризация скелета 37 Глава 3. Дискретные модели формы 39 3.1. Дискретные фигуры 39 3.2. Дискретные границы 41 3.3. Дискретные скелеты 43 3.4. От дискретной фигуры к непрерывной 51 ЧАСТЬ II ФИГУРЫ И ГРАНИЦЫ Глава 4. Непрерывные границы дискретной фигуры 53 4.1. Эквивалентность дискретных и непрерывных фигур 53 4.2. Треугольные структуры соседства 57 4.3. Граничные коридоры дискретной сцены 63
4 ОГЛАВЛЕНИЕ Глава 5. Поиск и прослеживание границ 66 5.1. Поиск граничных коридоров 66 5.2. Симплексное прослеживание коридора при гексагональной смежности 68 5.3. Прослеживание подвижным мостом при объектной смежности 72 5.4. Прослеживание подвижным мостом при компонентной смежности 76 Глава 6. Аппроксимация границ 79 6.1. Близость дискретных и непрерывных сцен 79 6.2. Аппроксимация следа трассировки многоугольником 80 6.3. Минимальные разделяющие многоугольники 83 6.4. Аппроксимация многоугольной границы сплайнами 90 ЧАСТЬ III ГРАНИЦЫ И СКЕЛЕТЫ Глава 7. Скелетизация на основе диаграмм Вороного 103 7.1. Структура скелета многоугольной фигуры 103 7.2. Диаграмма Вороного многоугольной фигуры 105 7.3. Получение скелета из диаграммы Вороного 107 7.4. Вершины диаграммы Вороного 108 7.5. Бисекторы диаграммы Вороного 112 7.6. Жадный алгоритм построения диаграммы Вороного 113 7.7. Рекурсивная декомпозиция диаграммы Вороного 121 7.S Диаграмма Вороного простого многоугольника 125 Глава 8. Скелетизация на основе графов смежности 129 8.1. Граф смежности многоугольной фигуры 129 8.2. Триангуляция Делоне — граф смежности точек 133 8.3. Граф смежности простого многоугольника 140 8.4. Слияние графов смежности ломаных линий 142 8.5. Слияние графов смежности многоугольников 151 Глава 9. Вычисление дерева смежности фигуры 155 9.1. Смежность граничных многоугольников 155 9.2. Дерево смежности границ многоугольной фигуры 159 9.3. Алгоритм плоского заметания 160 9.4. Заметание с поглощением пузырей 164
ОГЛАВЛЕНИЕ 5 Глава 10. Регуляризация скелетов 167 10.1. Скелетизация — некорректная задача 167 10.2. Регуляризация на основе стрижки скелета 169 10.3. Базовый скелет многоугольной фигуры 171 ЧАСТЬ IV СКЕЛЕТЫ И ЦИРКУЛЯРЫ Глава 11. Циркулярные фигуры и жирные линии 177 11.1. Задача преобразования формы изображений 177 11.2. Циркулярная фигура 179 11.3. Жирные линии 181 11.4. Граница жирной линии , 183 Глава 12. Циркулярное представление изображений 189 12.1. Циркулярное представление бинарного изображения 189 12.2. Аппроксимация скелета жирными кривыми Безье 191 12.3. Преобразование жирных кривых Безье 194 12.4. Локализация точки в жирных кривых Безье 197 12.5. Циркулярные координаты точки в жирной линии 198 ЧАСТЬ V ПРИКЛАДНЫЕ ЗАДАЧИ Глава 13. Шрифтовые технологии 203 13.1. Контурное описание символов шрифта 203 13.2. Автоматизация хинтовки шрифта 209 13.3. Оценка качества хинтовки шрифта 218 13.4. Моделирование рукописного шрифта 223 Глава 14. Анализ текста 227 14.1. Распрямление строк при сканировании текста 227 14.2. Сегментация и распознавание рукописного текста 231 Глава 15. Биометрические технологии 238 15.1. Идентификация личности по форме ладони 238 15.2. Анализ отпечатков пальцев 245 15.3. Восстановление пространственной формы по стереопаре силуэтов 249
6 ОГЛАВЛЕНИЕ Глава 16. Компьютерная графика и визуализация 255 16.1. Смежность объектов и маршрутизация 255 16.2. Графические инструменты на основе жирных линий 261 Глава 17. Вычислительная эффективность 266 17.1. Экспериментальные оценки эффективности 266 17.2. Сравнение с дискретными методами 272 Заключение 274 Литература 277
Маме Евгении Львовне и эюене Ирине с благодарностью за вдохновение и поддержку ПРЕДИСЛОВИЕ Тема этой книги — апология непрерывного подхода к описанию формы объектов в цифровых бинарных изображениях, названного здесь непрерывной морфологией. Предметом нашего внимания является понятие формы, а также способы описания формы, удобные для анализа, преобразования и распознавания изображений. С одной стороны, понятие формы предмета является простым и ясным для любого человека. Маленький ребенок демонстрирует такое понимание, когда рисует домики в виде прямоугольников с треугольными крышами и солнышко в виде кружочка. По форме прически юные меломаны классифицируют друг друга. Любому дачнику ясно, какое ведро имеет цилиндрическую форму, а какое — коническую. Спортсмены хорошо знают дельтовидную, т. е. треугольную, и трапециевидную мышцы. Психологи умеют определять характер человека на основе его отношения к треугольникам, квадратикам и кружочкам. Но с другой стороны, если попросить их дать общее определение, что же такое форма предмета, вряд ли удастся услышать что-либо вразумительное. Форма является одним из тех фундаментальных понятий, смысл которых понимают все, но объяснить строго могут немногие. В повседневной жизни люди не нуждаются в строгом определении понятия формы. Однако специалисты по работе с цифровыми изображениями должны волей-неволей такое определение иметь. Стремительное проникновение компьютерных технологий во все сферы жизни современного общества, их использование в различных видах человеческой деятельности естественным образом привело к разработке «видящих» машин, способных выполнять такие специфические человеческие функции, как зрение и анализ увиденных изображений. Для создания алгоритмов анализа и распознавания тех сцен, которые компьютер «увидел» через фото- и видеокамеры, сканеры или какие- нибудь другие устройства, способные регистрировать изображения, требуются строгие математические модели формы объектов реального мира. Разработка систем машинного понимания изображений ставит перед их создателями сложную задачу — научить машину выделять форму объектов в изображениях, сравнивать объекты по их форме
8 ПРЕДИСЛОВИЕ и определять сходные и различные формы. Сложность состоит в том, что механизмы работы человеческого интеллекта при решении этих задач не вполне понятны. Сами люди, постоянно и многократно решая подобные задачи в повседневной жизни, оперируют интуитивными понятиями формы. Поэтому простые вопросы, на которые легко ответит даже маленький ребенок, например, одногорбый или двугорбый верблюд нарисован в книжке или кто за кем вытягивает репку — где внучка, где Жучка, а где кошка — превращаются в самостоятельную сложную задачу для компьютера. При разработке алгоритмов, связанных с пониманием изображений, проявляется определенное противоречие между человеческим и компьютерным представлением формы объектов. Особенностью компьютерного представления видеоинформации является дискретная или растровая структура изображений, размещенных в памяти компьютера. Изображение представляется прямоугольной матрицей точек, обладающих определенным цветом и яркостью. Именно в этой матрице нужно увидеть какие-то формы, выделить их и сравнить между собой или с некоторыми эталонами, чтобы произвести их классификацию и обеспечить понимание компьютером сцены, представленной в изображении. А человеческий глаз не замечает растровую природу цифрового изображения в компьютере. Высокая разрешающая способность современных видеокамер и сканеров приводит к тому, что точки в матрице изображений имеют очень малые размеры и расположены с высокой плотностью. Поэтому в глазах человека эти точки сливаются и сами изображения воспринимаются им как непрерывные «сплошные» объекты. Воспринимая форму таким образом, человек легко формулирует характеристики и признаки объектов в терминах геометрических фигур или непрерывных функций, но не в терминах дискретных растровых изображений, представленных в виде матриц точек. Таким образом, перед создателями систем обработки изображений возникает проблема таких преобразований формы изображений, при которой «человеческие», интуитивно понятные геометрические способы анализа, сравнения, распознавания и преобразования формы можно было бы применить к изображениям, представляемым в компьютере в виде матриц. Решать эту проблему можно, сближая разными путями дискретные компьютерные и непрерывные человеческие представления формы объектов. Можно пытаться переформулировать человеческие представления о форме, как о непрерывном «сплошном» объекте, в терминах дискретных растровых изображений. Здесь возникают непростые задачи описания таких существенно непрерывных понятий как связность, гладкость, кривизна применительно к матрицам точек. В противоположность такому подходу, состоящему в «дискретизации» непрерывных понятий, можно попытаться продвинуться с другой стороны: построить непрерывные модели для объектов, выделенных в
ПРЕДИСЛОВИЕ 9 дискретной матрице изображений, а далее формулировать алгоритмы в терминах непрерывных моделей, адекватных человеческому восприятию понятия формы. Эти два пути, которые можно условно охарактеризовать как «дискретный» и «непрерывный» подходы, представляют собой крайние варианты, между которыми возможны компромиссные решения, комбинирующие в различной степени дискретные и непрерывные представления формы. В этой книге предпринята попытка разработки и реализации в наиболее полном виде непрерывного подхода к описанию формы объектов в цифровых изображениях — начиная с бинарных растровых изображений, полученных в результате сегментации исходных цветных либо полутоновых изображений. Задача ставится следующим образом. Для объектов, представленных на изображении в виде матриц точек, нужно построить непрерывные модели формы в виде геометрических фигур на евклидовой плоскости. В качестве универсальной непрерывной модели формы мы используем понятие замкнутой ограниченной области. Для представления таких областей предложены так называемые граничное, скелетное и циркулярное описания. Эти представления формы являются непрерывными. Задача построения непрерывной модели для цифрового бинарного изображения состоит в том, чтобы превратить исходное дискретное изображение, представленное матрицей точек, в непрерывные геометрические объекты: границы, скелеты, циркуляры. Соответствующие преобразования называются в книге дискретно-непрерывными преобразованиями изображений. Предлагаемый непрерывный подход не является традиционным. Обычно при анализе формы изображений используются уже упомянутые дискретные модели формы, представляющие собой изображения границ и скелетов в виде «линий на растре». Дискретные методы, в основе которых лежат, как правило, эвристические соображения и приемы, получили чрезвычайно широкое распространение, поскольку они достаточно просто описываются и допускают простую программную реализацию. Такой подход вполне имеет право на существование и оправдан во многих случаях. Однако недостатки, присущие дискретным методам, сдерживают возможности создания современных технических систем машинного зрения. Несоответствие дискретного описания изображений непрерывному человеческому представлению является, по-видимому, одним из главных факторов такого сдерживания. Другим существенным ограничением является относительно невысокая скорость работы дискретных алгоритмов с изображениями большой размерности. Это ограничение проявляется в системах машинного зрения, работающих в реальном времени. Не внушает больших надежд на ускорение дискретных алгоритмов возможность использования параллельных вычислений. В дискретных алгоритмах имеются строго
10 ПРЕДИСЛОВИЕ последовательные шаги, число которых растет с ростом размерности и сложности изображений. А размерность и сложность, в свою очередь, неизбежно возрастают по мере повышения разрешающей способности видеокамер и сканеров. Таким образом, преодолеть указанные недостатки в рамках дискретных методов вряд ли возможно. Непрерывный подход, напротив, открывает широкие возможности для решения возникающих проблем. В обработке и анализе изображений принято называть инструменты и методы, связанные с извлечением компонент изображения, относящихся к форме объектов, математической морфологией. Этот термин заимствован из биологии, где под морфологией обычно понимается исследование формы и строения животных и растений. Математическая морфология представляет собой вполне сложившийся набор инструментов для представления и описания границ, скелетов, выпуклых оболочек, а также способов предобработки, фильтрации, утончения, усечения изображений. При этом все эти задачи решаются в рамках дискретного подхода, методы работают непосредственно с дискретными изображениями, оперируя над матрицами яркости, в том числе и бинарными. Поскольку целью предлагаемых непрерывных методов остается решение тех же самых задач: построение границ, скелетов, дескрипторов формы, мы будем использовать термин непрерывная морфология для обозначения непрерывного подхода. В рамках этой книги мы хотим продемонстрировать важные преимущества непрерывного подхода по сравнению с дискретным: — математическая корректность; — адекватность человеческому представлению о форме и ее преобразованиях; — широкие возможности для преобразования и сравнения форм; — высокая вычислительная эффективность. Платой за эти преимущества является существенное усложнение алгоритмов с точки зрения их математического содержания и программной реализации. Но, как отмечал академик Η. Η. Моисеев, «...инженерам не нужны примитивные математические приемы — ими инженер владеет сам не хуже математиков. Трудные технические задачи требуют настоящего математического творчества» [17]. Начальный импульс к работе над непрерывными методами для цифровых бинарных изображений автор получил, когда обнаружил, что красивый и эффективный алгоритм скелетизации простого многоугольника, опубликованный Дэвидом Ли в 1982 году [39], не используется в обработке изображений, а вместо него применяются дискретные алгоритмы скелетизации, основанные на морфологическом утончении, дистанционной карте и им подобные. Получаемые при этом новые бинарные изображения по внешнему виду хоть и напоминают
ПРЕДИСЛОВИЕ 11 скелеты и даже называются скелетами, но при этом не имеют строгого математического определения, а их построение требует больших вычислительных затрат. Отсутствие строгой математической модели приводит к тому, что разные методы дискретной скелетизации, примененные к одному и тому же изображению, дают разные результаты. А представление скелета в виде нового бинарного изображения, а не в виде графа и семейства окружностей, существенно ограничивает возможности классификации и преобразования изображений. Задавшись целью все-таки применить к построению скелетов изображений мощные и элегантные алгоритмы вычислительной геометрии, автор столкнулся с необходимостью решения нескольких дополнительных задач. Во-первых, эффективные алгоритмы скелетизации в вычислительной геометрии разработаны только лишь для областей с кусочно- линейной границей. В частности, алгоритм Ли работает только с простыми многоугольниками. Поэтому для работы с цифровыми изображениями вначале нужно решить задачу аппроксимации присутствующих в них объектов простыми многоугольниками, т. е. не имеющими пересекающихся сторон. Сложность этой задачи состоит именно в обеспечении простоты получаемых многоугольников. В частности, многочисленные алгоритмы, строящие многоугольники, вершинами которых являются все граничные точки дискретного объекта, не гарантируют простоты этих многоугольников, поскольку их стороны могут иметь самопересечения. Более того, в случае, когда сложное изображение содержит несколько объектов или объекты не являются односвязными (имеют «дыры»), такие граничные многоугольники часто «слипаются», т. е. имеют пересекающиеся границы. Во-вторых, несмотря на то, что алгоритм Ли скелетизации многоугольника с η вершинами имеет сложность 0(п logn) в худшем случае, все известные попытки его обобщения на случай многосвязной многоугольной фигуры (многоугольника с многоугольными дырами) приводили к сложности 0(пк + η log n), где к — это количество внутренних многоугольных дыр в объекте. При большом числе дыр, что часто имеет место в реальных изображениях, такие затраты времени оказываются неприемлемыми. Таким образом, задача разработки эффективных алгоритмов скелетизации многосвязной многоугольной фигуры остается актуальной. Третья задача — регуляризация скелета — связана с высокой чувствительностью скелета к шумовым эффектам, неизбежно присутствующим в изображениях. Суть задачи в следующем. Поскольку эффективные алгоритмы скелетизации известны только для многоугольников, в случае произвольной замкнутой области приходится сначала аппроксимировать многоугольниками ее границу, а затем строить скелет полученной многоугольной фигуры. Многоугольная аппроксимация в
12 ПРЕДИСЛОВИЕ этом случае не является однозначной, однако при выборе другой аппроксимирующей многоугольной фигуры (в пределах той же точности) получается совсем другой скелет. Это свойство задачи скелетизации показывает ее некорректность в терминологии А. Н. Тихонова: решение задачи неустойчиво и нуждается в регуляризации. Данная проблема хорошо известна и в дискретных методах скелетизации. Однако, если там она решается на основе эвристических приемов, то в рамках непрерывного подхода появляется возможность ее строгого решения эффективными алгоритмами. Четвертая задача возникает из стремления использовать скелеты не только для анализа изображений, но и для их преобразования. Такие задачи возникают в компьютерной графике, например, при создании анимационных клипов. Также подобная задача появляется в распознавании изображений, когда классификация объектов осуществляется путем сравнения с эталонами, но при сравнении нужно обеспечить максимально возможное совпадение с эталоном с учетом допустимых деформаций объекта. Осуществить подобные операции с использованием дискретных скелетов невозможно в принципе. В рамках же непрерывного подхода это может быть сделано на основе преобразования скелетного графа и связанного с ним семейства окружностей. Построив огибающую измененного таким образом семейства окружностей, мы получаем измененный объект, имеющий другую форму. Правда в этом новом объекте скелет уже может не совпадать с измененным скелетным графом исходного объекта. Для того чтобы сделать корректными такие преобразования, нужно каким-то образом обобщить понятие скелета. Решение этой задачи привело к концепции описания формы объекта в виде так называемой циркулярной фигуры. Таким образом, возникла задача аппроксимации бинарных изображений циркулярными фигурами и последующей деформации объектов через преобразование циркулярных фигур. Решение всех перечисленных задач составляет содержание этой книги. Нужно отметить, что автор не первый, кто предпринял попытку развития непрерывной морфологии в плане практического использования для обработки изображений. В работах Уго Монтанари [44, 45] были сформулированы основные принципы подобного непрерывного подхода: многоугольная аппроксимация связных объектов бинарного изображения и построение непрерывных скелетов многоугольников. Однако реализация этого подхода и эксперименты, проведенные в этих работах, видимо, не вызвали большого оптимизма. Во всяком случае, развития этих работ не последовало. В то же время, успехи дискретной морфологии того времени явились приемлемой альтернативой непрерывным математическим моделям.
ПРЕДИСЛОВИЕ 13 Описанный в книге непрерывный подход к анализу формы изображений разрабатывался автором с начала 1990-х годов. Основные его принципы, методы и алгоритмы публиковались в научной периодике, докладывались на конференциях, частично размещались в Интернете [12-16, 42, 43], однако в собранном виде публикуются впервые. Собирая материал в книгу, автор стремился выдержать единство терминологии и обозначений. Если это не везде удалось, автор просит прощения у придирчивого читателя. Все описанные в книге методы и алгоритмы были реализованы автором в различных программных комплексах и прошли практическую проверку. Несмотря на отсутствие в книге программных кодов, она адресована программистам, той их части, кого принято называть математиками- программистами, основным содержанием деятельности которых является разработка алгоритмов при создании программной системы и для кого одной из главных «радостей ремесла» является «...очарование, заключенное в самом процессе создания сложных загадочных объектов, состоящих из взаимосвязанных непостоянных частей, и наблюдения за тем, как они работают в запутанных циклах, сохраняя верность принципам, заложенным в них с самого начала» [3]. Все — и заказчики, и пользователи, и разработчики программного обеспечения — понимают, что алгоритмы должны работать правильно и быстро. Но именно алгоритмист должен строго сформулировать в каждом конкретном программном проекте, что есть правильная работа алгоритма и каковы критерии оценки этой правильности. Применительно к рассматриваемым в книге задачам анализа формы изображений это означает, что нужно, в первую очередь, дать математически строгое определение формы изображений и способов ее вычисления и сравнения. Именно наличие строгой математической модели является главной основой для создания «правильных» алгоритмов, которые дают корректный результат и хорошо работают на практике, т.е. «не падают и не зацикливаются». А второй заботой математика-программиста является высокая скорость работы алгоритма. Среди алгоритмов, работающих правильно, хочется выбрать такой, который работает быстрее всех остальных. Но задача ускорения алгоритма становится осмысленной лишь в случае, когда понятие правильности работы алгоритма опирается на строгую математическую модель. Если же такой модели нет, то нет возможности проверки адекватности алгоритма. В этом случае алгоритм можно разгонять до любого предела: для плохого, но быстрого алгоритма всегда можно придумать алгоритм, работающий еще быстрее, но так же плохо. Появлению этой книги способствовали многие люди, которым автор приносит свою искреннюю признательность. В первую очередь это академик РАН Ю. И. Журавлёв, с самого начала поддержавший данное научное направление и оказывающий ему внимание на протяжении
14 ПРЕДИСЛОВИЕ многих лет. Это член-корреспондент РАН К. В. Рудаков, в сотрудничестве с которым проводилась значительная часть теоретических и прикладных исследований, описанных в книге. Важным источником идей и методов, вошедших в книгу, стали прикладные задачи из различных областей. Автор считает своим приятным долгом поблагодарить «постановщиков» этих задач: В. Н. Елшанского, Э. Л. Якупова, Т. У. Се- дерберга, СВ. Клименко, О.М. Черномордика, А. Г. Халтурина. Автор также благодарен своим ученикам И. А. Рейеру, А. Б. Семёнову, А. Г. Нефёдову, А. А. Масаловичу, А. К. Цискаридзе, совместная работа с которыми способствовала развитию идей и методов, описанных в этой книге. Особую признательность автор приносит Российскому Фонду фундаментальных исследований за неоценимую поддержку работ по методам анализа и распознавания формы изображений начиная с 1996 года по настоящее время. Все основные результаты, помещенные в книге, получены в исследованиях по проектам, выполненным по грантам Фонда 96-01-00553, 99-01-00829, 02-01-00667, 05-01-00542, 08- 01-00670. Также автор благодарен фонду CRDF (Civilian Research and Development Foundation), поддержавшему исследования по данной тематике в рамках проектов RM2-133 и RM2-2245 в 1996-2000 гг.
ГЛАВА 1 ВВЕДЕНИЕ 1.1. Бинарные изображения. 1.2. Принципы непрерывного подхода. 1.3. История вопроса. 1.4. Структура книги. 1.1. Бинарные изображения Бинарное изображение — это двухцветная картинка, на которой представлены один или несколько объектов одного цвета на фоне, имеющем другой цвет. Такие изображения представляются в компьютере в виде матрицы точек, каждая из которых может иметь лишь одно из двух значений цвета, условно обозначаемых через 0 или 1. Точки также называются пикселями (pixel — picture's element). He нарушая общности, будем считать бинарное изображение «черно-белым»: точки объекта являются черными (значение цвета равно 1), а точки фона — белыми (значение цвета равно 0). Такая раскраска соответствует привычному способу рисования черной тушью на белой бумаге. Бинарные изображения требуют минимальных размеров памяти для хранения (достаточно одного бита на пиксел) и позволяют минимизировать расход других вычислительных ресурсов для решения задач обработки и анализа. Бинарные изображения в системах машинного зрения формируются, как правило, в результате сегментации более сложных — полутоновых монохромных, либо цветных изображений, которые, в свою очередь, получаются в результате сканирования картин, документов, фотографий, а также ввода видеоинформации непосредственно с цифровых фото- и видеокамер (рис. 1.1). В современных системах машинного зрения бинарные изображения играют очень важную роль. Они позволяют выделить объект интереса в изображении и являются основой для анализа и распознавания формы объектов в изображении [6, 26, 49]. Процесс преобразования цветных и полутоновых изображений в бинарные называется бинаризацией. Множество преобразований, используемых при бинаризации, весьма многочисленно и разнообразно [6, 49]. К ним относятся всевозможные методы точечных преобразований, свертки, усиления краев, выделения низкочастотных и высокочастотных компонент изображения и т. д. Результатом таких преобразований, в частности, является определение каких-то свойств точек изображения, по которым можно судить о том, принадлежат ли точки объекту или их следует отнести к фону. На основе проверки
16 Гл. 1. ВВЕДЕНИЕ Рис. 1.1. Примеры полутоновых изображений (вверху) и полученных на основе их обработки бинарных изображений (внизу) выполнения этих свойств для всех точек изображения и создается, в конечном счете, бинарное двухцветное растровое изображение, в котором черные точки соответствуют объекту, а белые — фону. Заметим, что в явном виде построение такого бинарного изображения может и не осуществляться, но неявно оно обязательно присутствует и, в принципе, выделенный таким образом набор свойств объекта может быть визуализирован в виде черно-белого изображения. Способы построения бинарных изображений выходят за рамки этой книги. Для нас существенно, что задача анализа формы объекта в изображении возникает после того, как этот объект выделен, т.е. определены те точки цифрового изображения, которые относятся к объекту. Поэтому мы рассматриваем бинарное изображение в качестве исходного материала для анализа формы. 1.2. Принципы непрерывного подхода Несмотря на то, что изображение, представленное в виде матрицы точек, является чрезвычайно удобным для ввода, запоминания, обработки в компьютере, человеку привычнее и проще при описании формы объектов оперировать геометрическими понятиями. Простые геометрические фигуры, такие как многоугольники, круги, а также более сложные фигуры, например, ограниченные сплайновыми кривыми, однозначно понимаются всеми, имеют ясное математическое описание и могут быть легко использованы для представления и преобразования формы объектов. В то же время, описать какую-либо форму, например, круг или многоугольник, в терминах матрицы точек представляется намного более трудной задачей. Поэтому использование непрерывных моделей существенно упрощает создание алгоритмов анализа, классификации, преобразования формы объектов. Непрерывное описание ы
1.2. ПРИНЦИПЫ НЕПРЕРЫВНОГО ПОДХОДА 17 формы соответствует интуитивному представлению человека о «сплошном» объекте, например, нарисованном краской на бумаге с помощью кисти. Изображение может быть при этом достаточно сложным в том смысле, что оно состоит из большого числа отдельных пятен, каждое из которых может иметь, в свою очередь, внутренние отверстия. Такое различие в человеческом и машинном описании формы ставит разработчика алгоритмов анализа изображений перед дилеммой. Можно использовать дискртеное описание формы объекта в виде матрицы точек, рассчитывая на простоту компьютерной обработки таких данных. Но при этом нужно потратить большие усилия на то, чтобы переформулировать человеческие геометрические правила и алгоритмы описания, сравнения, преобразования формы объектов в операции над такими матрицами. Сложность такой алгоритмизации может оказаться значительной и с лихвой перекрыть выигрыш от простоты операций над матричными изображениями. Другой путь состоит в преобразовании формы объектов из дискретного представления в виде матрицы точек в какую-либо непрерывную модель с тем, чтобы выполнять операции с формами в терминах, адекватных пониманию и опыту человека. В этом случае затраты на построение непрерывной модели достаточно высоки, но зато существенно упрощается создание алгоритмов анализа, сравнения и преобразования формы объектов, представленных на изображении. Эти два похода, условно названные нами дискретным и непрерывным, являют собой крайние позиции, между которыми могут существовать, смешанные варианты: та или иная часть обработки выполняется над матричным изображением, а затем можно осуществить переход к непрерывным формам. Подход, который развивается в этой книге, занимает крайнюю «непрерывную» позицию в этом диапазоне. Он основан на идее как можно более раннего перехода от дискретного изображения формы к непрерывному аналогу. Предполагается, что на дискретном «матричном» уровне обработки должна быть решена лишь задача собственно бинаризации — выделения объекта интереса на изображении. Результатом такого выделения является бинарное изображение, в котором точки объекта имеют один цвет, а точки фона — другой (для определенности черный и белый соответственно). После этого предлагается по бинарному изображению немедленно построить непрерывное описание формы выделенных объектов. Такой переход от матричного представления к непрерывной модели будем называть дискретно- непрерывным преобразованием формы изображения. Дискретно-непрерывное преобразование строит для бинарного изображения, представленного матрицей точек двух цветов, некоторое множество «непрерывных» примитивов, приближенно описывающих это изображение. Непрерывные примитивы — это геометрические фигуры, которые допускают простое аналитическое описание на плоскости — в двумерном евклидовом пространстве. Такое «непрерывное изображе-
18 Гл. 1. ВВЕДЕНИЕ ние» должно быть подобрано достаточно тонко, чтобы адекватно отразить особенности исходного дискретного изображения. Таким образом, в рамках нашего подхода дискретно-непрерывное преобразование представляет собой главный этап обработки изображения, который призван перевести изображение из формата, удобного для компьютерного ввода и хранения, в формат, удобный для человеческого понимания. С точки зрения математики дискретно-непрерывное преобразование представляет собой аппроксимацию некоторого объекта одного класса (заданного черно-белой матрицей) объектом другого класса, обладающего свойством «непрерывности». Иногда подобную аппроксимацию называют сглаживанием. Задача сглаживания функции, имеющей низкую степень регулярности (например, разрывной или не дифференцируемой), состоит в аппроксимации ее другой, более регулярной функцией. При желании можно усмотреть в подборе непрерывного аналога для дискретного изображения именно задачу сглаживания некоторой функции. Важную роль в реализации непрерывного подхода играет выбор класса непрерывных примитивов для аппроксимации формы дискретных объектов. В этой книге в качестве универсальной математической модели для описания формы объектов в изображении мы будем использовать понятие фигуры — замкнутой ограниченной области, граница которой состоит из конечного числа непересекающихся жордановых кривых. Такое описание вполне соответствует вербальному определению понятия формы из словаря русского языка: «внешние очертания, наружный вид предмета» [23]. Действительно, замкнутая ограниченная область имеет четко выраженные внешние очертания в виде границы, имеет внутреннюю часть, состоящую из всех внутренних точек области. Эта внутренняя часть отделена границей от внешнего окружающего пространства. И при этом «внешние очертания» могут иметь как очень простой, так и самый замысловатый и сложный вид. Способность компьютера быстро оперировать с объектами, описываемыми замкнутыми областями, определяется тем, насколько удобно представлены эти области в числовом виде. Именно от формата представления объектов зависит скорость обработки информации в компьютере. А от скорости обработки, в свою очередь, зависит, можно ли решать задачу в реальном масштабе времени, обрабатывая, например, в секунду 5-10 кадров, снятых видеокамерой, либо на обработку одного кадра понадобится несколько минут. Соответственно, область применимости алгоритмов в системах анализа изображений принципиально меняется. Поэтому способам представления объектов в виде непрерывных моделей в книге уделено особое внимание. Предлагаемый подход состоит в использовании трех различных способов непрерывного представления фигур: граничного, скелетного и циркулярного (рис. 1.2). Граничное представление фигуры состоит в описании границы в виде замкнутых кривых линий конечной длины. Граница однозначно определяет замкнутую область и, вместе с тем, хорошо характеризует ее внешние очертания, т. е. форму. Важную роль в таком представлении играет выбор способа численного описания границ области. Для
1.2. ПРИНЦИПЫ НЕПРЕРЫВНОГО ПОДХОДА 19 а) б) в) г) д) е) Рис. 1.2. Непрерывный подход к описанию формы бинарного изображения: дискретное бинарное изображение (а), полигональная аппроксимация границы (б), аппроксимация границы сплайнами (в), скелет многоугольной фигуры (г), регуляризация скелета (д), циркулярная фигура (е) этого мы используем многоугольники, а также замкнутые сплайновые линии — составные кривые Безье. Скелет замкнутой области, составляющий основу скелетного представления фигуры, — это множество точек, являющихся центрами максимальных окружностей, вписанных в эту область. Скелет фигуры представляет собой плоский граф, структура которого очень хорошо отражает особенности формы объекта. Дополнительную информацию для анализа формы дает радиальная функция скелета, которая ставит в соответствие каждой его точке радиус максимальной вписанной окружности с центром в этой точке. Описание скелета и радиальной функции составляет скелетное представление фигуры. Циркулярное представление фигуры основывается на использовании однопараметрических семейств окружностей. При этом центры окружностей заполняют гладкие линии конечной длины, а радиус окружности является гладкой функцией параметра семейства. Циркулярное представление замкнутой области является развитием понятия скелета и дает возможность не только анализировать форму объекта, но и осуществлять ее преобразования. Потребность в таких преобразованиях возникает в задачах сравнения формы гибких объектов и в задачах синтеза новых форм на основе преобразования имеющихся эталонов.
20 Гл. 1. ВВЕДЕНИЕ 1.3. История вопроса Содержательно понятия границы и скелета объекта давно и широко используются в качестве базовых инструментов анализа формы изображений. Граница, как основной дескриптор формы, является наиболее понятным и естественным инструментом для ее анализа. Вычисление границ в бинарном изображении никаких особых трудностей не вызывает. Обычно это множество точек объекта, имеющих соседние точки, не принадлежащие объекту. Соединив эти граничные точки, получаем многоугольники, описывающие контуры границы. Зная границу, можно вычислить периметр, площадь, выпуклую оболочку фигуры, ее топологическую структуру (количество дыр), определить характер края (сильно или слабо извилистый) и т.п. Скелет является более сложной конструкцией, получение и использование которой требует решения гораздо более сложных задач. На протяжении сорока лет с момента выхода в свет первой работы по скелетам [28], показывающей широкие возможности их использования при анализе и распознавании изображений, опубликованы сотни статей по методам построения скелетов и их применениям в алгоритмах обработки изображений. Однако сам факт такого большого числа публикаций свидетельствует о том, что получить совершенные алгоритмы скелетизации, пригодные для любых реальных цифровых изображений, пока не удается. Изначально определение скелета было сформулировано в непрерывном виде для замкнутых областей с непрерывной границей на евклидовой плоскости [28]. Естественно, что сразу же возник вопрос об адаптации этого понятия к растровым изображениям. Однако такая адаптация столкнулась с серьезными трудностями. Первая фундаментальная проблема состоит в том, что для непосредственного использования понятий непрерывной геометрии в анализе дискретных изображений требуется корректно решить задачу аппроксимации границы дискретного объекта непрерывными линиями. Однако, несмотря на кажущуюся простоту, сделать это не всегда удается. В частности, упомянутый выше традиционный «наивный» способ представления границы бинарного изображения многоугольниками с вершинами во всех граничных точках не является корректным, поскольку полученная замкнутая линия не обязательно будет простым многоугольником. Оказывается, вообще невозможно математически корректно определить понятие границы изображения в терминах дискретной матрицы таким образом, чтобы сохранить адекватность с непрерывным аналогом. Причина этого состоит в невыполнении теоремы Жордана для линий на растре. Если считать, что в дискретной матрице, описывающей изображение, линия представляет собой цепочку смежных пикселей, то оказывается, что замкнутая растровая линия, вообще говоря, не всегда делит дискретную плоскость на два связных множества, для которых она является границей. Поэтому наивный
1.3. ИСТОРИЯ ВОПРОСА 21 подход к непрерывной аппроксимации границы изображений не дает хорошего геометрического описания формы. В частности, полученная таким образом граница может иметь самопересечения. Появление самопересечений сильно усложняет интерпретацию моделей формы, свидетельствует об их неадекватности. Вторая проблема состоит в том, что не для всяких замкнутых областей, ограниченных жордановыми кривыми, существуют эффективные алгоритмы построения скелетов. Вычислительная геометрия предоставляет эффективные алгоритмы построения скелетов только для фигур, ограниченных простыми многоугольниками [37, 39]. Скелети- зация фигур с нелинейной границей требует слишком больших затрат времени. Возникает необходимость сведения сложных многосвязных объектов с криволинейными границами к более простым фигурам с кусочно-линейными границами, для которых существуют эффективные алгоритмы скелетизации. Необходимо построить такую полигональную аппроксимацию объектов бинарного изображения, чтобы все многоугольники были простыми и не имели пересечений друг с другом. Выполнить это требование в сложных изображениях не так-то просто. Следует также отметить, что, несмотря на доказанное существование эффективных алгоритмов построения скелета сложной многосвязной фигуры, практическая разработка таких алгоритмов также является непростой задачей. Наконец, существует еще одна проблема, связанная с интерпретацией полученного скелета аппроксимирующей многоугольной фигуры. Чем точнее аппроксимирует многоугольник границу фигуры, тем больше у него вершин и, соответственно, тем больше в его скелете шумовых ребер, не несущих никакой информации о форме объекта. По-видимому, эти трудности привели к тому, что большинство известных решений задачи скелетизации бинарных изображений не использует мощных и элегантных методов вычислительной геометрии. Несмотря на большое число работ по скелетизации, до настоящего времени нам не известны другие примеры успешной реализации чисто непрерывного подхода, являющегося наиболее приближенным к геометрическому решению (непрерывная граница + непрерывный скелет). Нерешенные проблемы непрерывного подхода привели к тому, что наибольшее распространение получили прагматические методы, основанные на чисто дискретном подходе (дискретная граница + дискретный скелет) [6, 29, 31, 49]. Дискретные методы не претендуют на полную адекватность с непрерывным аналогом, хотя и стремятся эту аналогию поддержать. В рамках дискретного подхода, как само собой разумеющееся, граница изображения определяется как множество точек объекта, имеющих соседние точки фона. А для скелета строгих определений вообще не предлагается. Обычно под скелетом понимается результат некоторого процесса преобразования изображения, например, так называемого утончения за счет перекрашивания граничных пикселей. Всякий дискретный аналог корректной непрерывной модели хорошо работает «в пределе», т.е. в тех случаях, когда шаг дискретизации
22 Гл. 1. ВВЕДЕНИЕ очень мал. Применительно к изображениям шаг дискретизации выражается в размерах пикселей. В изображениях с высоким разрешением, где размеры объектов в сотни раз превосходят размер пикселя, дискретные границы и скелеты часто оказываются вполне пригодными для анализа формы. Но в изображениях с низким разрешением их использование оказывается неприемлемым. Недостатки дискретного подхода, служащие постоянным мотивом для его развития, отмечаются во многих работах. Дискретная граница в ряде случаев не позволяет определить топологическую структуру объекта — количество и вложенность граничных контуров, особенно для изображений с низким разрешением. Дискретные скелеты, полученные методом утончения, не являются серединными осями в евклидовой метрике, а скелеты, полученные с помощью так называемой дистанционной карты, оказываются не гомотопными исходному изображению, поскольку имеют другую связность. Кроме этих недостатков, отметим еще одно важное обстоятельство. Дискретные границы и скелеты описываются в форме нового дискретного изображения, являющегося результатом преобразования исходного изображения. Для того чтобы решать задачи анализа, распознавания, сравнения и преобразования формы, требуется создание новых, часто нетривиальных алгоритмов обработки полученных изображений границ и скелетов. Например, для дискретных границ нужно «вытянуть» граничные пиксели в цепочки, т. е. упорядочить пиксели и образовать из них растровые линии. Нужно определить, какие линии задают внешние, а какие внутренние границы объектов. В скелете нужно выделить графовую структуру, т. е. найти пиксели — вершины графа и найти растровые линии, описывающие его ребра и т.п. Кроме «чистого» дискретного подхода известны также варианты комбинированного промежуточного решения (дискретная граница + непрерывный скелет) [9, 46]. Метод [46] состоит в построении диаграммы Вороного для множества граничных точек изображения. Непосредственно в качестве скелета рассматривается некоторый подграф диаграммы Вороного, получаемый на основе процедуры регуляризации. Достоинство метода состоит в том, что полученный скелет является непрерывным, соответствует евклидовой метрике, имеет радиальную функцию, что определяет его полезность для анализа формы изображений. Второе важное достоинство этого метода состоит в его высокой скорости за счет использования эффективных алгоритмов вычислительной геометрии для построения диаграмм Вороного большой размерности. Недостатками метода являются отсутствие строгого определения понятия скелета, а также нерегулярность, зигзагообразность ветвей скелета. В методе [9] получается скелет в неевклидовой метрике и с нарушениями связности. Следует отметить еще одну проблему, которую нужно решать при анализе формы изображений. Она связана с высокой чувствительностью границ и скелетов к шумовым эффектам в изображении. Небольшие изменения границы области могут привести к существенным изменениям топологической структуры скелета. Это приводит к тому,
1.4. СТРУКТУРА КНИГИ 23 что для объектов, имеющих на взгляд человека очень высокую степень сходства, компьютерные алгоритмы строят весьма отличающиеся скелеты. Для того чтобы выделить в форме устойчивые свойства, инвариантные к шумовым эффектам, разрабатываются различные методы регуляризации границ [44, 52] и скелетов [27] для улучшения их свойств. Нужно сказать, что регуляризация необходима для всех скелетов, как непрерывных, так и дискретных. Вопрос состоит в том, насколько корректно ставится задача регуляризации и насколько удобно регуляризировать скелеты. Анализ работ по регуляризации дискретных скелетов показывает, что применяемые здесь методы, как правило, используют эвристические приемы и не имеют строгого математического обоснования. 1.4. Структура книги Основной нашей целью является обоснование того, что полномасштабная реализация чисто непрерывного подхода к описанию формы изображений возможна и достижима. В книге описывается вариант полномасштабной реализации непрерывного подхода, включая построение корректных непрерывных границ и скелетов, строгих критериев их регуляризации. Кроме этого, предлагается циркулярный способ описания формы, близкий к скелетному графу, но ориентированный не только на анализ формы, но и на ее преобразование. Для обоснования практической реализуемости и полезности непрерывного подхода в книгу включены примеры решения практических задач с помощью описанных методов. Практическая реализация позволила также оценить скорость работы непрерывных алгоритмов и показать, что она на порядок и более превосходит быстродействие дискретных алгоритмов даже в варианте их параллельной реализации на графическом процессоре. В соответствии с этим построена структура книги. Первая часть «Формы и фигуры» посвящена анализу методов представления формы в изображениях. В ней описываются дискретные и непрерывные модели формы изображений. Дискретной моделью формы является дискретная фигура — связное множество точек растровой решетки. Связность определяется при этом в соответствии с выбранной структурой соседства пикселей в изображении. Непрерывная модель формы — это непрерывная фигура, представляющая собой замкнутую область с границей, состоящей из жордановых кривых. Демонстрируются возможности дискретного подхода и его недостатки. Во второй части «Фигуры и границы» рассматривается задача получения непрерывных границ дискретных фигур. В основе решения лежит модель, включающая понятия граничного коридора дискретной фигуры и аппроксимирующего многоугольника, лежащего внутри граничного коридора. В качестве аппроксимирующего многоугольника выбрана замкнутая линия, разделяющая точки объекта и точки фона и имеющая минимальную длину, — так называемый минимальный
24 Гл. 1. ВВЕДЕНИЕ разделяющий многоугольник. Показана единственность этого объекта для заданной структуры соседста точек квадратичной решетки. Описываются методы построения граничных коридоров и аппроксимирующих многоугольников для бинарных изображений любой сложности. Описан метод построения границы в виде замкнутых составных кривых Безье на основе аппроксимации многоугольников. Третья часть «Границы и скелеты» описывает методы построения скелетов для многосвязных многоугольных фигур. Предложен эффективный алгоритм, основанный на построении графа смежности сторон и вершин многоугольников, составляющих границу фигуры. Этот граф, имеющий прямые аналогии с триангуляцией Делоне, назван графом смежности многоугольной фигуры. Смежными сторонами и вершинами многоугольной фигуры считаются такие, которые имеют общую касательную окружность, вписанную в фигуру. Задача скелетизации многосвязной фигуры, имеющей несколько граничных многоугольников, сводится к известной задаче скелетизации простого многоугольника за счет построения дерева смежности граничных контуров. Здесь же описывается метод регуляризации полученного скелета, основанный на строгом критерии сходства фигур в хаусдорфовой метрике. Четвертая часть «Скелеты и циркуляры» посвящена описанию нового представления формы в виде так называемой циркулярной фигуры, для краткости, циркуляра. Циркуляр представляет собой объединение конечного числа жирных линий, которые, в свою очередь, определяются как семейства окружностей с центрами на гладких кривых и гладкой радиальной функцией. Циркуляр представляет собой обобщение понятия скелета, однако обладает дополнительными свойствами, дающими возможность преобразования формы изображений. Предложен метод построения циркуляров на основе скелетов, а также методы преобразования формы дискретных фигур на основе их циркулярного представления. Наконец, пятая часть «Прикладные задачи» описывает приложения непрерывного подхода к решению практических задач анализа, сравнения и преобразования формы изображений. Рассматриваются задачи разработки компьютерных шрифтов, распознавания сканированных текстов, биометрической идентификации личности, компьютерной графики, геоинформационных технологий. Здесь же приводятся экспериментальные данные по результатам сравнения предлагаемых методов с известными решениями с точки зрения вычислительной эффективности.
ЧАСТЬ I ФОРМЫ И ФИГУРЫ ГЛАВА 2 НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ 2.1. Содержательное понятие формы. 2.2. Фигура как модель формы. 2.3. Граничное представление фигуры. 2.4. Скелетное представление фигуры. 2.5. Характеристические свойства скелета. 2.6. Вычисление и регуляризация скелета. 2.1. Содержательное понятие формы Восприятие и последующая обработка электронных волн зрительной системой — базовая функция в деятельности живых существ в их взаимодействии с окружающей средой. В результате длительной эволюции развились зрительные системы, которые могут регистрировать резкие изменения яркости и цвета в световых потоках, характерные для границ, отделяющих объекты от окружающего пространства и других объектов. Разнообразная геометрия граничных линий объектов, видимо, привела к человеческому понятию формы. Точного однозначного определения понятия формы нет. Это понятие из тех, которые являются базовыми, легко понимаются всеми, но формулируются немногими и с большим трудом. Обычно формулировки имеют вид метафор через сходство (круглый как луна, извилистый как змея, кольцеобразный, в форме верблюда и т.д.) Для человеческого общения точная формулировка понятия формы не очень востребована, но для алгоритмов анализа и распознавания изображений строгие определения всех понятий необходимы. Поэтому определение формы должно быть сформулировано в виде общих математических моделей. Адекватность этих моделей, определяемая как непротиворечивость практическому опыту человека, служит подтверждением правильности сформулированного понятия в тех границах, в которых этот опыт имеется. Абстрагируясь от конкретных физических свойств объекта, человек обычно представляет его форму в виде сплошного пространственного тела в трехмерном пространстве либо в виде плоского объекта с непрерывной границей в двумерном пространстве. Поскольку картины трехмерного мира воспринимаются через двумерные проекции на сетчатку глаза, да и с.истемы машинного зрения также регистрируют
26 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ изображения в виде двумерных картин, первичной является именно двумерная модель формы. Трехмерные модели реконструируются впоследствии человеческим либо машинным интеллектом на основе двумерных проекций. Среди многочисленных содержательных понятий слова «форма» в словаре русского языка приводится одно, наиболее подходящее для использования его при выборе математической модели. Форма — это внешние очертания, наружный вид предмета [23]. В этом же словаре приводятся значения близкого по смыслу термина «фигура». Фигура — внешнее очертание, форма чего-либо. Там же для слова фигура указан еще один вариант с пометкой «математический термин» — это часть плоскости, ограниченная замкнутой линией. Эти значения слов фигура и форма вполне могут быть положены в основу математической модели понятия формы для использования в системах обработки и анализа изображений. 2.2. Фигура как модель формы Наиболее распространенные и доступные математические модели формы объектов реального мира дает евклидова геометрия. Геометрические фигуры на плоскости и тела в пространстве, изученные еще в школе, предоставляют общий язык для описания формы окружающих объектов и инженерам, и художникам, и домохозяйкам. Сама по себе потребность людей использовать некоторый понятийный аппарат для определения формы предметов окружающей действительности явилась, по-видимому, одним из важных источников для создания и развития геометрии в древности. Однако строгие геометрические очертания многоугольников, окружностей, параллелограммов или трапеций не исчерпывают всего многообразия форм, которые выделяет и классифицирует человеческий глаз. Силуэт человека, кленовые или дубовые листья, военный или пассажирский самолеты — эти и другие изображения легко воспринимаются человеком как объекты определенной формы, присущей именно им и отличающей их от других объектов. Для описания всего множества плоских «сплошных» форм требуется более широкое общее определение. С этой точки зрения приемлемой общей математической моделью представляется понятие фигуры. Понятие фигуры, ключевое для описания моделей формы, мы сформулируем более расширительно по сравнению с упоминавшимся определением из словаря русского языка. Все определения даются применительно к евклидовой плоскости R2. Определение 2.1. Жордановой кривой называется образ окружности при непрерывном инъективном ее отображении в евклидову плоскость [20]. Отображение инъективно, если любые две различные точки прообраза отображаются в две различные точки образа.
2.2. ФИГУРА КАК МОДЕЛЬ ФОРМЫ 27 Определение 2.2. Фигурой называется связная замкнутая область на плоскости, ограниченная конечным числом непересекающихся жор- дановых кривых. Будем использовать следующие обозначения. Пусть R2 — евклидова плоскость с расстоянием d(p,q) между точками р, q £ R2. Фигура А — это некоторое точечное множество на плоскости R2. Граница фигуры определяется как множество точек дА={р: ре i?2,Vr>0, Sr{p) П Α φ 0 и Sr{p) П Ά φ 0}, где Sr(p) = {q: q G R2, d(p,q) < r] — открытый круг радиуса г с центром в точке р, А = R2\A — дополнение фигуры А в пространстве R2. Внутренностью фигуры называется множество А = А\дА, состоящее из внутренних точек фигуры. Таким образом, фигура в нашем понимании — это связная часть плоскости, ограниченная одной или несколькими замкнутыми линиями. Под это определение подходят сплошные объекты с конечным числом дыр. С одной стороны, разнообразие этих объектов неисчерпаемо, а с другой, существует несколько способов их конструктивного и ясного математического описания. Поэтому математическую модель фигуры мы выберем в качестве базовой для представления понятия формы. Фигура представляет собой замкнутую ограниченную область. Как известно, областью на евклидовой плоскости называется непустое связное открытое множество точек. Замкнутой областью называется замыкание области, т. е. минимальное замкнутое множество, содержащее область. Другими словами замкнутая область — это объединение некоторой области (открытой) и всех ее предельных точек. Область называется ограниченной, если она содержится целиком в некотором прямоугольнике. Не всякая ограниченная замкнутая область является фигурой в смысле определения 2.2. В примере на рис. 2.1 изображены замкнутые области, представляющие собой квадрат с треугольным отверстием. Рис. 2.1. Замкнутые области: слева — фигура, справа — нет На левом рисунке треугольник целиком лежит внутри квадрата, а на правом одна из вершин треугольника лежит на границе квадрата. Замкнутая область, изображенная слева, является фигурой, поскольку имеет границу, состоящую из двух непересекающихся жордановых кривых. А замкнутая область справа не является фигурой. Если
28 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ рассматривать ее границу как один замкнутый контур, то эта линия не является жордановой кривой, поскольку имеет самопересечение. А если считать, что граница этой области состоит из двух линий без самопересечений (квадрат и треугольник), то эти кривые пересекаются друг с другом. Теоретически фигура как любое множество точек может быть описана своей индикаторной функцией х(х,у), принимающей значение 1 в точках, принадлежащих множеству, и 0 в остальных точках. Например, таким способом описываются в географии территории, на которых высота рельефа местности над уровнем моря лежит в определенных пределах. Высота рельефа задается, как функция h(xyy) координат точки, а искомая территория описывается условием h\ ^ h(x,y) ^ /i2- Эта территория представляет собой одну или несколько фигур, задаваемых индикаторной функцией U V) = {X ПРИ hl ^ h(x>v) ^ h*> ^ ' [0 в противном случае. Однако описание фигур индикаторными функциями является неявным, плохо подходит для анализа формы объектов. Гораздо более полезным представляется явное описание двумерных фигур с помощью одномерных множеств точек: границ и скелетов. 2.3. Граничное представление фигуры Точка фигуры называется граничной, если в любой ее окрестности находятся точки, не принадлежащие фигуре. Границей фигуры называется множество всех ее граничных точек. Согласно нашему определению граница фигуры состоит из жордановых кривых, определяющих фигуру. Каждая такая кривая — это линия без самопересечений, образующая замкнутый контур. Если в границе фигуры всего один такой контур, то фигура является односвязной, т.е. в нее входят все точки, лежащие внутри этого контура. Если количество контуров, составляющих границу, больше одного, то фигура является многосвязной. В этом случае один контур описывает внешнюю границу фигуры, а остальные контуры (один или более) описывают границы внутренних отверстий фигуры. Многосвязную фигуру будем также называть фигурой с дырами. Заметим, что в соответствии с нашим определением фигурой не является изолированная точка, а также линия. Это вполне соответствует представлению реальных изображений на бумаге, холсте или экране: при достаточном увеличении все тонкие линии превращаются в полосы заметной ширины. Согласно определению жордановой кривой, представляющей собой гомеоморфный образ окружности, все входящие в нее точки могут быть
2.3. ГРАНИЧНОЕ ПРЕДСТАВЛЕНИЕ ФИГУРЫ 29 описаны в виде множества V(t) = (x(t),y(t)), t€[0,T\, (2.1) где x(t) и y(t) — непрерывные функции. Условие того, что линия (2.1) является замкнутой, есть V(0) = V(T). А условие отсутствия самопересечений формально записывается так: для всех U € (0,Т), t2 € [О,Τ], U φ t2 имеет место V(U) φ V{t2). Описание (2.1) задает упорядоченность точек каждого контура границы: точки обходятся в соответствии с ростом параметра t. Упорядоченность точек в контуре связана с ориентацией контура, которая может иметь два разных значения — положительное (против часовой стрелки) и отрицательное (по часовой стрелке). Для того чтобы различать внешние и внутренние контуры фигур, будем считать, что направление в контуре выбирается таким образом, чтобы сама фигура находилась слева от линии границы. Это значит, что внешний контур границы имеет положительную ориентацию, а внутренние контуры — отрицательную. Непосредственное описание граничных линий фигуры вовсе не обязательно должно включать в явном виде уравнения кривых (2.1). Например, в том случае, когда линия представляет собой многоугольник, достаточно перечислить его вершины Vo, V\,..., Vn, где Vo = Vn. Тогда явное описание границы может быть получено в виде кусочно- линейной функции параметра £е[0,п], которая на полуинтервалах t G [г, г + 1), г = 0,... , η — 1 принимает значения V{t) = Vi'{i+l-t) + Vi+l.(t-i). Граничное описание фигуры предоставляет много полезной информации для анализа ее формы. Так количество граничных контуров определяет топологию фигуры. В примере (рис. 2.2, а) по размерам и числу граничных контуров фигур можно распознавать кости домино. В примере на рис. 2.2,6 по локальным характеристикам кривизны и гладкости границы можно классифицировать многоугольники и овалы, а) б) в) Рис. 2.2. Классификация фигур по границе по количеству внутренних и внешних контуров нетрудно определять количество отверстий в фигурах. Соотношение между периметром и площадью фигур, которое можно вычислить по известной границе, дает возможность классифицировать фигуры по степени извилистости границы (рис. 2.2, в).
30 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ 2.4. Скелетное представление фигуры Описание фигуры перечислением замкнутых линий, определяющих контуры ее границы, является наиболее естественным и простым. Явное описание границы фигуры дает возможность решить многие задачи классификации фигур, возникающие при анализе формы изображений. Однако этот способ не является единственным и не всегда достаточным для анализа формы фигуры. Существуют различные практические задачи, в которых форма объекта складывается из отдельных протяженных элементов, имеющих вид «широких линий», штрихов и т. п. Примерами являются изображения текста, фигуры человека, узора папиллярных линий на пальце человека (рис. 2.3). а) б) в) г) Рис. 2.3. Фигуры и их граничные представления Для анализа формы объектов такого класса граничное описание является недостаточно информативным. Например, аналитическое описание трех замкнутых контуров границы фигуры, изображенной на рис. 2.3, г, не позволяет увидеть в этих контурах очертания буквы В и отличить его от трех контуров, описывающих букву Ф. А для замкнутых контуров на рис. 2.3, а, б очень непросто определить участки, описывающие руки изображенных людей. Граничное описание папиллярных линий в виде множества контуров на рис. 2.3, β не позволяет анализировать особые точки этих линий: точки слияния папиллярных линий, их концевые точки и т.п. Поэтому для анализа формы подобных фигур возникает необходимость выбора другого, более тонкого способа их описания, который отражает как общую структуру объекта, так и более детальную структуру его элементов. Таким способом описания фигуры в виде одномерных многообразий является плоский граф, называемый скелетом фигуры. Существует
2.4. СКЕЛЕТНОЕ ПРЕДСТАВЛЕНИЕ ФИГУРЫ 31 несколько различных определений скелета. Мы будем пользоваться определением, которое основывается на понятии максимального пустого круга. Определение 2.3. Пустым кругом фигуры А называется замкнутое множество точек Sr(jp) = {q: q G Λ2, d(p,q) ^ г} такое, что Sr(p) С А. Это множество представляет собой круг радиуса г > 0 с центром в точке ρ G R2. Наряду с термином «пустой круг» мы будем использовать также в качестве синонима термин «пустая окружность»', понимая под ним окружность, целиком лежащую в фигуре вместе со своими внутренними точками. В зависимости от контекста под окружностью будем понимать либо линию, либо замкнутую область, ограниченную этой линией. Согласно определению 2.3 граничные точки фигуры не могут лежать внутри пустого круга. Именно в этом смысле он называется пустым — он не содержит в себе граничных точек фигуры. Пустой круг целиком лежит в фигуре. Частным случаем пустого круга является любая точка фигуры ρ G А, рассматриваемая как окружность нулевого радиуса p = So{p). Такие пустые круги будем называть вырожденными. Очевидно, что множество всех пустых кругов покрывает фигуру, а их объединение совпадает с этой фигурой. На множестве пустых кругов естественным образом задается отношение частичного порядка: круг Sr(p) больше круга St(q), если St(q) С Sr(p), т.е. первый круг накрывает второй. Для такого отношения порядка существуют максимальные элементы, называемые максимальными пустыми кругами. Определение 2.4. Максимальным пустым кругом называется пустой круг, который не содержится ни в каком другом пустом круге. Максимальные пустые круги фигуры будем также называть вписанными кругами. Если невырожденный пустой круг не имеет общих точек с границей фигуры (рис. 2.4, а) или имеет всего одну общую точку (рис. 2.4,6), то он не является максимальным, поскольку в этих случаях существуют а) 6) в) Рис. 2.4. Пустые круги фигуры другие пустые круги, его объемлющие. Поэтому для невырожденного максимального пустого круга характерно касание границы фигуры не менее чем в двух точках (рис. 2.4, в). Вырожденные круги с центрами
32 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ а) б) в) Рис. 2.5. Фигура и ее граница (а), примеры максимальных пустых кругов (б), скелет фигуры (в) в выпуклых угловых вершинах фигуры являются максимальными пустыми кругами, поскольку не содержатся в других пустых кругах. На рис. 2.5,6 представлены примеры максимальных пустых кругов. Круги А и В - вырожденные, они имеют нулевой радиус. Их центры — это точки излома границы фигуры. Круги С и D имеют с границей бесконечное множество общих точек, поскольку граница фигуры в данном примере содержит дуги окружностей. Круги Ε и F имеют по три общих точки с границей фигуры. Остальные круги (?, Я, I касаются границы в двух точках. Определение 2.5. Скелетом фигуры называется множество центров всех ее максимальных пустых кругов. Скелет можно рассматривать как плоский граф (рис. 2.5, в), вершинами которого являются центры максимальных пустых кругов, имеющих либо одну общую точку с границей, либо три и более общих точки. А ребра графа представляют собой линии, которые состоят из центров тех пустых кругов, которые касаются границы фигуры ровно в двух точках. По этой причине ребра скелета называют также серединными осями фигуры. Таким образом, скелет фигуры, как и ее граница, является одномерным многообразием. Но в отличие от границы это многообразие имеет более сложную структуру — это не набор замкнутых линий без самопересечений, а связный плоский граф. Скелет является весьма удобным и информативным инструментом для анализа топологических и метрических свойств фигуры, для исследования ее структуры. При этом он несет информацию, которую достаточно сложно было бы извлечь из граничного описания фигуры. В примере на рис. 2.6 приведены скелеты фигур, изображенных на рис. 2.3. Как нетрудно увидеть, из скелетов человеческих фигур можно понять положение конечностей, жесты. Из скелета папиллярного узора легко выделить отдельные папиллярные линии, найти точки их соединения и концевые точки. Скелеты букв В и Φ имеют существенные
2.5. «ПОЖАР В ПРЕРИИ» И ДИСТАНЦИОННАЯ ФУНКЦИЯ 33 а) б) в) г) Рис. 2.6. Скелеты фигур топологические различия, в то время как контурные описания их топологически одинаковы (фигуры с двумя дырами). Поскольку скелет конструируется на основании множества кругов, вписанных в фигуру, с каждой точкой скелета можно связать «ширину» фигуры в этой точке. Определение 2.6. Будем называть радиальной функцией точки скелета величину радиуса максимального пустого круга с центром в этой точке. Скелет фигуры вместе со своей радиальной функцией однозначно задает все множество максимальных пустых кругов фигуры. А объединение этого множества кругов, как отмечалось выше, совпадает с самой фигурой. Таким образом, скелет с радиальной функцией является представлением фигуры, эквивалентным как ее описанию с помощью индикаторной функции, так и граничному описанию. Замечательные свойства скелетов обусловили широкое их применение для анализа формы изображений в распознавании образов, компьютерной графике и визуализации, сжатии видеоинформации и т.п. 2.5. «Пожар в прерии» и дистанционная функция Рассмотрим некоторые характеристические свойства скелета, которые могут быть положены в основу определения скелета и использованы в алгоритмах скелетизации. Часто в качестве скелета рассматривают множество серединных осей фигуры. Назовем точку фигуры симметрической, если она имеет две или более ближайших точки на границе фигуры. Множество всех симметрических точек называется серединными осями фигуры. Нетрудно понять, что каждая симметрическая точка есть центр максимального пустого круга и поэтому принадлежит скелету. Однако центры вырожденных максимальных пустых кругов хоть и принадлежат скелету, но не являются симметрическими, следовательно, не принадлежат серединным осям. Они и определяют различие между скелетом и множеством серединных осей. Но эти точки являются предельными точками для серединных осей. Поэтому, если ими пополнить
34 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ серединные оси, рассмотрев замыкание серединных осей, то полученное множество точек действительно совпадет со скелетом. Таким образом, правильным альтернативным определением скелета является следующее: скелет фигуры есть замыкание ее серединных осей. Еще одно определение использует физическую модель, основанную на метафоре «пожара в прерии». Построение скелета непрерывной фигуры может быть наглядно интерпретировано в виде процесса распространения огня при «выгорании» фигуры. Представим себе, что вдоль всей границы фигуры одновременно загорается огонь и постепенно сжигает всю фигуру, двигаясь от границы внутрь фигуры. Если предположить, что огонь распространяется с постоянной скоростью по всем направлениям, то от границы внутрь фигуры будет перемещаться огненный фронт (рис. 2.7). Рис. 2.7. «Пожар в прерии» и образование скелета Рассмотрим точки «угасания огня», т.е. те точки внутри фигуры, в которых происходит встреча нескольких (двух или более) огненных фронтов. Огонь приходит в эти точки одновременно с нескольких направлений и гаснет по причине того, что здесь больше нечему гореть. Каждая такая точка, в силу постоянной и одинаковой скорости распространения огня, одинаково удалена от начального положения фронтов, т. е. от граничных точек, в которых зародился огонь. С другой стороны, эти граничные точки являются ближайшими к ней точками границы. Следовательно, точки угасания лежат на серединных осях фигуры. Нетрудно понять, что множество точек «угасания огня» просто совпадает с серединными осями. Поэтому замыкание множества точек угасания огня совпадает со скелетом фигуры. Таким образом, метафора «пожара в прерии» дает определение скелета через физическую модель: это замыкание множества точек угасания огня. Еще одно определение скелета основывается на понятии дистанционной функции фигуры. Дистанционная функция для каждой внутренней точки фигуры задает «глубину» ее расположения относительно границы, равную расстоянию от этой точки до границы фигуры.
2.5. «ПОЖАР В ПРЕРИИ» И ДИСТАНЦИОННАЯ ФУНКЦИЯ 35 а) б) Рис. 2.8. Дифференцируемость дистанционной функции в несимметрических точках фигуры Пусть Ρ — внутренняя точка фигуры, а Р\ — ближайшая к ней точка на границе фигуры. Рассмотрим сначала случай, когда ближайшая точка Р\ единственная, т. е. точка Ρ не является симметрической (рис. 2.8). Введем ортогональную систему декартовых координат с началом в точке Pi. Направление оси ординат Υ 'выберем вдоль прямой Р\Р. Если граница фигуры в точке Р\ гладкая, то ось абсцисс X является касательной к границе фигуры в точке Р\ (рис.. 2.8; а). Если же Р\ — точка излома границы, то ось абсцисс является опорной прямой в точке Р\. Это значит, что в некоторой окрестности Р\ граница лежит не выше оси абсцисс (рис. 2.8,6). Значение дистанционной функции f(P) в точке Ρ равно длине отрезка РР\ т.е. /(Р) = \РР\\. Пусть е = (ех, еу) — некоторый вектор единичной длины в выбранной системе координат и точка Q = Ρ + Хе лежит внутри фигуры и имеет ближайшую точку на границе Q\ т.е. f(Q) = |QQi|. Если граница в точке Р\ является гладкой, то для достаточно малых значений λ имеем f(Q) = /(Ρ) + Хеу + о(Хех). Если же Р\ — точка излома, то Q\ = Р\ и f(Q) = /(Ρ) + Хеу. Следовательно, существует производная дистанционной функции по направлению этого вектора %=ш1^±м^т=еу. (2.2) де λ-+ο λ у Таким образом, дистанционная функция дифференцируема во всех внутренних несимметрических точках фигуры. Если же точка Ρ является симметрической, то дистанционная функция в ней не дифференцируема. Действительно, пусть Р\ и Р2 — две ближайшие к Ρ точки границы. Рассмотрим вектор е, ортогональный к биссектрисе угла ΔΡ\ΡΡ<ι (рис. 2.9). Рассмотрим точки Q\ = = Ρ + Хе и Q2 = Ρ — Хе при достаточно малом значении λ. Обе они являются несимметрическими. При этом производные дистанционной
36 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ Рис. 2.9. Недифференцируемость дистанционной функции в симметрических точках фигуры функции по направлению е в этих точках имеют разные знаки. В примере на рис. 2.8 У > 0, Jy2) < 0. При стремлении λ к нулю получаем, что в точке Ρ значения левой и правой производных по направлению е не совпадают. Значит дистанционная функция в Ρ не дифференцируема. Получаем, что в тех точках внутри фигуры, которые не принадлежат серединным осям, дистанционная функция имеет производную, а в точках, лежащих на серединных осях, имеет место нарушение регулярности дистанционной функции. Примерный вид дистанционной функции представлен на рис. 2.10. Она имеет вид поверхности, образующей «купол» над фигурой. На границе фигуры купол лежит на плоскости, его края склеиваются с границей фигуры. Почти во всех точках поверхность гладкая, но в некоторых местах она перегибается, образуя ребра. Это происходит над точками серединных осей. В целом D< а) б) Рис. 2.10. Четырехугольник и его скелет (слева), дистанционная функция четырехугольника (справа)
2.6. ВЫЧИСЛЕНИЕ И РЕГУЛЯРИЗАЦИЯ СКЕЛЕТА 37 проекции образующихся на куполе ребер совпадают с серединными осями фигуры. Таким образом, серединные оси фигуры можно определить как множество точек сингулярности дистанционной функции фигуры. Соответственно, скелет фигуры можно определить как замыкание множества сингулярных точек ее дистанционной функции. 2.6. Вычисление и регуляризация скелета Скелет фигуры представляется весьма удобной моделью для описания ее формы. Однако практическое использование этой модели сталкивается с двумя проблемами, носящими фундаментальный характер. Это проблема вычисления скелета и проблема регуляризации скелета. Вычисление скелета фигуры по описанию ее граничных контуров представляет собой сложную задачу. Аналитическое решение этой задачи в общем случае, когда контура границы описываются произвольными кривыми, получить невозможно. Аналитическое решение существует лишь для некоторых специальных классов линий, задающих границы фигуры. В частности, красивое геометрическое решение можно получить для фигуры с кусочно-линейной границей. Такие фигуры называются многоугольными. В принципе, любую фигуру можно со сколь угодно высокой точностью аппроксимировать многоугольной фигурой. Однако такая аппроксимация порождает новые трудности. Построение высокоточной многоугольной аппроксимации фигур в изображениях, обрабатываемых в системах машинного зрения, приводит к сценам, в которых количество граничных многоугольников имеет порядок к = 102 -г 103, а общее число вершин многоугольников — п=104-М05. При этом реальное время решения задач обработки сцен в системах машинного зрения должно составлять десятые доли секунды. Очевидно, что в этом случае алгоритмы, которые используют попарный перебор всех вершин или ребер многоугольников и имеют вследствие этого вычислительную сложность 0(п2), являются неприемлемыми. Быстрые алгоритмы построения скелетов простых многоугольников с η вершинами имеют вычислительную сложность 0{п logn) в худшем случае [39]. Однако известные обобщения этих алгоритмов на случай многоугольной фигуры [11, 54] имеют вычислительную сложность 0(кп + n log n), где к — количество многоугольных дыр. Для задач, в которых кип имеют порядок 103 и 105 соответственно, такая сложность неприемлема. В то же время, эффективные алгоритмы построения диаграммы Вороного множества линейных сегментов [34, 58] в силу своей универсальности не используют специфических особенностей множества отрезков, составляющих границу многоугольной фигуры. В частности, эти алгоритмы строят скелет не только внутри, но и вне многоугольной фигуры, что является лишней работой.
38 Гл. 2. НЕПРЕРЫВНЫЕ МОДЕЛИ ФОРМЫ Таким образом, возникает задача создания эффективного вычислительного алгоритма скелетизации многоугольной фигуры. Однако практическое применение скелетов для анализа формы ставит еще одну, гораздо хуже формализуемую задачу, связанную с интерпретацией полученного скелета многоугольной фигуры. Следуя терминологии [46], эту задачу будем называть регуляризацией скелета. Необходимость регуляризации скелета связана с наличием «шумовых эффектов» в построенных скелетах. Скелет фигуры очень чувствителен к локальным свойствам ее границы. Это хорошо заметно на примере фигур, мало отличающихся с точки зрения их границы, но имеющих разные скелеты (рис. 2.11). Рис. 2.11. Влияние шумов на структуру скелета Небольшие искривления границы приводят к значительным изменениям топологической структуры скелетного графа. Поэтому если для некоторой формы построить две различные многоугольные фигуры, но аппроксимирующие ее с одной и той же точностью, можно получить существенно различающиеся скелеты. С каждой выпуклой вершиной многоугольной фигуры связана ветвь скелета. Поэтому чем больше вершин в фигуре, тем больше ветвей в скелете. И большинство этих ветвей — бесполезные, так как не несут никакой информации для анализа формы фигуры. Вместе с тем, интуитивно очевидно, что похожие фигуры имеют и похожие скелеты. Эта похожесть скелетов выражается в наличии у них некоторой существенной общей части, которая и характеризует структуру фигуры (см. рис. 2.11). Задача выделения этой общей части называется регуляризацией скелета. Она сводится к очистке полученного скелета от шума. Для ее решения также должны быть разработаны соответствующие эффективные алгоритмы. Таким образом, практическое использование скелетов в задачах обработки и анализа изображений требует разработки эффективных алгоритмов скелетизации многоугольных фигур и алгоритмов регуляризации скелетов путем очистки их от шумовых эффектов.
ГЛАВА 3 ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ 3.1. Дискретные фигуры. 3.2. Дискретные границы. 3.3. Дискретные скелеты. 3.4. От дискретной фигуры к непрерывной. 3.1. Дискретные фигуры Растровое бинарное изображение высокого разрешения, т. е. с очень малыми размерами точек, составляющих его матрицу, воспринимается человеком как «сплошное», непрерывное. Собственно на это и рассчитано использование цифровых изображений. Человеческий глаз не воспринимает точки, составляющие изображение, как отдельные элементы картины, а объединяет их в непрерывные фигуры. Однако машина «видит» изображение именно как матрицу точек, независимо от разрешающей спосрбности камер и сканеров. Поэтому модель дискретного изображения также необходима при описании формы. Моделью дискретного изображения в виде матрицы разноцветных точек может служить квадратная решетка, как подпространство евклидовой плоскости R2. Квадратная решетка образуется из точек пересечения двух взаимно перпендикулярных семейств параллельных прямых, в которых расстояния между прямыми равны единице. А в качестве единицы берется величина, равная размеру пикселя в бинарном изображении. Пусть на плоскости задана прямоугольная декартова система координат. Определение 3.1. Растровой решеткой называется квадратная решетка Z2, состоящая из точек евклидовой плоскости с целочисленными координатами. Поскольку растровая решетка является подмножеством евклидовой плоскости, многие свойства плоскости наследуются в решетке естественным образом. Однако такое понятие как связность множеств в R2 не наследуется автоматически дискретным подмножеством евклидовой плоскости Z2. В непрерывном пространстве множество точек называется связным, если для любых двух его точек существует непрерывная линия, соединяющая эти точки и целиком лежащая в этом множестве. Согласно этому определению, точки растровой решетки не могут образовывать связные множества, состоящие более чем из одной точки. Поэтому понятие связности точечных множеств в растровой решетке нуждается в особом определении.
40 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ С этой целью для точек растровой решетки вводится понятие структуры соседства. Структура соседства представляет собой бинарное отношение между точками решетки, в общем случае нерефлексивное [24]. Определение 3.2. В растровой решетке две точки называются непосредственными соседями (или просто соседями), если евклидово расстояние между ними равно 1. Определение 3.3. В растровой решетке две точки называются косвенными соседями, если расстояние между ними равно у/2. Для точки с координатами (х,у) непосредственными соседями являются точки (х+1,у), (χ — Ι,ί/), (х,у+1), (х,у — 1), а косвенными соседями — точки (х+1,у+1), (х+1,у— 1), (х — 1,у— 1), (х-1,у+1). Простейшие и наиболее популярные структуры соседства точек в растровой решетке — это 4-смежность и 8-смежность. Определение 3.4. ^-смежностью (или сильной смежностью) называется структура соседства, при которой соседними точками считаются только непосредственные соседи. Определение 3.5. 8-смежностью (или слабой смежностью) называется структура соседства, при которой соседними точками считаются как непосредственные, так и косвенные соседи. Со структурой соседства связан граф соседства, вершинами которого являются точки растровой решетки, а ребрами — прямолинейные отрезки, соединяющие соседние точки. Для структур соседства 4-смежности и 8-смежности соответствующие графы изображены на рис. 3.1. Вершины графа, изображенные кружками, соответствуют пикселям изображения. Граф соседства может быть плоским, как это имеет место для сильной смежности. Для слабой смежности граф соседства не является плоским графом. а) б) Рис. 3.1. Структуры соседства точек растровой решетки: 4-смежность и 8-смежность Бинарное изображение на растровой решетке задается двухцветной раскраской точек решетки. Для образующихся в результате черных и белых подмножеств понятие связности определяется на основе принятой структуры соседства.
3.2. ДИСКРЕТНЫЕ ГРАНИЦЫ 41 Пусть в растровой решетке задано множество точек Ρ с Z2. Рассмотрим граф G = (Р,Е), вершинами которого являются точки из Р, а ребрами — прямолинейные отрезки, соединяющие все пары соседних вершин. При этом соседство вершин задается принятой на решетке структурой соседства. Граф G называется графом смежности множества точек Р. Определение 3.6. Множество точек в растровой решетке называется связным, если его граф смежности является связным. Определение 3.7. Два множества точек в растровой решетке называются разделенными, если их объединение не является связным. На основе связности точек дадим определение дискретной фигуры. Рассмотрим бинарное изображение на растровой решетке, задаваемое двухцветной раскраской точек. Множество черных точек растровой решетки изображает объекты, а множество белых точек — фон. Определение 3.8. Дискретной фигурой называется максимальное связное множество черных точек в растровой решетке. Термин «максимальное» означает, что дискретная фигура не содержится ни в каком другом связном множестве черных точек, не совпадающем с этой фигурой. Таких максимальных множеств в бинарном изображении может быть несколько. Этим определяется количество фигур в изображении. Заметим, что состав и количество фигур для одного и того же бинарного изображения может различаться в зависимости от того, какая структура соседства задана в растровой решетке. 3.2. Дискретные границы Для представления границы дискретной фигуры нужно определить понятия граничной точки и линии на растровой решетке. Понятие граничной точки для дискретной фигуры определяется также через структуру соседства. Точка дискретной фигуры называется граничной, если она имеет соседнюю точку, не принадлежащую фигуре. Из определения 3.8 следует, что эта соседняя точка является белой. Для непрерывной фигуры граница состоит из множества ее граничных точек. Однако для дискретной фигуры, как будет показано далее, определение понятия границы, как множества граничных точек, имеет существенные недостатки. Под линией на растровой решетке обычно понимается связное множество точек шириной в один пиксель. При этом ширина определяется применительно к структуре соседства. Более формально это означает, что для каждой точки линии среди всех соседних точек должны быть еще одна или две точки этой линии. В первом случае точка является концевой, а во втором — внутренней точкой линии. В замкнутой линии на растровой решетке нет концевых точек, поэтому в ней каждая точка
42 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ ооооооооооо ооооооооооо οο··οοοοοοο οοο·οοοοοοο οοο···οοοοο oooootooooo οοοοο···οοο οοοοοοο·οοο οοοο····οοο ооооооооооо ооооооооооо ооооооооооо οο······οοο ootoooottoo οο·οοοοο·οο οο··οοοο·οο οοο··οοο·οο ooootoottoo οοοο····οοο ооооооооооо ооооооооооо ооооооооооо οοο·····οοο oooootooooo oooootooooo oooootooooo oooootttooo oooootooooo oootttooooo ооооооооооо ооооооооооо ооооооооооо oottototooo ooootototoo ooooooootoo ooooooootoo ooooototooo ooottotoooo ооооооооооо ооооооооооо a) ооооооооооо oooottttooo oootooootoo oootooootoo oootooootoo oootooootoo oootooootoo oooottttooo ооооооооооо ооооооооооо б) ооооооооооо ooootttoooo oootoootooo oootoootooo ooootttoooo oootoootooo oootoootooo oootoootooo ooootttoooo ооооооооооо e) Рис. 3.2. Примеры множеств, образующих одну линию на растровой решетке (а, б) и не образующих (в). Верхний ряд соответствует 4-смежной, а нижний — 8-смежной структуре соседства должна иметь ровно две соседние точки. Примеры линий на растровой решетке представлены на рис. 3.2. Эти определения во многих случаях позволяют легко выделить на изображении граничные точки и объединить их в линию, т.е. получить, по сути дела, изображение границы фигуры. Однако внимательный анализ показывает, что обеспечить при этом аналогию с непрерывной границей не всегда удается. В ряде случаев множество граничных точек дискретной фигуры не выстраивается в линию на растре без самопересечений. На рис. 3.3 представлен пример дискретной фигуры и множество ее граничных точек для 4-смежной и 8-смежной структур соседства. оооооооооооооо оооооооооооооо οοο··οοοοοο·οο οοο···οοοο···ο otttttttttttoo ooottttttttooo οοο··ι·····οοο OOOttttitiOOOO ooootfotoooooo ooooototoooooo оооооооооооооо оооооооооооооо оооооооооооооо ooottooooootoo ooototoooototo ottooottttotoo oootooooootooo oootooooootooo oootootottoooo oooottotoooooo ooooototoooooo оооооооооооооо оооооооооооооо оооооооооооооо ooottooooootoo oootttoooottto otttotttttttoo oootooooootooo oootooooottooo oootttttttoooo oooottotoooooo ooooototoooooo оооооооооооооо a) 6) в) Рис. 3.3. Определение граничных точек дискретной фигуры: фигура (а), граничные точки по 4-смежной структуре соседства (б), граничные точки по 8-смежной структуре соседства (в) Если для дискретной фигуры граничные точки определить, как имеющие белые соседние точки по 4-смежности, то граница дискретной фигуры сама окажется несвязной по критерию 4-смежности (рис. 3.3,6). Если же считать граничными черные точки, имеющие белые соседние точки по 8-смежности, то граница не соответствует понятию линии на растре (рис. 3.3, в), поскольку она не является множеством точек «шириной в один пиксель».
3.3. ДИСКРЕТНЫЕ СКЕЛЕТЫ 43 В обработке изображений используют еще один — комбинированный способ задания структуры соседства: для разноцветных точек соседство определяется по fc-смежности (к = 4 или к = 8), а для точек одинакового цвета — по (12 — к)-смежности [40]. При к = 4 граница получается такой же, как на рис. 3.3,6, однако она уже является связной, поскольку для черных точек границы связность определяется по (12 —/с)-смежности, т.е. 8-смежности. А при fc = 8 получается граница, как на рис. 3.3, е. Тем не менее, оба эти решения все равно не дают возможности провести аналогию с непрерывной границей, поскольку полученные линии на растровой решетке не является аналогами непрерывных жордановых кривых. Действительно, на евклидовой плоскости жорданова кривая разбивает плоскость на две связные компоненты и является их общей границей (теорема Жордана). А для линий на растровой решетке это не так. В обоих вариантах комбинированной смежности (рис. 3.3,6, в) граница не является жордановой кривой, поскольку имеет самопересечения. В результате возникает фундаментальное несоответствие между свойствами границы фигуры в непрерывном и дискретном пространствах. Эти особенности приводят к тому, что простые (наивные) определения понятия границы дискретной фигуры как множества ее граничных точек не позволяют получить описание границы в виде одномерного многообразия, как это имеет место для непрерывных фигур. А это значит, что задачи анализа таких свойств фигуры, как периметр, количество граничных контуров, кривизна границы, не получают ни строгой математической формулировки, ни корректных методов решения. Граница дискретной фигуры должна быть определена другим, более корректным способом. 3.3. Дискретные скелеты С определением понятия скелета для дискретной фигуры возникают еще большие трудности, чем с границей. Самая главная проблема состоит в том, что на растровой решетке «не работает» понятие окружности и, соответственно, пустого круга в евклидовой метрике. Поэтому определить корректно скелет дискретной фигуры по аналогии с непрерывным случаем через множество максимальных пустых кругов просто невозможно. Об этом свидетельствует анализ многочисленных публикаций на тему построения скелетов дискретных фигур, вышедших в течение последних сорока лет. Тем не менее, очевидная полезность и простота понятия непрерывного скелета заставляет исследователей и разработчиков алгоритмов находить какие-то, пусть не совсем строгие, способы построения его дискретного аналога, который по своим свойствам походил бы на скелет непрерывной фигуры. Поскольку строгого определения дискретного скелета нет, построение дискретного аналога непрерывного скелета представляет собой некоторую техническую процедуру, в основе которой лежит дискретизация «пожара в прерии»
44 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ или дискретный аналог дистанционной функции. Успешное построение дискретных аналогов скелета, как правило, достигается в случаях, когда дискретные фигуры имеют простую структуру. В основе построения дискретных скелетов лежит идея преобразования исходного бинарного изображения в новое бинарное изображение, которое обладает свойствами, аналогичными свойствам непрерывного скелета. Во-первых, объекты в этом изображении состоят из линий на растре — связных протяженных фрагментов шириной в один пиксель. Во-вторых, эти линии приближенно можно считать серединными осями исходного изображения, поскольку они примерно равноудалены от граничных пикселей. Для построения дискретных скелетов используются два основных подхода: топологическое утончение фигуры и выделение сингулярно- стей дистанционной карты фигуры. Оба они основаны на использовании характеристических свойств непрерывного скелета, описанных в разделе 2.5. 3.3.1. Скелетизация через утончение фигуры. Метод топологического утончения состоит в построении дискретного аналога для непрерывного процесса распространения огня. Известно большое число реализаций этого подхода, отличающихся техническими нюансами. На рис. 3.4-3.6 приведены примеры построения скелета алгоритмом Розенфельда [48]. о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о о оооооооооооооо ооооооооооооос оооооооооооооо ooottooooootoo ooo^ooooootoo оооооооооооооо ΟΟΟ···00 0 0···0 OOOtt^OOoO^ttO OOOiiOOOOOOtiO ОООООООООООООО ОООООООООООООО OtttMOOOOttOO οοο········οοο οοο········οοο οοο········οοο ooottttttttooo οόο········οοο оооооооооооооо oootttttttoooo oootttttttoooo οοο^··^·^οοοο oooottotoooooo oooottotoooooo оооооооооооооо ooooototoooooo ooooototoooooo ooooototoooooo оооооооооооооо оооооооооооооо оооооооооооооо а) б) в) оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо ■оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооОООоооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооо о ооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо г) д) е) Рис. 3.4. Построение дискретного скелета алгоритмом Розенфельда по 4-смеж- ной структуре соседства Идея этого алгоритма состоит в имитации пожара в прерии путем последовательного перекрашивания граничных точек объекта. Первый шаг состоит в перекрашивании части «северных» граничных точек, имеющих смежную фоновую точку сверху (рис. 3.4, а). Перекрашенные точки в примере помечены перечеркиванием. Перекрашиваются в белый цвет те черные граничные точки, которые имеют две или больше соседних черных точек и перекраска которых не нарушает
3.3. ДИСКРЕТНЫЕ СКЕЛЕТЫ 45 оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо οοο··οοοοοο·οο οοο#Ο2Όοοοοο0Όο оооооооооооооо оооооооооооооо 000···ΟΟθΟ···0 ΟΟΟΦΦ#ΟΟΟΟ0Φ#Ό 000··000000·00 ΟΟΟβΤΦΟΟΟΟΟΟΦΟΟ ΟφΦΦΦΦΦΦΦφφφΟΟ Ο99*·Φ0&00%%ΟΟ ΟΦΦΦΦΦΟΟΟΟΦ0ΟΟ ΟφφφφφΟΟΟΟΦΟΟΟ 000········000 Ο00········000 ΟΟΟΦΦΦΦΦΦΦφΟΟΟ ΟΟΟβΤΦΦΦΦΦΦφΟΟΟ οοο§·······οοο οοο········οοο οοοφφφφφφφ#οοο οοο^φφφφφφοοοο οοοφφφφφφφοοοο οοο·······οοοο ooo^tt^t^oooo οοοοοφοφοοοοοο Ο000··0·000000 ΟΟΟΟΦφΟΦΟΟΟΟΟΟ ΟΟΟΟΟΦΟΦΟΟΟΟΟΟ OOOOOjZiOfOOOOOO οοοοο·ο·οοοοοο οοοοο·ο·οοοοοο οοοοο^ο·οοοοοο оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо а) б) в) г) оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо οοοοΟοοοοοοφοο оооооооооооооо оооооооооооооо oooooooooootoo οφφφφ#οοοοφοοο οφφφ^οοοοοφοοο ο··· οοο οοο ·οο ο ο··· οοο οοο·ο ο ο οοοο······,#Όοο оооофО;#.2^фоооо οοοσ·οοοο·οοοο οοοο·οοοο·οοοο οοοοφφφφφ#τοοοο οοοο·····οοοοο οοοο#φφφφοοοοο οοοοοφφ^φοοοοο οοοοοοοφοοοοοο οοοοοοο·οοοοοο οοοοοοο·οοοοοο οοοοοοο·οοοοοο oooooootoooooo oooooootoooooo οοοοοοο·οοοοοο ooooooofoooooo oooooootoooooo oooooootoooooo οοοοοοο·οοοοοο oooooootoooooo оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо д) е) ж) з) Рис. 3.5. Построение дискретного скелета алгоритмом Розенфельда по 8-смеж- ной структуре соседства связности оставшейся части фигуры. При этом связность и соседство оцениваются либо по 4-смежности, как в примере на рис. 3.4, либо по 8-смежности, как на рис. 3.5. Для полученной в результате перекрашивания новой фигуры (рис. 3.4,6) выполняется аналогичное перекрашивание «южных» граничных точек (рис. 3.4, в), затем «западных» граничных (рис. 3.4, г), а затем «восточных» (рис. 3.4, д). Процесс повторяется до тех пор, пока не окажется, что точек, которые можно перекрасить, не осталось (рис. 3.4, е). При использовании соседства по 8-смежности алгоритм Розенфельда работает аналогичным образом (рис. 3.5). В рассмотренном примере последовательность шагов перекрашивания краев «север-юг- запад-восток» выбрана произвольно. Эти четыре шага перекрашивания граничных точек можно выполнять в любом порядке. Анализ получаемых скелетов показывает, что их вид различается в зависимости от последовательности шагов перекрашивания точек и от принятой структуры соседства. При изменении последовательности шагов перекрашивания граничных точек фигуры изменяется вид скелета, как видно из сравнения примеров (а) с (б) и (в) с (г) из рис. 3.6. оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо οοοοοοοοοοο·οο οοο·οοοοοοο·οο оооооооооооооо оооооооооооооо οοοο·οοοοοο··ο οοο·οοοοοο···ο οοοοοοοοοοο·οο οοοοοοοοοο·οοο οφφφφοοοοοφφοο ο····οοοο··οοο ο···οοοοοο·οοο ο···οοοοο·οοοο οοοο·οοο···οοο οοοο······οοοο οοοο·οοοο·οοοο οοοο···ο·οοοοο οοοο·····οοοοο οοοοο·ο·οοοοοο οοοοο··ο·οοοοο οοοοοοο·οοοοοο οοοοοφοφοοοοοο οοοοοφοφοοοοοο οοοοοοοφοοοοοο oooooootoooooo ooooototoooooo οοοοο§ο·οοοοοο oooooootoooooo oooooootoooooo ooooototoooooo οοοοο·ο·οοοοοο οοοοοοοφοοοοοο οοοοοοοφοοοοοο оооооооооооооо оооооооооооооо оооооооооооооо оооооооооооооо а) б) в) г) Рис. 3.6. Различия в скелетах в зависимости от структуры соседства и последовательности перекрашивания граничных точек: 4-смежность (а, б), 8-смежность (в, г)\ север-юг-запад-восток (а, в), юг - восток - север- запад (б, г)
46 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ Имеются различия в скелетах, полученных при последовательности перекрашивания «север - юг - запад - восток» (а, в) и «юг - восток- север-запад» (б, г). Но и при одинаковой последовательности перекрашивания существенно отличаются скелеты для 4-смежности (а, б) и 8-смежности (в, г). Различия в структуре скелетов для разных структур соседства объясняются тем, что алгоритмы топологического утончения работают не в евклидовой метрике, а в метрике 1\ («манхэттенской») при 4-смежности и 1^ («шахматной») при 8-смежности. А эти метрики, в отличие от евклидовой, не обеспечивают «изотропности» среды распространения огня. С точки зрения евклидовой метрики фактическая скорость движения огненного фронта по одним направлениям оказывается больше, чем по другим. а) б) Рис. 3.7. Изменение структуры дискретных скелетов, полученных методом утончения, при повороте фигур: фигуры (а), соответствующие скелеты (б) Неевклидовые метрики приводят к неустойчивости получаемых скелетов по отношению к простым преобразованиям исходного изображения. На рис. 3.7 представлен пример построения 4-смежным алгоритмом Розенфельда скелетов ромбов, различающихся ориентацией на плоскости. Как видно из примера, небольшие изменения ориентации (поворот изображения) приводят к существенному изменению топологии скелета. 3.3.2. Скелетизация на основе дистанционной карты. Сохранение евклидовой метрики в дискретных скелетах обеспечивается в рамках другого подхода, основанного на построении дистанционной карты фигуры. Дистанционная карта представляет собой дискретный аналог дистанционной функции, описанной в 2.5. Дистанционная карта дискретной фигуры ставит в соответствие каждой точке фигуры значение дистанционной функции, вычисляемое, как расстояние от этой точки до ближайшей граничной точки фигуры. Полученная матрица значений и называется дистанционной картой. Широкое применение дистанционных карт в дискретной скелетизации объясняется, во-первых, тем, что в ней используется евклидова метрика, а во-вторых, тем, что удалось построить чрезвычайно эффективные
3.3. ДИСКРЕТНЫЕ СКЕЛЕТЫ 47 алгоритмы вычисления дистанционных карт для сложных изображений большой размерности [37, 41]. По дистанционной карте далее вычисляют точки сингулярности дистанционной функции. Критерий определения сингулярных точек играет здесь решающую роль. Однако, поскольку этот критерий описывается в виде некоторого локального правила, часто возникают ошибки в определении точек сингулярности. Они выражаются в пропуске этих точек. А это, в свою очередь, приводит к разрывам в скелете. В результате получаются несвязные скелеты дискретных фигур. На рис. 3.8 приведен пример построения скелета по дистанционной карте. В кружках, изображающих точки фигуры, вписаны квадраты расстояний до ближайшей граничной точки. Такая запись принята для удобства, чтобы не писать знаки квадратного корня. В качестве критерия сингулярности здесь принято следующее правило. Если в 3 χ 3 окрестности точки найдется направление (вертикаль, горизонталь или любая из диагоналей), вдоль которого значение дистанционной функции в точке больше, чем значения в соседних точках, то эта точка считается сингулярной. Рис. 3.8. Дистанционная карта фигуры с выделением сингулярных точек Это правило имеет следующее обоснование. Как было показано в 2.10, в точках скелета дистанционная функция не только имеет разрыв производной вдоль некоторого направления, но также и перемену знака производной. Это значит, что в точках скелета имеется максимум дистанционной функции при изменении аргумента вдоль этого направления. Поэтому наличие максимума в дистанционной карте вдоль одного из четырех направлений может служить необходимым условием для точек сингулярности. В примере отобранные таким образом сингулярные точки выделены жирными кругами. Очевидно, что построенный скелет на рис. 3.8 имеет существенный недостаток: он не является связным. Для 8-смежной структуры, соседства он состоит из двух связных компонент. Такого рода ошибки являются типичными для алгоритмов выделения скелета из дистанционной карты, поэтому обычно эти алгоритмы включают в себя дополнительную постобработку, состоящую в склеивании отдельных частей скелета в общую фигуру. Эта постобработка часто включает эвристические элементы, поскольку возникающие
48 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ ситуации зависят от конкретного вида фигуры и вследствие этого чрезвычайно многообразны [9, 47, 55]. Кроме отмеченных недостатков алгоритмов построения дискретных скелетов, следует еще раз отметить уже упоминавшийся наиболее существенный недостаток. Сама форма представления скелета в виде бинарного изображения неудобна для дальнейшего использования скелетов. Она плохо подходит для преобразований и сравнений исходных объектов. Невозможно преобразовывать форму объекта на основе дискретного скелета. Также достаточно сложным делом является сравнение метрических и топологических свойств дискретных скелетов. 3.3.3. Скелетизация по диаграмме Вороного граничных точек фигуры. Кроме чисто дискретных алгоритмов построения скелета, основанных на утончении и дистанционной карте, известен еще один подход, сочетающий в себе дискретную модель границы фигуры и непрерывную модель ее скелета [46]. Несмотря на то, что скелет этот имеет формальные признаки непрерывного графа, мы все-таки относим его к дискретным скелетам, поскольку по своим свойствам он наследует недостатки дискретного описания границы фигуры. В основе этого подхода лежит понятие диаграммы Вороного конечного множества точек на плоскости. Пусть на плоскости задано конечное множество точек Р. Точки эти принято называть сайтами. Определение 3.9. Ячейкой Вороного сайта ρ G Ρ называется геометрическое место точек плоскости, для которых сайт ρ является ближайшим среди всех сайтов из множества Р. Если множество Ρ = {р\,Р2} состоит всего из двух сайтов, то ячейки этих сайтов являются полуплоскостями (рис. 3.9, а), ограниченными прямой — серединным перпендикуляром отрезка [рьрг]· Такой серединный перпендикуляр называется бисектором сайтов р\и р2. Пусть Ρ = {ρι,... ,Ρη}, η > 2. Обозначим множество точек, расстояние от которых до сайта pi не больше, чем до сайта pj, через H(pi\pj). Это множество точек представляет собой полуплоскость. Тогда ячейка V(pi) сайта ρι есть пересечение таких полуплоскостей V{Pi) — Π H(pi I Pj) (рис. 3.9,6). Следовательно, ячейка является / H(p2\Pl) Pi / / **^ ft / *1· а) б) Рис. 3.9. Ячейки Вороного
3.3. ДИСКРЕТНЫЕ СКЕЛЕТЫ 49 Рис. 3.10. Диаграмма Вороного для конечного множества точек выпуклым многоугольником, возможно, неограниченным. Ячейки всех сайтов из множества Ρ образуют покрытие всей плоскости (рис. 3.10). Такое представление плоскости в виде объединения ячеек Вороного называется разбиением Вороного, а сами ячейки — полигонами Вороного. Совокупность границ всех полигонов Вороного называется диаграммой Вороного. Терминология эта восходит к работам известного российского математика Георгия Феодосьевича Вороного (1868-1908), занимавшегося исследованием подобных разбиений пространства применительно к регулярным решеткам. Для того чтобы не усложнять рассмотрение вырожденными случаями, обычно предполагается, что рассматривается такое множество сайтов, в котором не все сайты лежат на одной прямой. Граница полигона Вороного — это ломаная линия. Если эта линия является замкнутым контуром, это означает, что полигон Вороного имеет конечные размеры. Если же ломаная линия незамкнутая, то она определяет бесконечный многоугольник, в границе которого кроме конечных линейных сегментов присутствуют еще и два бесконечных луча. Таким образом, диаграмма Вороного есть плоский прямолинейный граф, в котором ребрами являются лучи и отрезки прямых. А вершинами графа являются концевые точки этих отрезков и лучей. Рассмотрим теперь дискретную фигуру (рис. 3.3, а) и выберем в качестве сайтов граничные точки фигуры (рис. 3.3,6). Для множества граничных точек построим диаграмму Вороного (рис. 3.11, а). Поскольку ребра диаграммы Вороного равноудалены от ближайших к ним сайтов, а сайты — это точки границы фигуры, эти ребра можно использовать в качестве элементов скелета фигуры. Однако, кроме таких «полезных» ребер, диаграмма Вороного содержит большое число других ребер, которые не подходят для составления скелета. В частности, как видно из примера, такими лишними являются ребра диаграммы, являющиеся бисекторами для пар соседних граничных точек. Процесс удаления лишних ребер диаграммы Вороного называется в [46] регуляризацией. На рис. 3.11,6 представлен результат регуляризации диаграммы Вороного. Полученный граф и принимается в качестве скелета дискретной фигуры.
50 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ б) Рис. 3.11. Диаграмма Вороного граничных точек фигуры и выделенный из нее скелет Полученный скелет представляет собой плоский прямолинейный граф, т. е. является непрерывной структурой, а не бинарным изображением. В силу этого он гораздо лучше подходит для преобразования и сравнения формы изображений. Однако из-за дискретного представления границы фигуры ветви скелета имеют вид зигзагообразных линий, что особенно проявляется в изображениях с низким разрешением и протяженными элементами (рис. 3.12). А для сложных изображений с высоким разрешением и регулярными элементами (например, для чертежей с прямолинейными фрагментами) в обработку вовлекается большое число «лишних» граничных пикселей, увеличивающих понапрасну размерность диаграммы Вороного и общий объем вычислений. Рис. 3.12. Бинарное изображение (а); граничные точки (б); диаграмма Вороного граничных точек (в)\ скелет, полученный в результате регуляризации диаграммы Вороного (г)
3.4. ОТ ДИСКРЕТНОЙ ФИГУРЫ К НЕПРЕРЫВНОЙ 51 3.4. От дискретной фигуры к непрерывной Проведенный в этой и предыдущей главах анализ показывает достоинства и недостатки дискретных моделей формы и проясняет проблему построения непрерывных моделей для анализа формы изображений. С одной стороны, имеется понятная и удобная математическая модель для анализа и распознавания формы — это фигура на евклидовой плоскости, представленная в виде замкнутой области, ограниченной конечным числом жордановых кривых. Для непосредственного представления таких фигур существуют два способа описания. Первый задает фигуру в виде множества граничных контуров, представленных замкнутыми жордановыми кривыми, в частности многоугольниками. Второй способ задает фигуру в виде скелета, представляющего собой плоский граф с радиальной функцией. Однако получение таких непрерывных моделей для произвольных бинарных изображений связано с рядом трудностей. Если границу дискретной фигуры (связного множества точек на растровой решетке) представить в виде замкнутых ломаных линий, соединяющих последовательно граничные точки фигуры, то полученные многоугольники не всегда оказываются простыми, поскольку могут иметь самопересечения и пересечения между собой. Эффективные алгоритмы скелетизации известны лишь для простых многоугольников. Их обобщения для многоугольных фигур с многоугольными дырами имеют слишком большую вычислительную сложность. В сложных изображениях многоугольники, вершинами которых являются граничные точки дискретных фигур, имеют очень большое количество вершин. Скелеты таких многоугольников содержат очень много шумовых ветвей, не несущих никакой существенной информации о форме и лишь затрудняющих проведение анализа. На фоне таких проблем с построением непрерывных моделей формы для бинарных изображений преимущественно используются дискретные модели формы. Граница дискретной фигуры представляет собой множество ее граничных точек, а скелет — это бинарное изображение, полученное путем утончения дискретной фигуры либо вычислением дистанционной карты фигуры и выделением точек сингулярности дистанционной карты. Такие дискретные представления формы не вполне адекватны своим прототипам (непрерывным границам и скелетам). Недостатком дискретной границы является наличие в ней самопересечений. А недостатки дискретных скелетов — это нарушение евклидовой метрики, появление разрывов (нарушение связности). По этим причинам принято считать, что регулярные эффективные методы построения адекватных непрерывных моделей строить нецелесообразно, а недостатки дискретных методов нужно последовательно преодолевать за счет различных математических и технических ухищрений.
52 Гл. 3. ДИСКРЕТНЫЕ МОДЕЛИ ФОРМЫ Однако достоинства непрерывных моделей формы и преимущества их по сравнению с дискретными моделями заставляют искать решение этой задачи. Искомое решение должно включать следующие ключевые элементы. Во-первых, нужно разработать регулярный алгоритм корректной аппроксимации дискретных фигур непрерывными многоугольными·*фигурами. Под корректной аппроксимацией понимается получение многоугольной фигуры, у которой границы описываются многоугольниками без самопересечений и сами многоугольники тоже не пересекаются. Аппроксимация многоугольными фигурами востребована постольку, поскольку аналитическое описание скелета известно лишь для таких фигур. Во-вторых, требуется эффективный алгоритм скелетизации многоугольных фигур, позволяющий строить скелеты не только простых многоугольников, но и многоугольников с многоугольными дырами. В-третьих, необходимо разработать математически строгие критерии регуляризации скелетов многоугольных фигур для того, чтобы получать фундаментальные структурные свойства формы изображения, не зависящие от шумовых эффектов в изображениях. Решение этих проблем описано в последующих двух частях книги: непрерывная граничная аппроксимация дискретных фигур — в части II, эффективные алгоритмы скелетизации многоугольных фигур и регуляризации полученных скелетов — в части III.
ЧАСТЬ II ФИГУРЫ И ГРАНИЦЫ ГЛАВА 4 НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ 4.1. Эквивалентность дискретных и непрерывных фигур. 4.2. Структуры соседства на треугольных решетках. 4.3. Задача прослеживания границ в изображении. 4.1. Эквивалентность дискретных и непрерывных фигур Определив понятия непрерывных и дискретных фигур, мы можем представить задачу выбора непрерывной модели для дискретной фигуры, как построение непрерывной фигуры, в каком-то смысле близкой к исходной дискретной фигуре. Естественно, в первую очередь, в качестве критерия близости дискретной и непрерывной фигур рассмотреть сходство их топологических структур. Задача построения непрерывной модели ставится применительно к бинарному изображению в целом. В таком изображении могут присутствовать несколько дискретных фигур, представляющих собой связные компоненты из черных точек. Будем называть множество всех фигур в изображении сценой. Соответственно будем называть бинарное изображение дискретной сценой, а его непрерывную модель — непрерывной сценой. Топологическая структура непрерывной сцены определяется составом и взаиморасположением жордановых кривых, ограничивающих входящие в сцену непрерывные фигуры. Сами фигуры не пересекаются между собой, но они могут быть вложены друг в друга, т. е. одна фигура может располагаться в дыре другой фигуры. В непрерывной сцене между белыми и черными компонентами связности устанавливается отношение частичного порядка, определяемое вложенностью компонент друг в друга. Это отношение описывает топологию каждой сцены в виде дерева вложенности компонент (рис. 4.1). Для дискретной сцены, составленной из дискретных фигур, тоже определены компоненты связности в соответствии с принятой структурой соседства. Поэтому в ней также существует отношение вложенности между компонентами связности. На рис. 4.2 представлена
54 Гл. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ а) б) Рис. 4.1. Непрерывная сцена и дерево вложенности ее компонент дискретная сцена, имеющая ту же топологическую структуру, что и непрерывная сцена из рис. 4.1. В этом смысле можно считать, что эта непрерывная сцена является непрерывной моделью для дискретной сцены. Задача построения непрерывных моделей для бинарных изображений состоит в том, чтобы предложить некоторый регулярный способ выбора для любых дискретных сцен соответствующих эквивалентных непрерывных сцен. При этом с точки зрения эффективности алгоритмической реализации желательно, чтобы такое построение непрерывной модели осуществлялось на основе использования локальных свойств бинарного изображения. Рис. 4.2. Дискретная сцена Таким естественным локальным свойством, которое может быть положено в основу непрерывной модели, является сохранение цвета точек бинарного изображения в непрерывной модели. Так как точки растровой решетки одновременно являются точками евклидовой плоскости, г. е. растровая решетка погружена в евклидову плоскость, естественно считать, что точки растровой решетки должны сохранить свой цвет в непрерывной сцене. Черные точки решетки должны принадлежать непрерывным фигурам, а белые — фону. Это свойство является локальным, легко проверяется и может быть использовано в алгоритмах. Для того, чтобы считать дискретную и непрерывную сцену топологически эквивалентными, нужно обеспечить соответствие между
4.1. ЭКВИВАЛЕНТНОСТЬ ДИСКРЕТНЫХ И НЕПРЕРЫВНЫХ ФИГУР 55 деревьями вложенности компонент этих сцен. А для этого необходимо, чтобы при погружении растровой решетки в евклидову плоскость сохранилось свойство связности соответствующих точечных множеств. Исходя из этих соображений дадим определение эквивалентности дискретных и непрерывных сцен. Определение 4.ί. Непрерывная сцена называется эквивалентной дискретной сцене, если выполнены следующие условия: 1) существует взаимно однозначное соответствие между компонентами связности этих сцен; 2) каждая точка дискретной сцены сохраняет свой цвет в непрерывной сцене. Из этого определения непосредственно вытекает следующее свойство границы эквивалентных сцен. Если непрерывная и дискретная сцены является эквивалентными, то каждая пара разноцветных точек дискретной сцены разделена границей непрерывной сцены, т. е. любой непрерывный путь из одной точки в точку другого цвета пересечет границу непрерывной сцены. В частности, если разноцветные точки являются смежными, то соединяющий их отрезок прямой линии пересекается границей непрерывной сцены. Рассмотрим возможные виды ячеек растровой решетки, различающиеся раскраской точек. Ячейка состоит из четырех точек решетки, образующих квадрат, не содержащий других точек решетки. С точностью до симметрии существует всего шесть различных вариантов раскраски ячеек (рис. 4.3). С точки зрения подбора эквивалентной непрерывной • О ·0 ·0 О· ОО ·· ОО ·0 ·· ·0 ОО ·· 12 3 4 5 6 Рис. 4.3. Возможные варианты раскраски ячеек растровой решетки сцены интерес представляют лишь первые четыре варианта ячеек, в которых присутствуют разноцветные точки, поскольку, между ними должна проходить граница непрерывной сцены. Через ячейки 5 и 6 границы непрерывной сцены не проходят. Среди первых четырех типов ячеек особое место занимает вариант 4, который мы будем называть перекрестком. Особенность его состоит в том, что в отличие от вариантов 1, 2, 3 черные и белые точки в случае 4 не мо,гут быть разделены линией, лежащей внутри ячейки. Эта особенность приводит к существенным различиям между теми дискретными сценами, в которых нет перекрестков, и теми, в которых они присутствуют. Утверждение 4.1. Если дискретная сцена не содержит перекрестков, то для нее всегда существуют эквивалентные непрерывные сцены для 4-смежной и 8-смежной структур соседства. Доказательство. Пусть имеется дискретная сцена без перекрестков. Построим в явном виде границу адекватной ей непрерывной сцены следующим образом. Для каждой ячейки вида 1, 2, 3 построим отрезок
56 Гл. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ о—о -о ^ 2 3 Рис. 4.4. Построение непрерывной границы для простых ячеек растровой решетки прямой линии, соединяющий середины разноцветных сторон квадрата ячейки (рис. 4.4). Очевидно, что каждый такой отрезок имеет общие концевые точки с парой других отрезков в соседних ячейках. Следовательно, эти отрезки образуют замкнутые циклы, которые имеют вид ломаных линий. При этом все черные и белые точки разделены этими линиями. Эти линии задают разбиение плоскости на связные компоненты, которые легко раскрашиваются в двухцветную карту так, чтобы бесконечная компонента имела белый цвет. При этом образуется непрерывная сцена. В мозаике ячеек указанных трех типов каждая пара соседних одноцветных точек из дискретной сцены лежит в одной компоненте непрерывной сцены вместе с соединяющим их отрезком. Следовательно, граф смежности дискретной фигуры лежит целиком в одной компоненте непрерывной сцены. Отсюда следует адекватность непрерывной и дискретной сцен. Утверждение доказано. Пример, иллюстрирующий такой способ построения эквивалентной непрерывной сцены для заданной дискретной сцены, изображен на рис. 4.5. Рис. 4.5, α изображает исходное бинарное изображение без перекрестков. На рис. 4.5,6 представлена граница непрерывной фигуры, сконструированная из элементов, изображенных на рис. 4.4. о о о о о о о о о о о · о о о · оооооооо оооооооо • оооооо· • •оооо·· о о · о о · о о · о о о оооо о · о о о о ο·ο·οοοο оооооооооооо оооо о о о о о о о\^ о 1^ оооо ооооооооооо а) б) Рис. 4.5. Построение эквивалентной непрерывной сцены Условие отсутствия перекрестков в сцене является весьма существенным, что демонстрирует пример на рис. 4.6. Представленная дискретная сцена «шахматная доска» содержит перекрестки. Нетрудно убедиться, что построить для нее адекватную непрерывную сцену нельзя ни для 4-смежной, ни для 8-смежной структур соседства. Действительно, рассмотрим 16 точек в центре, обведенных пунктирной линией (рис. 4.6, а). В случае 4-смежности эти точки образуют 4 компоненты связности (рис. 4.6,6), а в случае 8-смежности они
4.2. ТРЕУГОЛЬНЫЕ СТРУКТУРЫ СОСЕДСТВА 57 οο··οο·· οο··οο·· о о · · о οο··οο·· οο··οο·· о о · · о • ·,'δ о · i4;o о · ••'9-γ t~f4|° о · ·''?£? f; • ·\ο о · ·;ο о · ·;ο-ο i-i\o о · ·\(£<\£ о о;· · о о·· · о о;·-· 9-о!· · ° °ί^?ττ^ о о',· · о о;· · о ο',φ-i о-о;· · о oliAk сь • ·οο··οο •·οο··οο · · о о · • ·οο··οο •·οο··οο · · о о · а) б) в) οο··οο·· οο··οο·· о о ·_·_ о_о ·· οο··οο·· • ·ι/δ"οΤ·"·4·ο ο · ·,'δ"οΤ·"·4·ο о • ·;θ ο) % ·;ο о · #!о ο\··;ο о о о;· •fcTcTj· · о ο[ιΓ~ϊϊ\ο οί· · о о!· «Jo о;· · о οι· ·|ο о;· · • · 4(5~δ ϊ"ί о о · · 4<5"ό"· "· о о • ·οο··οο •·οο··οο г) д) о · · о · · ^;о о Hi|o о -о!· · %;· · • о о • о о Рис. 4.6. Пример дискретной сцены, для которой не существует эквивалентной непрерывной сцены при использовании 4-смежной и 8-смежной структур соседства входят в две компоненты связности (рис. 4.6, в). Однако непрерывная граница может разбить эти 16 точек лишь на 3 компоненты двумя различными способами (рис. 4.6, г и д). Следовательно, установить взаимно однозначное соответствие между компонентами дискретной и непрерывной сцен не удастся. Таким образом, для сцен общего вида, содержащих перекрестки, структуры сильной и слабой смежности не позволяют строить адекватные непрерывные сцены. Сильная и слабая смежность являются симметричными структурами соседства, поэтому связность для обеих диагоналей в перекрестке определяется одинаково. А в непрерывной сцене имеет место асимметрия: либо одна диагональная пара связанна, либо другая (рис. 4.6, г, д). Ситуация, подобная «шахматной доске», имеет место в большинстве реальных бинарных изображений. Поэтому для того, чтобы решать задачу построения топологически эквивалентной непрерывной модели для дискретных сцен общего вида, нужно использовать другие структуры соседства, отличающиеся от обычной 4-смежности или 8-смежности, для которых эквивалентные непрерывные модели не всегда существуют. 4.2. Треугольные структуры соседства Рассмотрим растровую решетку с заданным на ней сильным соседством. Граф соседства в этом случае является плоским, поскольку его ребра, если и пересекаются, то только в вершинах графа. На основе
58 Гл. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ сильного соседства построим новую структуру соседства, у которой граф соседства будет триангуляцией. Триангуляция — это плоский граф, все грани которого являются треугольниками. Определение 4.2. Структура соседства называется треугольной, если ее граф соседства является триангуляцией и 4-смежный граф соседства является его подграфом. Треугольная структура соседства отличается от сильного соседства тем, что в каждой ячейке растровой решетки соседними являются не только пары 4-смежных точек, но и одна пара 8-смежных точек. Таким образом, треугольный граф соседства получается из 4-смежного графа соседства путем проведения в каждой квадратной ячейке одной диагонали, в результате чего квадратная грань разобьется на две треугольные грани. Достоинством определенной таким образом структуры соседства является простое решение проблемы перекрестков, поскольку в каждом перекрестке в этом случае всегда существует, и притом единственная, диагональная пара точек, соединенная ребром и соответственно являющаяся смежной. Следовательно, выбор структуры соседства на основе треугольной решетки дает возможность построить эквивалентную непрерывную сцену для любой дискретной сцены. Очевидно, что число таких триангуляции для растровой решетки с бесконечным числом точек также бесконечно. Однако с точки зрения построения эквивалентной непрерывной сцены для бинарного изображения эти структуры соседства отличаются друг от друга несущественно. Во-первых, существенными ячейками оказываются лишь те ячейки сцены, которые являются граничными, т. е. имеют разноцветные точки в вершинах. Поскольку число граничных ячеек в сцене конечно, то и число существенно различных триангуляции тоже конечно. А во- вторых, среди граничных ячеек также не все являются существенными в том смысле, что разные варианты разбиения этих ячеек на треугольники не меняют топологии границы непрерывной сцены. Выбор типа триангуляции является существенным лишь для ячеек-перекрестков. Число возможных вариантов существенно различных треугольных струкутур соседства невелико. Эти варианты различаются принципом построения диагоналей в перекрестках. Мы рассмотрим три возможных варианта, описывающих практически все разумные альтернативы. Определение 4.3. Гексагональной смежностью (^-смежностью) называется треугольная структура соседства, в которой все диагонали имеют одинаковое направление. Поскольку направлений диагонали всего два (45° и 135° к оси абсцисс), то и вариантов гексагональной смежности тоже два (рис. 4.7). В гексагональной структуре соседства разбиение ячеек на треугольники одинаково для всех ячеек и не зависит от цвета точек, образующих ячейки. С одной стороны, такая инвариантная к цвету точек структура соседства достаточно просто описывается. Но, с другой стороны, в силу асимметрии, вызванной наличием диагональных связей только вдоль одного направления, она не очень удобна для
4.2. ТРЕУГОЛЬНЫЕ СТРУКТУРЫ СОСЕДСТВА 59 а) б) Рис. 4.7. Гексагональные структуры соседства точек растровой решетки представления «тонких» фигур. В примере на рис. 4.8 одна четверка черных точек (а) образует одну компоненту связности, а другая, очень похожая, четверка точек (б) образует четыре компоненты связности. а) б) Рис. 4.8. Пример образования связных компонент при различных вариантах гексагональной структуры соседства Для того чтобы избежать подобных неудобств, нужно использовать асимметричные структуры соседства, в которых выбор диагоналей в ячейках растровой решетки зависит от цвета образующих эти ячейки точек. Граничная ячейка имеет приоритет точек одного цвета, если ее диагональ соединяет пару точек этого цвета, либо, если такой пары нет, то пару разноцветных точек. Определение 4.4. Объектной смежностью называется треугольная структура соседства, в которой все граничные ячейки имеют приоритет черного цвета. При таком способе определения смежности точки, принадлежащие объекту, имеют преимущество по сравнению с точками фона. Объектная смежность накладывает ограничения только на те ячейки, в которых встречаются разноцветные точки и при этом есть диагональная пара точек одного цвета. На рис. 4.9 это ячейки вида 1 и 4. Такие ^Кййй 88 88 НИ 12 3 4 5 6 Рис. 4.9. Объектная смежность точек в ячейках растровой решетки ячейки разбиваются на треугольники единственным образом — как показано на рисунке. Для остальных ячеек (вида 2, 5 и 6) допускается любой из двух возможных вариантов разбиения на треугольники.
60 Гл. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ Рис. 4.10. Образование связных компонент при объектной смежности При объектной смежности в примере из рис. 4.8 каждая четверка черных точек образует компоненту связности (рис. 4.10). Таким образом, объектная смежность сохраняет связность компонент объекта и фона для симметричных изображений в отличие от гексагональной смежности. Объектная смежность хорошо описывает связность тонких фигур, составленных из черных точек. Однако для представления тонких дыр в многосвязных фигурах объектная смежность не очень удобна. В примере на рис. 4.11 четыре белые точки, образующие дыру в многосвязной фигуре, при объектной смежности представляются в виде четырех компонент связности, т.е. образуют четыре дыры по одной точке в каждой. Очевидно, что такое дробление дыры представляется не вполне адекватным. Для того чтобы в подобных ситуациях тонкая дыра описывалась как одна связная компонента, нужно по-разному определить смежность белых точек для внешнего фона и для внутренних дыр. При этом необходимо учитывать вложенность компонент связности друг в друга. Такая структура соседства, которую мы будем называть компонентной смежностью, строится следующим образом. Пусть задано исходное бинарное изображение S (рис. 4.12, а). Для него построим конечную последовательность изображений 5ι,ί>2,... Sk, к ^ 1 следующим образом. В качестве первого элемента этой последовательности выступает исходная сцена, т. е. S\ = S. Введем для точек в S отношение соседства, определяемое сильной смежностью, т. е. 4-смежность. Далее выделим в S внешнюю компоненту связности W\, состоящую из белых точек. На основании S\ построим теперь изображение 5г- Оно получается из S\ путем инверсии цвета всех точек, не попавших в W\ (рис. 4.12, б). В 52, в свою очередь, -выделим внешнюю компоненту W^· Далее построим изображение 53 из S% путем инверсии цветов точек, не попавших в W2 (рис. 4.12,в), и т.д. Последним сконструированным изображением будет Sk, в котором после инверсии цвета всех точек, не попавших в Wk, вовсе не остается черных точек (рис. 4.12, г). В каждом изображении Si, i=l,...,fc рассмотрим множество всех граничных ячеек, в которые входят точки из внешней компоненты Wi. Эти ячейки назовем граничными ячейками i-го уровня. Рис. 4.11. Дробление компоненты связности при объектной смежности
4.2. ТРЕУГОЛЬНЫЕ СТРУКТУРЫ СОСЕДСТВА 61 в) г) Рис. 4.12. Последовательная инверсия изображения при определении компонентной смежности Последовательность изображений, построенная описанным способом, обладает следующими свойствами. Во-первых, все граничные ячейки исходного изображения S попадают в число граничных ячеек какого-то уровня %— 1,..., к. А во-вторых, множества граничных ячеек разных уровней не пересекаются. Будем называть граничные ячейки нечетного уровня внешними, а четного уровня - внутренними. Граничные ячейки г-го уровня разобьем на треугольники, т.е. проведем в них диагонали по правилам, аналогичным правилу, принятому для определения объектной смежности. Но эти правила будут различаться для граничных ячеек четных и нечетных уровней. Определение 4.5. Компонентной смежностью называется треугольная структура соседства, в которой все внешние граничные ячейки имеют приоритет черного цвета, а все внутренние граничные ячейки имеют приоритет белого цвета. Таким образом, для всех граничных ячеек исходного изображения S мы ввели разбиение на треугольники. Для остальных ячеек S разбиение на треугольники может быть построено произвольным образом. Использование компонентной смежности позволяет более правильно описать построение компонент связности для многоугольных фигур с узкими дырами. Для примера, приведенного на рис. 4.11, дыра из четырех Рис. 4.13. Связные компоненты при компонентной смежности белых точек в многоугольной фигуре будет теперь представлена одной связной компонентой (рис. 4.13), а не четырьмя, как это было при использовании объектной смежности.
62 1л. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ Компонентная смежность аналогична объектной смежности, но она различается для точек, являющихся внешними граничными точками фигуры, и точек, лежащих на внутренних границах фигуры. В зависимости от типа граничной ячейки (внешняя или внутренняя граница) диагональ в ней соединяет черные либо белые точки. При таком способе описания соседства преимущество имеют поочередно точки объекта и точки фона по мере просмотра контуров границы сцены. Таким образом, выбор диагонали жестко определен лишь для граничных ячеек типа 1,3 и 4. Внешние граничные ячейки к и ::п Внутренние граничные ячейки 12 3 4 5 ::п Рис. 4.14. Компонентная смежность точек в ячейках растровой решетки Различия между определенными таким образом тремя вариантами структур соседства (гексагональной, объектной и компонентной смежностью) проявляются существенно только лишь при определении соседства точек в перекрестках. Одно и то же изображение с перекрестками при разных структурах соседства образует разные дискретные фигуры и соответственно разные сцены. На рис. 4.15 приведен пример о о о о о о О О · |0 о о ,· о1 о · о о о о о о а) Рис. 4.15. Бинарное изображение с перекрестками и дискретные сцены для различных структур соседства: исходное изображение (а), гексагональные (б, в), объектная (г), компонентная (д)
4.3. ГРАНИЧНЫЕ КОРИДОРЫ ДИСКРЕТНОЙ СЦЕНЫ 63 изображения с тремя перекрестками, а также представлены различные варианты дискретных сцен, которые в нем образуются в зависимости от выбора структуры соседства. Рис. 4.15,6, в соответствуют вариантам гексагональной смежности. Рис. 4.15, г показывает случай объектной смежности, а рис. 4.15,(5 — компонентной смежности. Три ячейки-перекрестка, присутствующих в исходном бинарном изображении, и способы их разбиения на треугольники показаны для каждого случая. Таким образом, использование треугольных решеток для описания структур соседства гарантирует существование эквивалентной непрерывной сцены для любой дискретной сцены. 4.3. Граничные коридоры дискретной сцены Для того чтобы практически решить задачу построения эквивалентной сцены для исходной дискретной сцены, нужно вначале выявить все граничные ячейки и найти все граничные пары точек в изображении. Пусть для растровой решетки каким-либо из перечисленных выше способов задана треугольная структура соседства (гексагональная, объектная или компонентная). Будем называть пару разноцветных соседних точек граничной парой. Грань треугольной решетки, имеющую разноцветные точки, также будем называть граничным треугольником. Граничные пары и граничные треугольники связаны двумя важными соотношениями: 1) каждая граничная пара определяет ребро графа смежности точек решетки, являющееся общей стороной двух смежных граничных треугольников; 2) каждый граничный треугольник имеет две разноцветные стороны, соответствующие двум граничным парам точек. Из этого следует, что попарно смежные граничные треугольники образуют замкнутые цепочки (рис. 4.16). Объединение треугольников, входящих в каждую такую цепочку, будем называть граничным коридором. Граничный коридор представляет собой подграф треугольной решетки, имеющий кольцевую структуру. Ребра треугольной решетки образуют внешнюю и внутреннюю границы кольца. Причем внутренняя граница состоит из точек одного цвета, а внешняя — другого. Все граничные разноцветные ребра, попавшие в коридор, являются его внутренними ребрами. На рис. 4.16 представлены: дискретная фигура (а), граничный коридор (б) и замкнутая цепочка, состоящая из граничных пар и граничных треугольников (в). Граничный коридор позволяет сформулировать корректное определение границы дискретной фигуры. Для любого бинарного изображения с заданной на нем треугольной структурой соседства множество граничных коридоров обладает следующими важными свойствами. Во-первых, на плоскости каждый коридор определяет полосу, заключенную между двумя замкнутыми ломаными линиями. Сами эти
64 Гл. 4. НЕПРЕРЫВНЫЕ ГРАНИЦЫ ДИСКРЕТНОЙ ФИГУРЫ О О о о о о о о а) б) [τμΑ-^^^ в) Рис. 4.16. Дискретная фигура (а), ее граничный коридор (б) и цепочка граничных пар и треугольников (в) ломаные линии, вообще говоря, не являются простыми многоугольниками, т. е. могут иметь самопересечения. Будем называть эти линии стенками коридора. Во-вторых, каждый коридор делит множество всех точек растровой решетки на два подмножества. Одно — внутреннее подмножество, включает в себя точки решетки, лежащие на внутренней стенке коридора, а также все точки решетки, попадающие внутрь контура, образованного этой стенкой. Другое подмножество — внешнее, включает точки решетки, лежащие на внешней стенке коридора и вне контура, образуемого этой стенкой. В-третьих, граничные коридоры не имеют пересечений в том смысле, что они не имеет общих внутренних точек. Эти свойства позволяют рассматривать коридоры как дискретные аналоги жордановых кривых на плоскости. Таким образом, граничные коридоры открывают возможности для построения эквивалентных непрерывных сцен для любых дискретных сцен, поскольку любая жорданова замкнутая кривая, лежащая внутри граничного коридора и пересекающая по одному разу все разноцветные ребра триангуляции внутри коридора, может рассматриваться в качестве граничного контура некоторой эквивалентной непрерывной сцены. Следовательно, для того, чтобы описать множество возможных контуров границы эквивалентной непрерывной сцены, нужно построить все граничные коридоры дискретной сцены. При этом нужно, чтобы составляющие граничный коридор граничные треугольники или гра-
4.3. ГРАНИЧНЫЕ КОРИДОРЫ ДИСКРЕТНОЙ СЦЕНЫ 65 ничные пары были упорядочены вдоль коридора в соответствии со своей смежностью. Задачу выявления всех граничных коридоров и последовательности входящих в них граничных пар и граничных треугольников будем называть прослеживанием или трассировкой границы дискретной сцены. Эта задача включает в себя две подзадачи: поиск граничных коридоров и непосредственное прослеживание найденных коридоров. Задача поиска граничного коридора состоит в нахождении хотя бы одной граничной пары, входящей в этот коридор. А задача прослеживания найденного коридора — это последовательное выявление всех входящих в коридор граничных пар и граничных треугольников, начиная с первой найденной граничной пары.
ГЛАВА 5 ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ 5.1. Поиск граничных коридоров. 5.2. Симплексное прослеживание коридора при гексагональной смежности. 5.3. Прослеживание подвижным мостом при объектной смежности. 5.4. Прослеживание подвижным мостом при компонентной смежности. 5.1. Поиск граничных коридоров Граничные коридоры представляют собой связные множества треугольников, соответствующие отдельным замкнутым контурам границы. Задача поиска состоит в том, чтобы найти хотя бы одну граничную пару точек для каждого коридора. Очевидно, что в каждом коридоре обязательно присутствуют граничные пары, точки которых расположены горизонтально (т.е. имеют одинаковые ординаты). Поэтому поиск достаточно вести только среди горизонтальных пар смежных точек. Поиск таких горизонтальных граничных пар может быть выполнен построчным сканированием бинарного v... Qh.Q-Q-Q.Q-Q-О.СЮ^*.·' изображения. Построчное сканировало^ QQQ-Q-QJ^lQ^i:* ние — это просмотр всех строк дис- **нЭ-0-ОЮ · · · О О кретной сцены сверху вниз и всех то- 0000····0 чек в строках слева направо (рис. 5.1). OOttfittO Поскольку все фигуры сцены лежат οο····οοο ^^^ΤΤΧρ^^ внутри некоторого конечного прямо- ηηηηηηηηη угольника, построчное сканирование UUUUUUUUU осуществляется только для этого прямо- Рис. 5.1. Построчное скани- угольника и сводится к просмотру ко- рование изображения нечного числа точек. Все точки вне прямоугольника считаются при этом фоновыми — белыми. В строке последовательно слева направо нужно проверить все соседние пары точек, не являются ли они разноцветными. Каждая найденная пара последовательных разноцветных точек в строке свидетельствует о том, что найден граничный коридор. Если граничная пара найдена, то можно начинать процесс прослеживания найденного коридора. Соответствующие алгоритмы прослеживания коридоров описываются ниже. После завершения прослеживания обнаруженного коридора поисковое сканирование изображения продолжается с того места, где была найдена граничная пара точек. Процесс поиска завершается, когда заканчивается построчное сканирование.
5.1. ПОИСК ГРАНИЧНЫХ КОРИДОРОВ 67 Ясно, что при полном построчном сканировании изображения все горизонтальные граничные пары будут найдены и, соответственно, все граничные коридоры будут выявлены. Однако очевидно, что среди найденных коридоров окажутся такие, которые найдены повторно. Это легко может произойти в том случае, если найденная граничная пара окажется принадлежащей тому коридору, который уже был обнаружен ранее и прослеживание которого уже выполнено. Такая ситуация может привести к тому, что прослеживание одних и тех же коридоров будет выполнено несколько раз. Для того чтобы предотвратить повторное прослеживание одних и тех же коридоров, начинающееся с разных граничных пар, необходимо, чтобы алгоритм прослеживания обеспечил нахождение и маркировку всех горизонтальных граничных пар, входящих в коридор. Под маркировкой граничной пары понимается пометка входящих в нее точек специальным маркером. С учетом этого новый граничный коридор считается обнаруженным, если при построчном сканировании бинарного изображения в строке найдена горизонтальная граничная пара, в которой хотя бы одна точка не помечена. Можно предложить структуру данных для пометки точек, вошедших в коридор. Для этого можно использовать вспомогательную матрицу того же размера, что и исходное бинарное изображение. В начальный момент все точки этой матрицы имеют белый цвет, а в процессе прослеживания точки, которые необходимо пометить, закрашиваются черным цветом. На рис. 5.2 представлен пример последовательного выявления трех граничных коридоров для бинарного изображения из рис. 4.15. В качестве структуры соседства в примере выбрана объектная смежность. На ооооооооо ο····οο·ο о *-£> о\ · о · · о о · ·\ο/· · о · о ο···ο·ο·ο οο·οο·οοο οοο···οοο ооооооооо • · · о о · о о · о о о · · о о о «(о о/· о о о б) о о о · · о о о о о в) ο····οο·ο ο·_·_§·οο·ο ο· _·._·_· о о · о • V·"·"·4 · «'V· · '·"· ·~·\ · ·'"·"'· · 4'"· ·~·\ · ·''·*· ·, · о о ·\·/· ··· ·; ·\· ·»·\·/· ·;· ·· ·\· ·»·',·/· ·;· \ ' ' ι \ ч - ' ''ι \ 4_/ ι ι ·\. ο ο ο ·:··,·;· ·> ο · ο ··'.·;· ·\· ο κ*\· .·,··· 4 IV.,' χ I V„ 4X»|V^ ο·^4·οο·>··ο ο ·44· ο ο ·'· · ο ο ·\· ι · ·/·'· · ο ο ο ·\· · ·' · ο ο ο ο ·4χ· · ·/ · ο ο ο ο ·\· · ·' · ο ο οοο···οοο г) οοο···οοο д) • · ο ο ο е) Рис. 5.2. Поиск граничных коридоров: найденные горизонтальные граничные пары (верхний ряд), матрица пометок (нижний ряд)
68 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ картинках в верхнем ряду показаны найденные последовательно три горизонтальные граничные пары, которые инициируют прослеживание соответствующих коридоров. Картинки в нижнем ряду показывают матрицу пометок после прослеживания этих коридоров. В исходном изображении (рис. 5.2, а) указана первая найденная граничная пара. На рис. 5.2, г показаны помеченные точки, найденные при прослеживании первого коридора. При дальнейшем построчном сканировании изображения находится следующая непомеченная граничная пара, которая открывает новый коридор (рис. 5.2,6). В результате его прослеживания помечаются относящиеся к нему точки (рис. 5.2, д). Наконец, далее находится еще одна граничная пара (рис. 5.2, в) и прослеживается третий коридор с пометкой соответствующих точек (рис. 5.2, е). Из рисунка видно, что каждая очередная найденная горизонтальная граничная пара является первой по ходу сканирования среди тех, которые имеют хотя бы одну непомеченную точку. Таким образом, при условии, что алгоритм прослеживания коридоров будет удовлетворять указанному выше требованию выявления и маркировки всех граничных пар точек, все коридоры будут найдены за один просмотр изображения и при этом ни один из контуров не будет прослежен дважды. Следует отметить, что порядок точек в найденной граничной паре позволяет сразу определить, внешний или внутренний граничный коридор обнаружен. Если в горизонтальной граничной паре белая точка лежит левее черной (рис. 5.2, а), то найден контур внешней границы фигуры. Если же черная точка лежит левее белой (рис. 5.2,6, в), то найденный контур описывает внутреннее отверстие в фигуре. 5.2. Симплексное прослеживание коридора при гексагональной смежности Прослеживание коридора можно интерпретировать как движение человека, решившего обойти большую лужу с завязанными глазами (рис. 5.3). Для того чтобы не потерять берег этой лужи, он передвигается левой ногой по воде, а правой — по суше. Каждый очередной шаг увеличивает прослеженную часть береговой линии. Процесс завершается, когда путешественник вернется в начальную точку маршрута, которую нужно как-то пометить. Симплексное прослеживание — это метод трассировки граничного коридора в случае, когда структура соседства определяется гексагональной смежностью. Существуют два варианта гексагональной смежности, определяющие разные треугольные решетки (см. рис. 4.7). Будем называть треугольную решетку диагональной, если треугольники образованы диагоналями с углом 45° (см. рис. 4.7, а), и антидиагональной, если диагонали образуют с осью абсцисс угол —45° (рис. 4.7,6). Симплексное прослеживание представляет собой процесс последовательного выявления всех треугольников граничного коридора и
5.2. ПРОСЛЕЖИВАНИЕ КОРИДОРА ПРИ ГЕКСАГОНАЛЬНОЙ СМЕЖНОСТИ 69 Рис. 5.3. Прослеживание границы лужи напоминает внешне перекатывание треугольника вдоль границы фигуры. Цепочка треугольников в граничном коридоре устроена так, что каждый треугольник имеет ровно два смежных с ним граничных треугольника, причем пара смежных треугольников имеет общую сторону, соединяющую разноцветные точки. Поэтому последовательное выявление граничных треугольников должно' привести к нахождению всей цепочки. Название «симплексное прослеживание» объясняется метафорой движения треугольника (двумерного симплекса) вдоль некоторой траектории (коридора). Процесс прослеживания начинается в момент, когда найдена горизонтальная граничная пара точек, как это описано выше в разделе 5.1. Алгоритм прослеживания включает в себя следующие шаги: (1) построение начального треугольника; (2) основной цикл — последовательные перевороты треугольника; (3) проверка конца цикла. Если очередное положение треугольника совпало с начальным треугольником, то цепочка треугольников замкнулась и прослеживание окончено, иначе переход к 2. Рассмотрим эти шаги более подробно. 5.2.1. Построение начального треугольника. Входными данными для начала прослеживания является пара разноцветных точек, найденная в результате поиска очередного контура. Пусть найдены две точки, составляющие горизонтальную граничную пару. Прослеживание коридора должно осуществляться таким образом, чтобы фигура, состоящая из черных точек, ограниченная коридором, находилась слева, а фон — справа относительно направления движения треугольника. Это значит, что черные точки фигуры лежат слева от траектории движения треугольника, а белые — справа. В соответствии с этим обозначим точки граничной пары следующим образом: L — левая черная точка, a R — правая белая точка. Эти две точки являются вершинами начального треугольника. Положение третьей вершины Τ начального треугольника выбирается на основе следующих двух правил. Вершины треугольника L, Д, Τ должны образовывать правую тройку, т. е. располагаться в положительном направлении — против часовой стрелки.
70 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ Гипотенуза треугольника должна составлять с осью абсцисс угол, определяемый выбранным типом треугольной решетки: диагональной (45°) или антидиагональной (—45°). Из этих правил следует, что для диагональной решетки в начальном треугольнике угол при вершине R должен быть прямым, а для антидиагональной решетки прямым должен быть угол при вершине L. На рис. 5.4 представлены четыре варианта начального треугольника. Диагональная решётка Антидиагональная решётка R L Τ R L Τ г л ч к Τ L R Τ L R a) 6) в) г) Рис. 5.4. Построение третьей вершины начального треугольника Варианты (рис. 5.4, а, б) относятся к диагональной решетке, а варианты (рис. 5.4, в, г) — к антидиагональной. Варианты (рис. 5.4, а, в) дают начальный треугольник для внешних коридоров, а варианты (рис. 5.4, б, г) — для внутренних. Обозначим координаты точек L, R, Τ через (L.x,L.y), (R.x, R.y), (Т.х,Т.у) соответственно. Тогда координаты точки Τ выражаются через координаты точек L и R следующим образом: для диагональной решетки Т.х = R.x, T.y = R.y + (R.x - L.x); для антидиагональной решетки Т.х = L.x, T.y = L.y + (R.x - L.x). Построенный таким образом треугольник (L, Д, Т) образует начальное положение «катящегося симплекса». Дальнейшее «перемещение симплекса» вдоль граничного коридора осуществляется путем последовательных переворотов треугольника. 5.2.2. Переворот треугольника. Обозначим текущий треугольник после m-го шага через (Lm,Rm,Tm). Начальный треугольник есть (Lo,i?o,To). Переворот треугольника представляет собой построение нового треугольника, имеющего с текущим треугольником одну общую сторону. Переворот осуществляется в зависимости от цвета точки Т, называемой пробной точкой. При этом используется очевидное свойство треугольных решеток гексагональной смежности: два смежных треугольника центрально симметричны относительно точки — середины их общей стороны. Треугольник переворачивается в соответствии с двумя следующими правилами.
5.2. ПРОСЛЕЖИВАНИЕ КОРИДОРА ПРИ ГЕКСАГОНАЛЬНОЙ СМЕЖНОСТИ 71 1. Переворот выполняется через сторону треугольника RT или LT, причем через ту из них, у которой концевые точки имеют разные цвета (через разноцветную сторону). 2. Новый треугольник является центрально симметричным старому относительно центра стороны, через которую выполняется переворот. R L R ч-, α d- Т Ν ΝΤ а) б) Рис. 5.5. Правила переворота треугольника На рис. 5.5 демонстрируются эти правила. Если пробная точка Τ белая (случай а), то новая вершина Аг получается, как центрально симметричная вершине R относительно середины стороны LT текущего треугольника. А если пробная точка Τ черная (случай б), то новая вершина N получается, как центрально симметричная вершине R относительно середины стороны RT текущего треугольника. Если текущий треугольник на шаге га есть {Lm,Rm,Tm), то новая точка Nm вычисляются следующим образом: N = \Тш + (Lm ~ Rm^ еСЛИ Тш чеРная' (5 П ш \Tm + (i?m-Lm), если Тш белая. У) После переворота нужно обозначить вершины в новом треугольнике в соответствии с принятыми правилами: i?m+i — черная, Lm+i — белая, Tm+i — пробная. Таким образом, следующий треугольник (Lm+i,ium+i,Tm+i) определяется так: г _ \'Lm> если Tm белая, _ /Tm, если Tm белая, (5.2) \Tm, если Tm черная; ■С [Rm, если Tm черная; J-m-\-\ = ™πι· Формулы (5.1) и (5.2) полностью задают процесс переворота треугольника при прослеживании граничного коридора. 5.2.3. Завершение прослеживания. Завершение процесса прослеживания происходит при возвращении катящегося треугольника в начальное положение, т. е. при совпадении вновь образованного треугольника (Lm+i,ium+i,Tm+i) с начальным треугольником (Ьо,До,Т0), когда Lm+1 = Lo, Rm+\ — Ro> ϊτη+ι — Tq. Пройденное при прослеживании множество точек S = (Ьо,До,Т0, Γι,Τ2,... ,Тт) называется следом трассировки. Заметим, что в этой последовательности некоторые точки могут встречаться по нескольку
72 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ а) б) в) Рис. 5.6. Пример симплексного прослеживания раз. В частности, точки начального симплекса и конечного симплекса совпадают и поэтому, по крайней мере, дважды входят в последовательность. Общая картина движения симплекса представлена в примере на рис. 5.6. Для дискретной сцены (рис. 5.6, а) показана последовательность образующихся треугольников в процессе симплексного прослеживания (рис. 5.6, б), начиная с начального т = О и до т — 39. Последний треугольник с индексом т = 40 совпадает с начальным треугольником. На рис. 5.6, в показан след трассировки. Хорошо видны точки, попавшие в эту последовательность дважды. Следует отметить, что симплексная трассировка выявляет все граничные пары, входящие в состав коридора, поэтому выполнены требования, которые предъявляются к алгоритму прослеживания со стороны алгоритма поиска граничных коридоров: обеспечивается маркировка всех горизонтальных граничных пар. 5.3. Прослеживание подвижным мостом при объектной смежности Для объектной и компонентной моделей смежности структура треугольников в граничном коридоре не столь проста, как для гексагональной смежности. В частности, смежные треугольники не обязательно являются центрально симметричными. Поэтому прослеживание катящимся треугольником становится более сложным процессом: иногда переворот должен быть выполнен так, чтобы новый треугольник был центрально симметричен предыдущему, а иногда требуется осевая симметрия относительно их общей стороны. Упростить описание процесса прослеживания дает возможность алгоритм «подвижного моста». Прослеживание подвижным мостом — это метод трассировки границы объекта в случае, когда смежность точек определяется в зависимости от соотношения их цветов, что имеет место для объектной и компонентной моделей смежности. Так же, как и для симплексного прослеживания, процесс обхода граничного коридора начинается с найденной горизонтальной граничной пары разноцветных точек. Но
5.3. ПРОСЛЕЖИВАНИЕ ПОДВИЖНЫМ МОСТОМ ПРИ ОБЪЕКТНОЙ СМЕЖНОСТИ 73 в отличие от симплексного прослеживания, при котором ищутся грани граничного коридора, алгоритм подвижного моста ищет разноцветные ребра граничного коридора. При этом, естественно, будут найдены и все треугольные грани, инцидентные выявленным ребрам, которые образуют треугольное покрытие граничного коридора. Поэтому при известной начальной горизонтальной граничной паре задача трассировки границы дискретного объекта сводится к последовательному построению граничных пар. Перечисление граничных пар на треугольной решетке представляется в виде движения прямолинейного отрезка, называемого «подвижным мостом» и соединяющего разноцветные точки. Передвижение моста с подвижными концами осуществляется вдоль граничного коридора. Мост имеет два конца: левую черную точку и правую белую точку. На каждом шаге перемещается лишь один конец моста. Построение граничных пар является результатом последовательного перемещения концов моста вдоль граничного коридора. Точка, которая становится новым концом моста, вычисляется на основе координат его текущих концевых точек. А от цвета этой новой точки зависит, какая из концевых точек моста перейдет в новую точку. Процесс завершается, когда мост снова придет в начальное положение. Рассмотрим сначала, как этот процесс реализуется в случае, когда структура соседства описывается объектной смежностью. Исходными данными для алгоритма прослеживания является горизонтальная граничная пара разноцветных точек (Lo, До), определяющая начальное положение моста. Точка Lq — левая черная, а точка До — правая белая. Так же, как и в методе симплексного прослеживания, будем считать, что перемещение моста осуществляется таким образом, чтобы фигура оставалась слева, а фон — справа относительно направления движения. Тогда внешние граничные коридоры будут прослеживаться в положительном направлении, а внутренние — в отрицательном. Напомним, что взаимное положение точек L0 и До позволяет определить, какой граничный коридор предстоит обойти — внешний или внутренний. Если L$.x > Rq.x, т.е. черная точка Lo лежит правее белой точки До, то обходится внешняя граница фигуры. А если наоборот, Lq.x < До.х, то обходится ее внутренняя граница. Поскольку направление обхода граничного коридора определено, то тем самым для текущего положения моста (L, Д) задается направление перемещения V, составляющее положительный угол 90° с направлением от левого к правому концу моста. Этот вектор V = (V.x, V.y) может быть вычислен как V.x = —(R.y ~ L.y), V.y = R.x — L.x. Шаг перемещения моста включает в себя два действия: вычисление очередной пробной точки и определение того, какой из концов моста должен быть перемещен в пробную точку в зависимости от цвета этой точки. Пусть (L, Д) — текущее положение моста. Вычисление очередной пробной точки зависит от того, является ли мост параллельным одной
74 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ R L Ф—· 1 Π N L · Ν Ν R R N L R L а) L Ν Ν R R L R L N L R N б) Рис. 5.7. Правила перемещения подвижного моста: для вертикальных и горизонтальных положений (а), для диагональных положений (б) из осей координат, т. е. вертикальным либо горизонтальным, или нет. Если мост занимает вертикальное или горизонтальное положение, т. е. R.y = L.y или R.x = L.x, то вектор V имеет единичную длину. Тогда пробная точка вычисляется как результат сдвига белой (правой) концевой точки моста на этот вектор (рис. 5.7), т. е. N = R + V. Теперь рассмотрим ситуацию, когда мост не является вертикальным или горизонтальным, а занимает диагональное положение, т. е. R.y Φ L.y и R.x Φ L.x. В этом случае вычисление очередной пробной точки осуществляется путем смещения середины моста - (R + L) на вектор i V, т. е. N = i (R + L + V). Пусть (LmjRm) — текущее положение моста после т шагов. Тогда общее правило вычисления пробной точки Nm для случая объектной смежности выглядит следующим образом: Vm.x = -(Rm.y - Lm.y)· Vm.y = Rm ,X L·γγι.X) Nm = (5 3) при Vm.x = 0 или Уш.у = О, + Rm + Vm) в противном случае. После того, как вычислены координаты пробной точки Nm, в зависимости от цвета этой точки определяется, какой из концов моста — черный или белый — должен быть в нее перемещен. Очевидно, что это должен быть тот конец, цвет которого совпадает с цветом пробной точки. Формально правило выглядит следующим образом: г _ \Nmy если Nm черная, m+ [Lmi если Nm белая; (5.4) _ J Rm) если Nm черная, + 1 \-ЛГт, если Nm белая.
5.3. ПРОСЛЕЖИВАНИЕ ПОДВИЖНЫМ МОСТОМ ПРИ ОБЪЕКТНОЙ СМЕЖНОСТИ 75 Описанные правила перемещения моста (5.3)-(5.4) обеспечивают выполнение двух важных условий. Во-первых, мост всегда остается разноцветным, т.е. два его конца — это белая и черная точки. А во-вторых, во всех граничных ячейках, в том числе в перекрестках, будут выявлены соответствующие диагонали и обеспечено правильное определение связности компонент дискретной сцены. Таким образом, применение правил (5.3)-(5.4) позволяет вычислить последовательность граничных пар (Lm,i?m), начиная с начальной граничной пары (L0,i?o). Признаком завершения процесса прослеживания отдельного коридора является возвращение подвижного моста в начальное положение, т. е. выполнение условия Lm = Lo и Rm = i?o. Следом трассировки является последовательность точек S = (Lo,Ro,N0,NuN2,...,Nm). На рис. 5.8 приведен пример, демонстрирующий работу алгоритма. Анализ дискретной сцены (рис. 5.8,а) при условии, что структура соседства определена по модели объектной смежности, дает три граничных коридора: один внешний и два внутренних. На рис. 5.8,6 показан маршрут подвижного моста при прослеживании внешнего коридора фигуры. Последовательность положений моста на начальной части маршрута (положения с 0 по 24) отмечены соответствующими номерами. На рис. 5.8, β показан след трассировки. Прослеживание • о о о Рис. 5.8. Пример прослеживания граничных коридоров подвижным мостом для объектной смежности внутренних коридоров фигуры представлено на рис. 5.8, г, д, е. Здесь также показаны маршруты подвижного моста (рис. 5.8, г, д) с нумерацией последовательных положений моста и два соответствующих следа трассировки (рис. 5.8, е). Как видно из рис. 5.8,6, г, д, граничный
76 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ коридор представляется в виде цепочки треугольных граней, как и в случае симплексного прослеживания. В каждом треугольнике две стороны образованы разноцветными граничными парами точек, а одна сторона имеет концевые точки одинакового цвета. 5.4. Прослеживание подвижным мостом при компонентной смежности Метод подвижного моста для компонентной смежности имеет два отличия по сравнению с объектной смежностью. Первое отличие касается правила вычисления положения пробной точки для вертикального или горизонтального положения моста. Если для объектной смежности это правило является универсальным для всех граничных коридоров, то для компонентной смежности оно различно для внешних и внутренних коридоров. Пусть (L,R) — текущее положение моста и мост имеет вертикальное или горизонтальное положение. Вектор V задает направление перемещения моста. Тогда в том случае, если прослеживаемый коридор является внешним, т.е. L$.x > Rq.x, выбор пробной точки осуществляется так же, как и при объектной смежности: N = R + + V. Но если прослеживается внутренний коридор, т.е. Lq.x < До.χ, то новая пробная точка определяется как N = L + V (рис. 5.9). R R L Ф-· 1 и N R L O-f ■ 1 И N L Д τ ° <Э— G ·—0 R N L R а) L Ν Ν 6 4-0 R L R б) N а- а- N 1 R Рис. 5.9. Правила перемещения подвижного моста для вертикальных и горизонтальных положений при компонентной смежности: для внешних коридоров (а), для внутренних коридоров (б) В том случае, когда мост занимает диагональное положение, пробная точка вычисляется так же, как и при объектной смежности (см. рис. 5.7,6). Вторая особенность метода подвижного моста для случая компонентной смежности связана с необходимостью учета эффекта «перекрашивания» точек растровой решетки, описанного в разделе 4.2. Непо-
5.4. ПРОСЛЕЖИВАНИЕ ПОДВИЖНЫМ МОСТОМ ПРИ КОМПОНЕНТНОЙ СМЕЖНОСТИ 77 средственное выполнение перекрашивания бинарного изображения было бы чрезвычайно неэффективно с вычислительной точки зрения. Но его можно избежать на основе следующих соображений. 1) Вместо инверсии цвета точек, не попавших во внешнюю компоненту Wi уровня г, можно инвертировать цвет самой этой внешней компоненты. 2) Нет необходимости перекрашивать всю внешнюю компоненту. Достаточно инвертировать цвет точек, попавших в граничный коридор, отделяющий внешнюю компоненту от остальных точек решетки. 3) Непосредственное перекрашивание точек граничного коридора также не требуется, поскольку при прослеживании этого коридора все его точки были помечены. Эти соображения позволяют просто и эффективно реализовать прослеживание. Предположим, что выполнено прослеживание к коридоров и осуществляется прослеживание (fc+l)-ro коридора. Для каждой точки растровой решетки ρ определена метка М(р), показывающая, была ли эта точка помечена при прослеживании предыдущих к коридоров. Пусть М(р) = 1, если точка помечена, и М(р) = О, если нет. Идея состоит в том, что цвет точек растра на этапе прослеживания (к+ 1)-го коридора условно изменяется. Если прослеживаемый контур является внешним, то правило изменения цвета следующее: — точка ρ считается условно черной, если она черная и непомеченная, т.е. М(р) = 0; — точка ρ считается условно белой, если она белая или помеченная, т.е. М(р) = 1. Если же прослеживаемый контур является внутренним, то правило изменения цвета точек имеет другой вид: — точка ρ считается условно черной, если она черная или помеченная (М(р) = 1); — точка ρ считается условно белой, если она белая и не помеченная (М(р) = 0). С учетом этого условного перекрашивания общее правило перемещения концов моста становится похожим на (5.4): г _ (Nm, если Nm условно черная, т+ \Ьт, если Nm условно белая; (о.о) Ρ _ J Rm, если Nm условно черная, т+ \Nm, если Nm условно белая. После завершения прослеживания (к+ 1)-го граничного коридора все точки, в него вошедшие, добавляются к множеству помеченных точек решетки (но не ранее!). На рис. 5.10 представлен пример прослеживания граничных коридоров той же самой фигуры, что и на рис. 5.8. В случае, когда отношение соседства описывается компонентной смежностью, образуются два граничных коридора. На рис. 5.8, б, г показаны последовательные положения подвижного моста, а на рис. 5.8, в, д — соответствующие следы трассировки. Особо следует обратить внимание на положение моста 18
78 Гл. 5. ПОИСК И ПРОСЛЕЖИВАНИЕ ГРАНИЦ г) д) Рис. 5.10. Пример прослеживания граничных коридоров подвижным мостом для компонентной смежности на рис. 5.10, г. В этом положении обе его концевые точки являются белыми, что, казалось бы, противоречит принятым принципам. Однако следует иметь в виду, что одна из этих точек является условно черной, поскольку попала во внешний граничный коридор, как это видно из рис. 5.10,6. Поэтому прослеживание внутреннего граничного коридора выполняется вполне корректно.
ГЛАВА 6 АППРОКСИМАЦИЯ ГРАНИЦ 6.1. Близость дискретных и непрерывных сцен. 6.2. Аппроксимация следа трассировки многоугольником. 6.3. Минимальные разделяющие многоугольники. 6.4. Аппроксимация многоугольной границы сплайнами. 6.1. Близость дискретных и непрерывных сцен Свойство эквивалентности непрерывной и дискретной сцен характеризует топологическое их сходство. В основе его лежит связность компонент этих сцен. Топологическое сходство непрерывных сцен, однако, вовсе не гарантирует их сходства с точки зрения тех критериев, которые человек выдвигает интуитивно, когда сравнивает изображения. На рис. 6.1 представлены два варианта эквивалентной непрерывной сцены для заданной дискретной сцены. Очевидно, что первый из них (левый) выглядит значительно более «правильным», более похож на дискретную сцену, чем второй. Рис. 6.1. Эквивалентные непрерывные сцены для одной и той же дискретной сцены Для того чтобы формализовать понятие степени сходства дискретной сцены и топологически эквивалентных ей непрерывных сцен, нужно ввести некоторую меру близости. Поскольку речь идет о сравнении точечных множеств, лежащих в метрическом пространстве (в евклидовой плоскости), в качестве такой меры подходит хаусдорфово расстояние между множествами. Обозначим d(x,y) расстояние между двумя точками х,у е R2. Расстояние от точки χ G В? до множества точек Υ с В? есть d(x, Υ) = = inf d(x.y).
80 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Пусть Ρ и Q — два множества точек на евклидовой плоскости, Р, Q С R2. Хаусдорфово расстояние между этими множествами есть Н{Р, Q) = max{ inf d(p, Q), inf d(q, Ρ)}. Пусть D — дискретная сцена, С — эквивалентная ей непрерывная сцена. Каждая из них задает разбиение соответствующего пространства на компоненты связности. Для дискретной сцены это связные множества D\,D2,. · · ,Dk в растровой решетке с заданной структурой соседства, а для непрерывной — связные множества СьСг,.. · ,Ck на евклидовой плоскости. Определение 6.1. Расстоянием между сценами С и D будем называть величину /х(С,2?)= max #(Q,A), г=\,...,к где H(Ci,Di) есть хаусдорфово расстояние между множествами. Пусть граничный контур непрерывной сцены лежит внутри граничного коридора дискретной сцены. Тогда хаусдорфово расстояние между соответствующими компонентами связности этих сцен не превосходит максимального расстояния от точек непрерывной границы до ближайших вершин граничного коридора. Поскольку граничный коридор покрыт треугольниками, величина H(Ci,Di) определяется разбросом расстояний от точки, лежащей внутри треугольника, до наиболее удаленной из его вершин. Диапазон разброса этих расстояний составляет от — до у/2. Следовательно, справедливо следующее Утверждение 6.1. Если внутри граничного коридора дискретной сцены лежит граница эквивалентной непрерывной сцены, то хаусдорфово расстояние между этими сценами заключено в пределах Таким образом, граничный коридор дискретной сцены дает простую и естественную возможность для аппроксимации ее непрерывной сценой. Нужно построить эквивалентную непрерывную сцену такую, чтобы ее граница лежала внутри граничного коридора дискретной сцены. Рассмотрим вопрос построения границы такой непрерывной сцены. 6.2. Аппроксимация следа трассировки многоугольником Очевидно, что на практике граничный коридор является чрезвычайно узким и имеет ширину в один пиксель. Поэтому практически любая замкнутая кривая линия, целиком в нем лежащая, вполне оправданно может считаться приемлемой по точности границей эквивалентной аппроксимирующей непрерывной сцены. Однако существует еще одно
6.2. АППРОКСИМАЦИЯ СЛЕДА ТРАССИРОВКИ МНОГОУГОЛЬНИКОМ 81 важное соображение при выборе такой кривой: она должна иметь достаточно простое описание для дальнейшего использования. С этой точки зрения наиболее удобным объектом является многоугольник. Рассмотрим задачу построения такого многоугольника, т.е. замкнутой ломаной линии, лежащей в граничном коридоре дискретной сцены. Граничный коридор полностью определяется следом трассировки. Построение многоугольников, лежащих внутри граничного коридора, можно рассматривать как аппроксимацию следа трассировки замкнутой ломаной линией. Известно довольно много различных способов аппроксимации кривых ломаными линиями, различающихся по точности, скорости работы, числу вершин ломаной, ее извилистости и другим критериям. Но, как правило, в этих методах не учитывается важный для нас глобальный критерий: ломаные не должны иметь самопересечений и не должны пересекаться между собой. Вместе с тем, используемое нами понятие граничного коридора дает возможность построения таких непересекающихся аппроксимирующих ломаных линий, поскольку сами коридоры не имеют пересечений по внутренним точкам. Нужно лишь правильно выбрать ломаные внутри соответствующих коридоров. Наиболее простой способ построения такого многоугольника — это использование внутренней или внешней стенки граничного коридора. Для этого достаточно из следа трассировки выкинуть все точки одного цвета и оставить точки другого цвета. Тогда оставшиеся точки образуют вершины искомого многоугольника. Основной недостаток такого решения — полученные многоугольники могут иметь пересекающиеся стороны. На рис. 6.2, α представлен пример дискретной сцены. В граничном коридоре, выделенном серым цветом, многоугольники, образованные внутренней стенкой граничного коридора (рис. 6.2,6) и внешней его стенкой (рис. 6.2, в), не являются простыми, поскольку имеют пересекающиеся стороны. а) б) ~ в) ' г) Рис. 6.2. Многоугольники в граничном коридоре
82 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Другой путь состоит в построении многоугольника, занимающего среднее положение между внутренней и внешней границами коридора — так называемого осевого многоугольника. Для построения такого многоугольника нужно отобрать все средние линии граничных треугольников, соединяющие середины их разноцветных сторон, либо, что то же самое, — середины отрезков, соединяющих смежные граничные пары точек. В примере на рис. 6.2, а эта линия обозначена пунктиром и отдельно представлена на рис. 6.2, г. Этот многоугольник всегда будет простым. Кроме того, очевидно, что осевые многоугольники разных граничных коридоров никогда не пересекутся. Но осевой многоугольник имеет очень большое число вершин и, кроме того, координаты этих вершин не являются целочисленными, что весьма неудобно для дальнейшей обработки. Вычисление осевого многоугольника осуществляется довольно просто. Нужно найти последовательно все середины граничных пар, после чего провести «прореживание» образовавшихся точек. Прореживание нужно сделать по той причине, что множество точек — середин граничных пар — не может, строго говоря, считаться многоугольником, поскольку в многоугольнике смежные стороны не должны быть колли- неарными. Поэтому необходимо выявить все тройки последовательных точек, лежащих на одной прямой, и удалить ту точку, которая лежит между двумя другими. Еще одним способом выбора многоугольника в граничном коридоре является построение такой ломаной линии, которая имеет минимальную длину среди всех замкнутых линий, лежащих внутри граничного коридора. Такую линию будем называть разделяющим многоугольником минимального периметра, или просто минимальным разделяющим многоугольником, поскольку эта линия разделяет белые и черные точки растровой решетки, относящиеся к одному граничному коридору. Моделью такого многоугольника является резиновая нить, проложенная и натянутая внутри коридора. В рассмотренном примере оооооооооооооо оооооооооооооо ооо##ооооооооо οοο···οοοο···ο ο········###οο οοο·ο·οοο··οοο οοο·ο·οοοο·οοο οοο·ο·οοοο·οοο оооооооооооооо оооооооооооооо оооооооооооооо а) Рис. 6.3. Аппроксимирующий многоугольник минимального периметра б)
6.3. МИНИМАЛЬНЫЕ РАЗДЕЛЯЮЩИЕ МНОГОУГОЛЬНИКИ 83 минимальный разделяющий многоугольник представлен на рис. 6.3, е. В отличие от осевого многоугольника минимальный разделяющий многоугольник обеспечивает вдвое более низкую точность полученной непрерывной сцены (у/2 против \/2/2). Однако при этом все его вершины имеют целочисленные координаты и число вершин намного меньше, чем в осевом многоугольнике. В примере осевой многоугольник (рис. 6.2, г) имеет 32 вершины, а минимальный разделяющий многоугольник (рис. 6.3, в) — всего 12. Понятие многоугольника минимального периметра, используемого для аппроксимации замкнутых кривых, известно достаточно давно [6, 52]. Обычно при его использовании эксплуатируются свойства этого многоугольника, связанные с минимальной длиной и с малым числом вершин. В нашем случае интерес представляет другое важное свойство, характерное именно для минимальных разделяющих многоугольников: они гарантируют корректную аппроксимацию сколь угодно сложных дискретных сцен, поскольку границы получающихся непрерывных многоугольных фигур не пересекаются. 6.3. Минимальные разделяющие многоугольники Рассмотрим более подробно задачу вычисления минимального разделяющего многоугольника. Предлагаемый способ ее решения также основан на обработке следа трассировки граничного коридора. Из физических соображений, основанных на модели резиновой нити, ясно, что замкнутый контур минимального периметра, лежащий внутри граничного коридора, обладает следующими свойствами. Во-первых, такой контур является единственным. Во-вторых, он представляет собой многоугольник, вершинами которого являются некоторые точки растровой решетки, являющиеся вершинами граничного коридора, на которые опирается натянутая резиновая нить. Назовем эти точки угловыми. Между угловыми точками нить занимает положение, соответствующее кратчайшему расстоянию между ними, т. е. является прямолинейным отрезком. Таким образом, задача построения минимального разделяющего многоугольника сводится к последовательному нахождению всех угловых точек в граничном коридоре. Коридор имеет две одноцветные «стенки» — белую и черную, составленные из одноцветных сторон треугольников. Относительно направления прослеживания коридора белая стенка является правой, а черная — левой. Это свойство имеет место как для внешних, так и для внутренних коридоров. Стенки являются «непроницаемыми» в том смысле, что все стороны минимального разделяющего многоугольника должны лежать в коридоре и не выходить за пределы стенок. Стенки представляют собой многоугольники, не обязательно простые, причем один из них (внутренняя стенка) вложен в другой (в наружную стенку). Если коридор описывает внешнюю границу фигуры,
84 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ 7 6 5 4 3 2 1 . . . . . А В С D Ε F G б) 7 'у 4 3 2' 1 А В С Ό Ε F^G в) г) Рис. 6.4. Построение минимального разделяющего многоугольника то его внутренняя стенка черная, а наружная — белая. Если же коридор описывает внутреннюю границу фигуры, то наоборот, внутренняя его стенка белая, а наружная — черная. В примере на рис. 6.4 представлена дискретная фигура (рис. 6.4, а), ее граничный коридор (рис. 6.4,6) и след трассировки (рис. 6.4, в), полученные для гексагональной модели смежности. На рис. 6.4, г представлен минимальный разделяющий многоугольник. Для удобства в данном примере будем пользоваться «шахматной нотацией» для обозначения точек: каждая точка задается буквой и цифрой, указывающими на столбец и строку соответственно. Будем говорить, что отрезок прямой лежит в коридоре, если все его точки лежат внутри или на границе коридора. Например, для граничного коридора на рис. 6.4, б отрезки [Dl, A6] и [ВЗ, В7\ лежат в коридоре, а отрезки [C4,ES\ и [G2,E7] — нет, поскольку они пересекают границу коридора. Будем также считать, что из одной угловой точки видна другая угловая точка, если прямолинейный отрезок, их соединяющий, целиком лежит в коридоре. Из каждой угловой точки минимального разделяющего многоугольника видны две соседние угловые точки и не видны остальные угловые точки. . Минимальный разделяющий многоугольник в общем случае не является выпуклым. Часть его углов при вершинах меньше 180° — эти вершины называются выпуклыми, а другие углы больше 180° — это вогнутые вершины. Отметим в связи с этим одно очевидное свойст- 70 6о 50 40 ЗО 20 Ю А о о • о • о о о о о о о В С Ό Ε а) О О о · о · о · • · 7 Θ— 6 Q;-0~"tS й\ '3"-"θχ О 4 о Ъ—еч ого ас-1© \ \ \ 3 О 6ξ~€> Ъ-Ь <^-0 2 О О ϊ5?-4 о ω-я о о гнч 1 о о о А В С D Ε F G
6.3. МИНИМАЛЬНЫЕ РАЗДЕЛЯЮЩИЕ МНОГОУГОЛЬНИКИ 85 во минимального разделяющего многоугольника. Все его выпуклые вершины лежат на внутренней стенке граничного коридора, а все вогнутые — на внешней. В примере на рис. 6.4, г вершины В5, СЗ, D2, F2, F5, Е6, В6 выпуклые, а вершина D4 — вогнутая. Прямая линия, проходящая через вершину многоугольника, называется опорной, если обе стороны многоугольника, инцидентные вершине, лежат в одной полуплоскости относительно этой прямой. Для вершин минимального разделяющего многоугольника можно отметить следующее важное свойство, являющееся характеристическим, которое может быть использовано в алгоритмах вычисления этих вершин. Каждая опорная прямая минимального разделяющего многоугольника пересекает границы коридора в обоих направлениях от вершины, причем обе точки пересечения границы коридора лежат в стенке противоположного с вершиной цвета. Это свойство иллюстрируется на рис. 6.4, г. Показаны опорные прямые выпуклых черных вершин В6 и D2, пересекающие границу коридора по наружной белой стенке, и опорная прямая вогнутой белой вершины D4, которая пересекает внутреннюю черную стенку. Пусть А — некоторая точка граничного коридора. Для любого луча, выходящего из точки А, можно указать максимальный отрезок АС этого луча, лежащий в коридоре. При этом точка С является точкой пересечения луча со стенкой коридора, в которой луч покидает коридор. Будем говорить, что луч упирается в стенку в точке С. Следующее утверждение задает критерий для поиска угловых точек. Утверждение 6.2. Пусть А и В — точки растровой решетки и точка А — угловая. Тогда точка В является также угловой, если выполнены следующие условия: 1) отрезок АВ лежит в коридоре; 2) луч АВ упирается в стенку противоположного с точкой В цвета; 3) луч АВ упирается в стенку в точке С, и на отрезке ВС нет граничных точек коридора того же цвета, что и точка В. Доказательство. Поскольку А вершина минимального разделяющего многоугольника, для нее существует опорная прямая PQ, которая пересекает стенку в точках Ρ и Q (рис. 6.5). Прямая АВ пересекает границу коридора в точках С и D. При этом точка D лежит в стенке между точками Ρ и Q и имеет тот же цвет, что они. Теперь, если цвет точек А и В одинаков (рис. 6.5, я), то прямая CD является опорной для точки В и точки С и D имеют противоположный с В цвет. А если цвет точек А и В различный (рис. 6.5,6), прямая АС является опорной для В и точки А и С имеют противоположный с В цвет. В обоих случаях для точки В выполняется характеристическое свойство вершин минимального разделяющего многоугольника, что и доказывает утверждение. На основании этого утверждения можно организовать процесс последовательного выявления угловых точек граничного коридора, начи-
86 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ а) 6) Рис. 6.5. Построение следующей угловой вершины ная с некоторой начальной точки. Этот процесс состоит из следующих шагов. 1. Найти начальную угловую точку и объявить ее текущей. 2. От текущей угловой точки найти очередную угловую точку. 3. Если найденная точка совпала с начальной, то закончить процесс. Иначе объявить найденную точку текущей угловой точкой и перейти к п. 2. Рассмотрим эти шаги подробнее. Поиск начальной угловой точки легко осуществить по горизонтальной граничной паре точек, с которой начинается прослеживание граничного коридора. Утверждение 6.3. В начальной горизонтальной граничной паре точка с большей абсциссой является угловой точкой. Доказательство. Пусть начальная горизонтальная пара состоит из точек А и В и точка В лежит правее точки А (рис. 6.6). Рассмотрим ту компоненту связности дискретной сцены, к которой принадлежит точка В. В строке изображения, лежащей выше точек А я В, нет точек, о о о о о о о А В ^~~~~~~ о о о о^"ф^ · ° ^■θ-*""· · · · · о "'DC о о · · · · о Рис. 6.6. Построение первой угловой вершины принадлежащих этой компоненте связности, что следует из алгоритма поиска начальной горизонтальной пары. Пусть точка С имеет минимальную абсциссу среди всех точек, принадлежащих этой компоненте связности и лежащих в строке изображения, расположенной ниже, следом за строкой точек А и В. Рассмотрим прямую BD, проходящую через точку D, лежащую левее С в той же строке. Точка D лежит в
6.3. МИНИМАЛЬНЫЕ РАЗДЕЛЯЮЩИЕ МНОГОУГОЛЬНИКИ 87 стенке граничного коридора. При этом прямая BD пересекает еще раз стенку коридора выше точки В. Получается, что прямая BD является опорной для точки В и дважды пересекает стенку коридора, имеющую тот же цвет, что и точка А, т. е. противоположный цвет с точкой В. Следовательно, точка В является угловой. Таким образом, начальная угловая точка выбирается из пары первых точек следа трассировки на основании сравнения их абсцисс. В примере на рис. 6.4 начальной угловой точкой является В6. Из утверждения 6.2 следует, что если найдена начальная или очередная угловая точка, то следующую угловую точку нужно искать, как точку, лежащую от нее «в прямой видимости» внутри коридора. После начальной угловой точки В6 следующей угловой точкой будет точка В5. Действительно, для нее выполнены условия критерия из утверждения 6.2: отрезок [В6, В5\ лежит в коридоре, луч [В6, В5\ упирается в стенку в точке ВЗ, имеющей противоположный с точкой В5 цвет, и на отрезке [В6,ВЗ] нет граничных точек коридора того же цвета, что и точка В6. Аналогично вычисляется следующая после В5 угловая точка СЗ: отрезок [В5,СЗ] лежит в коридоре, луч [В5,СЗ] упирается в стенку в точке D1 белого цвета, и на отрезке [ВЗ, D1] нет граничных точек коридора того же цвета, что и точка ВЗ. Непосредственный последовательный поиск угловых точек может быть выполнен на основе анализа следа трассировки. Каждая угловая точка представлена в следе. Очередная угловая точка расположена также в следе. Поэтому нужно последовательно просмотреть точки следа, стоящие после найденной угловой точки, и найти среди них первую, для которой выполнены условия утверждения 6.2. Пусть точка А является угловой, а точка В — это точка из следа трассировки, стоящая после А. Точки следа между А и В определяют некоторую часть граничного коридора. Введем понятие текущего сектора обзора для угловой точки А. Текущим он считается относительно последовательности точек следа от А до В. Под сектором обзора будем понимать пучок лучей, выходящих из точки Л и не пересекающих границы коридора между точками А и В. Очевидно, что сектор обзора монотонно не возрастает по мере удаления от угловой точки А текущей точки следа В. Сектор обзора ограничен двумя крайними лучами: левым, проходящим через черную граничную точку L, и правым, проходящим через белую граничную точку R (рис. 6.7). При просмотре точек следа, стоящих после угловой точки А, сектор обзора монотонно уменьшается. При этом он может даже выродиться в луч, т. е. угол между левой и правой границей сектора может стать равным 0°. Но до тех пор, пока этот угол не станет отрицательным и сектор не станет пустым, граничные точки сектора обзора остаются видимыми из угловой точки. А когда сектор обзора становится пустым, т. е. его полностью перекрывает стенка коридора, это означает, что одну из этих двух точек, L или Д, нужно объявить угловой. В зависимости от цвета этой перекрывающей сектор стенки и осуществляется выбор
88 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Рис. 6.7. Последовательное изменение сектора обзора очередной угловой точки. Если стенка белая, то угловой становится черная точка L, а если черная, то угловой будет белая точка R. Таким образом, процесс поиска очередной угловой точки состоит в последовательном анализе точек следа трассировки, стоящих после текущей угловой точки, и коррекции сектора обзора. Для начала сектор обзора ничем не ограничен (составляет 360°). Далее циклически выполняется шаг анализа очередной пробной точки следа трассировки и коррекция сектора по следующим правилам (рис. 6.8). 1. Если пробная точка попала в сектор обзора (рис. 6.8, а, б), то сектор обзора подлежит коррекции. Коррекция состоит в замене одной из граничных точек сектора обзора пробной точкой. При этом если Коррекция сектора обзора Появление новой угловой точки Сохранение старого сектора обзора а) б) в) г) <Г" <зГ д) е) Рис.6.8. Правила коррекции сектора обзора пробная точка черная (рис. 6.8, а), она заменяет левую границу сектора обзора, а если белая (рис. 6.8,6) — то его правую границу. Заметим, что пробная точка, лежащая на границе сектора обзора, считается попавшей в сектор и обрабатывается по данному правилу. 2. Если пробная точка является белой и она лежит вне сектора обзора слева от его левого луча (рис. 6.8, в), то черная граничная точка
6.3. МИНИМАЛЬНЫЕ РАЗДЕЛЯЮЩИЕ МНОГОУГОЛЬНИКИ 89 сектора обзора объявляется новой угловой точкой. Аналогично, если пробная точка является черной и лежит вне сектора обзора справа от его правого луча (рис. 6.8, г), то белая граничная точка сектора обзора объявляется новой угловой точкой. 3. Во всех остальных случаях (рис. 6.8, д, е) сектор обзора остается прежним, т. е. ни левая, ни правая его границы не корректируются. На основании этих правил последовательно выявляются все угловые точки. При этом след трассировки нужно рассматривать как циклический список. Это необходимо, чтобы корректно завершить процесс поиска угловых точек, поскольку процесс завершается, когда начальная угловая точка вновь выберется в качестве угловой (а не в качестве пробной). Для того чтобы признать точку угловой, как видно из описанного алгоритма, должен быть проведен анализ точек следа, лежащих после нее. Принятое условие завершения предполагает, что будет выявлена в качестве очередной угловой точки начальная точка, являющаяся первой или второй в следе трассировки. Поэтому стоящие после нее точки следа должны быть доступны для анализа, что легко обеспечивается циклическим построением следа трассировки. Описанные правила полностью задают алгоритм «вытягивания границы», т. е. получения минимального разделяющего многоугольника. Следует отметить, что рассмотренная задача является вариантом известной в вычислительной геометрии задачи построения геодезической выпуклой оболочки одного многоугольника внутри другого [57]. Для двух точек внутри простого многоугольника геодезической линией называется кривая минимальной длины, лежащая целиком в многоугольнике. Как показано в [30], если в многоугольнике с η вершинами задана триангуляция, т. е. он разбит на треугольники, вершинами которых являются вершины многоугольника, то геодезическая линия между любыми двумя точками вычисляется за время О(п). Множество точек Q внутри простого многоугольника Ρ называется геодезически выпуклым, если для каждой пары точек q\, q<i G G Q геодезическая линия между q\ и q2, лежащая в Ρ, лежит и в Q. Геодезической выпуклой оболочкой множества Q в многоугольнике Ρ называется пересечение всех геодезически выпуклых множеств, содержащих Q. Пусть Ρ = \р\,р2, · ·. ,рп] и Q = [q\,q2, · ·. ,gm] — Два простых многоугольника таких, что Q лежит внутри Р. Легко понять, что геодезическая выпуклая оболочка многоугольника Q в многоугольнике Ρ есть многоугольник минимального периметра, содержащий Q внутри себя и при этом сам лежащий внутри Р. Применительно к нашей задаче в роли многоугольника Ρ выступает внешняя стенка граничного коридора, а в роли Q — внутренняя стенка. Минимальный разделяющий многоугольник представляет собой геодезическую выпуклую оболочку внутренней стенки граничного коридора во внешней его стенке. Если взять начальную граничную пару точек, с которой начиналось прослеживание коридора, и разрезать ею граничный коридор, превратив его из «кольца» в «полоску», то коридор можно рассматривать как простой многоугольник. В примере на рис. 6.4, б такое превращение коридора в многоугольник выполняется
90 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ путем «раздвоения» точек А6 = А6* и В 6 = В б* и добавлением сторон [Аб, В6] и [В6*, А6*]. Тогда минимальный разделяющий многоугольник совпадет с геодезической линией от вершины В6 полученного многоугольника до вершины В6*. При этом сам многоугольник оказывается триангулированным просто в соответствии со способом его получения. Таким образом, описанный алгоритм вытягивания нити внутри граничного коридора строит геодезическую линию внутри него, которая, в свою очередь, представляет собой геодезическую выпуклую оболочку внутренней стенки граничного коридора. 6.4. Аппроксимация многоугольной границы сплайнами Минимальный разделяющий многоугольник служит хорошей моделью границы бинарного изображения. Такая модель является вполне приемлемой для многих приложений, где не используются такие локальные свойства границы, как гладкость или кривизна. Описание же этих локальных свойств с помощью кусочно-линейных кривых представляется не очень удобным. Для этого больше подходят другие модели границы, позволяющие представить ее линиями более высокого порядка, например, квадратичными или кубическими сплайнами. Такое гладкое описание границы востребовано в шрифтовых технологиях (рис. 6.9) и в других приложениях в области дизайна. аЪшЬшЬ Рис. 6.9. Исходное бинарное изображение и описание границ с помощью многоугольников минимального периметра и сплайновых кривых Мы рассмотрим задачу построения гладкой границы бинарного изображения с помощью составных кривых Безье. Причем в качестве исходного материала для построения такого представления границы будем использовать полученные минимальные разделяющие многоугольники. Возникающая при этом задача состоит в аппроксимации конечного множества точек Ρ = {Pq,P\, ..., Рп} на плоскости некоторой непрерывной параметрической кривой Са = {C(t;a), t G [0,Г]}, у которой параметр t G [0, Τ] непосредственно задает положение точки C(t; а) на кривой, а вектор параметров a G А определяет конкретную кривую в некотором классе, заданном множеством А возможных значений этих параметров. Для каждой кривой Са определена величина μ(Οα,Ρ), характеризующая качество приближения массива точек Ρ этой кривой.
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 91 Например, в качестве меры близости Са и Ρ можно взять сумму квадратов расстояний от точек из Ρ до кривой Са. Задача поиска кривой, аппроксимирующей массив точек, называемая подгонкой кривой [22], состоит в поиске такой кривой Са*, для которой а* = argmin μ((7α,Ρ), (6.1) если минимум достигается, либо μ(σα.,Ρ)- inf' μ(σα,Ρ)<ε, (6.2) если минимум в (6.1) не существует либо найти его не представляется возможным. В последнем случае величина ε > 0 определяет уровень приближенного решения задачи. Выберем в качестве меры близости кривой Са и массива точек Ρ сумму квадратов расстояний от точек из Ρ до кривой Са η μ(Οα,Ρ) = Σ[ά(Ρί,Οα)}2. (6.3) i=0 Расстояние от точки Pi до кривой Са в евклидовой метрике есть d{Pif Са) = t inf d{Pif C{t- a)). (6.4) Поскольку Са есть непрерывная кривая, параметр t которой задан на замкнутом множестве [0,Т], нижняя грань в (6.4) всегда достигается. Таким образом, общая задача аппроксимации преобразуется следующим образом: inf μ(Οα,Ρ) = inf У2[а(Р{,Са)}2 = а£А г=0 = inf γ[ inf d{Pi,C(t'1a))}2 = а£А ^ ίφ,Τ] η =ui^«4&[d(Pi,c(*i:a))1 (6·5) Ее решение осуществляется на основе следующей декомпозиции η inf У inf [d(PuC(ti\a))\2 = г ( Л = inf I inf Σ [d(Pi,C{ti;oc))]2 1. (6.6) *ο<*ι<···<*η α£Α *—' tfc6[0,T] l> *=0 ) k=0 η
92 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Содержательно внутренняя подзадача η <p(t0, ί,,. · ·, tn) = inf T [d(Pi, С{и- а))}2 (6.7) г=0 представляет собой подбор кривой из класса Са = {C(t;a), t £ [0,Τ]}, у которой будет минимальной сумма квадратов расстояний от фиксированных точек кривой С(и\а) до соответствующих точек Pi. При этом фиксированные точки на кривой C{t\ а) определяются значениями вектора параметров (to,t\,... ,ίη), которые считаются заданными. А внешняя подзадача в (6.6) представляет собой оптимизацию этого вектора параметров (ί0, t\,..., tn), т. е. inf <p{to,t\,-..,tn)· (6.8) to<ti<...<tn tfce[0,T] k=0 η Процесс решения начинается с некоторого начального значения вектора параметров (ц \t\ \...,tn )· Удобным способом получения такого начального приближения является так называемая хордовая параметризация, состоящая в следующем: th **°> = О, t|0) = *=u-, <=1 п, (6.9) Eh /с=0 где k = d(Pi-\,Pi) — длина отрезка Рг-\Р% ломаной линии Р — — {-Роэ-Ρΐι · · · ,Рп}· Для этого начального вектора параметров (t^\t\ ,..., tn ) решается задача (6.7). Результатом ее решения будет некоторое оптимальное значение вектора параметров а^ и соответствующее значение функционала <p<®{to,ti,...,tn) = Σ [d{Pi,C{U)a^))}\ Следующий шаг представляет собой итерацию решения задачи (6.8). Он состоит в уточнении вектора параметров (ц ,t\ ,...,tn ), т.е. в вычислении нового значения этого вектора (цl\t\ ',...,tn )· Для этого значения вектора параметров вновь решается задача (6.7), в результате чего получается значение параметра а^ и т.д. Общее решение получается после нескольких таких итераций. Очередная (к + 1)-я итерация уточнения вектора щ \t\ \...,tn) осуществляется из следующих соображений. Рассмотрим точку Pi и соответствующую ей точку на кривой Сщ , α) (рис. 6.10). Вклад этой пары точек в значение функции (p(to,t\,... ,tn) вносит
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 93 Рис. 6.10. Вычисление ближайшей точки на кривой член [d(Pi, C(U\ a))] , представляющий собой квадрат расстояния между точками. Уточнение параметризации, т.е. пересчет значения параметра ц ' на ц + ' приведет к изменению положения точки на кривой: вместо C(t\ , α) станет C(t\ ;α). Естественно в этой ситуации выбрать такое значение для ц + \ при котором расстояние между точками Pi и С(ц ,а) станет минимальным. Из геометрических соображений очевидно, что это произойдет тогда, когда вектор PiC(t\ ;а) станет перпендикулярным к вектору касательной к кривой в точке C(t\ + \а). Условие перпендикулярности векторов имеет вид (Ρί-σ(ίί*+1);α),σ,(ί1*+1);α)) = 0. (6.10) Здесь производная С'щ \ol) задает вектор касательной к кривой C(t\a) вточкеС(^+1);а). Полагая if+» = if > + δ, C(tf+X);a) = C(if };α) + С'(ф;а) ■ δ + ο(δ), а также С" (if+1);α) « С" (if };α), получаем из (6.10) (Ρί-σ^+'^αί,σ'^+'^,α))» * (Ρ* - C(t^;a) - C'(t\k);a) ■ δ,С(t\k);a)) = = (P, - C(t^;a),C'(t^;a)) - (С'(^;а),С'(^-а)) ·δ = 0. Получаем δ = (Р-С(^-а),С'(^;а)) {C'(tf-a),C'(tf;a)) Таким образом, пересчет ц + — ц + δ может быть осуществлен на основе вычисления точек кривой С(ц ,а) и векторов производ-
94 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Рис. 6.11. Итерационная подгонка аппроксимирующей кривой Безье с закрепленными концами для 7 точек после первой, пятой и десятой итераций ных в этих точках Cf(t\ ,α). Пример на рис. 6.11 показывает, как аппроксимирующая кривая постепенно «прижимается» к исходному множеству точек по мере выполнения очередных итераций уточнения параметризации. Решение подзадачи (6.7) существенно зависит от конкретного способа описания кривых Са- Мы рассмотрим решение этой задачи в случае, когда класс аппроксимирующих кривых представляет собой множество плоских кривых Безье 1. га Кривая Безье — это параметрическая линия вида J2 Уз^Т^)* где j=o параметр t лежит в диапазоне [0,1], упорядоченное множество точек У — {Уо, VI,..., Ут} называется характеристическим многоугольником кривой Безье, a Bf(t) = , ™* (1 - t)m-H*, j = 0,...,ra - полиномы Бернштейна. Конкретная кривая из этого класса однозначно определяется характеристическим многоугольником. Таким образом, вектор параметров а, задающий кривую Са, применительно к кривым Безье состоит из 2х(т+1) параметров — координат точек Vo.Vi,...,!^. Обозначим координаты исходных точек Ρ = {Pq,Pi, ..., Ρη} через Pi = {р>г, h), г = 0,..., η, а координаты искомых вершин характеристического многоугольника V = {Vo, V\,..., Vm}, задающих кривую Безье, через Vj = (xj,Vj), j = 0,..., га. В этих обозначениях получим вектор параметров а = (#о,Уо, #1,2/1, ·· · ,хт,Ут)' Тогда кривая Са описывается следующим образом: (га m \ Σχ^Γ(ί), Σ»^Γ(ί) . (6.П) j=0 j=0 J 1 Название это носит имя Пьера Безье, инженера компании «Рено», использовавшего эти кривые при проектировании автомобильных кузовов (1962).
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 95 Сумма квадратов расстояний от точек из Ρ до этой кривой есть η г=0 3(а) = ^[а(Рг,С(и-а))] = П Σ г=0 . (6.12) ( т \ 2 / т \21 a.-^xjB^U)) + U-^yjB^iuy К J=0 / V j=0 / Задача (6.7) поиска кривой наилучшего приближения сводится к минимизации этой суммы S(a) ^min. (6.13) Поскольку на параметры а = (#(ь 2Лъ #ь 2/ь · · · 1%пыУт)> по которым выполняется минимизация, не накладывается никаких ограничений, условием минимума (6.13) является dS π dS η · π -κ— =0, ^— = 0, j = 0,...,m. дх dyj (6.14) С учетом (6.12) получаем систему линейных уравнений η j=0 \i=o / m / η i=0 η (6.15) Σ Σ W) ·β№) ·у, = Σ6» · β^)> j=0 \i=0 / i=0 [fc = 0, ...,m, которую нужно решить относительно переменных хо,уо,... ,Хт,Ут- Фактически система (6.15) распадается на две системы — отдельно для переменных xq,x\,. ..,хт (первая строка системы (6.15)) и для переменных уо,У\,--,Ут (вторая строка). Пример построения кривой Безье третьей степени на основе решения системы уравнений (6.15) представлен на рис. 6.12. Полученная Рис. 6.12. Подгонка аппроксимирующей кривой Безье со свободными концами (первая итерация)
96 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ кривая Безье строится при отсутствии ограничений на положение вершин характеристического многоугольника. Возможны, однако, другие варианты постановки этой задачи, когда некоторые ограничения на положение вершин все-таки накладываются. Первый вариант такого ограничения состоит в том, чтобы зафиксировать начальную и конечную точку кривой Безье так, чтобы они совпали с начальной и конечной точками массива Р, т.е. Ц> — Ро, Vm = Рп. Это значит, что Vo = (ao,6o) и Vm = (an,bn). В этом случае вектор параметров а = (х\,у\>... ,Xm-i»2/m-i), которые должны быть определены для построения кривой Безье, имеет размерность 2 χ (га— 1). При этом система уравнений (6.15) превращается в следующую: га— 1 j = l \i=0 / η = Σ (* - αο ■ (1 - U)m-an · t?) · В?(и), г=0 га—1 / η j=l \i=0 •Vj = = ^{bi-bo-(l- U)m-bn ■ tf) · B?(U), i=0 к = 1,.. .,m- 1. (6.16) На практике для аппроксимации границ бинарного изображения обычно используются кривые Безье второго или третьего порядка. Для случая такой невысокой размерности системы (6.15) и (6.16) приобретают весьма простой вид. Например, параметры кубической (га = 3) аппроксимирующей кривой Безье со «свободными концами» находятся на основе решения двух систем из 4 уравнений с 4 неизвестными каждая, которые получаются из системы (6.15): Σ ΣВШ ■ B№i) )■ ъ = Σα* · Β^)> *=о,..., з, j=0 \i=0 J i=0 (6.17) j=0 \ i=0 / i=0 Для кубической кривой Безье с «закрепленными концами» параметры кривой определяются на основе двух систем из двух уравнений
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 97 каждая, построенных из системы (6.16): ' ( η \ / η \ i=0 η Х2 = = Χ) (о* - αο · (1 - ^)3-«η · *?) · S?(ii), i=0 η \ / η Χ)β?(ί<) · вЦи) · χ, + £я| (to · β|(ί<; i=0 / \ i=0 / η = Χ) (o< - αο · (1 - ^)3-αη · ή) · S|(ii), i=0 f;B?(ti) ·β?(ίί)) -и + (έ^Κίο ·Β?(*ί)) ·» - г=0 ) \г=0 ) п = J2(bi-bv-(l- tif-Ьп ■ tfj ■ Bf(U), i=0 Σ B\{U) ■ ВЦи)] · »i + ί Σβ23(*<) · ^l(*i)) · У2 = η = Χ; (Ui - Й0 · О - *г)3"6п · *?) · 5|(^). г=0 η (6.18) (6.19) г=0 Решение систем (6.18) и (6.19) дает две вершины характеристического многоугольника V\ = (a\,b\) и V% = (02,62)· Пример построения кривой Безье с закрепленными концами показан на рис. 6.13. В качестве исходного множества точек при этом взяты те же точки, что и в примере на рис. 6.12. Рис. 6.13. Подгонка аппроксимирующей кривой Безье с закрепленными концами (первая итерация) Возможен и более жесткий вариант ограничений, при которых фиксируются не только начальная и конечная точки кривой Безье ^о = (ао,&о) и Vm = (an,bn), но также и направления касательных в этих точках. Рассмотрим эту задачу применительно к кубической кривой Безье. Пусть направления в начальной и конечной точках
98 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ заданы векторами е\ = (е\х,е\у) и е2 — (е2х,е2у), имеющими длину 1. Из свойств кривых Безье следует, что вершины характеристического многоугольника V\ и V2 располагаются на касательных в начальной и конечной точках соответственно, т. е. V\ = Vo + z\ · ei, V2 = V3 + z2 · e2, где zi и Z2 — некоторые константы. Эти две константы полностью определяют кубическую кривую Безье, т. е. вектор параметров, задающих кривую, есть а — (21,22). Сумма квадратов расстояний от точек Ρ — = {Р0, Pi,..., Рп} до кубической кривой Безье есть ( 3 \2 3 У, j=0 / j=0 ад = Σ г=0 = Σ[α< ~ Χ° ' So(*i) - (»0 + б1гг ' Z\) ' B\(U) - г=0 - (хз + е2ж · *&) · Я|(Ъ) - хъ · 5з(**)]2+ + Σ[6< " Уо ' βο(*ΐ) - (и> + eiy · 21) · £?(*0 - г=0 - (»з + β22/ · г2) . Β|(ίΟ - уз · Bl(U)}\ (6.20) Из условии ^— = U, тг— = 0 получаются следующие уравнения: ΟΖ\ ΟΖ2 [Ап >z\ + Al2-z2 = D\, [A2\ · z\ + A22-z2 = D2, (6.21) где Α„=Σ(β?(*ί)) . Α22 = Σ(βΙ&)) , г=0 г=0 η Ах2 = A2l = (е1же2ж + е1ее2е) · Σ Б1 (*<) * β2^)> г=0 η #ι =Σ [α*~ χο · (£§&)+£?&)) - *з · (£23(*;)+£33(*;))] · е1ж . Я?(*<) + η + Σ [Ь^ 2/0 · (£{j(*i)+£?(*i)) - УЗ · (£2(*<)+£|(*0)] · бИ/ * ^1 (*<). г=0 η D2 =Σ h" ^0 · (^(*.')+^?(ii)) " *3 · (Р23(^г)+Р33(^))] · 3te · ВЦи) + η + Σ ibi - у° · (βο(ί*·)+5ι (*<)) - ш · {в1{и)+в1{и))} ■ е2у ■ Bl(ti). г=0
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 99 Рис. 6.14. Подгонка аппроксимирующей кривой Безье с закрепленными концами и заданными концевыми направлениями (первая итерация) Таким образом, решение системы уравнений (6.21) дает возможность найти две средние вершины характеристического четырехугольника для кубической кривой Безье. Окончательные координаты всех вершин четырехугольника таковы: Vo = (αο> bo), V\ = (α0 + z\ · e\x, b0 + z\ · e\y), V2 = (o3 + z2 · e2xi 63 + z2 · e2y), V3 = (an, bn). На рис. 6.14 показана аппроксимирующая кривая Безье с закрепленными концами, полученная для тех же точек, что и в примере 6.13, но при заданных направлениях в концевых точках. Эти направления изображены векторами е\ и е2. При аппроксимации границы сложной формы обычно недостаточно использовать лишь один криволинейный сегмент, описываемый кривой Безье. Для хорошей точности аппроксимации кривой сложной формы в этих случаях используются так называемые составные кривые Безье, представляющие собой последовательное объединение нескольких простых сегментов. Для того, чтобы несколько простых кривых при последовательном соединении образовали непрерывную линию, нужно обеспечить совпадение их концевых точек. Пусть V = {Vb, V\,..., Vm} и V = {Vq, V{,..., Vf} — характеристические многоугольники двух кривых Безье. Если конечная точка первого многоугольника совпадает с первой точкой второго Vm — Vq, to эти кривые образуют непрерывную линию (рис. 6.15,а). Если же при этом векторы VmVm-\ и VqV{ кол- линеарные и разнонаправленные, то соединение кривых будет гладким, а) 3 б) Рис. 6.15. Соединение двух кривой Безье в общую непрерывную кривую (а) и соединение с гладким сопряжением (б)
100 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Рис. 6.16. Подгонка простой и составной кубической кривой Безье т.е. в точке соединения обе кривые будут иметь общую касательную (рис. 6.15,6). В том случае, когда аппроксимация массива точек одним сегментом кривой Безье имеет низкую точность, можно подобрать составную кривую, для которой точность аппроксимации будет более высокой (рис. 6.16). Задача построения составной кривой Безье, аппроксимирующей заданный массив точек с требуемой точностью, сводится к разбиению всего массива точек на подмножества и построению отдельных аппроксимирующих кривых для каждого такого подмножества. Для того, чтобы обеспечить непрерывность полученной составной кривой, нужно разбивать массив точек таким образом, чтобы каждая пара последовательно стоящих подмножеств имела одну общую точку. А для того чтобы составная кривая была гладкой в этой точке, нужно задать в ней направление касательной. Общая структура алгоритма построения составной аппроксимирующей кривой выглядит следующим образом. Для определенности будем рассматривать составную кубическую кривую Безье. 1. Для исходного массива точек Ρ = {Ρ0,Ρι,..., Рп} строим простую аппроксимирующую кривую Безье с закрепленными концами. 2. Находим точку Рг в этом массиве, наиболее удаленную от построенной кривой. При этом расстояние от точек Pi, г = 0, ...,п до кривой оцениваем величиной Δ* = EW(*i)-Pi 3=0 где ti — это значение параметра, соответствующее точке Р$, полученное в процессе аппроксимации (при решении задачи (6.8)). 3. Если величина ΔΓ = max Δ* удовлетворяет нас по точности г=0 η аппроксимации, то процесс завершается. Если же отклонение ΔΓ точки Рг от кривой слишком велико, то массив Ρ = {Р0, · · · ,Рп} разбиваем на два массива Р^ = {Р0,..., Рг} и Р^ = {Рг,..., Рп}. Для каждого из этих массивов строим свою аппроксимирующую кривую Безье рекурсивно по тому же алгоритму.
6.4. АППРОКСИМАЦИЯ МНОГОУГОЛЬНОЙ ГРАНИЦЫ СПЛАЙНАМИ 101 Рис. 6.17. Выбор направления касательной к кривой Безье в точках исходного массива Результатом работы такого алгоритма будет составная кривая Безье, у которой в точках соединения простых сегментов нарушена гладкость. Для того, чтобы обеспечить гладкость составной кривой, в п. 3 алгоритма следует задать направление касательной в точке Рг и в п. 1 строить аппроксимирующую кривую с заданными направлениями в концевых точках. В точках массива Ρ = {Ро,... , Рп} направления касательных к кривой могут быть заданы различными способами. Например, для «внутренней» точки массива Д, г = 1,... , η — 1 его можно задать вектором, коллинеарным Ρ^-ι^+ι- А для «крайних» точек массива Р0 и Рп в качестве направления можно выбрать векторы, касательные к окружностям, проходящим через точки Ро, Р\, Р% и Рп-2> Рп-ь Рп соответственно (рис. 6.17). Использование описанной техники позволяет аппроксимировать границу бинарного растрового изображения гладкими составными кривыми Безье. Пример аппроксимации бинарного изображения представлен на рис. 6.18. Для черно-белого растрового изображения размером ПОх 120 точек сначала построена многоугольная фигура, имеющая два граничных контура с общим числом вершин 101. Далее для этих контуров построены аппроксимирующие замкнутые кривые Безье. Рис. 6.18. Аппроксимация бинарного изображения многоугольником минимального периметра и составной кривой Безье а
102 Гл. 6. АППРОКСИМАЦИЯ ГРАНИЦ Общее число вершин в двух характеристических многоугольниках составило 56. Гладкая аппроксимация изображений букв кривыми Безье, показанная на рис. 6.18, необходима при построении компьютерных шрифтов. Следует отметить, что при аппроксимации многоугольных фигур кривыми Безье мы не учитываем положение этих кривых относительно граничных коридоров сцены, вследствие чего условие простоты составных кривых может быть нарушено и кривые могут получиться пересекающимися.
ЧАСТЬ III ГРАНИЦЫ И СКЕЛЕТЫ ГЛАВА 7 СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО 7.1. Структура скелета многоугольной фигуры. 7.2. Диаграмма Вороного многоугольной фигуры. 7.3. Получение скелета из диаграммы Вороного. 7.4. Вершины диаграммы Вороного. 7.5. Бисекторы диаграммы Вороного. 7.6. Жадный алгоритм построения диаграммы Вороного. 7.7. Рекурсивная декомпозиция диаграммы Вороного. 7.8. Диаграмма Вороного простого многоугольника. 7.1. Структура скелета многоугольной фигуры Рассмотрим задачу скелетизации непрерывных фигур в практическом плане, имея в виду создание соответствующих эффективных алгоритмов. С этой точки зрения можно выделить важный класс фигур — многоугольные фигуры, для которых разработка эффективных алгоритмов скелетизации вполне возможна, потому что ветви скелета многоугольной фигуры имеют простое аналитическое описание — это либо отрезки прямых линий, либо сегменты квадратичных парабол. Пусть С — многоугольная фигура с границей дС, a S — ее скелет. Общее число точек, составляющих множество S, бесконечно. Тем не менее, оказывается, что все эти точки лежат на конечном множестве отрезков прямых линий и квадратичных парабол. Пусть s G S — точка скелета, а д\ и д^ — две ближайшие к ней граничные точки фигуры, 01 *02 € 9С. Точки д\ и 02 могут занимать различное положение на границе фигуры. Каждая из них может быть вершиной многоугольника либо просто лежать на одной из его сторон. Будем называть такие точки соответственно угловыми либо простыми. Возможны три варианта сочетания типов точек д\ и д^'. пара угловых, пара простых или пара из угловой и простой точек. В случае, когда обе точки д\ и д% угловые, скелетная точка s, равноудаленная от (/ι и 02, обязательно должна лежать на прямой, являющейся серединным перпендикуляром для отрезка [01,02] (рис. 7.1, а).
104 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Рис. 7.1. Элементы скелета многоугольной фигуры Если обе точки д\ и д% простые, то точка s равноудалена от сторон многоугольников, содержащих д\ и д^. Значит, точка 5 лежит на биссектрисе угла, образованного этими сторонами (рис. 7.1,6). Если же стороны параллельны, то 5 лежит на прямой линии, равноудаленной от этих сторон (рис. 7.1, в). Для общности можно считать, что эта прямая также является биссектрисой угла, образованного сторонами многоугольной фигуры. Наконец, в случае, когда пара д\, д^ состоит из угловой и простой точек, скелетная точка s равноудалена от угловой точки и от стороны многоугольника, содержащей простую точку. Это значит, что s лежит на параболе, для которой фокусом является угловая точка, а директрисой — сторона многоугольника, на которой лежит точка д% (рис. 7.1, г). Таким образом, все скелетные точки должны лежать либо на биссектрисах углов, образованных сторонами многоугольной фигуры, либо на прямых, равноудаленных от пар вершин многоугольной фигуры, либо на параболах, определяемых парами «вершина-сторона» многоугольной фигуры. Поскольку число возможных пар «вершина- вершина», «сторона-сторона» и «вершина-сторона» конечно, то и число линий, определяющих ветви скелета, тоже конечно. Следовательно, задача вычисления скелета для многоугольной фигуры сводится к комбинаторному перебору различных сочетаний сторон и вершин фигуры и вычислению соответствующих сегментов прямых линий и парабол, образующих серединные оси. Математической моделью для такого комбинаторного анализа является замечательная геометрическая конструкция, называемая диаграммой Вороного.
7.2. ДИАГРАММА ВОРОНОГО МНОГОУГОЛЬНОЙ ФИГУРЫ 105 7.2. Диаграмма Вороного многоугольной фигуры Понятие диаграммы Вороного в вычислительной геометрии первоначально использовалось применительно к конечным нерегулярным точечным множествам. Впоследствии понятие диаграммы Вороного было обобщено на более сложные объекты, содержащие бесконечное множество точек, в частности, на линейные сегменты. Обычные диаграммы Вороного мы рассматривали выше в разделе 3.3.3. Применительно к задаче скелетизации многоугольной фигуры нас интересуют обобщенные диаграммы Вороного для конечного' множества линейных отрезков, являющихся сторонами этой фигуры. В силу универсальности понятия диаграммы Вороного для различных классов геометрических объектов сами эти объекты принято называть общим термином — сайты. Для обычной диаграммы Вороного сайтами являются изолированные точки, а для· обобщенной диаграммы Вороного многоугольной фигуры сайтами являются етороньг и вершины многоугольников, образующих границу фигуры. Представим границу многоугольной фигуры в виде конечного множества элементов — ее вершин и сторон. Под стороной многоугольной фигуры при этом понимается отрезок вместе с инцидентными ему вершинами. Рассмотрим эти вершины и стороны в качестве множества сайтов. Вершины многоугольной фигуры будем называть сайтами- точками, а стороны — сайтами-сегментами. Таким образом, сайт- сегмент и сайт-точка могут иметь непустое пересечение. Определение 7.1. Сайт-сегмент и сайт-точка, имеющие непустое пересечение, называются соседними сайтами. Для каждой внутренней точки многоугольной фигуры существует ближайшая к ней точка на границе фигуры. Через эту ближайшую граничную точку определим понятие ближайшего сайта для внутренней точки фигуры. Определение 7.2. Сайт-точка является ближайшим сайтом для внутренней точки фигуры, если этот сайт является для нее ближайшей граничной точкой. Сайт-сегмент является ближайшим сайтом для внутренней точки фигуры, если ближайшая граничная точка лежит на этом сайте и является ортогональной проекцией внутренней точки на прямую, содержащую этот сайт. На рис. 7.2 приведен пример, поясняющий это определение. Изображены три внутренние точки многоугольной фигуры (/ι, (/2 и (/з> а также два сайта: сайт-сегмент р\ и сайт- Рис. 7.2. Определение ближайшего точка р2- Для точки q\ сайт р\ яв- сайта для внутренней точки много- ляется ближайшим. Для точки #2> У угольника которой ближайшая точка границы
106 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО является вершиной Р2 и к тому же ортогональной проекцией q% на сайт рь ближайшими будут сразу два сайта: р\ и р2· А для точки д3 ближайшим является сайт р2· По аналогии с определением 3.9 дадим определение ячейки Вороного для сайта. Определение 7.3. Ячейкой Вороного сайта называется геометрическое место точек фигуры, для которых этот сайт является ближайшим. Очевидно, что ячейки Вороного образуют покрытие многоугольной фигуры, поскольку для каждой точки фигуры имеется ближайший сайт. При этом ячейки уже не обязательно являются выпуклыми многоугольниками, как в случае, когда сайтами были только изолированные точки. В примере на рис. 7.3 ячейки сайтов 1, 3, 5, 9, 13 Рис. 7.3. Сайты и ячейки Вороного многоугольной фигуры не выпуклые, а большинство ячеек (все кроме 7, 11 и 15) вообще не являются многоугольниками, так как имеют в границе параболические фрагменты. На рис. 7.3 и последующих рисунках этой главы сайты- точки изображены в виде кружков, сайты-сегменты — отрезков. Часть границ ячеек Вороного составляют сами сайты-сегменты — стороны многоугольной фигуры. Остальные границы ячеек состоят из отрезков прямых и парабол, равноудаленных от разных пар сайтов. Определение 7.4. Сайты называются смежными, если их ячейки Вороного имеют общую невырожденную границу (т. е. имеют более одной общей граничной точки). Общая граница ячеек Вороного двух сайтов состоит из точек, для которых эти сайты являются ближайшими и равноудаленными. Это значит, что определение 7.4 эквивалентно следующему. Сайты являются смежными, если существует пустая окружность, касающаяся только этих двух сайтов. Определение 7.5. Бисектором пары сайтов называется линия, являющаяся общей границей двух смежных ячеек Вороного этих сайтов. Определение 7.6. Диаграммой Вороного многоугольной фигуры называется объединение бисекторов всех ее сайтов.
7.3. ПОЛУЧЕНИЕ СКЕЛЕТА ИЗ ДИАГРАММЫ ВОРОНОГО 107 Диаграмма Вороного представляет собой плоский граф. Ребрами графа являются бисекторы, а вершинами — концевые точки бисек- торов. Концевые точки могут быть двух видов. Точки, имеющие как вершины графа степень 1, лежат на границе многоугольной фигуры. Остальные концевые точки имеют степень 3 и более, т.е. в них сходятся по три и более бисекторов. Каждая такая вершина диаграммы Вороного равноудалена от трех или более сайтов, которые, в свою очередь, являются к ней ближайшими. Следовательно, эта вершина является центром максимального пустого круга, касающегося трех или более сайтов. 7.3. Получение скелета из диаграммы Вороного Между диаграммой Вороного многоугольной фигуры и ее скелетом существует тесная связь. Утверждение 7.1. Скелет многоугольной фигуры является подмножеством ее диаграммы Вороного. Доказательство. Пусть в фигуре С с границей дС для точки s из скелета S имеются две ближайшие граничные точки д\ и д2. Тогда сайты, содержащие эти точки, имеют общий бисектор и точка s лежит в этом бисекторе, откуда следует утверждение. Утверждение 7.2. Бисектор пары сайтов, не являющихся соседними, содержится в скелете многоугольной фигуры. Доказательство. Если два сайта являются смежными, то для каждой точки бисектора существует пустой круг с центром в этой точке, касающийся обоих сайтов. Поскольку при этом сами сайты не являются соседними, точки касания сайтов пустым кругом не совпадают друг с другом. Следовательно, эта точка бисектора имеет две ближайшие точки на границе, и поэтому пустой круг является максимальным. Но тогда данная точка принадлежит скелету, что и требовалось доказать. Утверждение 7.3. Бисектор пары соседних сайтов не содержится в скелете многоугольной фигуры. Доказательство. Пара соседних сайтов — это сайт-точка и сайт- сегмент, образованные вершиной многоугольника и инцидентной ей стороной многоугольника. Бисектор такой пары сайтов состоит из точек фигуры, равноудаленных от этих сайтов. Но при этом ближайшей точкой границы многоугольника к точкам бисектора является только сама вершина, принадлежащая обоим сайтам, т. е. единственная точка. Следовательно, пустые круги с центрами на этом бисекторе не являются максимальными. Поэтому бисектор не входит в скелет многоугольника. Таким образом, картина взаимосвязи диаграммы Вороного многоугольной фигуры и ее скелета полностью проясняется. Все бисекторы пар сайтов, не являющихся соседними, и только они образуют ветви
108 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО скелета. На основе этого свойства появляется возможность получения скелета из диаграммы Вороного многоугольной фигуры. Если диаграмма Вороного построена, то нужно просто выбросить из нее «лишние» элементы: ребра, являющиеся бисекторами пар соседних сайтов. Тогда оставшиеся ребра образуют скелет фигуры. Для определения лишних ребер имеется простой признак: лишними являются бисекторы, проходящие через вогнутые вершины фигуры, т. е. такие, в которых угол между сторонами больше 180°. В примере на рис. 7.3 таковыми являются вершины 6, 10, 12 и 14. В примере на рис 7.4, а показана диаграмма Вороного многоугольной фигуры.. Бисекторы пар соседних сайтов в ней выделены а) б) Рис. 7.4. Получение скелета из диаграммы Вороного: скелет фигуры (а), диаграмма Вороного (б) пунктиром. На рис. 7.4,6 изображен скелет многоугольной фигуры, образовавшийся в результате удаления этих лишних бисекторов. Каждый бисектор .нары ^соседних сайтов имеет хотя бы одну концевую вершину первой степени. При его удалении эта вершина исчезает, а степень второй концевой вершины бисектора понижается. Таким образом, скелет является подграфом диаграммы Вороного, в котором могут появиться, в частности, вершины второй степени, которых нет в диаграмме Вороного. 7.4. Вершины диаграммы Вороного Структура диаграммы Вороного многоугольной фигуры полностью описывается плоским графом, ребрами которого являются бисекторы пар сайтов, а вершинами - точки пересечения этих бисекторов. Поэтому для построения диаграммы Вороного нужно вычислить бисекторы и точки их пересечения. Каждая вершина диаграммы Вороного является центром максимальной пустой окружности, касающейся трех или более сайтов. Поэтому задача поиска вершин может быть решена путем построения касательных окружностей для троек сайтов (рис. 7.5).
7.4. ВЕРШИНЫ ДИАГРАММЫ ВОРОНОГО 109 г) д) е) Рис. 7.5. Касательные окружности для троек сайтов В общем случае для произвольной комбинации из трех сайтов не всегда существует касательная пустая окружность. На рис. 7.5 приведены примеры троек сайтов, когда такая окружность существует, а на рис. 7.6 — когда не существует. Рис. 7.6. Тройки сайтов, для которых не существует касательной окружности Если касательная окружность существует, то она не всегда является единственной. На рис. 7.7 приведены примеры, когда существуют две пустые окружности, касательные к одной и той же тройке сайтов. Однако в этом случае окружности различаются последовательностью касания сайтов. При обходе окружностей в положительном направлении (против часовой стрелки) тройка сайтов упорядочивается по- разному. Рис. 7.7. Случаи, когда касательная окружность не единственна Таким образом, для каждой упорядоченной тройки сайтов существует не более одного пустого круга, касающегося сайтов в заданном порядке.
по Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Построение касательной окружности для тройки сайтов может быть сведено к решению системы из двух уравнений второй степени. Пусть t = (χ, у) точка на плоскости, являющаяся центром окружности. Если ρ = (рх,Ру) — сайт-точка, то расстояние от точки t до этого сайта есть d(t,p) = л/(х -рх)2 + (у -ру)2 . Рассмотрим теперь сайт-сегмент s с концевыми точками q = (qx,qy) и г = (гх,гу). Сайт 5 определяет прямую на плоскости, описываемую линейным уравнением ах + by + с = О с коэффициентами α = (гу ~ Чу) b= (rx-qx) y/(rx - qx)2 + (ry - qy)2 ' y/{rx - qx)2 + (ry - qy)2 ' _ yyQx ~ гхЯу) у/{гх - qx)2 + (ту - qy)2 η ι » о |аж + by + с| D Расстояние от точки t до этой прямой есть -1—. '. В нашем Va2 + b2 случае a2 + b2 = \. Кроме того, точки, лежащие слева от прямой ах + by + с = 0, удовлетворяют условию ах + Ьу + с > 0. Таким образом, если окружность с центром в точке t касается сайта-сегмента и лежит слева от него, то расстояние от точки t до сайта равно d(t, s) = = αχ + by + с. Если точка t является центром касательной окружности трех сайтов 5ь 52, 5з, то эти сайты являются для нее равноудаленными и ближайшими. Следовательно, имеет место равенство d(t,s\) = d(t,s2) = ф,5з). Эти условия задают алгебраическую систему из двух уравнений, решение которой позволяет найти координаты центра окружности t = (х,у), касательной к трем сайтам s\, 52, 53: rd(t,s\) =d(t,s2). (7 n d{t,8l) = d{t,8S). К'Л) Если оба сайта, входящие в одно из уравнений, являются точками, то это уравнение приводится к линейному. Действительно, пусть 5ι, 52 — это сайты-точки с координатами (х\,у\) и (#2>У2)· Тогда d(t,si) = ^/(x-x\)2 + (y-y\)2, d(t,s2) = а/(^-^2)2 + (у-У2)2· Возведя правую и левую части равенства в квадрат, это уравнение сводим к следующему линейному уравнению относительно неизвестных χ и у: 2(х2 - х\)х + 2(у2 - у\)у = х22-х\+у1- у\. Если оба сайта s\, s2 являются сайтами-сегментами, тогда уравнение тоже сводится к линейному. Это происходит потому, что расстояние от точки t = (χ, у) до этих сайтов-сегментов описывается, как было показано выше, линейными функциями d(t,s\) = а\х + Ь\у + с\ и d(t,s2) = а2х -\-Ъ2у + с2. Следовательно, равенство этих расстояний дает нам уравнение [а2 — а\)х + (Ъ2 - Ь\)у = -(с2 - с\).
7.4. ВЕРШИНЫ ДИАГРАММЫ ВОРОНОГО 111 Таким образом, если в тройке сайтов 51,52,53 все они являются сайтами-точками или все являются сайтами-сегментами, то (7.1) превращается в систему двух линейных уравнений. Если в тройке сайтов s\, 52, 53 присутствуют одновременно сайты- точки и сайты-сегменты, то система становится нелинейной. Однако поскольку из трех сайтов всегда найдется либо одна пара сайтов- точек, либо пара сайтов-сегментов, то одно из уравнений в системе (7.1) становится линейным. Другое уравнение приводится к уравнению второй степени. Пусть, например, s\ — сайт-точка с координатами (х\,у\), а 52 — сайт-сегмент с концевыми точками q = (qx,qy) и г = = {гх>Гу)· Тогда, приравнивая расстояния от точки t = (χ, у) до этих сайтов, получаем уравнение ах + Ъу + с— \J{x — х\)2 + (у — у\)2. Возведя обе его части во вторую степень и сделав замену переменных на основании второго уравнения, являющегося линейным, это уравнение можно привести к обычному квадратному уравнению, которое легко решается. Таким образом, мы всегда можем найти решение системы (7.1), которое, однако, нуждается в дополнительном исследовании. Полученное решение должно удовлетворять двум дополнительным условиям, которые легко проверяются. Первое условие состоит в том, что проекции найденной точки t на сайты-сегменты должны лежать на самих сегментах. Для сегмента с концевыми точками q = {qx,qy) иг= (гх,гу) это условие есть: О < [х - qx){rx - qx) + {у - qy)(ry - qy) < <{rx-qx)2 + {ry-qy)2. (7.2) Второе условие выражается в том, что касательная окружность должна лежать внутри фигуры и, следовательно, центр ее t = (χ, у) лежит слева от сайта-сегмента. Это условие выражается следующим образом: {х ~ Qx){ry - qy) ~{y- qy){rx - qx) < 0. (7.3) Проверка условий (7.2)-(7.3) необходима, поскольку, во-первых, система (7.1) описывает касание не самих сайтов-сегментов, а содержащих их прямых, а во-вторых, при возведении уравнений во вторую степень могут появиться ложные решения. После проверки выполнения этих условий для найденных решений системы уравнений (7.1) окажется, что допустимых решений либо вообще нет, либо существует лишь одно. В первом случае это означает, что имеет место какая-либо из ситуаций, изображенных на рис. 7.6, т.е. касательную окружность к тройке сайтов s\, 52, 53 построить нельзя. А во втором случае имеет место один из вариантов, представленных на рис. 7.5, и тогда центр касательной окружности найден. Для того чтобы понять, является ли полученная точка вершиной диаграммы Вороного, остается проверить, не попадают ли внутрь касательной окружности другие сайты, т. е. является ли соответствующая окружность пустой. Если попадают, то эта окружность не пустая и тогда ее центр не является вершиной диаграммы Вороного. А если не
112 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО попадают, то центр этой окружности объявляется очередной найденной вершиной диаграммы Вороного. Проверка попадания остальных сайтов в окружность осуществляется на основе перебора. Заметим, что описанная схема вычисления вершин диаграммы* Вороного является весьма затратной в вычислительном отношении. Перебор всех троек сайтов имеет сложность 0(п3), да еще проверка пустоты полученных окружностей увеличивает эту оценку до 0{пА). 7.5. Бисекторы диаграммы Вороного Бисектор является линией, разделяющей смежные ячейки Вороного двух сайтов. Будем называть эти сайты определяющими сайтами бисектора. В зависимости от типа определяющих сайтов бисектор является либо отрезком прямой линии, либо сегментом параболы. Концевые точки бисектора — это вершины диаграммы Вороного, являющиеся центрами максимальных пустых окружностей, которые касаются трех или более сайтов. Пусть точки С\ и Сг являются концевыми точками некоторого бисектора. Если пара определяющих сайтов состоит из двух сайтов-точек или из двух сайтов-сегментов, то бисектор является прямолинейным отрезком с концами в точках С\ и Сг. Вектор С\С^ является направляющим для прямой, а отрезок бисектора задается параметрическим уравнением V{t) = Ci+t-Ciui, (7.4) в котором параметр t пробегает значения t G [0,1]. Если же один из определяющих сайтов есть сайт-точка, а другой — сайт-сегмент, то бисектор является параболой. Пусть S — это сайт- точка, a Q — сайт-сегмент. Пусть Р\ и Р^ — проекции точек С\ и С% на сайт Q, т. е. это точки касания сайта Q максимальными пустыми окружностями С\ и Сг. Не нарушая общности, можем считать, что точки S, Р\, Р% образуют «правую тройку», т.е. угол между векторами SP\ и SP2 положительный (рис. 7.8). Геометрическим местом точек, Рис. 7.8. Параболический бисектор для пары сайтов «точка-сегмент»
7.6. ЖАДНЫЙ АЛГОРИТМ ПОСТРОЕНИЯ ДИАГРАММЫ ВОРОНОГО 113 равноудаленных от точки S и прямой Q, является парабола, у которой S есть фокус, a Q — директриса. Пусть S" — проекция точки S на прямую Q. Точки Р\ и Р^ лежат на прямой Q. Введем местную прямоугольную декартову систему координат (и, ν) следующим образом. В качестве начала координат примем S", ось абсцисс направим вдоль прямой Q в направлении Р\Ръ, а ось ординат — в направлении S'S. Уравнение сегмента параболы в этой системе координат есть j ι v= о+ол^2> ие[иии2], (7.5) 2 2d где d=ls,sl=m^i, (,6) Iflftl J?lL' (ftW) Обозначим ёп и ev — единичные векторы выбранной системы координат (ιχ,ν): Тогда уравнение параболического бисектора в основной системе координат примет вид V(u) = S' + u-eu+ (- + 2^2) -Ъ» ^^ Κ^2]. (7.9) При этом У(г^) = С\, V[v,2) = Сг. Таким образом, уравнения (7.4) и (7.5)-(7.9) полностью описывают линейные и параболические бисекторы диаграммы Вороного многоугольной фигуры. 7.6. Жадный алгоритм построения диаграммы Вороного Если многоугольная фигура имеет η вершин, то она имеет η сторон и из них образуется 2п сайтов. Получается 4п2 пар сайтов, для которых принципиально могут существовать бисекторы. Но среди этого количества пар сайтов, на самом деле, смежные пары составляют лишь небольшую часть 0{п). Поэтому возникает задача отбора смежных пар сайтов из множества всех возможных пар. Решив задачу отбора таких пар и вычислив их бисекторы, можно построить диаграмму Вороного для множества сайтов многоугольной фигуры.
114 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Как уже отмечалось, наивный переборный алгоритм построения вершин диаграммы Вороного, описанный в разделе 7.4, имеет слишком большую вычислительную сложность. Для построения скелетов бинарных изображений в практических приложениях нужны более эффективные алгоритмы. Рассмотрим такой алгоритм, основанный на последовательном нахождении всех вершин и ребер диаграммы Вороного. Поскольку диаграмма Вороного многоугольной фигуры является связным графом, этот процесс может быть реализован путем последовательного присоединения к уже построенной части диаграммы новых ее элементов — ребер и вершин. Начинается этот процесс с выявления всех терминальных вершин диаграммы Вороного, имеющих степень 1. Таковыми являются все выпуклые вершины многоугольной фигуры. Действительно, с каждой выпуклой вершиной связана пара сайтов-сегментов, образованных сторонами многоугольной фигуры, инцидентными этой ее вершине. А биссектриса угла, образованного такой парой сегментов, всегда задает бисектор, для которого вершина фигуры является концевой точкой. Этот бисектор является отрезком прямой. Таким образом, для всех вершин диаграммы первой степени существуют инцидентные им бисекторы, которые инициализируют процесс построения диаграммы (рис. 7.9). Будем называть такие бисекторы терминальными. Вершины бисекторов будем искать последовательно: сначала находим первую концевую точку бисектора, а затем вторую. Бисектор, для которого вычислена лишь одна концевая точка, будем называть активным. А те бисекторы, у которых известны обе концевые точки, будем называть готовыми. В процессе построения диаграммы Вороного создаются два списка: список активных бисекторов и список готовых бисекторов. Работа алгоритма начинается с нахождения первой концевой точки одного из терминальных бисекторов. Такой точкой является любая из выпуклых вершин многоугольной фигуры (рис. 7.9). Очевидно, что такая вершина всегда существует (и не одна). Первый найденный бисектор является активным. Он помещается в список активных бисекторов, после чего начинает работать основной цикл алгоритма. Основной цикл включает в себя обработку очередного активного бисектора, в результате которой для него находится вторая концевая точка, после чего он переводится в список готовых бисекторов. Найденная вторая концевая точка бисектора является либо терминальной вершиной диаграммы Вороного, либо начальной точкой для других бисекторов. В этом последнем случае порожда- Рис. 7.9. Терминальные ются новые бисекторы, которые пополняют бисекторы список активных. Цикл завершается, когда список активных бисекторов опустеет. ^
7.6. ЖАДНЫЙ АЛГОРИТМ ПОСТРОЕНИЯ ДИАГРАММЫ ВОРОНОГО 115 Таким образом, основной алгоритм построения диаграммы Вороного состоит в последовательном порождении и обработке бисекторов и включает в себя следующие шаги. 1. Выбрать очередной бисектор из списка активных бисекторов и перейти к шагу 2. Если этот список пуст, то завершить работу. 2. Построение второй концевой точки бисектора. Для выбранного активного бисектора найти вторую концевую точку. Найденный бисектор рассматривается в качестве кандидата для включения в диаграмму Вороного. Перейти к шагу 3. 3. Пополнение диаграммы новым бисектором. Полученный новый бисектор нужно проверить на совпадение с ранее построенными би- секторами, находящимися в списке готовых. Если совпадения не обнаружено, то новый бисектор помещается в список готовых, и далее переход к шагу 4. Если же бисектор-кандидат совпал с каким-то из построенных ранее готовых бисекторов, то он просто уничтожается и далее нужно перейти к шагу 1. 4. Порождение активных бисекторов. Найденная вторая концевая точка бисектора объявляется вершиной диаграммы Вороного. Если она не совпадает с вершиной многоугольной фигуры, т.е не является терминальной вершиной диаграммы Вороного, то из нее должны выходить другие ребра диаграммы. Это значит, что нужно создать новые активные бисекторы, для которых эта вершина является первой концевой точкой, и поместить их в список активных бисекторов. Далее перейти к шагу 1. Рассмотрим шаги алгоритма более подробно. 7.6.1. Построение второй концевой точки бисектора. Активный бисектор описывается парой своих определяющих сайтов и первой концевой точкой. Кроме того, известна ориентация бисектора относительно сайтов, т.е. известно, какой из определяющих сайтов лежит слева от бисектора, а какой справа. Искомая вторая концевая точка является центром пустой окружности, касательной к двум определяющим сайтам и некоторому третьему неизвестному сайту. Следовательно, построение этой второй концевой точки сводится к поиску соответствующего третьего сайта. Такой поиск можно осуществить последовательным просмотром всех сайтов и выбором среди них того, который требуется. Для каждого пробного сайта и пары определяющих сайтов делается попытка построения общей касательной окружности. Причем ищется такая окружность, которая касается трех сайтов в определенном порядке. Точки касания левого, правого определяющих сайтов и пробного сайта должны образовывать правую тройку (рис. 7.10). Если такую окружность построить удалось, то ее центр может рассматриваться как потенциальная вторая концевая точка бисектора. Пример на рис. 7.10 иллюстрирует некоторые частные случаи, которые могут возникнуть при решении этой задачи. Здесь точки касания сайтов сегментов обозначены теми же буквами, что и сами сайты, но имеют нижние индексы. В примерах (а, б) для определяющих сайтов L (левый) и R (правый) и пробного сайта Τ существуют две касательные окружности. Но ориентация точек касания для этих окружностей разная. В случае (а) тройка точек (L,i?i,T) является
116 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Рис. 7.10. Построение касательной окружности правой, а тройка (L,R2,T) — левой. Поэтому в качестве касательной окружности выбираем Сь А в случае (б) тройка (Li,R\,T) является правой, а тройка (L2,R2,T) — левой. Здесь тоже искомой касательной окружностью будет С\. Для случая (в) существует единственная касательная окружность С\ к тройке сайтов L, R и Т. При этом тройка точек касания (L,R\,T\) является правой. Следовательно, окружность С\ удовлетворяет требуемым условиям. А в случае (г) единственная касательная окружность к сайтам L, R и Г, которую можно построить, не может быть выбрана, поскольку тройка точек касания (Li,JRi,Ti) не является правой. Бисектор строится для пары сайтов. А его концевая точка определяется как центр пустого круга, касательного к этой паре сайтов и некоторому третьему сайту, который нужно найти. Однако в ходе просмотра всех сайтов может быть выявлено несколько таких кандидатов в «третьи» сайты, для которых удается построить пустой касательный круг (рис. 7.11-7.12). Какой из этих сайтов следует выбрать? Рис. 7.11. Выбор концевой точки для линейного бисектора
7.6. ЖАДНЫЙ АЛГОРИТМ ПОСТРОЕНИЯ ДИАГРАММЫ ВОРОНОГО 117 Такой выбор должен осуществляться из следующих соображений. Все центры построенных окружностей лежат на линии, равноудаленной от двух определяющих сайтов. Поэтому в качестве второй концевой точки бисектора следует взять центр той окружности, который находится ближе вдоль этой линии к первой концевой точке. В случае, когда пара определяющих сайтов состоит из двух сайтов-точек или двух сайтов-сегментов, выбирается просто та точка, которая ближе к первой концевой (рис. 7.11). На рисунке первая концевая точка бисектора обозначена Со- Среди двух точек С\ и Сг, являющихся кандидатами для выбора второй концевой точки бисектора, нужно выбрать Сь поскольку она лежит ближе к Со, чем С*}. В результате бисектором становится отрезок прямой CqCi. Рис. 7.12. Выбор концевой точки для параболического бисектора Более сложным представляется случай, когда пара определяющих сайтов состоит из сайта-точки и сайта-сегмента (рис. 7.12). В этом случае в качестве второй концевой точки выбирается та, у которой проекция на сайт-сегмент лежит ближе остальных к проекции первой концевой точки на этот сайт-сегмент. В примере на рисунке в качестве пробных сайтов выступают сайты Т\ и Т^. Центры соответствующих касательных кругов С\ и С^ лежат на параболе. При этом расстояние от первой концевой точки бисектора Со до Сг может быть меньше, чем до С\. Однако, если рассмотреть проекции точек Со, С\ и Сг на сайт- сегмент R (точки Ro, R\ и i?2 соответственно), то выяснится, что длина отрезка RqR\ меньше, чем RoR2- Поэтому в качестве второй концевой точки бисектора выбирается Сь и сам бисектор будет представлять собой сегмент параболы CoCi. 7.6.2. Пополнение диаграммы новым бисектором. Полученный новый бисектор должен быть включен в список готовых. Однако существует опасность, что такой бисектор был уже построен ранее и содержится в списке готовых. Механизм возможного повторного построения бисектора объясняется следующим образом. Поскольку бисектор имеет две концевые точки, являющиеся вершинами диаграммы Вороного, он может быть построен с двух сторон. Все зависит от того, какая из
118 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО его концевых точек была найдена раньше. Поэтому вполне возможен случай, когда в ходе построения диаграммы могут возникнуть независимо два активных бисектора, у которых первыми концевыми точками являются две смежные вершины диаграммы Вороного. Для того чтобы избежать повторного включения в диаграмму одного и того же готового бисектора, необходимо осуществить проверку вновь полученного бисектора на совпадение его с каким-либо готовым бисектором. Такая проверка осуществляется простым перебором списка готовых бисекторов и сравнения их с вновь полученным бисектором- кандидатом. В случае, когда совпадения не произошло, новый бисек- тор пополняет список готовых. Если же произошло совпадение, то бисектор-кандидат просто уничтожается. 7.6.3. Порождение активных бисекторов. В диаграмме Вороного все вершины имеют степень либо 1, либо 3 и более. В случае, если найденная вторая концевая точка бисектора имеет степень 1, это означает, что она является терминальной вершиной диаграммы. Терминальная вершина совпадает с выпуклой вершиной многоугольной фигуры. Если же точка не является терминальной, то в ней сходятся несколько бисекторов. Следовательно, найденная вторая концевая точка бисектора может служить начальной точкой для порождения новых активных бисекторов. Порождение новых бисекторов осуществляется по следующему правилу. Пусть построенный готовый бисектор имеет концевую точку С, являющуюся центром окружности, касательной к сайтам L, Д, Т. Сайты L и R являются соответственно левым и правым определяющими сайтами бисектора, а сайт Τ найден в результате просмотра всех пробных сайтов так, как это описано выше. Тогда осуществляется следующая проверка. Если сайты L и R являются соседними, то вершина С объявляется терминальной. В противном случае порождаются два новых активных бисектора. Первый из них имеет определяющие сайты L и Т, а второй — Τ и R. Левым определяющим сайтом первого бисектора является L, а правым — Т. Для второго бисектора левым является Т, а правым R. Оба бисектора имеют одну и ту же первую концевую точку С. При поиске второй концевой точки может возникнуть особый случай, когда найдется несколько пробных сайтов Ti,...,Tm, m > 1, у которых центры касательных окружностей совпадут. Это означает, что существует максимальная пустая окружность, касающаяся двух определяющих сайтов и всех этих пробных сайтов. Следовательно, найденная вершина диаграммы Вороного является точкой, в которой сходятся ячейки Вороного всех этих сайтов. Эта ситуация является вполне допустимой и не нарушает работы алгоритма. Упорядочим сайты Т\,..., Тт в последовательности касания их пустой окружностью от L к R. А затем образуем т + 1 новых бисекторов-кандидатов для следующих пар сайтов: L и Т\, Т\ и Т2, ... ,Tm_i и Tm, Tm и R. Для иллюстрации работы описанного алгоритма рассмотрим в качестве примера построение диаграммы Вороного многоугольной фигуры, изображенной на рис. 7.13, а. Последовательность построения
7.6. ЖАДНЫЙ АЛГОРИТМ ПОСТРОЕНИЯ ДИАГРАММЫ ВОРОНОГО 119 а) б) Рис. 7.13. Пример работы алгоритма построения диаграммы Вороного (см. табл. 7.1) представлена в табл. 7.1. Нумерация сайтов дана в соответствии с рис. 7.13, а. На рис. 7.13,6 бисекторы диаграммы Вороного пронумерованы в соответствии с нумерацией шагов в таблице. В таблице используются следующие обозначения. Запись (Z,r) обозначает бисектор с левым определяющим сайтом / и правым г. Запись {i,j,fc} обозначает вершину диаграммы Вороного, являющуюся центром касательной окружности сайтов i, j, к. При этом точки касания образуют правую тройку. Запись [т] обозначает терминальную вершину диаграммы Вороного, совпадающую с сайтом-точкой га. Если многоугольная фигура имеет η вершин, то общее число сайтов, образуемых из ее вершин и сторон, составляет 2п. Тогда число ячеек Вороного, входящих в разбиение Вороного, также не превосходит 2п. Поскольку диаграмма Вороного представляет собой плоский граф, для него выполняется теорема Эйлера, связывающая количество вершин ν, ребер е и граней / плоского графа следующим образом v-e + f = 2. Следствием теоремы Эйлера является асимптотическая оценка 0(п) для числа граней и ребер плоского графа [21]. Тогда число ребер в диаграмме Вороного есть 0(п), а каждое ребро диаграммы состоит из одного бисектора, следовательно, общее количество бисекторов в диаграмме составит величину 0(п). Согласно предложенному алгоритму каждый бисектор в какой-то момент попадает в список активных, Причем благодаря контролю на совпадение бисекторов повторное попадание бисектора в этот список невозможно. Таким образом, общее число шагов в основном цикле алгоритма, определяемое числом порожденных активных бисекторов, есть 0(п). Оценим трудоемкость одного шага основного цикла. Построение бисектора включает в себя перебор всех сайтов-кандидатов для построения второй концевой точки бисектора, т. е. требует 0(п) проверок.
120 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО со ис. 7. о- 3 о- >^ (_ К о ас ни ·=? о >royi DHIM OJ о ммы Ворон» оз οι диаг 5 роени н пос итме S- о сть шагов в алг о ельн Последоват а 71 Таблиц; εκ Η Ι Поме< <u ас « 'орож, с ч> к ж | Сравне] ение I Постро Обраба 0Q оро Η * бисе X сок активны К с и * о с» К с с» 0Q Й 0Q о ас S о ъи СО СПИС1 о втор< зК 3 S <v оз 0Q 3 Η <u ОЯНК н с» о щее (-Н X 3 0Q ГОТО X 3 X 0Q к Η оз ίχ! готовы: к bti ТОЧ] концевой зК активны оэ о Q- о ΕΙ бисек о о- о >исек! Ч~> 0Q Ο Q- бисекто 1 бисектора Cl бисекто ^ σ^ ~Ί 2,1 >-*' <Μ ~ι σ^ оз с< οί (9,12) Ι csT σ>" (9,1) <Μ CO со σΓ οί ^ ОЗ с< CM 3,1 s—' ^ ,13 2- Ι coj Ι {9,12 ^-^ ^ w <Μ со" Ν-"' со ~ι 05 оз с< ^ ,*-^ 2,1 ι Ξτ οί οί со4 t>." ^"^ ι^ σΓ Ξ, 12, ^-^ сч со" ^ оз с< со t>T v"~' 9,7 1 Р^ I {9,13 со" σ>" со 9,7 Ξ ^-^ οί ^ оз с< | 1 сТ (13,12) со" 1^ ^ σΓ ^_Г ^ ОЗ с< I 1 с7 (12,11) О О со t^ t^ σΓ оз с< ю, s-·*. о 1 о4 - (ПО ю, о n-"' со ^. 1^ оз с< | 1 Ос7 Г (9,7Г 6 13 w ^ 7,6 о" ^-^ о ^_г ^ оз с< со со" 7,6 1 соГ 1 {7,13 со" о·" со" СО cq tC v—' о" ^ оз «=( I 1 oil I (0ΠΙ) - со" со" о со4 со «о h~" ОЗ с< со" ,^-^ со ю, 1 С*Г Г01> О ^ со" 0,3 Ν-"' со ^ со оз с< I 1 Ср" (о СО Ю ю4 со" сг й со о" ~ оз Е( со ώ 6,5 1 ю4 со" со" со4 сгГ со ю" ю4 о" Ϊ ю. ю4 со" ^. со^ оз с< со 15, ^ ^ ю 0,1 1 ю4 | {10,3, го4 о" ~~Ί 15 3 w ^ ,15 о со ю ю erf оз с< I 1 с7 со" °Я ю" ю 0,1 *—* со ^ w оз «=( 1 1 2 со" ^-^ СО ί ^ ώ °я ю" /-^ч ю о" с' ОЗ с< со 4,1 -* ^ ^ ,14 ю 1 ^ со" со" ю" со 4,1 — ^ ^ ,14 ю >-*' со ю" :=:' оз с< I 1 о1 ю4 о ,-^ со ί ^ ю" со 4,1 s—' ^ ^. w оз с< °°« ^" ^,-^ ^ 5,1 1 ^ I {15,3, со ю" ^ со" >~*' со ю" со4 ^" ^ 15, ^-^ со ^" с' оз с< ^ со" 5,3 1 со" ^" ю" 3 14 ^ ^-. 5,3 со ^" ^^ ^ ю" ^ оз с< I 1 ^ со я? со со" ώ со ^" оз с< | 1 гГ я? ю" со4 ю" ю ^" ^ со со ώ оз с< 5,3 ^ ^ ю 14, 1 iq 1 {14,3 (14,3) со" ю" 4,5 ν-"' ^ ^. со оз с< I 1 S (5,3) со ώ ю V нет | [ (14,3 ю* [ {3,14, (3,14) СО ώ | нет I 1 (5,14 со ^" (14,5) 1 | нет 1 ю" £ (5,3)
7.7. РЕКУРСИВНАЯ ДЕКОМПОЗИЦИЯ ДИАГРАММЫ ВОРОНОГО 121 Каждая проверка состоит в построении касательной окружности для трех сайтов, что занимает время 0(1). Следовательно, построение бисектора требует время 0(h). Далее построенный бисектор должен быть проверен на совпадение со списком готовых бисекторов. Проверка осуществляется просмотром всего списка готовых бисекторов, длина которого составляет 0(п), и сравнения с каждым бисектором из этого списка, которое требует времени 0(1). Таким образом, проверка на совпадение занимает также времени 0(п). В результате общая оценка времени выполнения одного шага основного цикла есть 0(п). Учитывая, что число шагов есть тоже 0(п), получаем общую оценку времени работы алгоритма 0(п2). Описанный алгоритм строит последовательно все ребра и вершины диаграммы Вороного. Причем построение каждого очередного элемента осуществляется на основе локально оптимального выбора. Такие алгоритмы называются жадными. Достоинством алгоритма является его относительная простота с точки зрения программной реализации. Однако «квадратичная» вычислительная сложность 0(п2) позволяет применять алгоритм только при решении задач небольшой размерности. В тех практических задачах, в которых число- вершин многоугольной фигуры составляет 105 ~ 106, алгоритмы квадратичной сложности, как правило, неприемлемы. Для этих задач нужны более эффективные алгоритмы, имеющие «субквадратичную» сложность. 7.7. Рекурсивная декомпозиция диаграммы Вороного Для повышения вычислительной эффективности алгоритмов построения диаграммы Вороного обычно используется алгоритмическая парадигма рекурсивной декомпозиции. Суть ее состоит в том, чтобы разбить исходную задачу с размерностью входа η на две подзадачи, имеющие примерно одинаковую размерность близкую к —, получить решения этих подзадач, а затем из этих решений сконструировать собственно решение исходной задачи. При этом каждая из двух подзадач, в свою очередь, решается точно таким же образом, т.е. путем разбиения на две подзадачи. Такое рекурсивное разбиение подзадач продолжается до тех пор, пока размерность подзадачи не станет столь малой, что ее решение можно будет получить непосредственно, без дальнейшего разбиения. Если удается за время 0(п) разбить задачу η размерности η на две подзадачи с размерностями -, а потом из решений подзадач собрать решение исходной задачи тоже за время 0(п), то общее время, которое требуется на весь процесс рекурсивного решения, составит величину 0(пlogn) [21]. Таким образом, основу эффективных алгоритмов рекурсивной декомпозиции для диаграмм Вороного составляют алгоритмы разбиения
122 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО исходной задачи на подзадачи и объединения решений подзадач за линейное время. Рассмотрим сначала применение этого подхода к построению обыкновенной диаграммы Вороного конечного множества точек, а затем обобщим его на случай диаграммы Вороного многоугольной фигуры. Пусть на плоскости задано η сайтов-точек, для которых требуется построить диаграмму Вороного. Процесс рекурсивного построения включает в себя разбиение задачи на подзадачи, рекурсивное решение подзадач и построение общего решения на основе решений подзадач. Этот последний шаг будем называть для простоты объединением решений или слиянием двух диаграмм Вороного. Разбиение исходного множества точек обычно осуществляется с помощью прямой линии, разделяющей плоскость на две полуплоскости, так чтобы в одной полуплоскости находилась половина всех сайтов, а в другой полуплоскости — еще половина (рис. 7.14). Если общее количество точек нечетное, то их число в разных полуплоскостях должно отличаться на 1. При таком разбиении выпуклые оболочки подмножеств (изображенные в примере пунктиром) не пересекаются. Таким образом, исходное множество сайтов разбивается на два подмножества, называемых разделенными. В качестве разделяющей прямой проще всего использовать вертикальную линию. %--■ 5 -•О К 11 Ь"" V ψ 10 М2 Рис.. 7.14. Разбиение исходной задачи на две подзадачи -"" Пусть V = {ν\,...,νη} — исходное множество из η сайтов-точек. Упорядочим лексикографически множество V по возрастанию и поменяем индексацию сайтов так, чтобы v\ < v% < ... < vn. При этом считаем, что для сайтов Vi = (хг,Уг) и Vj = (xj,yj) имеет место отношение порядка Vi -< Vj, если их координаты удовлетворяют условию χι < Xj или χι — Xj w yi < yj. Упорядоченное таким образом множество V делим на две части из μ = - и (η — μ) сайтов: левую Vl = {v\,..., νμ} и правую VR = {νμ+ι,... ,υη}. Рекурсивное разбиение подмножеств точек продолжается до тех пор, пока число точек в подмножестве не станет равным 1 или 2.
7.7. РЕКУРСИВНАЯ ДЕКОМПОЗИЦИЯ ДИАГРАММЫ ВОРОНОГО 123 Диаграмма Вороного для одной или двух точек имеет простой вид и строится за фиксированное время 0(1). Таким образом, количество задач нижнего уровня, составляющих базу рекурсии, есть 0(п). В результате решения этих задач образуется самый нижний «слой» диаграмм Вороного. Далее, объединяя попарно диаграммы этого слоя, мы получаем новые диаграммы Вороного подмножеств из 3-4 точек, которые составляют следующий слой диаграмм. Потом строим следующий слой объединенных диаграмм и т.д. Процесс объединения продолжается до тех пор, пока не образуется одна диаграмма для всего множества сайтов. Количество слоев получаемых диаграмм составит в результате величину О (log n). Центральную роль в этом подходе играет алгоритм слияния двух построенных рекурсивно диаграмм Вороного DV(Vl) и DV(Vr) разделенных подмножеств Vl = {ν\, · · ·, νμ} и Vr = {νμ+\,..., νη} (рис. 7.15). Слияние диаграмм осуществляется путем построения \ #п 7.\/ -10/ Ц""" -12 •8 \ Рис. 7.15. Диаграммы Вороного двух разделённых подмножеств сайтов ломаной линии, состоящей из точек, равноудаленных от подмножеств сайтов Vl и Vr: L = {а : d{a,VL) = d{a,VR)}. Эта линия разделяет плоскость на два полупространства Fl и Fr, которые условно будем называть левым и правым: FL = {8 : d{8,VL) ^ d{8,VR)}, FR = {s:d(s,VL)>d(s,VR)}. В левом полупространстве лежит подмножество сайтов Vl, в правом — Vr. Тогда объединенная диаграмма Вороного (рис. 7.16) состоит из самой разделительной линии L, а также из частей диаграмм Вороного DV(Vl) и DV(Vr), лежащих соответственно в полупространствах Fl и Fr, т. е. DV{VL U VR) = [DV{VL) Π FL] U [DV{Vr) Π FR] U L Таким образом, задача слияния двух диаграмм Вороного DV(Vl) и DV(Vr) сводится к построению линии L и удалению «лишних» частей этих диаграмм. Удаляются при этом ребра, либо фрагменты ребер диаграмм, которые лежат в «чужом» полупространстве: часть диаграммы
124 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Рис. 7.16. Разделительная линия Рис. 7.17. Объединенная диаграмма диаграмм Вороного подмножеств Вороного подмножеств DV(Vr), оказавшаяся слева от линии L, и часть диаграммы DV(Vl), что лежит справа от этой линии (рис. 7.17). Разделяющая линия является ломаной, составленной из двух концевых лучей и конечного числа линейных сегментов. Построение разделяющей линии осуществляется следующим образом. Сначала нужно найти один из лучей. Для этого строятся выпуклые оболочки CH(Vl) и CH(Vr) для подмножеств Vl и Vr, представляющие собой непересекающиеся выпуклые многоугольники (см. рис. 7.14), а затем ищутся общие опорные прямые для этих многоугольников. Всего таких опорных прямых две. В примере на рис. 7.14 одна из них проходит через точки 2 и 8, а вторая — через точки 5 и 11. Отрезки опорных прямых являются ребрами выпуклой оболочки CH(V). А искомые бисекторы-лучи разделяющей линии L — это серединные перпендикуляры этих ребер. Согласно расположению точек пересечения опорных прямых с разделяющей вертикальной прямой одна из опорных прямых называется нижней, а другая — верхней. После этого, начиная с одного из найденных лучей, обычно с нижнего, осуществляется последовательный поиск всех отрезков, составляющих ломаную линию, до тех пор, пока не будет присоединен второй (верхний) луч. Началом каждого очередного отрезка считается точка пересечения предыдущего отрезка или луча с ребрами диаграмм DV(Vl) и DV(Vr). А направление отрезка выбирается как ортогональное к паре сайтов, в чьих ячейках Вороного лежит отрезок. В примере на рис. 7.16 точка А пересечения нижнего луча с ребром ячейки сайта 2 служит началом отрезка АВ разделяющей ломаной. Направление этого отрезка выбирается перпендикулярно к прямой, проходящей через сайты 6 и 8, поскольку он лежит в их ячейках Вороного. Точка В — это первая точка пересечения с ребрами диаграмм DV(Vl) и DV(Vr). Таковым оказывается ребро ячейки сайта 12. Поэтому следующий отрезок ВС разделяющей ломаной L перпендикулярен прямой, соединяющей сайты 6 и 12. По завершении
7.8. ДИАГРАММА ВОРОНОГО ПРОСТОГО МНОГОУГОЛЬНИКА 125 этого процесса мы получаем разделяющую ломаную линию, после чего осуществляется отсечение частей диаграмм DV(Vl) и DV(Vr), которые не войдут в объединенную диаграмму DV(V). Описанный алгоритм был предложен в работе [51] и явился основой для разработки целого семейства эффективных алгоритмов в вычислительной геометрии. 7.8. Диаграмма Вороного простого многоугольника Идея описанного подхода к построению диаграммы Вороного множества сайтов-точек на основе рекурсивной декомпозиции может быть обобщена на тот случай, когда множество сайтов включает в себя не только сайты-точки, но и сайты-сегменты. Эта идея реализуется в алгоритме построения диаграммы Вороного простого многоугольника, называемого по имени его автора алгоритмом Ли [39]. Алгоритм Ли осуществляет построение диаграммы Вороного многоугольника путем слияния диаграмм Вороного двух подмножеств этого многоугольника. В качестве подмножеств многоугольника выступают две ломаные линии, составляющие его границу (рис. 7.18). G( Рис. 7.18. Разбиение многоугольника на две ломаные линии Диаграммы Вороного самих ломаных линий строятся рекурсивно с использованием того же приема: каждая из них, в свою очередь, делится на две линии, для которых нужно построить их диаграммы Вороного, а потом их слить и т. д. Базой рекурсии являются задачи малой размерности, в которых рассматриваются очень простые фрагменты границы многоугольника, составляющие так называемые элементарные цепочки. Элементарная цепочка может состоять из одного элемента или из нескольких элементов. В первом случае элементом является сайт-точка, образованная выпуклой вершиной многоугольной фигуры (с углом меньше 180°), либо сайт-сегмент, концевые точки которого являются выпуклыми вершинами. Элементарная цепочка из нескольких элементов — это последовательность сайтов-точек, образованных вогнутыми вершинами (с углом больше 180°), и сайтов-сегментов, образованных инцидентными этим вершинам сторонами фигуры. Так же, как и в случае диаграммы Вороного для множества сайтов- точек, основную роль в этом алгоритме играет процедура слияния
126 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО Рис. 7.19. Диаграммы Вороного ло- Рис. 7.20. Объединение диаграмм маных линий Вороного ломаных линий диаграмм Вороного двух подмножеств сайтов. Для эффективного решения задачи в целом за время 0(п logn) необходимо решить задачу слияния за время 0(п\+п2), где п\ и п2 — это количества сайтов в подмножествах. Работа алгоритма Ли демонстрируется на рис. 7.18-7.20. Сначала исходный многоугольник разбивается на две ломаные (рис. 7.18). Разбиение осуществляется по двум вершинам, в которых многоугольник имеет выпуклые углы. Затем для каждой из ломаных линий строится диаграмма Вороного (рис. 7.19). А далее из этих диаграмм конструируется диаграмма Вороного для объединенного множества сайтов (рис. 7.20). Пусть Ρ — исходное множество сайтов, а Р\ и Р2 — его подмножества, соответствующие ломаным линиям. Предположим, что для обоих подмножеств построены диаграммы Вороного DV(P\) и DV(P2). Так же, как и в случае сайтов-точек, нужно построить линию, равноудаленную от двух подмножеств сайтов: L = {s: d(s,Pl) = d(s,P2)}. Эта линия разделяет внутренность многоугольника на две части F\ и F2, примыкающие к своим множествам сайтов Р\ и Р2: F{={s: ф,Р0^ф,Р2)}, F2 = {s: d(s,Piy>d(s,P2)}. Объединенная диаграмма Вороного состоит из самой разделительной линии L, а также из частей диаграмм Вороного подмножеств Р\ и Р2, лежащих в соответствующих «своих» частях F\ и F2 многоугольника, т.е. DV{P\ U Р2) = [DV(Pi) П Fi] U [DV(P2) П F2] U L Слияние двух диаграмм Вороного DV(P\) и DV(P2) сводится к построению линии L и удалению «лишних» частей диаграмм DV(P\) и DV(P2). Удаляются те ребра либо фрагменты ребер этих диаграмм, которые лежат в «чужой» части многоугольника. Поскольку разбиения Вороного множеств Р\ и Р2 представляют собой плоские карты, существует возможность решения этих задач за линейное время О {\Р{\ + \Р2\).
7.8. ДИАГРАММА ВОРОНОГО ПРОСТОГО МНОГОУГОЛЬНИКА 127 Таким образом, алгоритм Ли представляет собой прямой аналог описанного выше алгоритма построения диаграммы Вороного конечного множества точек. В том случае, когда он успешно работает, обеспечивается теоретическая вычислительная эффективность O(nlogn). Оговорка по поводу успешной работы алгоритма не случайна, поскольку он не всегда работает, не всегда позволяет получить корректное решение. Этот недостаток связан с проблемой обобщения понятия диаграммы Вороного, данного изначально для целого многоугольника, на случай разомкнутой ломаной линии. Если по умолчанию понимать под ячейкой Вороного отдельного сайта разомкнутой ломаной то же самое, что и для замкнутой ломаной (многоугольника), то могут получиться пересекающиеся ячейки Вороного. Причем пресечение этих ячеек включает не только граничные их точки. Такие ситуации возникают, когда многоугольник не является монотонным, как в примере на рис. 7.18-7.20, а имеет «спиральную» форму (рис. 7.21). а) б) в) Рис. 7.21. Проблема применения алгоритма Ли к спиральному многоугольнику: исходный многоугольник (а), разбиение на ломаные линии (б), неопределенность диаграммы Вороного (в) Действительно, в многоугольнике принадлежность точек ячейкам Вороного определена только для точек внутри многоугольника. Если же рассматривается незамкнутая ломаная линия, то предполагается, что все точки плоскости должны быть отнесены к ячейкам Вороного. Но сделать это корректно не всегда возможно. В примере показаны точки А, В и С с неопределенной принадлежностью к той или иной ячейке. Исходный многоугольник (рис. 7.21, а) разбит на две ломаные (рис. 7.21,6). Как видно из рисунка (рис. 7.21, в), корректно определить диаграмму Вороного для спиральной ломаной линии весьма проблематично. Второй недостаток алгоритма Ли состоит в невозможности его эффективного обобщения на случай многоугольника с дырами. Известные попытки это сделать [11, 54] приводят к алгоритмам, имеющим вычислительную сложность 0(nlogn + nfc), где к — это количество внутренних контуров многоугольной фигуры, т. е. число дыр. В том случае, когда дыр много, например, когда к есть 0(п), время решения превращается в 0{п2). Формально преодолеть эти недостатки можно, если определить понятие диаграммы Вороного не только для внутренности многоугольной
128 Гл. 7. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ДИАГРАММ ВОРОНОГО фигуры, но для всей плоскости. В этом случае можно воспользоваться эффективными 0(п logn) алгоритмами [32, 34], основанными на алгоритмической парадигме плоского заметания, которые строят диаграмму Вороного для произвольного множества отрезков и не используют специальных свойств отрезков, образующих границу многоугольника. Однако, как показано в работе [11], реальные затраты времени в этом случае существенно выше, чем в алгоритме Ли. Если пойти на построение диаграммы Вороного для всей плоскости, а не только для внутренности многоугольной фигуры, то можно также воспользоваться методом, описанным в работе [35]. Метод состоит в построении на первом этапе обычной диаграммы Вороного только для сайтов-точек, образованных вершинами многоугольной фигуры. А на втором этапе последовательно добавляются к этому множеству сайты- сегменты, образованные сторонами фигуры, и производится соответствующая коррекция диаграммы Вороного. Однако вычислительная сложность метода в худшем случае составляет 0(п2).
ГЛАВА 8 СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ 8.1. Граф смежности многоугольной фигуры. 8.2. Триангуляция Делоне — граф смежности точек. 8.3. Граф смежности простого многоугольника. 8.4. Слияние графов смежности ломаных линий. 8.5. Слияние графов смежности многоугольников. 8.1. Граф смежности многоугольной фигуры Предлагаемый подход, описанный ниже, позволяет преодолеть отмеченные в предыдущей главе недостатки алгоритма Ли за счет построения двойственного графа диаграммы Вороного, описывающего смежность сайтов. Понятие смежности сайтов мы рассмотрим сначала для сайтов-точек, где оно приводит к хорошо известному объекту — триангуляции Делоне, а затем обобщим это понятие на множество сайтов многоугольной фигуры. Рассмотрим диаграмму Вороного множества сайтов-точек V = = {v\,.... yvn} и соединим отрезками прямых линий те точки из V, которые имеют смежные ячейки Вороного (рис. 8.1). В случае, когда точки из V являются точками общего положения, т. е. никакие четыре из них не лежат на одной окружности, этот граф является триангуляцией. Триангуляцией конечного множества точек V, называется плоский прямолинейный граф с вершинами из V, имеющий наибольшее число ребер. Рис. 8.1. Триангуляция Делоне множества сайтов-точек
130 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ Построенная таким образом триангуляция представляет собой граф смежности сайтов-точек V. Ее называют триангуляцией Делоне в честь Бориса Николаевича Делоне (1890-1980), исследовавшего этот объект в работе [7]. Можно определить триангуляцию Делоне как единственную триангуляцию, обладающую тем свойством, что окружность, описанная вокруг любого ее треугольника, не содержит внутри ни одной другой точки из V. Можно также определить ее как единственную триангуляцию, в которой для любого ребра найдется окружность, проходящая через вершины ребра, внутри которой нет точек из V. Мы рассмотрим обобщение этого понятия для более сложного случая, когда множество сайтов образуется из вершин и сторон многоугольной фигуры. Определение 8.1. Графом смежности (граф Делоне) GD(V) многоугольной фигуры называется граф (V,E), у которого множество вершин V состоит из сайтов фигуры, а множество ребер Ε CV ®V содержит все пары смежных сайтов из V. Напомним, что из определения 7.4 следует, что два сайта являются смежными, если существует пустой круг, касающийся только двух этих сайтов из всего множества V. Поскольку граф смежности определяется через отношение смежности сайтов, это понятие можно использовать не только для множества сайтов фигуры V в целом, но также распространить его на подмножества этого множества V С V. В этом случае два сайта являются смежными в множестве сайтов V', если существует окружность, касающаяся двух этих сайтов и не имеющая внутри себя сайтов из V'. Будем обозначать граф смежности подмножества сайтов V также GD(V). Определенный таким образом граф является абстрактной конструкцией, которая не имеет столь естественной геометрической интерпретации, как триангуляция Делоне, поскольку его вершинами являются не. только сайты-точки, но и сайты-сегменты. Если сайты-точки легко изобразить самими вершинами многоугольной фигуры, то сайты- сегменты требуют какого-то другого условного представления. Для того чтобы сделать понятие графа смежности многоугольной фигуры более наглядным, мы будем использовать следующий прием. Вершины графа смежности, каждая из которых соответствует некоторому сайту фигуры, будем изображать в виде кружков и квадратиков на месте соответствующих сайтов (рис. 8.2). Сайты-точки изобразим кружками, а сайты-сегменты — квадратиками. При этом вершины-кружки расположим непосредственно в вершинах многоугольной фигуры, образующих эти сайты. А вершины-квадратики, изображающие сайты-сегменты, расположим в точках, являющихся серединами соответствующих этим сегментам сторон фигуры. Ребра графа смежности изображаются линиями, соединяющими вершины графа. В триангуляции Делоне эти линии представляют собой отрезки прямых. Однако для графа смежности многоугольной фигуры
8.1. ГРАФ СМЕЖНОСТИ МНОГОУГОЛЬНОЙ ФИГУРЫ 131 Рис. 8.2. Визуализация графа смежности сайтов многоугольной фигуры изображать ребра отрезками прямых линий не всегда удобно. Очевидно, что, поскольку разбиение Вороного представляет собой плоскую карту, его граф смежности является планарным, т. е. он допускает плоскую укладку — такое изображение на плоскости, при котором его ребра не пересекаются. Поскольку это свойство — планарность — является очень существенным, было бы желательно изобразить граф смежности именно в виде планарного графа. Однако при выбранном нами способе изображения вершин графа представить его плоским прямолинейным графом не всегда возможно. Иногда возникают ситуации, подобные изображенной на рис. 8.2, когда прямолинейные ребра пересекутся в точках, не совпадающих с вершинами. Например, если провести ребро между сайтами 1 и 3 в виде прямолинейного отрезка, оно пересечет ребра (10,11) и (10,15). Поэтому мы будем изображать ребра графа смежности прямыми линиями только там, где это возможно. А там, где это сделать нельзя, будем использовать кривые линии, чтобы избежать пересечения ребер. Заметим при этом, что для ребер графа, соединяющих соседние сайты (сайт-точку и сайт- сегмент, образованные вершиной и инцидентной стороной фигуры), всегда существует возможность представления прямыми линиями, лежащими на сторонах многоугольной фигуры. Граф смежности многоугольной фигуры представляет собой двойственный граф диаграммы Вороного этой фигуры. Двойственность между диаграммой Вороного и графом смежности состоит в том, что существует взаимно однозначное соответствие между элементами этих графов. Каждой вершине одного из них соответствует грань другого и каждому ребру одного соответствует ребро другого. Причем это соответствие сохраняет инцидентность вершин, ребер и граней. Вершина и инцидентные ей ребра и грани диаграммы Вороного имеют соответствующие инцидентные грань, ребра и вершины в графе смежности. Двойственность позволяет связать с гранями графа смежности максимальные пустые круги многоугольной фигуры. С одной стороны, грань графа смежности представляет собой упорядоченную цепочку (обычно тройку) сайтов. С другой стороны, каждой грани соответ-
132 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ ствует вершина диаграммы Вороного. Эта вершина является центром максимальной пустой окружности, касающейся сайтов, входящих в цепочку. Таким образом, для каждой грани графа смежности существует максимальная пустая окружность, касающаяся сайтов, инцидентных грани. Будем условно называть ее вписанной окружностью грани. На рис. 8.2 все грани являются треугольниками (иногда криволинейными), т. е. образуются тремя попарно инцидентными сайтами. Поэтому вписанные окружности граней касаются соответствующих троек сайтов. Например, треугольной грани (1,11,12) на рис. 8.2,6 соответствует пустая окружность на рис. 8.2, а, центр которой находится в точке схода трех ячеек Вороного сайтов 1, 11 и 12. Другой изображенный на рис. 8.2, α круг с центром в точке схода трех ячеек Вороного 1, 3 и 10 сайтов соответствует треугольной грани (1,3,10), которая на рис. 8.2,6, изображена в виде криволинейного треугольника. В графе смежности многоугольной фигуры существуют граничные и внутренние ребра. Граничные ребра соединяют соседние сайты, а внутренние соединяют смежные, но не соседние сайты. Граф смежности является плоским, поэтому каждое его внутреннее ребро инцидентно двум граням. Поскольку концы ребра — это пара смежных сайтов, в диаграмме Вороного этой паре сайтов соответствует бисектор. Концевые точки бисектора — это центры вписанных окружностей граней. На основании этого соответствия можно, имея граф смежности многоугольной фигуры, вычислить ее диаграмму Вороного. Нужно для каждого ребра графа смежности найти бисектор пары сайтов, соответствующих этому ребру, и выделить в нем сегмент, ограниченный центрами пустых кругов граней графа смежности. Заметим, что для построения диаграммы Вороного многоугольной фигуры граничные ребра графа смежности не используются. Таким образом, имеет место очевидная аналогия между графом смежности многоугольной фигуры и обычной триангуляцией Делоне для конечного множества точек. В частности, по графу смежности можно построить диаграмму Вороного для многоугольной фигуры. Поэтому получается, что для решения задачи скелетизации многоугольной фигуры вполне достаточно решить задачу вычисления ее графа смежности. Суть подхода, описанного ниже, состоит в том, чтобы сначала решить задачу построения графа смежности многоугольной фигуры, а затем, используя его, строить диаграмму Вороного этой фигуры. Главное преимущество этого подхода перед прямым построением диаграммы Вороного состоит в возможности корректной рекурсивной декомпозиции задачи, поскольку граф смежности корректно определяется для любой цепочки попарно соседних сайтов многоугольной фигуры, чего нельзя сказать об определении диаграммы Вороного для части многоугольника. Как это видно из. примера на рис. 7.21, диаграмма Вороного для изображенного подмножества сайтов ломаной линии не определена, а графы смежности для ломаных линий определяются вполне корректно и могут быть построены, как показано на рис. 8.3. Другое важное достоинство подхода состоит в том, что как будет
8.2. ТРИАНГУЛЯЦИЯ ДЕЛОНЕ - ГРАФ СМЕЖНОСТИ ТОЧЕК 133 Рис. 8.3. Граф смежности многоугольной фигуры, изображенной на рис. 7.21: смежность сайтов всей фигуры (а), смежность сайтов ломаных линий (б) показано, существует эффективный алгоритм построения графа смежности не только простого многоугольника, но и многоугольной фигуры с дырами. 8.2. Триангуляция Делоне — граф смежности точек Построение графа смежности многоугольной фигуры начнем с более простой задачи: построения триангуляции Делоне. Мы рассмотрим алгоритм построения триангуляции Делоне, предложенный Ли и Шех- тером [38], а далее обобщим его для построения графа смежности многоугольной фигуры. Будем обозначать TD(V) триангуляцию Делоне конечного множества точек V, a CH(V) — границу выпуклой оболочки V. Из определения триангуляции Делоне непосредственно следует, что все стороны выпуклого многоугольника CH(V) являются ребрами TD(V). Будем говорить, что для ребра триангуляции выполнено условие Делоне, если существует окружность, проходящая через вершины ребра, внутри которой нет других вершин триангуляции (так называемая пустая окружность). Метод построения TD(V) основан на алгоритмической парадигме «разделяй и властвуй». Пусть V = {v\,... ,vn] — множество из η сайтов-точек. Разделим множество V вертикальной прямой на два приблизительно равных подмножества: левое Vl = {ν\,. ..,νμ} и правое Vr = {^/i+ь · · · >^η}> β — κ Κ как это показано на рис. 7.14. Предположим, что рекурсивно построены триангуляции Делоне TD(Vl) и TD(Vr) (рис. 8.4, а). Основной шаг алгоритма состоит в слиянии этих триангуляции, т.е. в построении триангуляции Делоне TD(VLUVR) из триангуляции TD(VL) и TD(VR) (рис. 8.4,6). Как известно [2, 21], если процедура слияния рекурсивно построенных триангуляции TD(Vl) и TD(Vr) будет иметь вычислительную сложность 0(п), то общее время решения составит O(nlogn). Таким образом, главным предметом внимания должен стать алгоритм слияния двух разделенных триангуляции Делоне.
134 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ 8 8 а) б) Рис. 8.4. Слияние триангуляции Делоне: триангуляции подмножеств и общие опорные прямые (а), объединенная триангуляция (б) Для удобства будем условно называть сайты из Vl левыми, а из Vr правыми и изображать белыми и черными кружками соответственно. Также условно будем называть ребра, соединяющие сайты из одного подмножества (Vl или Vr), одноцветными, а из разных подмножеств — разноцветными. В объединенной триангуляции (рис. 8.4, б) одноцветные ребра — это ребра, переходящие в TD(Vl U Vr) из триангуляции TD(Vl) и TD(Vr), а разноцветные — новые ребра, которых не было в TD(VL) и TD(VR). В объединенной триангуляции TD(Vl U Vr) можно выделить одноцветные компоненты — максимальные связные подмножества вершин и ребер одного цвета, которые мы будем называть лоскутами. Эти компоненты без изменения переходят в TD(Vl U Vr) из TD(Vl) и TD(Vr). Остальные ребра исходных триангуляции, не вошедшие в лоскуты, должны быть разрушены при слиянии триангуляции. Процесс формирования XX) (Vl U Vr) можно рассматривать, как выделение лоскутов в TD(Vl), TD(Vr) и «сшивание» лоскутов с помощью разноцветных ребер и граней. При такой метафоре оправдано называть разноцветные ребра стежками. Таким образом, слияние двух триангуляции включает в себя две фазы: расчистку и сшивание. Фаза расчистки состоит в удалении части одноцветных ребер исходных триангуляции, а фаза сшивания — в построении недостающих разноцветных ребер объединенной триангуляции. Рассмотрим сначала фазу расчистки. Выпуклые оболочки CH(Vl) и CH(Vr) имеют две общие опорные прямые — верхнюю и нижнюю. Граница каждой из этих оболочек разбивается опорными прямыми на две ломаные линии: правую и левую. Эти ломаные будем называть краями триангуляции. Будем различать внешние и внутренние края. Левая ломаная левой оболочки CH(Vl) и правая ломаная правой оболочки CH(Vr) — это внешние края, а правая ломаная CH(Vl) и левая ломаная CH(Vr) — внутренние края графов TD(Vl) и TD(Vr). Очевидно, что одноцветные ребра левой ломаной CH(Vl) и правой ломаной CH(Vr) входят в объединенную триангуляцию Делоне TD(Vl U Vr) и поэтому обязательно остаются
8.2. ТРИАНГУЛЯЦИЯ ДЕЛОНЕ - ГРАФ СМЕЖНОСТИ ТОЧЕК 135 в левом и правом лоскутах. Этим обосновывается связность лоскутов. На рис. 8.4 это ребра (5,3), (3,1), (1,2) и (8,12), (12,11). Остальные одноцветные ребра триангуляции TD(Vl) и TD(Vr) могут войти в новую триангуляцию, а могут и не войти. Критерием вхождения является выполнение для ребра условия Делоне: существование пустого круга, инцидентного точкам-сайтам ребра. Для каждого ребра триангуляции TD(Vl) и TD(Vr) такой пустой круг существует, но «пустота» его определяется относительно своего подмножества сайтов. Для ребер триангуляции TD(Vl) существуют окружности, внутри которых нет сайтов из Vl, а для TD(Vr) — из Vr. Однако при объединении сайтов VlUVr это свойство может нарушиться. В нашем примере (рис. 8.4) ребро (6,5) триангуляции TD(Vl) и ребра (7,8), (8,10) триангуляции TD(Vr) не войдут в объединенную триангуляцию TD(Vl U Vr), поскольку для них нарушается условие Делоне. Процесс расчистки состоит в выявлении и разрушении таких ребер. Проверка условия Делоне при слиянии триангуляции TD(Vl) и TD(Vr) основывается на анализе пустых кругов этих триангуляции. Для каждого внутреннего ребра триангуляции Делоне существуют две инцидентные грани, а для внешнего ребра — одна инцидентная грань. Описанные окружности этих граней являются пустыми в исходных триангуляциях. Рассмотрим множество всех пустых кругов, инцидентных паре сайтов одного ребра триангуляции Делоне (рис. 8.5). Для внутреннего ребра эти круги заполняют внутренность объединения б а) б) Рис. 8.5. Бициклы ребер триангуляции Делоне: внутреннего ребра (а), внешнего ребра (б) двух описанных окружностей инцидентных ребру граней триангуляции (рис. 8.5, а). А для внешнего ребра — объединение внешней полуплоскости ребра и описанной окружности грани, инцидентной ребру. Будем называть такую область бициклом ребра триангуляции, а пустые круги инцидентных граней — образующими кругами бицикла. В исходных триангуляциях все бициклы являются пустыми в том смысле, что в них сайты внутрь не попадают. Но при объединении триангуляции в них могут попасть сайты из другого подмножества. Нарушение пустоты всех кругов бицикла имеет место, когда сайт
136 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ попадает в пересечение образующих кругов. В этом случае условие Делоне для ребра не выполнено и ребро уничтожается. Если же сайт попадает лишь в один из образующих кругов, а в другой не попадает, то ребро сохраняется, но сам бицикл корректируется (уменьшается). Поскольку исходные триангуляции разделены и их сайты лежат вне выпуклых оболочек друг друга, условие Делоне для внешних ребер нарушается, если сайт другого подмножества попадает в описанную окружность грани, инцидентной внешнему ребру. После разрушения внешних ребер какие-то из внутренних ребер становятся граничными. Условие Делоне для внутреннего ребра нарушается, если сайт попал в пересечение двух образующих кругов бицикла. Но если внутреннее ребро стало граничным, это уже означает, что в один из этих кругов попал сайт. Поэтому проверка условия Делоне для него также сводится к оценке пустоты описанной окружности второй грани, инцидентной внешнему ребру. Таким образом, проверка условия Делоне для ребер исходных триангуляции состоит в оценке пустоты описанных окружностей инцидентных граней внешних ребер относительно объединенного множества сайтов VlUVr. В примере на рис. 8.6, α видно, что для а) б) Рис. 8.6. Расчистка триангуляции Делоне при слиянии: нарушения условия Делоне для ребер (6,5), (7,8), (10.8) (а); расчищенные триангуляции (б) ребра (6,5) условие Делоне не выполняется, поскольку сайты-точки 7, 9, 10 попадают в пустой круг грани (4,6,5). Для ребра (7,8) нарушение условия Делоне состоит в том, что сайт-точка 6 попадает в пустой круг грани (7,8,10). А для ребра (8,10) — сайт-точка 6 попадает внутрь описанных окружностей граней (7,8,10) и (10,8,12). В результате выполнения расчистки в графах TD{Vi) и TD(Vr) удаляется часть ребер. Однако оставшиеся подграфы сохраняют связность. Внутренние края триангуляции при этом трансформируются: вследствие разрушения части граничных ребер некоторые внутренние ребра становятся граничными. В примере новый внутренний край левого лоскута состоит из ребер (2,6), (6,4), (4,5), а правого — из ребер (11,9), (9,7), (7,10), (10,12), (12,8).
8.2. ТРИАНГУЛЯЦИЯ ДЕЛОНЕ - ГРАФ СМЕЖНОСТИ ТОЧЕК 137 Теперь рассмотрим фазу сшивания. Сшивание представляет собой построение разноцветных ребер объединенной триангуляции TD(Vl U Vr). Каждое новое ребро имеет одну вершину в Vi, а вторую в Vr. При этом обе вершины лежат на внутренних краях лоскутов. Порождаются лишь те ребра, которые удовлетворяют условию Делоне. Порождение ребер начинается с нижней опорной прямой и идет последовательно до верхней опорной прямой. На рис. 8.7, а показано состояние процесса сшивания после последовательного порождения ребер (2,8), (6,8), (6,12), (6,10). Порождение очередного ребра осуществляется путем выбора одного из двух вариантов: (6,7) или (10,4). Если в качестве нового ребра выбрать (6,7), то описанная окружность треугольной грани (6,10,7) должна быть пустой, а если выбрать (10,4), то пустой должна быть описанная окружность грани (6,10,4). В примере пустой будет окружность грани (6,10,7). а) б) Рис. 8.7. Сшивание триангуляции Делоне при слиянии: порождение очередного ребра (а), сшитые триангуляции (б) Это правило позволяет реализовать весь процесс последовательного порождения всех новых ребер объединенной триангуляции (рис. 8.7,6). Реализация описанного метода выполняется таким образом, чтобы совместить расчистку и сшивание в одном проходе [38]. При этом вычислительная сложность процесса слияния составляет величину 0(п) в худшем случае. Ниже приведено формальное описание алгоритма построения триангуляции Делоне, аналогичное приведенному в работе [38]. В описании алгоритма приняты следующие структуры данных и обозначения. Для каждого сайта-точки vi из множества V в триангуляции имеется упорядоченный список смежных сайтов уц,... ,^ь где (уъ,Уц), j= l,...,fc — это ребра триангуляции. Список является двунаправленным и циклическим. Доступ к элементам списка осуществляется следующими функциями: PRED(^,%) возвращает сайт yit, расположенный в списке сайта уг перед У{у Этот сайт yit относительно у ι стоит следующим по часовой стрелке после уц\ SUCC(vi,Vij) возвращает сайт yit, который расположен в списке сайта Уг после уц, т.е. следующий против часовой стрелки.
138 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ Если сайт Vi лежит на границе выпуклой оболочки CH(V), то первым в его списке будет сайт, обозначаемый FIRST(^), который стоит в границе CH(V) следом за νι при обходе против часовой стрелки. В алгоритме используется также вектор (vi,Vj), направленный от V{ KVj. Первый шаг алгоритма состоит в разделении вертикальной прямой множества V на две части: левую Vl = {v\> · · · ,νμ} и правую Vr = {νμ+\,... ,υη} — на основе лексикографического упорядочивания. Для каждого упорядоченного подмножества S С V определены две функции LM{S) и RM(S) — самая левая и самая правая точки в S, имеющие соответственно наименьший и наибольший индекс в S. Далее рекурсивно строим триангуляции Делоне обоих подмножеств TD(Vl) и TD(Vr). Для слияния триангуляции используются опорные прямые выпуклых оболочек CH(Vl) и CH(Vr). Сами оболочки CH(Vl) и CH(Vr) также можно построить рекурсивно. При объединении CH(Vl) и CH(Vr) получаются два новых ребра оболочки CH{V), которые являются верхней и нижней общими опорными прямыми для CH(Vl) и CH(Vr). Эти два ребра используются при построении триангуляции Делоне TD(V). Операция определения опорных прямых и объединения выпуклых оболочек имеет сложность 0(п). Следующая процедура находит нижнюю общую опорную прямую для CH(Vl) и CH(Vr). Верхняя опорная прямая ищется аналогично. procedure HULL // VL и VR — левое и правое подмножества сайтов // Χ,Υ — результат работы — сайты-точки нижней опорной прямой begin X:=RM(VL); Y:=LM(VR); Z:=FIRST(Y); Zl:=FIRST(X); Z2:PRED(X,Zl); A:=TRUE; while A do if (Z справа от вектора (Χ,Υ) then begin Z:=SUCC(Z,Υ); Υ:=Ζ; end else if (Z2 справа от вектора (Χ,Υ)) then begin Z2:=PRED(Z2,X); X:=Z2; end else A:=FALSE; end HULL Нижняя опорная прямая далее используется в качестве входа для следующей процедуры MERGE, которая сливает две триангуляции TD(VL) и TD{VR). Процедура MERGE получает на вход две триангуляции, а также нижнюю и верхнюю опорные прямые. Она объединяет эти триангуляции, начиная с нижней опорной прямой, и сшивает их пока не будет достигнута верхняя опорная прямая.
8.2. ТРИАНГУЛЯЦИЯ ДЕЛОНЕ - ГРАФ СМЕЖНОСТИ ТОЧЕК 139 В процедуре используются следующие команды: INSERT(A, В) вставляет сайт А в список смежности сайта В и сайт В в список смежности сайта А на соответствующие позиции; DELETE(A, В) исключает А из списка В и В из списка А) QTEST(#, /, J, К) проверяет четверку ориентированных против часовой стрелки сайтов и возвращает TRUE, если описанная окружность треугольника AHIJ содержит сайт К внутри себя, и FALSE в противном случае; CTEST(#, /, J) проверяет ориентацию тройки сайтов Я, /, J и возвращает TRUE, если сайты расположены против часовой стрелки, и FALSE в противном случае; DTEST(ff, /, J, К) проверяет четверку ориентированных против часовой стрелки сайтов и возвращает TRUE, если существует касательная окружность для пары сайтов Η и J, внутрь которой не попадают сайты / и К, и FALSE в противном случае. procedure MERGE begin ВТ:=нижняя общая опорная прямая L:=лeвый конец ВТ R:=npaBbiH конец ВТ C:=TRUE; while С do begin A:=TRUE; B:= TRUE; INSERT(L,R); R1:=PRED(R,L); L1:=SUCC(L,R); if (LI слева от вектора (L,R)) then begin L2:=SUCC(L, Lib- While QTEST(L,L1,L2,R) do begin DELETE(L,LI); L1:=L2; L2:=SUCC(L, Lib- end end else A:=FALSE; if (Rl слева от вектора (L,R)) then begin R2:=PRED(R, Rib- While QTEST(R1,R,R2,L) do begin DELETE(R,R1); R1:=R2; R2:=PRED(R, Rib- end end else B:=FALSE; if not (А ОГ B) then C:=FALSE
140 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ else if A and (not в) then L:=L1 else if (not A) and в then R:=R1 else if DTEST(L,R,R1,L1) then R:=R1 else L ^Lb- end; end merge Описанный алгоритм построения триангуляции Делоне теперь обобщим на более сложный случай построения графа смежности многоугольной фигуры. 8.3. Граф смежности простого многоугольника Рассмотрим односвязную многоугольную фигуру, т. е. простой многоугольник без дыр. Вершины многоугольника, в которых углы меньше 180°, назовем выпуклыми, а остальные — вогнутыми. Из η-угольника образуется 2п сайтов. Пронумеруем все сайты вдоль направления обхода границы. Далее разобьем последовательность сайтов на элементарные цепочки следующим образом. Во- первых, элементарной цепочкой является сайт-точка, соответствующий выпуклой вершине. Кроме этого, элементарной является цепочка из одного или нескольких сайтов, лежащих между двумя последовательными выпуклыми вершинами. Во втором случае это либо один сайт- сегмент, либо несколько сайтов-сегментов, перемежаемых сайтами- точками, образованными вогнутыми вершинами. Очевидно, что такое разбиение является единственным. На рис. 8.8 показан пример построения цепочек сайтов для многоугольника. Получается всего 8 элементарных цепочек сайтов — это {0}, {1}, {2}, {3}, {4}, {5-6-7}, {8}, {9}. о2 а) б) Рис. 8.8. Построение элементарных цепочек: многоугольник (а), сайты и элементарные цепочки (б) Граф смежности элементарной цепочки сайтов имеет очень простую структуру. Поскольку в элементарной цепочке смежными являются только лишь соседние сайты, ее граф смежности представляет собой последовательность соединенных ребрами соседних сайтов. Граф яв- υ>
8.3. ГРАФ СМЕЖНОСТИ ПРОСТОГО МНОГОУГОЛЬНИКА 141 ляется связным, и для цепочки, составленной из к сайтов, он имеет к — 1 ребро. Дальнейшее построение графа смежности многоугольника осуществляется итерационно путем последовательного слияния графов цепочек. Пусть С\, C<i, ...,CP — элементарные цепочки сайтов, a GD(C[),GD(C2), · ·. ,GD(CP) — графы смежности этих цепочек. Очередная итерация состоит в том, чтобы слить попарно цепочки, стоящие подряд, и из их графов смежности построить графы смежности объединенных цепочек. В результате первой итерации получаем следующие графы (при четном р)\ GD(C\UC2)1GD(CsUG4) ...,GD(Cp-\L)Cp). Если ρ нечетное, то изменений. В результате полного цикла эпохой, в очереди образуются р\ ~ GD(CP) остается без слияний, называемого графов. Далее цикл слияний 1 графов. Процесс повторяется снова, в результате чего образуется завершится, когда в очереди останется единственный граф смежности который и является решением задачи. Очевидно, что общее число циклов слияния графов (эпох) составит O(logp). В качестве примера рассмотрим построение графа смежности для многоугольника, изображенного на рис. 8.8. Для восьми элементарных цепочек построены графы смежности GO(0), GD(\), GD(2), GD(3), GD(4), OD(5,6,7), GD{8), GD(9) (рис. 8.9, α). Процесс слияния графов состоит из трех эпох. В первой эпохе получаются графы смежности GD(0,1), GD(2,3), GT>(4,5,6,7), GL>(8,9) (рис. 8.9,6), во второй - GD(0,1,2,3), 00(4,5,6,7,8,9) (рис. 8.9, β), в третьей - GD(0,1,2,3,4,5,6,7,8,9) (рис. 8.9,г). На рисунке показаны парные Оо □ 9 о8 Ια ~>с □ 3 о о4 ...ου 9 9""' 7 2°"" а) б) 0„ "3 \ S^'i в) г) Рис. 8.9. Последовательное объединение графов смежности цепочек сайтов
142 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ объединения цепочек сайтов. В каждой объединяемой паре сайты первой цепочки изображены белыми кружками и квадратами, а второй — черными. Для того чтобы общая вычислительная сложность алгоритма была O(nlogn), достаточно обеспечить слияние графов смежности двух цепочек за время, пропорциональное общему числу сайтов в этих цепочках. Действительно, в этом случае время, требуемое для всех слияний одной эпохи, составит 0(п). Поскольку число эпох, как было показано, составляет 0(log_p), общее требуемое время будет O(nlogp). Из того, что ρ < η, и получится требуемая оценка 0(п logn). 8.4. Слияние графов смежности ломаных линий Пусть V = {ν\,... ,vn} — множество сайтов, образованных из вершин и сторон многоугольника, входящего в границу многоугольной фигуры. При этом сайты расположены в последовательности обхода многоугольника, т. е. так, что внутренность фигуры находится слева. Пусть С\ = {v\,..., νμ] и (72 = {νμ+\, · · ·, νη} — две исходные цепочки сайтов, а GD(Ci), GD(C2) их графы смежности. Для удобства будем условно считать сайты из цепочки С\ белыми, а из цепочки С^ черными и изображать кружками и квадратиками соответствующего цвета. Рассмотрим граф смежности объединенной цепочки GD(C\ UC2). Существует определенная аналогия между свойствами этого графа и свойствами триангуляции Делоне. Так же, как и в триангуляции Делоне, имеются одноцветные ребра, переходящие в GD(C\ U С2) из графов GD(C\)f GD(C2), и разноцветные ребра, которых не было в GD(C\), GD(C2). В объединенном графе GD(C\ U C2) также определены лоскуты — максимальные связные подмножества вершин и ребер одного цвета. Эти компоненты без изменения переходят в GD(C\ U C2) из GD(Ci) и GD(C2). Важно отметить, что лоскутов всего два: один черный и один белый. Это объясняется тем, что все ребра между соседними сайтами переходят из GD(C\) и GD{C2) в GD{C\ U C2) и потому связность одноцветных множеств сайтов сохраняется в GD(C\ UC2). Графы смежности исходных цепочек GD(C\) и GD(C2) также имеют внутренние и внешние края. Внешние края образованы ребрами между соседними сайтами, а внутренние — всеми остальными граничными ребрами. В лоскутах также просматриваются внешние и внутренние края. Такая аналогия позволяет применить для слияния графов смежности те же самые идеи, что использовались при слиянии разделенных триангуляции Делоне. Однако наряду с прямой аналогией имеются некоторые различия этих задач. Они связаны с тем обстоятельством, что понятие выпуклой оболочки для абстрактного графа смежности сайтов не определено. Тем самым способ построения начального и конечного стежков при сшивании лоскутов, основанный на использовании общих опорных
8.4. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ ЛОМАНЫХ ЛИНИЙ 143 прямых триангуляции Делоне, не может быть применен для графов смежности. Несмотря на это, построение начального стежка при сшивании графов смежности цепочек не вызывает труда. Оно основывается на том, что цепочки С\ и С% содержат пару соседних сайтов исходного многоугольника: это последний сайт νμ цепочки С\ и первый сайт υμ+\ цепочки Сг. Эта пара образует новое ребро (νμ,νμ+\), которое можно использовать в качестве начального ребра для сшивания графов смежности GD(C\), GD(C2). Дальнейший процесс слияния графов смежности цепочек сайтов строится по аналогии с процессом построения триангуляции Делоне, описанным в разделе 8.3.1. Алгоритм слияния графов смежности рассмотрим на примере многоугольника из рис. 7.18. Исходный многоугольник с 13 вершинами порождает множество из 26 сайтов. На рис. 8.10 представлены две цепочки сайтов, состоящие из сайтов с 0 по 11 и с 12 по 25. Для каждой цепочки построен граф смежности (рис. 8.10, а) и выполнена расчистка этого графа относительно объединенного множества сайтов 12 13 14 12 13 14 а) б) Рис. 8.10. Расчистка графов смежности цепочек при слиянии: графы смежности цепочек (а), подграфы смежности цепочек, полученные в результате расчистки (б) обеих цепочек (рис. 8.10,6). Из рисунка хорошо видна двойственность графов смежности цепочек и диаграмм Вороного, изображенных на рис. 7.19. В роли начального стежка выступает ребро (11,12), порождаемое концевыми сайтами цепочек. Внешние края графов смежности GD(C\) и GD(C2) состоят из последовательностей ребер {(0,1), (1,2), ..., (10,11)} и {(12,13), (13,14), ...(24,25)}. Вместе с начальным стежком они составят внешний край объединенного графа смежности GD(C\ UC2). А внутренние края — это последовательности остальных граничных ребер: {(0,10), (10,11)} и {(12,19), (19,25)}. В результате рас-
144 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ чистки внутренние края графов смежности изменяются (рис. 8.10,6), а внешние остаются неизменными. Этап сшивания представлен на рис. 8.11. После порождения очередного стежка (в примере это ребро (9,19) на рис. 8.11, а) кандидатами для образования очередного ребра являются пары сайтов (9,20) и (7,19). Выбор одного из этих ребер осуществляется путем проверки для них условия Делоне. В примере условие выполняется только для ребра (7,19), которое и становится очередным стежком. 12 13 14 12 13 14 а) б) Рис. 8.11. Сшивание графов смежности цепочек при слиянии: порождение очередного ребра (а), граф смежности объединенной цепочки (б) Таким образом, в целом процедуры слияния графов смежности цепочек сайтов многоугольника и слияния триангуляции Делоне строятся одинаково. Различия, которые имеют место, относятся к двум элементам: проверке условия Делоне и проверке условия завершения сшивания. Рассмотрим сначала проверку условия Делоне в процессе расчистки исходных триангуляции. Выполнение условия Делоне для пары сайтов зависит от того, в каком множестве сайтов рассматривается эта пара. В нашем случае необходимо оценить, нарушится или нет это условие после объединения подмножеств сайтов многоугольной фигуры. Пусть si,S2 £ С\ — пара смежных сайтов из С\. Тогда существует некоторое множество пустых относительно С\ кругов, инцидентных этим двум сайтам. Если среди этих кругов найдутся такие, которые останутся пустыми относительно множества сайтов Сг, то пара сайтов si, S2 останется смежной и относительно множества C1UC2 и, следовательно, ребро (si,S2) войдет в новый граф смежности GD{C\ U Сг). Центры пустых кругов, инцидентных сайтам s\ и S2, образуют бисектор диаграммы Вороного множества С\. Концевыми точками этого бисектора являются вершины этой диаграммы Вороного.
8.4. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ ЛОМАНЫХ ЛИНИЙ 145 а) б) в) Рис. 8.12. Формы бициклов для пары сайтов: сайты-точки (а), сайты- сегменты (б), сайт-точка и сайт-сегмент (в) Как было показано в разделе 7.5, в зависимости от типа сайтов s\, s2 форма бисектора и геометрическое расположение пустых кругов различны (рис. 8.12). Как видно из рисунка, в этом множестве пустых кругов ключевую роль играют два круга, соответствующие концевым точкам бисектора. На рисунке они обозначены D\ и D2. Нас интересует замкнутая область, образованная объединением всех пустых кругов пары сайтов. В зависимости от типа сайтов эта область имеет форму одного из трех типов: — объединение двух концевых кругов (рис. 8.12, β); — объединение концевых кругов и трапеции, образованной четырьмя точками касания сайтов-сегментов и концевых кругов (рис. 8.12,6); — объединение концевых кругов и треугольника, образованного сайтом-точкой и двумя точками касания сайта-сегмента и концевых кругов (рис. 8.12, в). Будем называть эту область бициклом пары сайтов s\, s2 и обозначать B(s\,s2), а соответствующие концевые круги называть образующими кругами бицикла. Вопрос о существовании пустого круга для пары сайтов s\ и s2 в С\ UC2 сводится к выяснению положения сайта s G С2 относительно бицикла B(s\,s2). Если сайт s имеет пересечение с внутренностями обоих образующих кругов B(s\,s2), то сайты s\,s2 не являются смежными в С\ U С2 и ребро (s\,s2) из графа GD(C\) не войдет в граф смежности GD(C\ UC2). Таким образом, при расчистке проверка условия Делоне сводится к анализу пересечения сайтов с образующими кругами бициклов, т. е. только с теми кругами, которые имеют по три инцидентных сайта. Так же, как и при слиянии триангуляции Делоне, расчистка осуществляется последовательно, начиная с тех ребер, которые образуют край. На рис. 8.10 это ребро (0,10). Образующими кругами бицикла этого ребра являются: круг, касающийся тройки сайтов (0,4,10) и полуплоскость, находящаяся справа от прямой, определяемой сайтами- точками 0 и 10. После разрушения ребра (0,10) в край попадают ребра (0,4) и (4,10). Для контроля их бициклов достаточно проверить пустоту касательных окружностей троек сайтов (0,1,4) и (4,9,10). Таким образом, для разрушения ребра, стоящего в крае, достаточно установить, что касательная окружность трех сайтов грани, примыкающей к этому ребру, не является пустой.
146 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ Теперь рассмотрим проверку условия Делоне в процессе сшивания. Построение каждого очередного стежка порождает треугольную грань графа смежности и у этой грани есть инцидентная окружность. На рис. 8.11 показана ситуация, когда построен очередной стежок — ребро (9,19) и при этом создана грань (9,18,19). В качестве очередного нового стежка может быть выбрано ребро (9,20) или (7,19). Если выбирается ребро (9,20), то новой гранью, смежной с ребром (9,19), будет грань (9,19,20). А если выбирается ребро (7,19), то новая грань — это (9,19,7). Выбор должен быть сделан в пользу той грани, которая вместе с гранью (9,18,19) образует пустой бицикл. Бицикл пары граней (9,18,19) и (9,19,20) не является пустым, поскольку сайт 7 попадает в этот бицикл. А бицикл граней (9,18,19) и (9,19,7) является пустым. Таким образом, правило выбора очередного стежка выглядит следующим образом. Пусть (s\,S2) — текущий стежок, a (si,S2,i>) - уже построенная грань графа смежности, инцидентная этому ребру. И пусть сайты t\ и ^ лежат в краях следом за s\ и S2 соответственно. Кандидатами на образование очередного стежка являются пары (t\,S2) и (t2,s\). Если выбрать (ti,S2), то смежной гранью для ребра (s\,S2) будет (s\,S2,t\), а если выбрать (t2,s\), то (s\,S2,t2). В первом случае образующими кругами бицикла B(s\,S2) будут круги граней (s\,S2,p) и (s\,S2,t\), а во втором — граней (s\,S2,p) и (s\,S2,t2). Легко понять, что один из этих бициклов содержится внутри другого. Следовательно, только один из них остается пустым. Получается следующее правило построения очередного стежка после (si,S2)· Нужно построить бицикл B(s\,S2) с образующими кругами граней (s\,S2,p) и (s\,S2,t\) и проверить его на пересечение с сайтом #2- Также нужно построить второй вариант бицикла B(s\,S2) с образующими кругами граней {s\>S2>p) и {s\>S2,t2) и проверить его на пересечение с сайтом t\. Пустым может быть лишь один из них. Выбор делается в пользу соответствующего ребра. Ситуация, когда не удается построить ни одного пустого бицикла, сигнализирует об окончании процесса сшивания. Следует отметить, что построение касательной окружности для трех сайтов осуществляется методом, описанным в разделе 7.4. Вторая особенность обобщения алгоритма слияния триангуляции Делоне на графы смежности цепочек сайтов состоит в проверке условия завершения сшивания. Собственно само условие завершения остается таким же: процесс сшивания заканчивается, когда для очередного стежка не может быть построена новая смежная грань. Однако это условие оказывается недостаточным для построения корректного графа смежности цепочки сайтов в том смысле, что в этом графе могут образоваться лишние ребра и грани. Такая ситуация возникает при построении графа смежности спирального многоугольника, пример которого представлен на рис. 7.21, а. Рассмотрим процесс рекурсивного построения графа смежности одной из ломаных линий, образующих границу многоугольника (рис. 8.13). Для фрагмента границы многоугольника (рис. 8.13, а) строится цепочка сайтов (рис. 8.13,6), соответствующих этой части
8.4. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ ЛОМАНЫХ ЛИНИЙ 147 г) д) е) Рис. 8.13. Граф смежности спиральной ломаной линии: ломаная линия из границы многоугольника (а), множество сайтов ломаной линии (б), графы смежности цепочек сайтов с 0 по 7 и с 8 по 15 (в), результат расчистки графов смежности цепочек (г), результат сшивания графов смежности цепочек (д), результат дополнительной расчистки (е) границы. Эта цепочка сайтов разбивается на две части и для каждой части строится граф смежности (рис. 8.13, в). Далее осуществляется слияние этих графов смежности по описанному алгоритму. Сначала выполняется фаза расчистки (рис. 8.13, г), а потом сшивания (рис. 8.13,(5). Из рисунка видно, что полученный в результате граф смежности является некорректным, поскольку в нем присутствуют ребра, для которых не выполняется условие Делоне. Это ребра (0,11), (0,13) и (0,15). Причина образования таких ложных ребер состоит в том, что краем графа смежности цепочки 0-7 является лишь ребро (0,7), в результате чего сайт 1 не принимается во внимание при сшивании графов. Поэтому для правильного завершения процесса сшивания необходимо уничтожить ложные ребра. Этот шаг, который мы будем называть дополнительной расчисткой, выполняется после завершения сшивания. Идея дополнительной расчистки основывается на следующих свойствах процесса сшивания. Во-первых, ложные ребра расположены в конце последовательности новых ребер, порождаемых в ходе сшивания. Во-вторых, имеет место свойство монотонности между последовательностями сайтов в цепочках и последовательностью образования лож-
148 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ ных ребер. Оно выражается в следующем. Рассмотрим последовательно сайты 7, 6, 5 и т.д., и найдем тот из них, который нарушает условие Делоне для ребра (0,15). Таким сайтом будет 4. Установив это, мы разрушаем ребро (0,15) и ищем далее сайт, нарушающий условие Делоне для ребра (0,13). Ясно, что при этом нужно рассматривать лишь сайты с 4 до 0. Анализируя сайт 3, находим нарушение условия Делоне для (0,13) и разрушаем это ребро. Далее смотрим ребро (0,11) и сайты, начиная с 3. Получаем, что условие Делоне для ребра (0,11) нарушает сайт 2. Разрушив ребро (0,11), ищем нарушение условия Делоне для ребра (0,9) сайтами 2, 1, 0 и не находим. Следовательно, ребро (0,9) не является ложным и процесс дополнительной расчистки завершен. Таким образом, общий процесс сшивания графов смежности двух цепочек сайтов следующий. 1. Построить начальный стежок из двух соседних сайтов цепочек и принять его в качестве текущего стежка. 2. Для текущего стежка выполнить расчистку краев графов смежности цепочек. Расчистка осуществляется на основе проверки выполнения условия Делоне для ребер, лежащих в краях и инцидентных сайтам текущего стежка. В случае нарушения условия Делоне выполняется разрушение ребра и его место в крае занимают два других ребра из грани разрушаемого ребра. 3. Образовать новый стежок на основе выбора из двух возможных альтернатив. Если ни одна из них не реализуется, то завершить сшивание и перейти к шагу 5. 4. Новый стежок объявить текущим и перейти к шагу 2. 5. Для каждой из двух цепочек провести дополнительную расчистку построенной последовательности стежков. В описании алгоритма используются следующие структуры данных. Пусть V = {v\,...,vn} — заданная цепочка сайтов, порожденных ломаной линией — фрагментом многоугольника. В цепочке первый сайт — это сайт-точка, последний — сайт-сегмент. Сайты упорядочены в соответствии с направлением ломаной линии, при котором внутренность многоугольной фигуры лежит от нее слева. Доступ к сайтам цепочки осуществляется с помощью следующих функций: PREVIOUS^, νι) — возвращает сайт Vi-\, если он входит в цепочку V, иначе возвращает NIL; NEXT(V,Vi) - возвращает сайт ^+ь если он входит в цепочку V, иначе возвращает NIL. Для каждого сайта Vi имеется упорядоченный список смежных сайтов Vi\,...,Vik, где (vi,Vij), j = l,...,fc — это ребра триангуляции. Список является двунаправленным, но не циклическим. Доступ к элементам списка осуществляется следующими функциями: VRED(vi,Vij) — возвращает сайт vit, который расположен в списке сайта Vi перед Vij. Этот смежный сайт vit стоит следующим по часовой стрелке относительно Vi после v^. Если v^ стоит первым в списке, то возвращает NIL;
8.4. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ ЛОМАНЫХ ЛИНИЙ 149 SOCC(vi,Vij) — возвращает сайт vit, стоящий в списке сайта Vi после Vij, т.е. следующий против часовой стрелке. Если v^ последний элемент списка, то возвращает NIL. Цепочка сайтов V разделена на две последовательные более мелкие цепочки: первую С\ = {v\,... ,νμ} и вторую Сг = {^μ+ι, · · · ,νη}. Процедура MERGE сливает два графа смежности GD(C\) и GD(C2). Процедура получает на вход два графа смежности. Она объединяет их, начиная с ребра (νμ,νμ+\), и сшивает до тех пор, пока образуются новые стежки. В процедуре используются следующие команды. INSERT(A, В) вставляет сайт А в список смежности сайта В и сайт В в список смежности сайта А на соответствующие позиции. DELETE(A, В) исключает А из списка В и В из списка А. QTEST(ii, /, J, К) проверяет четверку ориентированных против часовой стрелки сайтов и возвращает TRUE, если существует вписанная окружность тройки сайтов Я, /, J, внутренность которой имеет непустое пересечение с сайтом К, и FALSE в противном случае. Эта функция используется для проверки условия Делоне для ребер графа смежности. DTEST(#, /, J, К) проверяет четверку ориентированных против часовой стрелки сайтов и возвращает TRUE, если существует бицикл для пары сайтов (H,J), и FALSE в противном случае. CTEST(#, /, J) проверяет тройку ориентированных против часовой стрелки сайтов и возвращает TRUE, если существует вписанная окружность тройки сайтов AHIJ, и FALSE в противном случае. procedure MERGE // А,В,С — рабочие булевы переменные // L,L1,L2,R,R1,R2 — рабочие переменные для сайтов // ELIST — список новых ребер при сшивании цепочек begin Ъ:=последний сайт первой цепочки R:=nepBbrii сайт второй цепочки C:=TRUE; while С do begin INSERT (L,R); Поместить ребро(L,R) в список ELIST; // расчистка графа смежности первой цепочки L1:=SUCC(L,R); L2:=SUCC(L, Lib- While QTEST(L,L1,L2,R) do begin DELETE(L,LI); L1:=L2; L2:=succ(L, Lib- end;
150 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ // расчистка графа смежности второй цепочки R1:=PRED(R,L); R2:=PRED(R, Rib- While QTEST(R,R2,R1,L) do begin DELETE(R,R1); Rl:=R2; R2:=PRED(R,Rl); end/ A:=CTEST(L,R,L1); B:=CTEST(L,R,R1); if not (А ОГ B) then C:=FALSE else if A and (not B) then L:=L1 else if (not A) and в then R:=R1 else if DTEST(L,R,R1,L1) then R:=R1 else L:=L1; end; end merge После завершения сшивания необходимо провести дополнительную расчистку построенного шва для того, чтобы удалить те грани, которые не имеют пустых вписанных кругов. Эту расчистку осуществляет процедура CLEARING. procedure CLEARING // X,Y,L,R, T — рабочие переменные для сайтов // ELIST — список ребер, полученных в процедуре MERGE // С1,С2 — первая и вторая цепочки (подмножества сайтов) begin (Χ,Υ):=первое ребро из списка ELIST; // расчистка первой цепочкой X:=PREVI0US(C1,X); while Χ φ NIL do begin (L,R):=последнее ребро из списка ELIST; T:=PRED(L,R); while qtest(L,t,r,x) do begin DELETE(L,R); удалить ребро (L,R) из списка ELIST; (L,R):=последнее ребро из списка ELIST; T:=PRED(L,R); end; X:=PREVI0US(C1,X); end;
8.5. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ МНОГОУГОЛЬНИКОВ 151 // расчистка второй цепочкой Y:=NEXT(C2,Y); while Υ φ NIL do begin (L,R):=последнее ребро из списка ELIST; T:=PRED(L,R); while qtest(L,t,r,Y) do begin DELETE(L,R); удалить ребро (L,R) из списка ELIST; (L,R):=последнее ребро из списка ELIST; T:=PRED(L,R); end; Y:«NEXT(C2,Y); end; end CLEARING Линейная оценка сложности алгоритма сшивания двух графов смежности основывается на том, что общее число операций пропорционально числу удаленных ребер двух исходных графов и числу построенных ребер нового графа, а также на монотонности процесса дополнительной расчистки. Из линейного времени слияния графов смежности следует, что общая вычислительная сложность алгоритма для η-угольника составляет 0(п log η). Описанный алгоритм позволяет построить граф смежности многоугольника с затратами времени 0{п logn) и на его основе затем построить диаграмму Вороного многоугольника за время 0(п). Заметим, что описанный алгоритм может быть применен не только к многоугольнику, образующему внешнюю границу фигуры, но и к многоугольнику, описывающему границу дыры в многоугольной фигуре. Получается, что для сложной многоугольной фигуры с отверстиями можно построить графы смежности отдельно для каждого многоугольника, составляющего ее границу. Далее нужно решить задачу объединения этих графов в общий граф смежности многоугольной фигуры. 8.5. Слияние графов смежности многоугольников Описанный выше алгоритм слияния графов смежности цепочек сайтов позволяет строить скелет простого многоугольника. Этот алгоритм использует тот факт, что при слиянии двух последовательно расположенных цепочек сайтов имеется пара соседних сайтов в цепочках, которые образуют стартер —- начальный стежок. В случае, когда ставится задача скелетизации многосвязной многоугольной фигуры и, следовательно, имеется несколько граничных многоугольников, сайты разных многоугольников не образуют соседних пар. Поэтому задача
152 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ построения графа смежности существенно усложняется. Однако описанный алгоритм может быть обобщен и на этот случай. Рассмотрим многоугольную фигуру, граница которой состоит из двух многоугольников. Один из них образует внешний, а другой — внутренний контур границы. Пример такой фигуры представлен на рис. 8.14. Используя описанный алгоритм, мы можем построить графы смежности обоих многоугольников (рис. 8.14, в). Задача состоит в том, чтобы слить эти графы смежности, получив при этом граф смежности всей многоугольной фигуры. в) г) Рис. 8.14. Врезка графа смежности внутреннего контура: макушка и опорный сайт (я), локализация макушки в бицикле (б), графы смежности контуров и начальный стежок (в), разрез графа смежности внешнего контура (г) Для того чтобы организовать процесс слияния, подобный тому, что использовался в построении триангуляции Делоне, нужно иметь начальный стежок и края двух сшиваемых графов смежности. Рассмотрим сначала, каким образом можно получить начальный стежок. Для того чтобы определить начальный стежок, достаточно найти такую пару сайтов из разных контуров, для которой выполняется условие Делоне, т.е. существует пустой круг, инцидентный этим сайтам. Во внутреннем граничном многоугольнике найдем вершину с максимальной ординатой. В случае, если таких вершин в контуре несколько,
8.5. СЛИЯНИЕ ГРАФОВ СМЕЖНОСТИ МНОГОУГОЛЬНИКОВ 153 выберем одну из них. Эту вершину будем называть макушкой многоугольника. Рассмотрим луч, выходящий из нее вверх. Рассмотрим также множество пустых окружностей, касающихся макушки, центры которых расположены на этом луче. Поскольку все эти окружности лежат внутри внешнего граничного многоугольника, среди них всегда найдется максимальная. Такую окружность будем называть пузырем. Пузырь касается макушки и сайта из другого многоугольника. Этот сайт назовем опорным для макушки и контактным для пузыря. В примере (рис. 8.14, а) макушкой является сайт 12, а его опорным — сайт 9. Поскольку существует пустой круг, инцидентный двум сайтам, эта пара сайтов удовлетворяет условию Делоне, следовательно, ребро (9,12) может быть выбрано в качестве стартера для слияния графов смежности многоугольников. Имея начальный стежок, мы можем построить края в графах смежности. Для графа смежности внутреннего контура край определяется естественным образом — это множество внешних ребер этого графа. При этом макушка обязательно лежит в этом крае, т. е. в крае имеются ребра, инцидентные макушке. Что касается внешнего контура, то его граф смежности не имеет края. Этот край может быть образован только в результате расчистки. Такая начальная расчистка, приводящая к образованию края, может быть осуществлена с использованием одного сайта — макушки внутреннего контура. Среди всех ребер графа смежности внешнего контура, инцидентных опорному сайту (в примере это ребра (1,9), (6,9) (7,9)), нужно найти такое, в чей бицикл попадает сайт-макушка. Поскольку объединение бициклов всех ребер графа смежности накрывает всю фигуру, такой бицикл всегда найдется (рис. 8.14,6). Из этого ребра и образуется край внешнего графа смежности. По ребру делается разрез и внутрь разреза помещается граф смежности внутреннего контура (рис. 8.14, г). Выглядит этот так, как будто ребро распалось на два одинаковых ребра. Эти два ребра изгибаются, образуя отверстие вокруг графа смежности внутреннего контура. В результате получается край графа смежности внешнего контура, состоящий из ребер (1,9) и (9,1). Получив начальный стежок и примыкающие к нему два края двух графов смежности, мы применяем ту же самую технику, что и при объединении цепочек сайтов одного контура. Единственная особенность, которую следует учесть — это условие завершения сшивания. Поскольку шов в случае двух контуров представляет собой циклическую последовательность ребер, условием завершения сшивания является повторное порождение начального стежка в качестве очередного. В примере это ребро (9,12). Пусть число вершин внешнего многоугольника щ, а внутреннего П2. Тогда затраты времени на поиск макушки составят Ofa), на поиск опорного сайта — 0(ηι), на локализацию макушки в бицикле — 0(щ), на построение разреза — 0(1) и на расчистку и сшивание — 0(п\+П2). Таким образом, вычислительная сложность слияния графов смежности пары многоугольных контуров линейна по суммарному количеству их вершин.
154 Гл. 8. СКЕЛЕТИЗАЦИЯ НА ОСНОВЕ ГРАФОВ СМЕЖНОСТИ Заметим, что эта же техника может быть применена и для слияния графов смежности двух внутренних контуров, образующих отверстия в многоугольной фигуре, при условии, что существует пустой круг, инцидентный обоим контурам. В этом случае шов не обязательно является циклическим. Поэтому он строится двумя проходами от начального стежка: сначала в одну сторону, а потом в другую. Поскольку описанный метод дает возможность объединять графы смежности внешнего и внутренних граничных контуров многоугольной фигуры, появляется возможность построения общего графа смежности фигуры путем последовательного слияния этих графов. Пусть фигура имеет га многоугольных контуров, имеющих по щ вершин, г=1,...,га. Общее число вершин многоугольной фигу- т ры п = Y^rii. Построение отдельных графов смежности всех конту- *=1 / т \ ров имеет вычислительную сложность О I Σηί log щ 1. Поскольку mm m Σ щ log щ^^щ log η = log η · J2 щ =п log η, общее время на по- г=\ г=\ г=\ строение всех графов смежности контуров оценивается как O(nlogn). Пусть внешний контур имеет номер 1 и число вершин в нем щ. Объединение его графа смежности с графом контура 2 занимает время 0(ni+7i2). Присоединение к ним графа смежности контура 3 требует 0(п\ +П2 + П3) и т.д. Получается, что общее время, затрачиваемое на последовательное объединение всех т графов смежности, составляет величину О (mri{ + (га — 1)п2 + ... + пт). Эта величина имеет порядок 0(тп). Эти оценки показывают, что общие затраты на построение графа смежности многоугольной фигуры путем последовательного слияния графов смежности ее контуров составляют величину О (ran + η log n). При малом количестве контуров га эти затраты могут оказаться вполне приемлемыми. Однако при больших га, например порядка 0(п), общее время решения становится квадратичным, что является неприемлемым. Таким образом, проблема эффективного алгоритма построения графа смежности многосвязной многоугольной фигуры («многоугольника с дырами») остается актуальной. Предлагаемый ниже подход к ее решению основывается на понятии дерева смежности многоугольников, составляющих границу многоугольной фигуры.
ГЛАВА 9 ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ 9.1. Смежность граничных многоугольников. 9.2. Дерево смежности границ многоугольной фигуры. 9.3. Алгоритм плоского заметания. 9.4. Заметание с поглощением пузырей. 9.1. Смежность граничных многоугольников Рассмотрим множество многоугольников, составляющих границу фигуры. Два многоугольника из этого множества будем называть смежными, если в них существует пара смежных сайтов, принадлежащих разным многоугольникам. Другими словами, многоугольники являются смежными, если существует пустая окружность, инцидентная им обоим. Заданное таким образом отношение смежности многоугольников определяет граф смежности граничных контуров фигуры. Очевидно, что этот граф является связным. Поэтому его остов (минимальный связный покрывающий подграф) является деревом. Здесь минимальность понимается в том смысле, что из остова не может быть выкинуто ни одно ребро без нарушения связности оставшегося подграфа. Такое дерево будем называть деревом смежности контуров границы фигуры. Ясно, что дерево смежности не является единственным. На рис. 9.1, α представлена многоугольная фигура, имеющая 13 граничных контуров. Пустые круги, касающиеся пар контуров, демонстрируют смежность контуров (рис. 9.1,6). На рис. 9.1, β показан граф смежности контуров. В нем выделено остовное дерево, ребра которого показаны сплошными линиями. Остальные ребра графа смежности многоугольников изображены пунктиром. Дерево смежности контуров границы многоугольной фигуры дает возможность свести задачу построения ее графа смежности к рассмотренной выше задаче построения графа смежности простого многоугольника. Имея дерево смежности контуров границы фигуры, можно построить маршрут обхода всех сайтов фигуры. Этот маршрут позволяет выстроить все сайты фигуры в единую цепь. Пусть Мо,М[,.. ,,Mk — контуры границы фигуры, причем Mq — единственный внешний контур, а остальные — внутренние. В дереве смежности контуров выберем в качестве корня внешний контур Mq. Для каждого контура Mi, г = 0, ...,fc, построим цепочку из кг сайтов {sn,Si2,..., Sik.}, упорядоченную по направлению контура, т. е. против часовой стрелки для Mq и по часовой стрелке для остальных
156 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ Рис. 9.1. Смежность контуров многоугольной фигуры: фигура (а), пустые круги (б), граф смежности контуров (в) контуров. В дереве смежности контуров каждый элемент, кроме корневого, является потомком другого элемента. Это значит, что в каждом контуре-потомке имеется сайт, для которого существует смежный сайт в контуре-предке. Не нарушая общности, будем считать, что в цепочке сайтов контура М^ г = 0, ...,fc этот «соединительный» сайт стоит первым, т.е. это сайт вц. Теперь преобразуем все цепочки сайтов контуров в единую цепочку путем «врезки» друг в друга цепочек отдельных контуров (рис. 9.2). Этот процесс осуществляется снизу вверх, начиная с контуров, являющихся листьями в дереве смежности. Цепочка каждого контура «врезается» в цепочку его предка. Пусть контур Mi является потомком контура Mj, Причем пара смежных сайтов (si\,Sjt) — это первый сайт вц в цепочке Щ, а также некоторый сайт Sjt в цепочке контура Mj. Тогда объединенная цепочка имеет следующий вид: \ S31' ^j21 · · · ι Sjt ι Sn, Si21 · · · } Sjkii 8ц, Sjt, Sjt-\- \,,..., Sjfy j . Цепочка контура Mi вставляется в цепочку контура Mj после элемента su, а после последнего ее сайта ставится пара сайтов su, Sjtl
9.1. СМЕЖНОСТЬ ГРАНИЧНЫХ МНОГОУГОЛЬНИКОВ 157 Рис. 9.2. Врезка цепочек сайтов друг в друга образующая «мост» для обратного перехода с контура Mj на контур Mi. У контура Mi может быть несколько потомков, и цепочки сайтов всех этих потомков должны быть вставлены таким же образом в цепочку сайтов Mj. После этого цепочка самого Mj вставляется в цепочку его предка в дереве смежности. В результате этого процесса будет выполнена вставка всех цепочек в цепочку сайтов внешнего контура (рис. 9.3). Очевидно, что длина этой объединенной цепочки сайтов составит 0(п). Рис. 9.3. Объединение сайтов многоугольной фигуры в единую цепочку Теперь к объединенной цепочке сайтов может быть применен алгоритм построения графа смежности, который был использован для простого многоугольника. При этом необходимо сделать следующие модификации, связанные с появлением в цепочке пар смежных сайтов, не являющихся соседними. Первая модификация состоит в том, что процесс образования элементарных цепочек теперь строится в два этапа. Сначала образуются элементарные цепочки из пар смежных сайтов разных контуров. А затем строятся элементарные цепочки из сайтов одного контура так, как это делается в случае простого многоугольника. А вторая модификация связана с постобработкой «мостов», построенных при врезке контуров. После того, как будет построен граф смеж-
158 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ ности объединенной цепочки, ребра, образованные связующими парами сайтов (из дерева смежности контуров), окажутся продублированными, т. е. войдут в граф смежности дважды. Поэтому необходимо провести «склейку» таких ребер. Следует отметить особый случай, когда несколько контуров имеют общего предка в дереве смежности и при этом их пустые круги инцидентны одному и тому же сайту в контуре-предке (рис. 9.4). Рис. 9.4. Случай присоединения нескольких контуров-потомков к одному и тому же сайту контура-предка В этом случае врезка цепочек контуров-потомков в цепочку контура- предка осуществляется строго в той последовательности, в которой происходит касание окружностей общего сайта в контуре-предке. Пример работы алгоритма представлен на рис. 9.5. Исходная многоугольная фигура (рис. 9.5, а) имеет два граничных контура, которые образуют 16 сайтов. Предположим, что найден пустой круг, показывающий, что сайты 5 и 10 являются смежными. В результате объединения о· 12σ 11 D а) б) в) г) д) е) Рис. 9.5. Построение графа смежности многосвязной многоугольной фигуры: многоугольная фигура (а), объединенная цепочка сайтов (б), 4 цикла слияния графов смежности цепочек (в-е)
9.2. ДЕРЕВО СМЕЖНОСТИ ГРАНИЦ МНОГОУГОЛЬНОЙ ФИГУРЫ 159 цепочек двух контуров получается объединенная цепочка сайтов: {0,1,2,3,4,5,10,11,12,13,14,15,10,5,6,7,8,9}. В ней выделяются элементарные цепочки сайтов. При этом образуются две элементарные цепочки из пары смежных сайтов, обозначенные (5,10) и (10', 5') на рис. 9.5,6. Далее строятся графы смежности 11 элементарных цепочек, которые последовательно сливаются в общий граф смежности за 4 цикла (рис. 9.5, в-е). В полученном графе рис. 9.5, е остается склеить ребра (5,10) и (10', 5'), в результате чего получается искомый граф смежности, изображенный на рис. 8.2, б. Таким образом, при наличии дерева смежности контуров построение графа смежности многоугольной фигуры можно осуществить с использованием того же самого алгоритма, который строит граф смежности простого многоугольника, за время 0{п logη). Естественно, что ценность этого результата зависит от того, какое время потребуется для построения дерева смежности контуров. Предлагаемый ниже алгоритм позволяет построить это дерево за время O(nlogn) в худшем случае. 9.2. Дерево смежности границ многоугольной фигуры Среди всех возможных деревьев смежности мы будем строить так называемые «ориентированные по направлению» деревья. Не нарушая общности, будем рассматривать в качестве такого направления ось ординат («вертикальное направление»). Для каждого внутреннего граничного контура выделим вершину-макушку, так как это было определено в 8.5. Для вертикального направления это просто вершина с максимальной ординатой. С каждой макушкой связан луч, выходящий из нее вверх (рис. 9.6). Пузыри Опорные^ сайты ^\ / [ \ ΊΓ \ / ^\Макушки Вертикальные лучи Рис. 9.6. Вертикальная смежность контуров границы Среди пустых окружностей, касающихся макушки, центры которых расположены на ее луче, найдем максимальную. Такая окружность в 8.5 названа пузырем. Пузырь инцидентен макушке и сайту из другого многоугольника. Этот сайт называется опорным для макушки и контактным для пузыря. Если таких сайтов несколько, выберем
160 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ в качестве опорного лишь один из них (любой). Многоугольник, в котором расположен опорный сайт, назовем верхним, поскольку он всегда лежит выше макушки. Легко видеть, что каждый многоугольник является смежным со своим верхним многоугольником. Таким образом, построенные пузыри определяют отношение частичного порядка на множестве многоугольников: у каждого внутреннего многоугольника существует единственный верхний многоугольник. Единственный многоугольник, не имеющий верхнего, — это внешний граничный многоугольник. Следовательно, нами получено дерево смежности контуров границы фигуры, в котором пустыми окружностями, инцидентными парам контуров, являются пузыри многоугольников. Такое дерево смежности будем называть вертикальным деревом смежности. Пример вертикального дерева смежности контуров для фигуры «бабочка» представлен на рис. 9.1, е. Можно предложить следующий наивный алгоритм построения вертикального дерева смежности контуров. Для каждой макушки перебрать все сайты фигуры и для каждого сайта построить окружность с центром на вертикальном луче, инцидентную макушке и сайту (если такая окружность существует). А потом отобрать окружности минимального радиуса для всех макушек. Такие окружности будут пустыми и при этом будут касаться опорных сайтов. Очевидно, что вычислительная сложность этого алгоритма составит 0(п -р), где ρ — количество контуров в границе фигуры. Поскольку в худшем случае ρ есть 0(п), получаем сложность наивного алгоритма 0(п2), что является неприемлемым. Требуется более эффективный способ построения дерева смежности контуров. 9.3. Алгоритм плоского заметания Источником низкой эффективности наивного алгоритма является перебор для каждой макушки всех сайтов, в том числе и тех, которые находятся далеко и заведомо не могут оказать влияния на построение ее пузыря. Для того, чтобы исключить анализ таких несущественных сайтов, воспользуемся алгоритмической парадигмой плоского заметания. Рассмотрим горизонтальную прямую, перемещаемую снизу вверх, постепенно заметающую многоугольную фигуру. Процесс заметания условно развивается во времени, с каждым моментом времени связано некоторое положение заметающей прямой. При этом множество сайтов, пересекаемых заметающей прямой, естественным образом упорядочено слева направо по абсциссам точек пересечения. В примере на рис. 9.7 прямая перемещается снизу вверх. В положении L0 она не пересекает ни одного сайта. В положении L\ — пересекает сайты 5, 7, 9 и 11, в положении L<i — сайты 3, 21, 19, 7, 8, 9 и 11.
9.3. АЛГОРИТМ ПЛОСКОГО ЗАМЕТАНИЯ 161 Рис. 9.7. Заметание многоугольной фигуры горизонтальной прямой Рассмотрим также множество вертикальных лучей, выходящих из макушек. В момент пересечения макушки заметающей прямой соответствующий луч может занять свое место в упорядоченном множестве пересекаемых сайтов. В примере на рис. 9.7 заметающая прямая в положении Ls пересекает сайты 3, 35, 25, 13 и луч, выходящий из макушки 16. Этот луч в упорядоченном списке располагается между сайтами 3 и 35. Аналогично при положении заметающей прямой L^ пересечения упорядочены так: сайт 1, лучи макушек 16 и 24, сайт 13. Нетрудно убедиться в справедливости следующего утверждения. Утверждение 9.1. Если сайт является опорным для пузыря, то существует такое положение заметающей прямой, при котором между этим сайтом и лучом нет других сайтов. Доказательство. Действительно, если положение горизонтальной прямой таково, что она проходит через точку касания пузыря и опорного сайта (рис. 9.8), то отрезок прямой между лучом и сайтом лежит целиком внутри пузыря. А поскольку пузырь — это пустая окружность, то этот отрезок не может иметь пересечений с другими сайтами. Это утверждение дает необходимое условие того, что сайт является опорным для макушки. Основываясь на нем, мы можем вести поиск опорного сайта только среди тех сайтов, которые оказались соседними с лучом макушки в процессе заметания. Процесс заметания реализуется, как это обычно принято [21], с помощью двух структур данных: статуса заметающей прямой и очереди событий. Статус заметающей прямой представляет собой упорядоченное Рис. 9.8. Прохождение заметающей прямой через точку касания пузырем опорного сайта
162 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ множество сайтов и лучей, пересекаемых заметающей прямой. Статус динамически меняется по мере перемещения прямой. Моменты изменения статуса называются событиями. Они связаны с определенными значениями ординаты заметающей прямой. События естественным образом упорядочиваются по времени наступления или, что то же самое, по ординате соответствующего положения прямой. Упорядоченное множество событий образует очередь событий. Поскольку каждое положение заметающей прямой определяется ее ординатой, множестве событий является упорядоченным. Статус заметающей прямой и очередь событий реализуются в виде сбалансированных деревьев (АВЛ-дерево, 2-3-дерево или красно- черное дерево) [2, 4, 21]. Выбор именно этого способа организации данных основан на том, что в сбалансированных деревьях эффективно выполняются такие операции над динамически изменяющимися множествами, как поиск, включение и удаление элементов. Время выполнения этих операций составляет О (log К), где К — число элементов множества, причем оценка эта сохраняется при изменении числа К Изменение статуса происходит в тот момент, когда заметающая прямая «наезжает» на очередной сайт, либо «съезжает» с какого-то сайта. Очевидно, что это происходит при пересечении заметающей прямой вершины фигуры, следовательно, общее число таких событий составляет 0(п). Поскольку общее число элементов в статусе есть также 0(п), время, требуемое на операции включения-исключения сайта или луча, составляет 0(log n). Для каждого события необходимо проверить, не образовалась ли пара луч-сайт такая, что между ними в статусе нет других лучей. Если такая пара образовалась, то нужно проверить, не является ли этот сайт опорным для пузыря, связанного с этим лучом. Практическую реализацию этого процесса продемонстрируем на примере (рис. 9.9). Для макушки многоугольника SO в момент, когда Рис. 9.9. Построение пузыря для макушки So (сайты-точки Si и ft, сайты- сегменты $2 И 54)
9.3. АЛГОРИТМ ПЛОСКОГО ЗАМЕТАНИЯ 163 она попала в статус, строим вертикальный луч До и пузырь бесконечного размера, т.е. полуплоскость Со. При перемещении заметающей прямой в положение L\ в статус попадает сайт S\, который оказывается соседом с лучом До- Инцидентная сайтам SO и S\ окружность С\ с центром на луче До имеет радиус меньше, чем Со, поэтому она становится кандидатом в пузыри для макушки So- Следующими событиями, которые происходят при том же положении заметающей прямой L\, является исключение из статуса сайта S\ и включение вместо него сайта S2. Окружность Сг, инцидентная сайтам So и S2, меньше окружности С\, поэтому она занимает место пузыря макушки So- Далее при положении заметающей прямой L2 в статусе происходит замена сайта S2 сайтом S3, которая не влечет за собой коррекции пузыря. А вот следующее событие — замена в статусе сайта Ss сайтом S^ — приводит к появлению новой пустой окружности Сз, которая и становится окончательным пузырем макушки So- Следует еще отметить, что в момент, когда заметающая прямая станет верхней касательной для окружности Сз, луч До будет исключен из статуса. Поскольку проверка, является ли сайт опорным для пузыря, осуществляется за конечное время 0(1), может сложиться впечатление, что общее время, необходимое для нахождения всех пузырей таким способом, составит O(nlogn), к чему мы и стремимся. Однако так будет не всегда. Картину портит ситуация, когда между опорным сайтом и лучом оказывается другой луч (рис. 9.10). В этом примере пузырь Со для макушки SO является инцидентной окружностью для сайта S3. Но сайт S3 никогда не окажется непосредственным соседом луча До в статусе, поскольку между ними расположен луч макушки S\. Возможность возникновения подобных ситуаций приводит к усложнению обработки соседства сайта и луча. Получается, что если в статусе стоят подряд несколько лучей, то необходимо проверить на смежность этот сайт и макушки всех этих лучей. В результате может сложиться ситуация (рис. 9.11), когда общее время, необходимое для проверки, становится равным 0(p-q), где ρ — число соседних лучей в статусе, ад — число сайтов, оказавшихся с ними соседями в процессе заметания. Очевидно, что в худшем случае ρ и q могут иметь порядок 0{п), что опять приводит к общему времени проверок 0{п2). Конечно, ситуация, подобная изображенной на рис. 9.11, явно является экзотической. В практических случаях, когда количество стоящих Рис. 9.10. Контакт пузыря с несоседним сайтом
164 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ > q сайтов ρ контуров Рис. 9.11. Соседство нескольких лучей в статусе подряд лучей в статусе не превосходит некоторого небольшого числа, общее время работы останется O(nlogn). Однако для гарантированного достижения такой эффективности в худшем случае алгоритм нуждается еще в одном усовершенствовании. 9.4. Заметание с поглощением пузырей В ситуации, показанной на рис. 9.10, контакт сайта 5з с пузырем Со стал возможным из-за того, что окружность Со «накрыла» окружность С\, лежащую между 5з и лучом Rq. Такое взаимное положение пузырей будем называть доминированием. Формально это означает, что верхняя точка доминируемого пузыря С\ оказалась внутри доминирующего пузыря Со. Для того, чтобы корректно обрабатывать ситуации, подобные этой, необходимо сначала выявить все случаи доминирования пузырей. Для этого процесс заметания, описанный выше, дополняется функцией контроля доминирования пузырей. Этот контроль осуществляется в процессе заметания и состоит в выполнении следующих правил: 1. Если два луча оказались соседними в статусе, то осуществляется проверка их на доминирование, т.е. на попадание вершины каждого пузыря внутрь соседнего пузыря. 2. В случае если доминирование имеет место, то планируется событие «поглощение» на момент, когда один пузырь целиком окажется внутри другого. Соответствующий момент вычисляется как ордината точки пересечения окружностей. 3. При наступлении события поглощения доминируемый пузырь (его луч) удаляется из статуса и помещается в доминирующий пузырь. Для этого в доминирующем пузыре заводится список-магазин для поглощенных пузырей, работающий по принципу «последним пришел — первым вышел». 4. В процессе заметания коррекция размеров доминирующих пузырей сопровождается проверкой того, сохраняется ли доминирование
9.4. ЗАМЕТАНИЕ С ПОГЛОЩЕНИЕМ ПУЗЫРЕЙ 165 над поглощенными пузырями. Если доминирования больше нет, то поглощенный пузырь возвращается в статус на свое место. 5. При выявлении контакта пузыря и сайта коррекция осуществляется только для доминирующего пузыря. Контакты сайта с поглощенными пузырями выявляются в процессе постобработки после завершения заметания, который будет описан ниже. Основная экономия времени в этом алгоритме для ситуаций типа изображенной на рис. 9.6 достигается за счет правила 5, поскольку при соседстве сайта и луча не производится полный перебор всех остальных лучей, стоящих подряд. Общая вычислительная сложность процесса заметания остается 0(пlogn), поскольку число событий поглощения составляет 0(п), а обработка, связанная с выполнением правил 1-5, требует фиксированного времени 0(1). Модифицированный таким образом алгоритм плоского заметания на выходе дает вложенные цепочки доминируемых пузырей. Каждая такая цепочка имеет вид доминирующего пузыря со своим списком- магазином поглощенных им доминируемых пузырей. Те пузыри, которые не были поглощены, можно рассматривать как цепочки длины 1. При этом все пузыри имеют контактные сайты, определяющие их размеры. Однако правило 5, позволившее сэкономить время на переборе, привело к тому, что среди доминируемых могут оказаться такие пузыри, для которых контактный сайт найден неправильно. Причина этого состоит в том, что после попадания такого пузыря в список поглощенных проверка его на контакт с сайтами не производилась. Для того, чтобы восстановить правильные контакты для доминируемых пузырей, после завершения заметания требуется дополнительный анализ списков поглощенных пузырей. Рассмотрим цепочку пузырей {Со,Сь ..., C/J, полученную следующим образом. Пузырь Со является «крайним», т.е. его луч До непосредственно соседствует с каким-то сайтом в статусе. Он доминируется пузырем С\, тот в свою очередь доминируется пузырем С% и т.д. Наверху в этой последовательности находится доминирующий пузырь С/с. В процессе заметания для всех этих пузырей были получены все сайты, оказавшиеся с ними соседними. Все такие соседства прошли через очередь событий, причем в последовательности снизу-вверх. Это значит, что известна последовательность сайтов {SbS^,.. .,Sm}, которые только и могут быть контактными для пузырей из цепочки. Остается лишь сопоставить пузыри и сайты из этих множеств между собой. Для того, чтобы это было сделано эффективно, воспользуемся тем очевидным соображением, что такие контакты обладают следующим свойством монотонности. Утверждение 9.2. Если пузыри d и Cj имеют контактные сайты Sp и Sq и г < j, то ρ ^ q. С учетом этого процесс установки соответствия пузырей и контактных сайтов может быть построен следующим образом.
166 Гл. 9. ВЫЧИСЛЕНИЕ ДЕРЕВА СМЕЖНОСТИ ФИГУРЫ и наи- Выберем пузырь Сг из середины цепочки, т. е. г = дем для него контактный сайт полным перебором всех сайтов из {So, S\,..., Sm}. Предположим, что это сайт St. Теперь можем воспользоваться тем, что для пузырей из нижней части цепочки {Со, С\,..., Сг-\} контактные сайты нужно искать среди {Sb,Sb...,St}, а для пузырей из {Сг+ь... , C/J — среди сайтов {St,S\,...,Sm}. Это значит, что для двух средних пузырей подмножеств {СЬ,Сь ... ,Cr_i} и {Cr+i,..., Cfc} поиск контактных сайтов потребует перебора в общей сложности тех же {So, Si,..., Sm} сайтов: Очевидно, что рекурсивная обработка всех пузырей потребует О (log А;) шагов при числе операций на каждом шаге О(га), т.е. затраты на определение опорных сайтов для всей цепочки составят 0(mlogk). Пусть / — номер цепочки доминирования пузырей, включающей кг пузырей и имеющей rrii соседних сайтов. Тогда общее время постобработки всех цепочек составит 0(^га/ logki). Поскольку общее число пузырей Y^ki ζη, получаем У^ mi log ki ^ ^ m/ log η = log η · ^ га/. Величина Σ πιι представляет собой общее число событий соседства сайтов и пузырей в процессе заметания. Очевидно, что эта величина есть 0(п). Тогда общее время на описываемый процесс составит O(nlogn). Таким образом, мы получили, что алгоритм построения дерева смежности контуров границы многоугольной фигуры имеет вычислительную сложность 0(п logn) в худшем случае. С учетом описанного в разделе 8.3.5 преобразования всех цепочек сайтов в единую цепь, а также за счет применения рекурсивного алгоритма построения графа смежности объединенной цепочки сайтов, описанного в главе 8, нами получен общий эффективный алгоритм построения графа смежности многоугольной фигуры.
ГЛАВА 10 РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ 10.1. Скелетизация — некорректная задача. 10.2. Регуляризация на основе стрижки скелета. 10.3. Базовый скелет многоугольной фигуры. 10.1. Скелетизация — некорректная задача Как отмечалось выше, использование скелета для представления формы объектов порождает проблему «шумовых» ветвей. Пример на рис. 2.11 показывает, что для нескольких многоугольных фигур, различия между которыми практически незаметны для глаза, можно получить скелеты с разной топологической структурой. Небольшие нерегулярности в границе фигуры, часто являющиеся просто следствием шумов, приводят к появлению соответствующих шумовых ветвей скелета. Если шумы на границе фигуры сгладить, то эти ветви исчезнут. Такая неустойчивость решения свидетельствует о «некорректности» задачи скелетизации. Формально согласно [1] некорректной задачей .(точнее, некорректно поставленной задачей) является задача, которая не удовлетворяет определению корректно поставленной задачи, данному Адамаром. Согласно определению Адамара задача получения решения ζ = R(u) из метрического пространства Ζ с расстоянием ρζ{-, ·) по «исходным данным» и из метрического пространства U с расстоянием рц( ·, ·) называется корректно поставленной на паре пространств (Ζ, ?7), если: а) для всякого и eU существует решение ζ е Z; б) решение определяется однозначно; в) задача устойчива на пространствах (Ζ, ?7), что означает: для всякого ε > 0 существует такое δ (ε) > 0, что для любых u\,U2 G U из неравенства ри{щ,щ) ^ δ (ε) следует неравенство ρζ(ζ\>Ζ2) ^ε> где zx = R(u\), z2 = R(u2). Таким образом, задача, для которой не удовлетворяется хотя бы одно из условий (а), (б) или (в), считается некорректной. В нашем случае для задачи скелетизации фигуры в качестве пространства «исходных данных» U выступает множество всех фигур с некоторой метрикой /?£/(., .). В частности, адекватной метрикой для задач анализа изображений может служить хаусдорфова метрика множеств. Пространство Ζ представляет собой множество скелетов фигур из пространства Ζ. Скелеты являются плоскими графами. С точки зрения
168 Гл. 10. РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ человеческого представления о сходстве графов можно выбрать различные метрики pz( ·, ·) в пространстве Z. Например, это может быть метрический критерий сходства скелетов, как множества точек. В этом случае можно также использовать хаусдорфову метрику. Но можно взять и другой критерий близости, ориентированный на топологическое сходство. Например, минимальное число вершин и ребер, которые нужно удалить из обоих графов, чтобы оставшиеся их подграфы стали изоморфными [50]. Рассмотрим, как выполняются условия корректности задачи. Условие (а) выполняется всегда, поскольку для любой фигуры скелет существует. Условие (б) также всегда выполняется: скелет фигуры является единственным. Поскольку скелет существует и единственен для любой фигуры из пространства С/, можно говорить о существовании отображения S: U^Z, которое ставит в соответствие фигуре и eU скелет ζ е Z, z — S(u). В этих обозначениях задача скелетизации выглядит как вычисление оператора z = S(u). (10.1) Проблема корректности задачи (10.1) возникает в связи с условием (в), требующим устойчивости получаемого решения. Это условие очевидно не выполняется. Рассмотрим пример, изображенный на рис. 2.11. Различия между фигурами в хаусдорфовой метрике не превосходят некоторого значения δ > 0, но фигуры при этом отличаются регулярностью границы. Имеющиеся на границах точки излома расположены в разных фигурах по-разному. Причем очевидно, что выбор пары фигур с такого рода различиями можно осуществить при любых, сколь угодно малых значениях δ. Но в скелете фигуры для каждой точки излома на границе существует соответствующая ветвь. Поэтому несущественные различия в точках излома границ фигур приводят к существенным различиям в скелетах этих фигур. Если в пространстве скелетов задана хаусдорфова метрика, то расстояние между скелетами двух фигур определяются размерами некоторых максимальных пустых кругов фигур. Это расстояние является конечным при любом уменьшении δ. Это значит, что условие ρζ{ζ\,Ζ2) ^ ε из (в) не выполняется. Аналогичным образом устанавливается конечное расстояние между скелетами в метрике топологического сходства. Таким образом, и на интуитивном и на формальном уровне становится понятно, что задача скелетизации является некорректно поставленной, поскольку как угодно малым изменениям исходных данных могут соответствовать большие изменения решения. Методом решения некорректных задач является получение некоторого приближенного решения, которое было бы устойчивым к малым изменениям исходной информации. Использование той или иной формы отбора допустимых решений при построении устойчивых к исход-
10.2. РЕГУЛЯРИЗАЦИЯ НА ОСНОВЕ СТРИЖКИ СКЕЛЕТА 169 ной информации приближенных решений некорректно поставленных задач называется регуляризацией [1]. Применяемый для этого подход основан на понятии регуляризи- рующего оператора. Применительно к задаче скелетизации (10.1) оператор R(u,6) из U в Ζ называется регуляризирующим оператором для уравнения ζ = А(и) в окрестности и = ит, если он обладает свойствами: 1) существует такое δ ι > 0, что оператор R(u,S) определен для всякого δ, 0 < δ ^ δ\ и любого щ G U такого, что ри(щ,ит) ^ δ; 2) для всякого ε > 0 существует δο = δο{ε,ητ) ^ δ\ такое, что из неравенства ри{щ,ит) ^ δ ^ £0 следует неравенство ρζ(ζδ,ζτ) ^ ε, где ζδ = R(us,S). Задача нахождения приближенного решения для ζ = S(u), устойчивого к малым изменениям фигуры и, сводится: (а) к нахождению регуляризирующего оператора; (б) к определению значения параметра а по информации о погрешности £, с которой задается фигура и. Фактически, речь идет о получении с помощью регуляризирующего оператора za = R(u, а) объекта za G Ζ, который является скелетом некоторой фигуры иа, близкой кпв пространстве С/, т. е. ри{и, иа) ^ δ. Здесь а = α(δ) согласовано с погрешностью задания исходной фигуры и. Решение za = R(u, а) называется регуляризованным решением задачи ζ = S(u). Числовой параметр а называется параметром регуляризации. 10.2. Регуляризация на основе стрижки скелета Регуляризирующий оператор R(u,a) будем строить в два этапа. Первый этап состоит в получении точного скелета ζ = S(u) фигуры и, а второй — в некотором преобразовании этого скелета, задаваемом регуляризирующим параметром а. Это преобразование основывается на следующем соображении. В состав скелета входят ветви, которые не зависят от мелких флюктуации границы, сохраняются при сглаживании границы и при этом их метрические характеристики практически не изменяются. Именно эти инвариантные ветви характеризуют структуру фигуры. Содержательно задача построения скелета, отражающего структуру фигуры, состоит в выделении этих ветвей. Сделать это можно путем удаления из уже полученного скелета каких-то случайных, шумовых элементов. Таким образом, мы предполагаем, что фундаментальная часть скелета является его подграфом. Содержательно такой подграф мы будем называть базовым скелетом. Поскольку получение базового скелета осуществляется путем удаления из скелета многоугольной фигуры несущественных ребер, этот процесс назовем стрижкой скелета. Пусть С фигура с границей дС, имеющая скелет S и радиальную функцию скелета p(s), s G S. Скелет является плоским графом
170 Гл. 10. РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ S=(P,E) с множеством вершин Ρ и ребер Е. С другой стороны, он представляет собой точечное множество на евклидовой плоскости S С R2, т. е. состоит из точек s e S. На рис. 10.1 представлен скелет многоугольной фигуры и его структурные элементы. Будем использовать следующую терминологию. Вершина скелета, имеющая одно инцидентное ребро, называется терминальной, а два или более ребер — внутренней. Ребро, инцидентное терминальной вершине, также называется терминальным, ребро, инцидентное двум внутренним вершинам называется связующим. Связующие ребра могут входить в один или более циклов и в этом случае они называются циклическими. Связующие рёбра Рис. 10.1. Многоугольная фигура (слева), скелет и его элементы (справа) Стрижка представляет собой последовательное удаление отдельных ветвей скелета. Основой процесса стрижки является критерий, по которому должно приниматься решение о принадлежности отдельного ребра скелета к базовому скелету. С каждой точкой скелета s e S связан максимальный пустой круг фигуры V(s) = {v. d(v,s) ^ p{s)}. Объединение Vs = \J V(s) множества ses максимальных пустых кругов с центрами на ветвях скелета совпадает с самой фигурой С, т. е. Vs = С. Пусть S' = (Ρ',Ε') некоторый связный подграф скелета S = (Р,Е), такой, что Р'СР, Е' С Ε и среди ребер из множества Е\Е' нет циклических ребер скелета S. Это означает, что граф S' может быть получен из скелета S путем удаления («обрезки») части вершин и ребер скелета, причем удаление не разрушает циклов и не нарушает связности графа. Такой граф S1 будем называть укороченным подграфом скелета S. Рассмотрим фигуру V = (J V(s), образованную путем объеди- ses' ' нения всех максимальных пустых кругов, центры которых лежат на укороченном подграфе S'. Такую фигуру будем называть силуэтом подграфа Sf. Важным свойством силуэта укороченного подграфа является топологическая эквивалентность фигуре С. В частности, силуэт
10.3. БАЗОВЫЙ СКЕЛЕТ МНОГОУГОЛЬНОЙ ФИГУРЫ 171 а) б) в) г) Рис, 10.2. Построение силуэта подграфа скелета: многоугольная фигура (а), скелет фигуры (б), укороченный подграф (в), силуэт подграфа (г) представляет собой связное множество. На рис. 10.2 представлен пример построения силуэта. Среди всех укороченных подграфов скелета мы хотим выбрать тот, который можно будет рассматривать в качестве базового скелета. С одной стороны, мы заинтересованы в том, чтобы силуэт полученного подграфа был достаточно близок к исходной многоугольной фигуре. С другой стороны, мы хотим убрать как можно больше лишних ветвей. На основании этих двух противоречивых требований сформулируем следующее определение базового скелета. Базовым скелетом фигуры С будем называть такой минимальный укороченный подграф S' ее скелета S, для силуэта которого Vg выполнено условие #(С, Vg) ^ ε, где ε — заданная положительная величина, а #(С, Vg) — хаусдорфово расстояние между фигурой С и силуэтом Vg. 10.3. Базовый скелет многоугольной фигуры Процесс нахождения базового скелета можно представить как построение последовательности укороченных подграфов {S^}, в которой Sq = S, S'mJt{ С^, πι = 0,..., М, и для всех ее элементов имеет место выполнение условия #(С, Vs* ) ^ ε. При этом последний элемент этой последовательности S'M является базовым скелетом, т.е. либо для любого укороченного подграфа S1 С S'M имеет место #(С, Vg) > > ε, либо в S'M не найдется укороченных подграфов. Последнее может иметь место, если в S'M не осталось терминальных ребер. Пример убывающей последовательности укороченных подграфов представлен на рис. 10.3. Очевидно, что имеет место вложенность силуэтов подграфов из {S'm}> T-e- Vs'm ! QVs'm. Поэтому последовательность величин hm = = H(C,Vs'm) является монотонно неубывающей. Построение {S'm} можно представить как последовательное отсечение очередной терминальной ветви скелета, т.е. подграф S'm+l есть просто подграф S'm, в котором удалены одна терминальная вершина и терминальное ребро, инцидентное этой вершине. Удаление одного терминального ребра влечет за собой локальное изменение силуэта графа, которое легко может быть оценено. Основную роль в получении этой оценки играет
172 Гл. 10. РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ а) б) е) г) д) Рис. 10.3. Стрижка скелета: исходное растровое изображение (а), минимальный разделяющий многоугольник и его скелет (б), последовательное удаление терминальных ребер (показаны пунктиром) и полученные силуэты (в)-(д) внутренняя вершина, инцидентная отсеченному терминальному ребру. Механизм изменения силуэта рассмотрим на примере (рис. 10.4). В начальный момент терминальные вершины скелета совпадают с выпуклыми вершинами многоугольной фигуры, в которых угол меньше 180°. Будем называть эти вершины угловыми. Если удалить терминальное ребро, то силуэт полученного подграфа будет отличаться от исходной фигуры только лишь «скруглением» соответствующей угловой вершины. Под скруглением понимается сопряжение двух линейных сегментов границы фигуры дугой пустой окружности. В примере (рис. 10.4,а) удаление терминальных ребер А\В\, А\В2, А2Вз, А4В4 приводит к скруглению границы фигуры в угловых вершинах В\, Β2ι Б3, В± соответственно (рис. 10.4,6). Причем окружность А\ скругляет вершины В\ и В2, окружность А2 — вершину В3> а окружность А\ — вершину Б4. После отсечения ребер А\В\, А\В2, А2В%, А4В4 новыми терминальными вершинами скелета становятся А\ и Αι, а терминальными ребрами — А2А\ и А3А4. а) б) в) Рис. 10.4. Проверка критерия отсечения ребер скелета Если отсечь теперь новые терминальные ребра А2А\ и А3А4 (рис. 10.4, в), то это приведет к скруглению границы дугами окружностей с центрами в вершинах скелета А2 и A3. Окружность А2 теперь скругляет угловые вершины фигуры Вь В2 и Б3, а окружность As —
10.3. БАЗОВЫЙ СКЕЛЕТ МНОГОУГОЛЬНОЙ ФИГУРЫ 173 вершину Б4. Вершина А^ становится терминальной. Также терминальным ребром становится А3А2. Таким образом, с каждым терминальным ребром графа связана внутренняя вершина, степень которой должна уменьшиться в случае отсечения этого ребра. А с другой стороны, с этим ребром связано некоторое множество угловых вершин фигуры, которые скругляет пустая окружность этой внутренней вершины скелета. Как нетрудно убедиться, именно эти угловые вершины фигуры являются наиболее удаленными ее точками от силуэта нового подграфа. Это служит основанием для простого рекуррентного правила вычисления хаусдор- фова расстояния между исходной фигурой и силуэтом укороченного подграфа. Пусть АС — терминальное ребро, точка С является терминальной вершиной, а точка А — внутренней вершиной скелета, г а — радиус пустой окружности с центром в точке А. Предположим, что в случае отсечения ребра АС пустая окружность С скругляет угловые вершины фигуры Β\,Β<χ,..., Bfc. Тогда расстояние от границы фигуры до нового фрагмента силуэта, определяемого терминальной вершиной А, есть Х(А) = max d(A, ΒΛ — г а, i=\,...,k где d(A, Bi) — евклидово расстояние между точками. Предположим теперь, что для укороченного графа S'm известно расстояние hm = H{CtVs'm). Рассматривая в качестве кандидата на отсечение некоторое терминальное ребро QmPm, в котором вершина Рт терминальная, a Qm — внутренняя, мы можем вычислить величину X(Qm). Для нового укороченного графа Sfm+{, получаемого из S'm отсечением ребра QmPm, имеем Н(С, VSL+i) = max{Н(С, VS,J, X(Qm) } . Тогда очевидно, что если для графа S'm имеет место выполнение условия H(C,Vs'm) ^ ε, то условие H(C,Vsf ) ^ ε эквивалентно условию X(Qm) ίζ ε. Таким образом, если X(Qm) ^ ε, то ребро QmPm можно отсекать, в противном случае оно остается в базовом скелете. Полученное правило требует, чтобы каждая вершина графа «знала» свои скругляемые угловые вершины фигуры для вычисления оценки Х(А). Получение такого списка угловых вершин для вершины графа А легко обеспечить, если заметить, что в него входят все скругляемые вершины отсеченного поддерева вершины А. Например, на рис. 10.4 с вершиной графа А\ связаны скругляемые угловые вершины В\, Β<ι, с вершиной графа А^ связаны В\, В%, Дз, с вершиной А^ — В\, В%, Б3, Д*· Такое свойство позволяет формировать список скругляемых вершин по следующему правилу: при отсечении ребра QmPm в список скругляемых угловых вершин внутренней вершины Qm нужно добавить список скругляемых угловых вершин терминальной верши-
174 Гл. 10. РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ Таким образом, алгоритм получения базового скелета выглядит следующим образом. 1. Положить в качестве начального базового скелета скелет исходной многоугольной фигуры. 2. Поместить все терминальные вершины скелета в список кандидатов на отсечение. 3. Основной шаг. Выбрать терминальную вершину из списка кандидатов (и удалить ее при этом из списка). Найти инцидентное ей терминальное ребро и внутреннюю вершину этого ребра. Определить список угловых вершин фигуры, которые будут скруглены в случае отсечения терминального ребра. Для пустой окружности внутренней вершины найти наибольшее расстояние до скругляемых угловых вершин. Если это расстояние меньше порога ε, то отсечь терминальное ребро от скелета. 4. Если при отсечении терминального ребра его внутренняя вершина становится терминальной, то поместить ее в список вершин- кандидатов на отсечение. 5. Если список вершин-кандидатов не пуст, то перейти к п. 3 иначе завершить работу. в) г) Рис. 10.5. Пример построения базового скелета: исходное изображение 800 χ χ 800 (α); многоугольная фигура из минимальных разделяющих многоугольников (186 контуров, 4694 вершины) (б); скелет (9748 вершин, 9928 ребер) (в); базовый скелет для ε = 2 (7643 вершины, 7823 ребра) (г)
10.3. БАЗОВЫЙ СКЕЛЕТ МНОГОУГОЛЬНОЙ ФИГУРЫ 175 Рис. 10.6. Задача классификации изображений с «бахромой»: бинарные растровые изображения (а), минимальные разделяющие многоугольники (б) Следует отметить, что предложенный метод имеет высокую вычислительную эффективность. Он позволяет осуществить стрижку скелета за время О(п), где η — число вершин фигуры. На рис. 10.5 приведен пример построения скелета и базового скелета многоугольной фигуры, аппроксимирующей растровое бинарное изображений сложной формы. Хаусдорфова метрика не является единственно возможной для построения базового скелета. В примере на рис. 10.6 представлены изображения «с бахромой» двух классов фигур, которые условно можно назвать прямоугольниками и звездами. Для распознавания формы таких объектов при построении их базовых скелетов нужно каким-то образом отсечь «бахрому». Для этого при стрижке скелетов можно использовать следующее правило: Рис. 10.7. Отсечение тонких элементов фигуры: точные скелеты фигур (а); скелеты, укороченные на основе стрижки ребер, имеющих малую ширину (стрижка бахромы) (б)
176 Гл. 10. РЕГУЛЯРИЗАЦИЯ СКЕЛЕТОВ отсекать те ребра, которые имеют ширину, не превосходящую заданного значения. Это значение является регуляризирующим параметром. При этом, конечно, сохраняется условие того, что отсечение ребра не должно нарушать связность скелета. На рис. 10.7 показаны скелеты прямоугольников и звезд и их укороченные скелеты. В процессе стрижки были удалены терминальные ребра скелетов, имеющие ширину менее 14. Ширина ребер определяется по размерам пустых кругов с центрами на этих ребрах. После удаления «бахромы» выполняется обычная стрижка скелета в хаусдорфовой метрике, как это описывалось выше. На рис. 10.8 показаны скелеты, полученные в результате этой стрижки, а также их силуэты. Рис. 10.8. Регуляризация в хаусдорфовой метрике: базовые скелеты фигур (а), силуэты базовых скелетов (б) Очевидно, что скелеты, представленные на рис. 10.8 имеют все необходимые свойства, чтобы решать задачу классификации формы фигур в смысле отнесения их к.прямоугольникам или звездам. Таким образом, регуляризация непрерывных скелетов позволяет получать базовые скелеты объектов, являющиеся существенно более устойчивыми, чем скелеты исходных, зашумленных изображений. Базовые скелеты представляют собой мощный инструмент для решения задач распознавания формы объектов в изображениях.
ЧАСТЬ IV СКЕЛЕТЫ И ЦИРКУЛЯРЫ ГЛАВА 11 ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ 11.1. Задача преобразования формы изображений. 11.2. Циркулярная фигура. 11.3. Жирные линии. 11.4. Граница жирной линии. 11.1. Задача преобразования формы изображений Граничное и скелетное представление формы является удобным инструментом анализа бинарных изображений. Построив граничное представление бинарного образа, мы легко можем выявить такие его важные топологические характеристики, как количество связных компонент изображения, наличие односвязных и многосвязных компонент. Анализ локальных свойств полученной границы дает возможность оценить ее гладкость, кривизну. Также можно вычислить различные метрические характеристики объектов, например, периметры и площади компонент связности. Построив непрерывный скелет бинарного изображения, мы получаем также большое количество информации о составе, расположении и форме объектов, представленных на изображении. Структура скелетного графа, расположение его вершин, длина, кривизна ветвей, ширина (радиальная функция) ветвей — эти и другие характеристики могут быть легко вычислены на основе скелета. Все эти величины оказываются полезными при решении задач машинного зрения, распознавания образов, классификации формы объектов. Но кроме задач анализа существуют также задачи синтеза изображений. Суть их состоит в построении изображения на основе некоторого имеющегося описания. Есть задачи «чистого» синтеза, когда изображение должно быть построено на основе чисто описательного «текстового» представления. Таковыми являются многие задачи компьютерной графики и визуализации. В качестве исходного дается описание сцены в виде некоторого текстового представления, а по нему нужно построить непосредственное изображение этой сцены путем конструирования его из каких-то геометрических примитивов. Однако существуют и более сложные задачи синтеза. Например, когда требуется построить сцену из имеющегося изображения путем каких-то достаточно сложных преобразований. В области компьютерной графики это может быть задача построения анимации для заданных фаз образа,
178 Гл. 11. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ нарисованных художником. При этом нужно построить промежуточные фазы движения. В том случае, когда исходные изображения представлены в растровом виде, переход к непрерывной модели позволяет решить эту задачу. Действительно, преобразования непрерывных форм осуществить гораздо легче, чем преобразования растровых. Для реализации такого подхода необходимо получить непрерывное представление, максимально ориентированное на преобразование изображений. Однако необходимость преобразования изображений возникает не только в компьютерной графике, которая по своей сути решает задачи синтеза изображений. Подобные задачи возникают также и в распознавании образов, где традиционно рассматриваются вопросы анализа изображений с целью построения информативного признакового описания исследуемых сцен. В распознавании образов при решении задач классификации формы объектов важное место занимает метод сравнения с эталоном. Суть его состоит в «прикладывании» тестируемого образа к образам-прецедентам, правильная классификация которых известна заранее. При этом нужно оценить меру сходства тестируемого образа и эталона. Например, при биометрической идентификации личности по форме ладони необходимо сравнить две ладони по их силуэтам — бинарным изображениям. С учетом того, что сравниваемые образы являются гибкими объектами, форма которых весьма подвижна, задача сравнения состоит в том, чтобы рассмотреть все допустимые преобразования формы каждого из этих объектов и подобрать такие, при которых эти объекты максимально схожи. Именно оценка сходства в наиболее близком положении и является мерой сходства гибких объектов. Анализ различных вариантов формы одного и того же объекта должен осуществляться на основе преобразования формы бинарного изображения. Если посмотреть на методы граничной и скелетной векторизации с точки зрения возможностей их использования для преобразования изображений, то станет очевидной ограниченность такого применения. Преобразование граничного представления ограничено простыми аффинными преобразованиями объектов, такими как сжатие, растяжение, масштабирование, сдвиги, повороты и т. д. Однако осуществление более сложных преобразований таких, например, как уменьшение или увеличение ширины отдельных фрагментов или фигуры в целом, вытягивание или изгиб фрагментов, оказывается невозможным либо очень трудоемким. Граничное представление фигур не позволяет выполнять такие преобразования, поскольку из него весьма сложно получить информацию об интегральной структуре фигуры, в частности, определить, какие части граничных контуров являются краями одного и того же узкого вытянутого фрагмента фигуры. Скелетное же представление в принципе не подлежит варьированию через изменение скелета, так как однозначно определяется формой фигуры. В этой главе мы рассмотрим альтернативный способ непрерывного представления бинарного изображения в виде так называемой циркулярной фигуры, представляющей собой объединение бесконечного
11.2. ЦИРКУЛЯРНАЯ ФИГУРА 179 множества кругов. Это способ, сохраняя все возможности для геометрических преобразований фигур, которые имеются при граничном представлении, дополнительно обеспечивает выполнение таких преобразований, как изменение ширины, перемещение и изменение формы отдельных фрагментов фигуры без нарушения ее целостности. 11.2. Циркулярная фигура Рассмотрим множество точек Τ на евклидовой плоскости Д2, имеющее вид связного планарного графа. Граф имеет конечное множество вершин, а его ребра являются непрерывными линиями. При этом ребра не имеют точек пересечения, не совпадающих с их концами. С каждой точкой t G Τ графа Τ свяжем некоторый круг ct с центром в этой точке. Это семейство кругов С = {q, t £ Τ} назовем циркулярным графом, для краткости циркуляром. Граф Τ будем называть осевым графом циркулярного графа. А объединение S = (J ct всех teT кругов семейства С, как точечных множеств, будем называть силуэтом циркулярного графа. Силуэт циркулярного графа представляет собой замкнутое связное множество точек евклидовой плоскости S С Д2, имеющее в качестве границы огибающую всего семейства кругов С. На рис. 11.1 представлен пример циркулярного графа. Рис. 11.1. Циркулярный граф (слева) и его деформация (справа): серединные оси с точками изгиба (а, г); семейство кругов (б, д); силуэт (в, е) Введем также некоторое множество допустимых преобразований циркулярного графа, называемых деформациями, обладающее следующими свойствами: 1. Каждое преобразование сохраняет топологическую структуру циркулярного графа, в частности, планарность и связность;
180 Гл. 11. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ 2. В рамках множества преобразований для каждого преобразования существует обратное, т. е. множество деформаций образует группу. Деформация может включать в себя изменение осевого графа с соответствующим перемещением семейства кругов, а также изменение размера семейства кругов. Деформация влечет соответствующее изменение силуэта циркулярного графа. В общем случае эти преобразования могут быть самыми различными, и определяются в рамках выбора модели для конкретных приложений. Например, можно рассмотреть группу преобразований «вращения в точках изгиба». Она определяется следующим образом. Среди всего множества вершин циркулярного графа выделим некоторое подмножество точек РсТ, называемых точками изгиба. На рис. 11.1, α точки изгиба выделены кружками. В точке изгиба разрешается изменение угла между ребрами, инцидентными этой вершине. Для остальных вершин графа изменение взаимного положения ребер не допускается. Также не допускается изменение формы самих ребер. В другом случае группа деформаций может быть более богатой, например, допускать изменение длины и формы ребер, а также размеров кругов. Пример такой деформации циркулярного графа представлен на рис. 11.2. Рис. 11.2. Исходный циркулярный граф (левый столбец) и две его деформации (средний и правый столбцы): осевой граф (верхняя строка); семейство кругов (средняя строка); силуэт (нижняя строка)
11.3. ЖИРНЫЕ ЛИНИИ 181 Два циркулярных графа называются эквивалентными, если для них существует деформация, в результате которой их силуэты совпадут при наложении. Пусть V — группа деформаций циркулярного графа С. Гибким объектом G = (С, V) называется циркулярный граф и его группа деформаций. Форма гибкого объекта описывается множеством силуэтов всех его эквивалентных циркулярных графов. Таким образом, форма гибкого объекта — это динамическое понятие, связанное со всеми возможными деформациями объекта. Понятие гибкого объекта открывает новые возможности для решения задач синтеза и распознавания формы изображений. Применяя допустимые деформации к циркулярному графу, можно получать различные формы его силуэтов. Для задач компьютерной графики это позволяет преобразовывать заданные формы, например, для создания компьютерной анимации. В задачах распознавания формы изображений деформация дает возможность привести форму к некоторому стандартному положению, т.е. произвести так называемую нормализацию изображения с целью упрощения процедуры сравнения изображений. Практическое использование циркуляров для анализа и преобразования изображений ставит две задачи: — построение циркулярного графа для заданного бинарного изображения; — преобразование циркулярного графа и построение его силуэта. Решение этих задач может быть получено на основе понятия жирной линии. 11.3. Жирные линии Рассмотрим непрерывное дважды дифференцируемое отображение С: [а, Ь] —► R2 χ [0, оо) отрезка [а, Ь] числовой прямой в множество кругов евклидовой плоскости R2. Каждому значению параметра t Ε [α, b] соответствует круг Ct = {(x,y): (x-u(t)f + (y-v(t))2^(r(t)f, (x,y)eR2} (11.1) с центром в точке P(t) с координатами (u(t),v(t)) в некоторой прямоугольной декартовой системе координат и радиусом r(t) Ε [О, оо). Предположим также, что кривая P{t) не имеет особых точек, т.е. u,2 + vf2 > 0 на [а, Ь]. Последнее предположение позволяет упростить изложение, однако результаты могут быть обобщены и на случай кривых с особыми точками. Объединение С = (J Ct всех кругов этого семейства будем на- te[a,b] зывать жирной линией с осью P(t) и шириной r(t). Таким образом, жирную линию можно рассматривать как след от перемещения окружности Ct вдоль кривой P(t). Круги Са и Сь называются концевыми
182 Гл. П. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ кругами жирной линии или начальным и конечным ее кругами соответственно. В качестве примера жирной линии рассмотрим обобщение плоской кривой Безье. Пусть Η = {Щ,Н\,... уНт} — множество кругов на плоскости. Круг Hi имеет центр с координатами (U^Vi) и радиус Rit г = О,..., га. Положим для t G [0,1]: т т т u(t) = Y^Ui-Bim{t), ь^) = ^-В*тЦ), г(*) = £я,. £*,(*), г=0 г=0 г=\ (11.2) где .£%г(0 = τ kr^i' ^' О ~~ 0m_i. г = 0,..., го — полиномы Берн- I fit I ). * 6. штейна. Семейство кругов (11.2) задает жирную линию с осью P(t) = = (u(t),v(i)) и шириной r(i). Ось P(t) представляет собой обычную кривую Безье степени т с характеристическим многоугольником, образованным центрами кругов из Н. По аналогии с обычными кривыми Безье будем называть жирную линию, заданную уравнениями (11;2), жирной кривой Безье степени га, круги из Η — контрольными кругами, а само множество Η — характеристическим многоугольником жирной кривой Безье. На рис. 11.3 показаны жирные кривые Безье шестой степени. Контрольные круги Щ,Н\,. ч. ,Щ изображены сплошной линией, а круги из семейства Ct, соответствующие значениям параметра t = 0,05 · j, j — 0,..., 20, изображены пунктиром. Рис. 11.3. Жирные кривые Безье шестой степени Каждая жирная линия может рассматриваться как отдельный штрих некоторой кисти, имеющей переменную ширину, например, в зависимости от «нажима». Продолжая эту аналогию, можно рассмотреть объединение нескольких жирных линий как общее изображение. Несмотря на относительную простоту самих жирных линий, фигура,
11.4. ГРАНИЦА ЖИРНОЙ ЛИНИИ 183 Рис. 11.4. Фигура, составленная из 17 жирных линий образованная в результате их объединения, может иметь весьма замысловатую форму, состоять из нескольких многосвязных компонент. Количество ее граничных контуров может быть большим и при этом контуры могут находиться один внутри другого (рис. 11.4). Над жирными линиями можно производить преобразования, описываемые через изменение их осей и ширины. В частности, для жирных кривых Безье такое преобразование может быть осуществлено за счет перемещения контрольных кругов и изменения их размеров. Наряду с операцией объединения жирных линий в общую фигуру существует возможность разбиения жирной линии на несколько частей. Обозначим С [α, β] = (J Си где а < /3, [α,/З] С [а, Ь]. Мно- te[a,p] жество точек С [α, β] представляет собой жирную линию, являющуюся подмножеством С. Декомпозицией жирной линии С будем называть множество жирных линий {С[с^,/3г], г= l,...,fc}, где а = а\ < β\ = к = а2 < /?2 = · · · = Oik < Рк = Ь. Очевидно, что С = (J С [ait βι] . г=\ 11.4. Граница жирной линии Граница жирной линии описывается в виде некоторой замкнутой кривой, которая является огибающей для семейства кругов, образующих эту жирную линию. Рассмотрим семейство окружностей {x-u(t))2 + (y-v(t))2 = (r(t))2, te[a,b]. (11.3) Граница жирной линии состоит только из точек этих окружностей. При определенных условиях это множество окружностей, являющееся семейством гладких кривых, имеет огибающую. Как известно из дифференциальной геометрии [19], необходимым условием принадлежности точки (х, у) е R2 к огибающей семейства линий, заданных уравнением F(x, у, t) = 0, является следующее: fF(x,y,t) = 0, \dF(x,y%t) =0 {UA) { dt
184 Гл. П. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ В нашем случае F(x, у, t) = (χ — u(t)) + (у — v(t)) — (г СО) . Подставляя в (11.4) эту функцию, получаем систему уравнений ' (х - и)2 + (у — ν)2 - г2 = О, (11.5) \ (х - и)и' + (у - ν)ν' + rr' = О, которую нужно решить относительно χ и у. Выразив у через χ из второго уравнения и подставив его в первое, находим х, а затем и у. Полученные два решения имеют следующий вид: + X\=U — у\=у- X2=U- и'г'г и'2 + νί2 v'r'r и'2 + ν'2 и'г'г и'2 + ν'2 v'r'r + ν'г у/и'2 + ΐ/2 - _ г/2 и'2 + υ72 и'г у/и'2 + τ/2 - _ г/2 1^/2 + V/2 ν'г у/и'2 + ΐ/2 - _ г/2 ^/2 _|_ у/2 и'гу/и'2 + τ/2 - _ г/2 (11.6) u/2 + v/2 * /9 ι /9 Как видим, условия существования решений есть и'2 + v'2^0 и и'2 +v'2 ^ г'2. Поскольку согласно сделанному предположению ось P(t) не имеет особых точек, то первое из этих условий всегда выполняется. Что касается второго условия, то его нарушение может иметь место. Для соответствующих значений параметра t система (11.5) не имеет решения и, следовательно, огибающие жирной линии не существуют. Решения (11.6) задают две огибающих линии E\(t) = (x\(t),y\(i)) и E2(t) = (x2(t),y2(t)) в виде параметрических кривых. Поскольку, согласно данному нами определению жирной линии, функции u(t),v(t),r(t) дважды дифференцируемы, то и функции #ι СО, 2/1 СО, #2 СО* 2/2 СО также являются дифференцируемыми. Обозначим А = В = гл/и'2 + ν'2 — г'2 и'2 + ν'2 ' ^/2+|/2' Тогда для производных этих функций получаем следующие выражения: х\ =и'- А'и' - Аи" + {В'ν' + Βυ"), у[ =ν'- Α'ν' - Αν" - {В'и' + Ви")\ (11.7) (х'2 = и'- А!и' - Аи" - {В'ν' + Βν"), \yf2 = ν'- Α'ν' - Αν" + {В'и' + Ви"). Рассмотрим более подробно случай, когда условие и'2 + ν'2 > г'2 не выполняется и огибающих (11.6) не существует. Предположим, что в результате декомпозиции жирной линии выделен интервал (α,/З), на котором и'2 + v'2 <r'2. Это означает, что скорость смещения центра
11.4. ГРАНИЦА ЖИРНОЙ ЛИНИИ 185 а) б) Рис. 11.5. Жирные линии, не имеющие огибающих круга Ct меньше скорости изменения его радиуса. Из условия и'2 + + ν'2 > 0, и непрерывности производной rf следует, что г' имеет постоянный знак на (α,/З). В этом случае если г' > О, то г растет и имеет место Ct С Ср для всех t Ε (α, β) (рис. 11.5, а). А если г' < О, то г убывает и тогда Ct С Са для всех t G (α,/З) (рис. 11.5,6). Следовательно, объединение всех кругов Ct при t G (α, β) целиком лежит в одном из кругов Са, Ср. Таким образом, те круги жирной линии, для которых и'2 -\-ν'2 < г'2, никакого участия в формировании границы жирной линии не принимают. Это дает возможность осуществить декомпозицию жирной линии на составляющие, для которых имеет место и'2 + ν'2 > г'2. Теперь рассмотрим жирную линию, для которой огибающие (11.6) существуют. Огибающая семейства окружностей может быть внешней (рис. 11.6, а) или BHVTOPrTTTii" (оис. 11.6,6). Последнее имеет место Внешняя I огибающая ось// Внешние I огибающие ¥ С- \Υ\'· i\\ Внутренняя ί огибающая '"'4 \4 / a) fo Рис. 11.6. Внешние и внутренние огибающие жирных линий в том случае, когда радиус кривизны оси семейства оказывается меньше, чем радиусы составляющих ее кругов. Точки внутренней огибающей заведомо не войдут в границу жирной линии, поэтому нужен критерий для их определения. Таким критерием может служить ориентация огибающей относительно оси. Пусть для круга с центром (и, ν) и радиусом г известна точка касания огибающей (х,у). Направление оси определяется вектором {u't v'), а направление огибающей — вектором (х',у'). Ориентация огибающей называется попутной, если
186 Гл. 11. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ — x'(tl) = y'(tl) = 0 ^x'(t2) = y'(t2) = 0 Рис. 11.7. Изменение ориентации огибающей и' - χ' + ν' · yf > О, и встречной, если и' · xf + ν' · у' < 0. При попутной ориентации огибающая является внешней, а при встречной — внутренней. В примерах на рис. 11.6, α ориентация обеих огибающих является попутной, а на рис. 11.6,6 — ориентация одной огибающей попутная, а другой — встречная. Возможна ситуация, когда огибающая меняет ориентацию с попутной на встречную и наоборот (рис. 11.7). Точкой смены ориентации является особая точка огибающей, в которой xf = у' = 0. Следовательно, если выполнить декомпозицию жирной линии, разрубив ее в тех точках t е [а,Ь], в которых имеет место х\ =у[ =0 или х'2 = у'2 = 0, мы получим жирные линии с постоянной ориентацией огибающих. Рассмотрим, что собой представляет граница такой жирной линии. Если обе огибающие являются внешними, то граница состоит из точек этих огибающих и дуг концевых кругов жирной линии (рис. 11.8, а). Такую линию будем называть двухсторонней. Если же одна из огибающих является внутренней, то она может быть отброшена, поэтому соответствующую жирную линию назовем односторонней. /'""" ^ (( а) б) Рис. 11.8. Огибающие (сплошная линия) и дуги концевых кругов (пунктирная линия) в границе жирных линий изображенных на рис. 11.6
11.4. ГРАНИЦА ЖИРНОЙ ЛИНИИ 187 Рис. 11.9. Пересечение огибающих жирной линии. Выделены участки монотонности оси В этом случае граница жирной линии состоит из точек внешней огибающей и дуг концевых кругов жирной линии (рис. 11.8,6). Для случая двухсторонней жирной линии могут возникнуть такие ситуации, когда огибающие пересекаются сами с собой или друг с другом (рис. 11.9). В некоторых случаях полезно эти ситуации исключить путем декомпозиции такой жирной линии на части, не имеющие самопересечений. Это может быть сделано разными способами. Наиболее простым представляется выделение монотонных участков оси жирной линии. Очевидно, что, если на каком-то интервале ось монотонна по обеим координатам, то попутные огибающие также монотонны и не могут пересекаться ни сами с собой, ни друг с другом. Будем называть такую жирную линию монотонной. Участки монотонности жирной линии можно найти из условий постоянства знака производных координат v!(t) и v'(t). Следовательно, разбиение нужно произвести в тех точках отрезка t G [α, 6], в которых u'(t) = 0 или v'{t) = 0. Таким образом, получаем следующие три правила декомпозиции жирной линии, применяемые последовательно: 1) выделение жирных линий, для которых и'2 +v'2 > г'2; 2) выделение односторонних жирных линий путем поиска особых точек огибающих, в которых х[ =у[ =0 либо х'2 = у'2 — 0; 3) выделение монотонных жирных линий путем нахождения точек, в которых и' = 0 или ν' = 0. В результате такой декомпозиции исходная жирная линия разделяется на простые составляющие, каждая из которых имеет границу в виде простого контура, состоящего из огибающих линий и дуг крайних кругов. Пусть С — (J Ct — простая двухсторонняя жирная линия, имею- t£[a,b] щая огибающие E\(t) и E2(t). Положив At = ^ , построим аппроксимацию огибающих ломаными линиями с угловыми точками Ει (о), Ei(a + At), Ei(a + 2-At), ..., E{(b) и Е2{а), £2(α + Δί), Ε2(α + 2 * At), ... ,E2(b). Тогда, выбрав достаточно большое N, жир-
188 Гл. 11. ЦИРКУЛЯРНЫЕ ФИГУРЫ И ЖИРНЫЕ ЛИНИИ а) б) Рис. 11.10. Аппроксимация жирной линии многоугольником ную линию можно аппроксимировать множеством точек М\% U Ca U U Съ, являющимся объединением двух концевых кругов Са и Сь и многоугольника М\2 с вершинами Е\(а), ... ,Е\(Ь), ^(а), ..., £?г(Ь). Если С — односторонняя жирная линия с внешней огибающей E(t), то построим аппроксимирующее множество точек М\ U Ca U C& из многоугольника Μι с вершинами Е(а), ..., £?(Ь), -P(o)i P{b) и концевых кругов Са и С&. Сами концевые круги также с достаточной точностью можно описать в виде ломаных линий, состоящих из хорд, в результате чего получается многоугольная аппроксимация жирной линии (рис. 11.10), удобная для визуализации стандартными алгоритмами компьютерной графики.
ГЛАВА 12 ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ 12.1. Циркулярное представление бинарного изображения. 12.2. Аппроксимация скелета жирными кривыми Безъе. 12.3. Преобразование жирных кривых Безъе. 12.4. Локализация точки в жирных кривых Безъе. 12.5. Циркулярные координаты точки в жирной линии. 12.1. Циркулярное представление бинарного изображения Задача циркулярного преобразования растрового бинарного изображения состоит в том, чтобы для исходного дискретного представления фигуры получить адекватное непрерывное представление в виде силуэта циркулярного графа. Непрерывный скелет бинарного растрового изображения служит основой для такого представления. Решение задачи основывается на идее аппроксимации скелетного представления многоугольной фигуры жирными линиями. В принципе, скелет многоугольной фигуры представляет собой готовый циркулярный граф, осевой граф которого образуют бисекторы пар смежных сайтов. Формат жирных линий определяется в соответствии с тремя возможными комбинациями пар сайтов: сегмент-сегмент, точка- сегмент и точка-точка. В первом случае (рис. 12.1, а) бисектору Р\Р2, являющемуся отрезком прямой линии, соответствует жирная линия, имеющая ось P(t) = = Р\ + (А - Р\) -t и ширину r(t) = R{ + (R2 - R\) · t, где Pu P2 - центры, а Дь i?2 — радиусы концевых пустых кругов бисектора. а) б) в) Рис. 12.1. Бисекторы для возможных пар сайтов
190 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ Во втором случае бисектор — это отрезок параболы (рис. 12.1,6). Обозначим SO — сайт-точку, S\, S2 — концы сайта-сегмента, Р\, Р2 — центры, Дь i?2 — радиусы концевых пустых кругов бисектора, Qi, Q2 — проекции точек Р\ и Р2 на S1S2. Рассмотрим произвольную точку Ρ на бисекторе и ее проекцию Q на SiS2. Пусть t € [0,1] такое, что Q(t) = Q\ + (Q2 — Q\) * t. Найдем такое ζ, что Ρ = Q + ЦРг ~ Qi) · ζ. Из ||Р - Q||2 - ||P - Soil2 следует \\P\ ~ Q\ II2 ' J = \\Q - So\\2 + (Q - So, Pi - Qi) -z + ||Pi - Qi ||2 · z\ Поскольку (Pi - Q\, Q2 - Q\) = 0 и потому (Q - So, Pi - Qi) = (Qi + (Q2 - Qi)·* - 50,Pi - Qi) = = (Qi-So,Pi-Qi), получаем = HQ-Soll2 = HQi + (Q2-Qi)^-Soll2 ^ (Qi-50,Pi-Qi) (Qi-So,Pi-Qi) Отсюда P = Qi + (Q2-QiH-(Pi-Qi)x HQi - Soil2 + (Qi - S0,Q2 - QQ · t + ||Q2 - Qi||2 ■ t2 (Qi-So,Pi-Q{) Таким образом, координаты точки бисектора выражаются через параметр t с помощью многочленов второй степени. Следовательно, данный бисектор вместе с пустыми кругами можно рассматривать как жирную линию с осью P(t) = Ρ и шириной r(t) ~ R\ · ζ, где t G [0,1]. В третьем случае (рис. 12.1, в) бисектор также является отрезком прямой линии, параметрическое уравнение которого есть P(t) = Р\ + + (Р2 — Pi) · t. Радиус соответствующего пустого круга r(t) = y/iP-So.P-So) = = ф\Р2 ~ Pi ||2*2 + 2(Ρι - So, P2 - P)t + ||Ρι - S0||2 также есть.дважды дифференцируемая функция параметра t, поскольку функция квадратного корня имеет разрыв производной только при нулевом аргументе, а при всех t G [0,1] выражение, стоящее здесь под корнем, строго положительно. Следовательно, и здесь бисектор со своими пустыми кругами описывается жирной линией. Таким образом, каждому ребру скелета многоугольной фигуры может быть поставлена в соответствие жирная линия. Если рассматривать оси этих жирных линий в качестве осей циркулярного графа, то объединение кругов, составляющих жирные линии, образует силуэт этого графа. Поскольку силуэт совпадает с многоугольной фигурой, это дает право рассматривать полученное множество жирных линий в качестве представления исходного бинарного изображения. Однако такое представление не вполне подходит для того, чтобы реализовать идею преобразования изображения, Причина в слишком
12.2. АППРОКСИМАЦИЯ СКЕЛЕТА ЖИРНЫМИ КРИВЫМИ БЕЗЬЕ 191 большом количестве элементарных жирных линий, образующих скелет. Вместо них желательно использовать небольшое число жирных линий другого вида, например, жирные кривые Безье, для которых существует простой механизм преобразования путем перемещения и изменения размеров контрольных кругов. 12.2. Аппроксимация скелета жирными кривыми Безье Задача состоит в построении нового циркулярного графа на основе скелета за счет замены цепочек из жирных линий, образованных бисекторами скелета, жирными кривыми Безье без большого ущерба для точности представления фигуры. В результате должен быть получен циркулярный граф, пригодный для преобразования формы. Построение такого циркулярного графа можно рассматривать как задачу аппроксимации одного циркулярного графа S (скелета) другим циркулярным графом S", составленным из жирных кривых Безье. Пусть силуэты циркулярных графов S и S' есть G и & соответственно. Аппроксимация должна выполняться таким образом, чтобы мера различия G и Gf не превосходила заданной величины. В качестве такой меры различия мы будем использовать хаусдорфово расстояние между силуэтами #((?,Gf) = max{maxd(^,(?), maxd(g,Gf)\, где d(g,Gf) и g£G' g£G d{g,G) обозначают расстояния от точки д до множеств G' и G соответственно в евклидовой метрике. Нужно найти фигуру G1', такую что H(G, Gf) ^ ε, где ε — заданная точность аппроксимации. Мы рассмотрим один из возможных подходов к построению аппроксимирующей циркулярной фигуры G', состоящий в аппроксимации ветвей скелета жирными кривыми Безье. Рассмотрим структуру базового скелета многоугольной фигуры. Он имеет узловые вершины степени 3 или выше, терминальные вершины степени 1 и промежуточные вершины степени 2. Веткой скелета будем называть цепь скелетного графа, в которой все вершины кроме концевых имеют степень 2. Весь скелет может быть представлен как объединение таких веток. В скелете каждой ветке соответствует цепочка жирных линий. Задача состоит в построении жирной кривой Безье, аппроксимирующей эту цепочку. Рассмотрим цепочку из т жирных линий СьСг,... ,Ст, соответствующих одной ветке скелета. Мы хотим выбрать такую жирную линию С из некоторого класса (например, среди составных кубических кривых Безье С G Б3), которая наилучшим образом приближает эту последовательность кругов, решив задачу min Η (С, (J CA. сев3 \ i=i / Эта задача очень похожа на рассмотренную в разделе 6.4 задачу подгонки обычной кривой Безье, аппроксимирующей минимальный разделяющий многоугольник. Основная разница состоит в размерности
192 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ решаемой задачи. Подгонку жирной кривой Безье можно рассматривать как подгонку обычной кривой, но не на плоскости, а в трехмерном пространстве. Роль двух измерений играют координаты центра круга, а в качестве третьего измерения выступает радиус круга. Особенности решения связаны с изменением размерности задачи с 2 до 3. Рассмотрим Ко, К\,..., Кт — пустые круги, выбранные вдоль ветки скелета с достаточно мелким шагом, в последовательности их расположения от одной концевой вершины ветки до другой. Обозначим и = Jw-c/i-i)2 + (ν;-ν^γ + (щ-i?*_i)2, < = i,...,m, m ' = $>. где (Ui,Vi) — центр, а Ri — радиус круга Κι. Начальная хордовая параметризация выглядит так: т Eh to = 0, ti = ——, i= 1,..., m. Аппроксимирующую жирную линию С будем искать в форме крич вой Безье степени η η C{t) = Y^HrBUt), te[o,i], где Но,..., #η — характеристический многоугольник жирной линии C(t). Подзадача при фиксированных значениях параметров {U, г = 0,...,га} состоит в поиске такого характеристического многоугольника, который минимизирует среднеквадратическое расстояние от пустых кругов Ко,К\,...,Кт до соответствующих η им кругов С(U) =Y,Hr Bhfc), т. е. .7=0 т min ^р(КиС{и))2. г=0 Здесь p(Di,D2) = y/{Ux - U2)2 + (VI - V2)2 + (Ri - R2)2 - это расстояние между двумя точками в трехмерном пространстве, представляющими круги D\ = (Ui,VuR\) и D2 = {U2,V2,R2) . В этой оптимизационной задаче целевая функция Ф(#о»... ,Нп) = т = Σ р(Кг> C(U)) представляет собой квадратичную функцию от коор- г=0 динат и радиусов кругов Щ, ·.., Нп. Оптимальное решение находится из системы линейных уравнений, которая получается из условий
12.2. АППРОКСИМАЦИЯ СКЕЛЕТА ЖИРНЫМИ КРИВЫМИ БЕЗЬЕ 193 Уточнение параметризации {U, г = 0,..., га} может быть осуществлено по той же схеме, что и в 6.4, однако опыт практического решения данной задачи свидетельствует, что аппроксимация, получаемая в результате первой итерации при хордовой параметризации, оказывается приемлемой и дальнейшее уточнение параметров не требуется. В результате получается жирная кривая Безье с характеристическим многоугольником #о,...,Яп> обеспечивающая наилучшее приближение для выбранного множества кругов К = (Ко, К\,..., Кт) в среднеквадратичном смысле. Однако при этом возможны большие локальные отклонения полученной жирной линии от кругов. Поэтому для полученной кривой С оценивается выполнение ограничения по отклонению построенной жирной кривой от множества кругов К в хаусдорфовой метрике Н(С, К) ^ ε. В том случае, когда это условие не выполняется, т. е. полученная жирная кривая Безье не обеспечивает требуемой точности аппроксимации, тогда цепочка из га кругов К = (Ко,К\,... ,Кт) разбивается на две более короткие цепочки и задача аппроксимации решается для каждой из них по отдельности. На рис. 12.2 представлен пример, иллюстрирующий описанный подход к циркулярному представлению растрового бинарного изображения. Для исходного изображения размером 461 χ 450 точек (рис. 12.2, а) строится аппроксимирующий минимальный разделяющий многоугольник и его базовый скелет (рис. 12.2,6). Затем строится аппроксимация в) г) д) Рис. 12.2. Получение циркулярного графа из бинарного изображения: исходное растровое изображение (а), скелет фигуры и пустые круги (б), серединные оси полученного циркулярного графа (#), характеристические многоугольники жирных кривых Безье (г), силуэт циркулярного графа (д)
194 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ полученного скелета жирными кривыми Безье третьего и первого порядка. Точность аппроксимации ε = 2. Оси жирных линий представлены на рис. 12.2, в, характеристические многоугольники — на рис. 12.2, г, а результат растеризации полученного циркуляра — на рис. 12.2,d. Сравнение изображений (рис. 12,2, а) и (рис. 12.2,(5) показывает, насколько хорошо полученный циркулярный граф аппроксимирует исходное растровое изображение. Можно отметить также уменьшение размерности циркулярного описания фигуры. В базовом скелете (рис. 12.2,6) 409 вершин, а циркулярный граф (рис. 12.2, г) имеет менее ста вершин в характеристических многоугольниках жирных кривых Безье. 12.3. Преобразование жирных кривых Безье Представление фигуры в виде циркулярного графа позволяет изменять ее силуэт за счет деформаций. На рис. 12.3 представлены возможности деформации отдельной жирной кривой Безье за счет варьирования ее характеристического многоугольника. Кривая четвертой степени, описываемая пятью кругами, из эталонного изображения преобразуется в различные формы, представляя «овощи и фрукты», за счет простых перемещений кругов и изменений их радиусов. Рис. 12.3. Преобразования жирной кривой Безье 4 степени на основе изменения центров и радиусов контрольных кругов: характеристические многоугольники (верхняя строка) и соответствующие силуэты (нижняя строка) Точно так же можно изменять форму жирных линий, описывающих более сложные конструкции. Если в циркулярном графе ребра представлены жирными кривыми Безье, то преобразование этих кривых приводит к изменению формы всего изображения. При этом способ преобразования оказывается весьма простым — это перемещение кругов и изменение их размеров.
12.3. ПРЕОБРАЗОВАНИЕ ЖИРНЫХ КРИВЫХ БЕЗЬЕ 195 а) б) Рис. 12.4. Преобразования циркулярной фигуры из рис. 12.2 за счет изменения размеров контрольных кругов: уменьшение в 2 раза (а), увеличение на 20% (б) В другом примере представлены результаты некоторых преобразований фигуры, полученной из растрового изображения на рис. 12.2, а. На рис. 12.4 показаны преобразования размеров контрольных кругов без изменения их положения. Тем самым можно получить более «худую» или более «полную» фигуры. В примере «похудание» достигнуто за счет уменьшения вдвое радиусов контрольных кругов, а «полнота» — за счет увеличения радиусов контрольных кругов на 20%. Другое преобразование, состоящее в перемещении кругов (рис. 12.5), позволяет изменять форму в гораздо более широком диапазоне на основе полученного циркулярного представления. Перемещение контрольных кругов позволяет существенно деформировать исходный образ. Рис. 12.5. Преобразования циркулярной фигуры из рис. 12.2 за счет перемещения контрольных кругов: новые характеристические многоугольники циркулярного графа (слева), силуэт циркулярного графа (справа) На рис. 12.5 показан характеристический многоугольник фигуры, полученной таким способом, и ее силуэт. Таким же способом выполнены преобразования изображения на рис. 11.2. Следует отметить, что непосредственное выполнение описанных преобразований на компьютере выполняется с очень высокой вычислительной эффективностью. Это позволяет осуществлять их в реальном времени формирования кадров для анимационных эффектов. На рис. 12.6 показан механизм получения анимации.
196 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ famir(ir( Рис. 12.6. Получение анимации на основе преобразования циркулярной фигуры Три кадра, изображенные на рис. П.2, представляют собой силуэты циркулярных графов, имеющих одну и ту же структуру. Ветви этих графов описаны с помощью жирных кривых Безье. Причем две фигуры («жираф» и «осел») получены путем деформации фигуры «бык». Деформация осуществляется путем перемещения контрольных кругов и изменения их размеров. Если представить, что каждый из контрольных кругов перемещается и изменяется непрерывно между этими тремя фиксированными положениями, соответствующими трем фигурам, то изменение фигуры тоже можно рассматривать как непрерывный во времени процесс. Тогда промежуточные фазы анимации получаются путем построения картинок, соответствующих некоторым промежуточным моментам времени. Несколько таких фаз представлено на рисунке. Применение других преобразований для использования в компьютерной графике описано д^главах 13 и 16.
12.4. ЛОКАЛИЗАЦИЯ ТОЧКИ В ЖИРНЫХ КРИВЫХ БЕЗЬЕ 197 12.4. Локализация точки в жирных кривых Безье Задача локализации точки в жирных линиях возникает в компьютерной графике. Суть ее состоит в том, чтобы определить, лежит ли заданная точка внутри жирной линии или вне ее. Наиболее строго эту задачу можно решить, используя неявное описание жирных линий. Для неявного описания жирной линии нужно построить функцию принадлежности точки (х, у) G R2 множеству кругов (11.1): Ύ(χν) = ί1- (х>У)еС> (12 1) Х[Х'У) \0, {х,у)<£С. U U Рассмотрим функцию Ф(х,у,£) = (χ - u(t))2 + (у - v{t))2 - (r(t))2. Точка (χ, у) принадлежит жирной линии, если для некоторого t G [α, b] выполняется условие Ф(х,у, t)^0. Поскольку Ф(х,у,£) непрерывна по t, получаем, что это эквивалентно выполнению одного из следующих двух условий: (1) Ф(х,у,а) <0 или Ф(х,у,Ь) ^0, (2) Ф(х,у,а) > 0 и Ф(х,у, Ь) > 0 и Ф(х,у, t) имеет корень на [а, Ь]. Проверка первого условия требует вычисления значений функции Ф(х,у,£) в точках t = а и t = 6, т. е. локализации точки (х,у) в концевых кругах жирной линии Са и С&. Проверка второго условия сводится к установлению существования корней функции на заданном сегменте и представляет собой существенно более сложную задачу. Рассмотрим случай, когда функции, задающие жирную линию, являются многочленами и, следовательно, Ф(х,у,£) также является многочленом. Например, для жирной кривой Безье второй степени Ф(х, y,t) является многочленом четвертой степени от t. Существование корней многочлена на отрезке [а, Ь] может быть установлено методом Штурма [10]. Обозначим Ψ(ί) = Ф(х,у,£) и рассмотрим последовательность многочленов ho(t),...,hm(t), называемую рядом Штурма, построенную следующим образом. Многочлены hi(t) при г = 0, 1 определяются как ho(t) = Φ(ί), h\(t) = ^f(t). А для г = 2,... ,m - 1 полагаем hi(t) равным остатку от деления полинома /ц-гСО на hi-\(t), взятому с обратным знаком. Последовательность обрывается на hm(i), если hm(t) является константой либо не имеет вещественных корней на [а, Ь]. Число перемен знака в последовательности многочленов /&о(£),.. . ••-,hm(t) в точке t, без учета тех из них, которые обращаются в нуль в точке t, обозначим w(t). Тогда, согласно теореме Штурма, число различных корней функции Ψ(£) на отрезке [а, Ь] равно разности w(a) — w(b). На основании этого при Ф(х,у, а) > 0 и Ф(х, у,6)>0 функцию принадлежности х(х,у) определим следующим образом: νίτ7/1_ ί° ПРИ w{a)-w(b)=0, Xl,W"\l при w{a)-w(b)^0, Для жирной кривой Безье второй степени Φ(ί) = Ф(х, у, t) имеет следующий вид:
198 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ Φ(*)=ίχ-Χ)Ε/*·β2(*)] + 2 2 = Σ Σ [(χ - ^) · (χ - ^-) + (»- ^) · (»- ^)] · *2(*) · вд -О j=0 2 2 i=0 j=0 где су = (χ - Ε/*) · (χ - Uj) + {у - Vi) · (у - Vj) - RiRJ9 <к№ = Bj(t) · ^"(t) = (?) · 0) · *<+' · (l -*)4-<Ч ^o = Ою, V>i = -4coo + 4coi, ^2 = 6coo - 12coi +2со2+4сц, ^з = -4coo + 12coi -4со2-8сц + 4ci2, ^4 = Q)0 - 4coi + 2co2 + 4сц - 4ci2 + C22. Таким образом, оценка принадлежности произвольной точки плоскости жирной кривой состоит в вычислении коэффициентов ψο, ψ\, Ψ2, Фз, Ψ>4 и определении числа корней многочлена Φ(ί) = Ф(х,у,£) на сегменте [а, 6] методом Штурма. 12.5. Циркулярные координаты точки в жирной линии Пусть F = (u(t),v(t),r(t)) — жирная линия. Рассмотрим семейство жирных линий F(X) = (ιχ(ί),ν(ί),λ · r(t)), λ Ε [0,1]. Каждая жирная линия этого семейства имеет одну и ту же осевую линию и отличается лишь своей шириной. F(X) будем называть слоем глубины λ (или просто λ-слоем) жирной линии F. На рис. 12.7 изображено несколько линий семейства, отвечающих значе- * χ ι 2 4 8 16 ниям глубины Λ = 1, -, -, —, —. у 3 9' 27' 81 Пусть G — некоторая точка, при- Рис. 12.7. Семейство слоев жирной надлежащая жирной линии F. Оче- линии видно, что каждая точка жирной линии является граничной точкой для некоторого Α-слоя. Назовем величину λ глубиной соответствующей точки. Вместе с тем, для
12.5. ЦИРКУЛЯРНЫЕ КООРДИНАТЫ ТОЧКИ В ЖИРНОЙ ЛИНИИ 199 а) б) Рис. 12.8. Вычисление циркулярных координат: точка лежит на огибающей (а), точка лежит на дуге концевого круга (б) каждой точки границы λ-слоя F(X) существует единственный круг в λ-слое F(X), для которого эта точка является граничной (рис. 12.8, а): Ct(\) = {(x,y)eR2: (x-u(t))2 + (y-v(t))2^(X-r(t))2}. Этот круг однозначно определяется значением параметра t G [α,b] жирной линии. Обозначим τ = параметр, характеризующий относительное положение круга в семействе. Если круг С* (λ) является концевым в λ-слое F(X), то τ = 0 или τ = 1, иначе 0 < τ < 1. В первом случае точка G лежит на дуге его окружности (рис. 12.8,6). Тогда положение точки на дуге определяется угловым параметром 0 = —, где а — длина дуги концевого круга, являющейся фрагментом границы λ-слоя F(X), а β — длина дуги, отсекаемой на ней точкой G (на рис. 12.8,6 это дуги АВ и AG соответственно). Если же круг не является концевым (рис. 12.8, а), то положение точки G однозначно определяется значением параметра σ = ±1, показывающего, справа или слева от осевой линии лежит точка G. При σ = 1 это правая ветвь огибающей из (11.6), а при σ = — 1 — левая. Таким образом, для любой точки G в жирной линии существует четверка чисел (λ,τ,0,σ), таких, что λ,τ, θ G [0,1], σ = ±1, однозначно определяющая ее относительное положение в жирной линии. Эту четверку чисел будем называть циркулярными координатами точки в жирной линии. В жирной линии без изломов для каждой четверки чисел (λ,τ,0,σ), λ, τ, 0 G [0,1], σ = ±1 существует точка, имеющая такие координаты. Если жирная линия имеет излом, то для некоторых значений координат не существует соответствующей точки. Вычисление циркулярных координат рассмотрим на примере жирной кривой Безье второй степени. Условием принадлежности точки G = (Χ, Υ) λ-слою F(X) является существование некоторого t G [0,1] такого, что (X-u(t))2 + (Y-v(t))2^(r(t))2.
200 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ Поскольку r(t)>0, это эквивалентно выполнению условия t€[0,l] r(t)2 Очевидно, что глубина точки G определяется как минимальное значение λ, для которого выполнено условие (12.2). Следовательно, для нахождения координат λ и τ необходимо найти глобальный минимум . тил (X - u(t))2 + (Υ - v(t))2 гп и гт функции L(t) = ± ——4 )l-ll- на сегменте [0,1]. Производная r(t) этой функции имеет вид тш\ - о (и ~ х)и'т + (? ~ γ)ν'τ ~(и~ х?т' ~ (у ~ Y?r' L W ~ λ ~ъ · Следовательно, точки минимума надо искать среди значений t = 0, t = 1 и корней уравнения (и - X)u'r + {y- Y)v'r -{и- Xfr' -(v- У)У = 0. (12.3) Для жирных кривых Безье второго порядка уравнение (12.3) является алгебраическим уравнением 4 степени где фо + U\t + Ы2 + ЫЪ + Ы* = 0, (12.4) Фо = Ом · 7о - Ою · Ti^o = 0)1 · 7о - Ою · 7ι. Ψ\ = (2θ)2 + сп) · 7о - 2соо · 72 - 0)1 · Ί\Ψ\ = = (2со2 + сп) · 7о - 2θ)0 · 72 - Ом · 7ь ψ2 = 3(ci2 · 7о - 0)i · 72)^2 = 3(ci2 · 70 - 0)1 · 72), ^3 = С12 · 71 + С22 · 70 - (2θ)2 + Си) · 72^3 = = С12 · 71 + С22 · 7о - (2о)2 + сп) · 72, Фа = ci2-7i -С12-72), с^· = otiOtj + /?*/?,, i = 0,1,2, j = г,..., 2, а0 = *70 - Χ, αϊ = 2(17! - 170), α2 = *72 - 2^ + *70, /30 = У0-У, /3i = 2(Vi - Vb), p2 = V2-2Vl+V0, 7o = До, 7i = 2№ - До), 72 = Д2 - 2Λι + До.
12.5. ЦИРКУЛЯРНЫЕ КООРДИНАТЫ ТОЧКИ В ЖИРНОЙ ЛИНИИ 201 Численное решение уравнения (12.4) предполагает сначала разделение его корней, т.е. нахождение таких сегментов \t\,t2\ Q [0, 1], на которых содержится ровно один корень. Поиск этих сегментов легко осуществить с использованием метода Штурма, который позволяет определить число корней многочлена на сегменте [ίι,^]· Начав с сегмента [0, 1], можно половинным делением получить такие сегменты, на которых имеется лишь по одному корню уравнения (12.4). Дальнейшее приближенное вычисление корня в каждом таком сегменте [ti,^] может быть выполнено каким-либо итерационным алгоритмом, например, дихотомией. Среди корней уравнения, а их может быть не более четырех, и значений t = 0, t = 1 нужно найти такое t, для которого функция L(t) принимает наименьшее значение. Это значение определяет две первые циркулярные координаты точки G: глубину λ = y/L(t) и осевой параметр τ = t. Если 0 < τ < 1, то необходимо найти значение параметра σ, т.е. определить, с какой стороны от осевой линии лежит точка G (рис. 12.8, а). Это делается путем определения знака векторного произведения векторов P'(t) = (и1 ,ν') и G - P(t) = (X - и, Υ - ν): σ = sign [u'{t){Y - v{t)) - v'(t)(X - u(t))}. Если же т = 0 или τ = 1, то нужно вычислить угловой параметр Θ. Для этого нужно сначала определить точки сопряжения дуги соответствующего концевого круга и огибающих (рис. 12.8,6), а затем найти нужные углы а и β через соответствующие произведения векторов. На рис. 12.8,6 вычисление углов а и β иллюстрируется для случая, когда круг Ct(X) λ-слоя F(X) является начальным (т.е. τ = 0). Тогда концы дуги А = (#2(0),2/г(0)), В = (х\(0),у\(0)) вычисляются по формулам (11.6). Это позволяет вычислить угол а между векторами PqA и Р$В и угол β между векторами Р$А и P$G, где Ро = -Р(О). Задача обратного преобразования координат, состоящая в вычислении декартовых координат точки на основе ее циркулярных координат, решается следующим образом. В случае, когда 0<т<1, нужно воспользоваться формулами (11.6) для расчета огибающих: если σ = 1, то первой, а если σ = — 1, то второй, подставив в качестве t значение т, а вместо r(t) и rf(t) — соответственно Xr(t) и Xrf(t). В том случае, когда т = 0 или т= 1, нужно вычислить положение точки в соответствующем концевом круге. Рассмотрим, как это можно сделать для начального круга, т. е. при τ = 0. Сначала нужно вычислить концы дуги (на рис. 12.8,6 это точки А и В), на которой лежит искомая точка G с помощью формул (11.6), подставив t = 0 и вместо r(t) и r'(t) — соответственно Хг(0) и Хт'(0). Далее нужно
202 Гл. 12. ЦИРКУЛЯРНОЕ ПРЕДСТАВЛЕНИЕ ИЗОБРАЖЕНИЙ вычислить угол а между векторами PqA и PqB, найти угол β = а · θ и получить точку G поворотом вектора РоА на угол β. Для случая τ = 1 вычисления проводятся аналогично. Циркулярные координаты дают возможность идентифицировать между собой точки разных жирных линий и определять положение точек при преобразовании жирных линий. Это позволяет решать задачи гомеоморфного отображения жирных линий, которые возникают в компьютерной графике.
ЧАСТЬ V ПРИКЛАДНЫЕ ЗАДАЧИ ГЛАВА 13 ШРИФТОВЫЕ ТЕХНОЛОГИИ 13.1. Контурное описание символов шрифта. 13.2. Автоматизация хинтовки шрифта. 13.3. Оценка качества хинтовки шрифта. 13.4. Моделирование рукописного шрифта. 13.1. Контурное описание символов шрифта С математической точки зрения процесс конструирования и использования компьютерного шрифта в наиболее общем виде состоит из нескольких последовательных преобразований изображений из непрерывной в дискретную форму и обратно: 1) художник рисует шрифт тушью на бумаге (непрерывная форма); 2) изображение вводится в компьютер с помощью сканера (дискретизация изображения); 3) формируется контурное описание изображения в виде сплайнов (вновь непрерывное представление); 4) по контурному шаблону генерируются растровые изображения произвольного размера (как правило, уменьшенные) на растровых устройствах вывода (снова переход к дискретной форме). Предметом нашего рассмотрения являются этапы 3 и 4 этого процесса. Суть их состоит в конструировании контурного описания шрифта, ориентированного на воспроизведение в дальнейшем на растровых устройствах. Это контурное описание состоит из двух основных частей: описания границы и описания разметки. Описание границы дает представление всех символов шрифта в виде областей, ограниченных замкнутыми контурами. Описание разметки содержит инструкции по деформации контуров перед заполнением с целью эстетически правильного воспроизведения символов на растровом устройстве. Разметку шрифта профессиональные шрифтовые дизайнеры называют хинтов- кой (от английского слова hint — намек, подсказка). Разработка контурного описания шрифтов обычно осуществляется с помощью специальных шрифтовых редакторов, широко представленных на современном рынке. Работа эта требует значительного ручного труда. Использование непрерывных моделей, в частности, построение непрерывных границ и скелетов имеет целью существенно снизить
204 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ трудозатраты за счет автоматизации наиболее трудоемких этапов построения шрифтов. Каждый символ шрифта можно рассматривать как некоторую черную область на белом фоне. Граница области состоит из нескольких замкнутых контуров. В свою очередь, каждый контур описывается параметрической кривой. В наиболее популярных шрифтовых форматах True Type и Adobe Type для описания контуров используются составные кривые Безье. Составная кривая представляет собой цепочку элементарных кривых Безье. Для описания линейных участков контуров используются кривые первой степени, имеющие вид V(t) = V0-(l-t) + Vi-t с параметром t G [0,1] и концевыми точками Vo и V\. Описание криволинейных фрагментов контуров осуществляется с помощью кривых Безье второй и третьей степени. В формате TrueType это квадратичные кривые с концевыми точками Vo, V2 и контрольной точкой V\\ V(t) = V0 · (1 - tf + Vx · 2t(l -t) + V2-12. В формате Adobe Type используются кубические кривые Безье с концевыми точками Vo, V3 и двумя контрольными точками V\ и V2\ V(t) = Vo · (1 - t)3 + Vx · 3t(l - tf + V2 · 3*2(1 -t) + V3· t\ В составной кривой линейные и криволинейные фрагменты могут чередоваться. Составная кривая задается общим характеристическим многоугольником, составленным из вершин многоугольников элементарных кривых. При этом последовательные элементарные кривые соединяются между собой в концевых точках. В примере на рис. 13.1 показан контур и его характеристический многоугольник. Контур состоит ^ С2 L3 C4 Рис. 13.1. Составная кривая Безье и ее характеристический многоугольник из 8 элементарных сегментов: 4 прямолинейных и 4 криволинейных. Концевые вершины обозначены буквой L, а контрольные — буквой С. Точки соединения элементарных кривых называются узлами. В узловой точке кривые могут иметь либо гладкое, либо негладкое соединение. В первом случае узел называется гладким, во втором —
13.1. КОНТУРНОЕ ОПИСАНИЕ СИМВОЛОВ ШРИФТА 205 угловым. В составной кривой тип узла определяется автоматически в зависимости от положения соседних вершин характеристического многоугольника. Узел является гладким, если он лежит на одной прямой с соседними вершинами, и угловым в противном случае. В примере на рис. 13.1 узлы L3, Lq, Lg, L\2 являются гладкими, a Lo, L-j, L8, L15 — угловыми. Гладкие сопряжения могут образовываться двумя криволинейными сегментами, как в узлах Ьз и L\2, либо криволинейным и прямолинейным сегментами, как в узлах Lq и Lg. Угловыми узлами могут быть точки соединения линейных сегментов, как узлы L-j и L8, либо линейного и криволинейного сегментов, как узлы Lo и L\$. Важное требование, предъявляемое к контурному описанию символов — это наличие узлов во всех экстремальных точках контуров. Экстремальными считаются точки локальных максимумов и минимумов по абсциссе и ординате. В примере на рис. 13.1 узлы L^ и L\2 расположены в экстремальных точках. Очевидно, что если такой экстремальный узел является гладким, то соседние вершины характеристического многоугольника, определяющие касательную в экстремальных точках, располагаются на одной и той же вертикали или горизонтали с экстремальным узлом. В примере точки С\\ и С\з лежат на одной горизонтали с узлом L\2. Задача автоматического построения контурного описания шрифта ставится следующим образом. Исходные данные задаются в виде бинарного растрового изображения, полученного в результате сканирования нарисованной художником-дизайнером картинки. Нужно получить контуры символов, удовлетворяющие перечисленным выше требованиям. Решение этой задачи составляет один из наиболее трудоемких этапов построения шрифта. Автоматизируя этот этап, мы предполагаем, что полученные контуры являются черновыми и будут подвергнуты дальнейшей обработке рукой дизайнера, но при этом человек избавляется от рутинной трудоемкой операции по первичной подгонке кривых Безье к границе растрового изображения. Рассмотрим, каким образом эта задача решается на основе граничного представления формы объектов. Первым этапом решения является аппроксимация границы многоугольниками. Для каждого символа шрифта необходимо выполнить прослеживание границы и построение контуров в виде минимальных разделяющих многоугольников. В результате каждый контур описывается множеством вершин Ρ = {Pi, Рг,..., Рп}> упорядоченных таким образом, чтобы внутренность многоугольной фигуры оставалась слева от контура. Считается, что вершины образуют циклический список, т.е. допустимы обозначения вершин Ро и Рп+ь под которыми понимается по определению Ро — Рп, Ρη+ι — -Pi· Полученный многоугольник представляет собой некоторое начальное приближение для описания контура в виде составных кривых Безье. Строго говоря, эти контуры уже можно рассматривать, как составные кривые Безье первой степени. Однако качество таких контуров, безусловно, неприемлемо с точки зрения шрифтового дизайна. Необходимо заменить там, где это
206 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ возможно, фрагменты ломаных линий в контуре кривыми Безье более высокого порядка. Следующий этап — это разметка многоугольников. Суть разметки состоит в выделении среди вершин полученных многоугольников тех точек, которые должны стать узлами составной кривой Безье. Решение этой задачи включает несколько шагов. Шаг 1. Каждой вершине многоугольника Pif г = 1,... ,п приписывается опорная прямая, проходящая через эту вершину, являющаяся параллельной диагонали многоугольника Ρ^-ι^+ι- соединяющей соседние вершины (рис. 13.2 а). а) б) в) Рис. 13.2. Разметка вершин многоугольника: построение опорной прямой (а), коррекция вертикального сегмента (б), построение экстремального узла (в) Шаг 2. Среди всех сторон многоугольника выделяются те, которые войдут в новый контур в виде прямолинейных сегментов. Очевидно, что таковыми следует считать стороны, имеющие большую длину. Задавшись некоторым пороговым значением длины 1ц, положим, что если |PiPi+i| > Ιο, то сторона P^Pi+i считается линейным сегментом. В этом случае обе вершины Р^ и Ρ^+ι становятся узлами формируемой составной кривой Безье. Значение параметра 1о устанавливается в зависимости от размеров исходного растрового изображения. Для вершин, инцидентных выделенным прямолинейным сегментам, изменяются опорные прямые. В том случае, когда сторона Ρ^Ρ^+ι признана прямолинейным сегментом контура, для вершин Pi и Pi+i в качестве опорной прямой устанавливается сама эта прямая Ρ^Ρ^+ι. Шаг 3. Для построения хорошего шрифта очень важно правильно определить вертикальные и горизонтальные прямолинейные фрагменты контуров. Поэтому среди длинных сторон многоугольника необходимо выделить «вертикали» и «горизонтали». Таковыми признаются стороны, у которых направление близко к координатным осям. Критерием для определения вертикальной стороны является условие |cos(0)| < ει, а горизонтальной стороны — условие |cos(0)| > 1 —ει, где 0 — угол между стороной многоугольника и осью абсцисс. Пороговый пара-
13.1. КОНТУРНОЕ ОПИСАНИЕ СИМВОЛОВ ШРИФТА 207 метр ει устанавливается в зависимости от размеров растрового изображения. Если сторона P*Pi+i признана вертикалью или горизонталью, то в многоугольнике выполнятся коррекция вершин Pi и Pi+\ (рис. 13.2,6). Новые положения вершин Р[ и Р/+1 определяются следующим образом. Если PiPi+i — вертикаль, то полагаем Р/.х = хс, Р/+1.х = хс, а если PiPi+\ — горизонталь, то Р[.у = ус, Р-+Х.у = ус, где хс = Pi,rr+2Pi+1,a;, _ Pj.y + Pj+i.y Ус- g . Шаг 4. В контурах шрифтовых символов на нелинейных участках в экстремальных точках обязательно должны быть размещены узлы составных кривых Безье. Поэтому в многоугольнике нужно выделить экстремальные вершины, которые станут экстремальными узлами составных кривых Безье. Правила выбора экстремальных вершин многоугольника рассмотрим на примере левого экстремума кривой. Первый, наиболее простой случай, когда вершина Рг· лежит левее своих соседних вершин, т.е. Pi.χ < Pi-\.x и Р^.х < Ρ^_μ.χ. Тогда вершинаРг объявляется экстремальным узлом контура. Другое менее очевидное решение принимается в ситуации, когда сторона PiPi+i, имеет вертикальное направление, т.е. Д.χ = Pi+\.x и Р{.х < Pi-\.x, Pi+i-x < Ρ%+2·χ (рис. 13.2,β). В этом случае нужно рассмотреть соседние стороны Ρχ-\Ρχ и Pi+\Pi+2 многоугольника. Если обе эти стороны не отобраны в качестве прямолинейных сегментов на шаге 2, то между вершинами Pi и Ρ^+ι нужно вставить новую вершину Р/, которая станет экстремальным узлом. Координаты этой вершины р. у _1_ Ρ ,1 у вычисляются как Р[.х = Р^.х и Р[.у — г'у г+ . Аналогичным образом определяются остальные экстремальные узлы контура: горизонтальные максимумы, а также вертикальные минимумы и максимумы. В каждом экстремальном узле стандартным образом задается опорная прямая: в верхнем и нижнем экстремумах — горизонталь, а в правом и левом — вертикаль. Шаг 5. На контуре необходимо выделить те точки, в которых составная кривая имеет угловой узел, т. е. точку излома. В качестве критерия используется простое правило: вершина многоугольника Pi признается угловой, если выполняется одно из условий |sin(¥>_i)| < ε2 или |sin(^+i)| > ε2, где ψ-\ и <ρ+ι — углы между опорной прямой вершины Pi и сторонами Pi-\Pi и PiPi+i соответственно. Параметр ε2 выбирается в зависимости от размеров растрового изображения. На этом разметка многоугольника заканчивается. Последний этап построения контурного описания — это вычисление аппроксимирующих кривых. Суть его состоит в следующем. В результате выполнения разметки многоугольника определены те его вершины, которые являются узлами аппроксимирующей составной кривой. Во всех узлах определены также опорные прямые, которые задают направления касательных в узлах контуров. Кроме того, определены
208 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ стороны многоугольников, которые должны войти в составные кривые Безье в качестве линейных сегментов. Таким образом, каждый многоугольник разбивается на фрагменты, представляющие собой либо отдельные прямолинейные сегменты, либо ломаные линии, концевые вершины которых являются угловыми или экстремальными узлами. Для каждой такой ломаной линии теперь можно применить алгоритм построения аппроксимирующей кривой Безье, описанный в разделе 6.4. При этом задача подгонки кривой Безье решается в постановке с фиксированными направлениями касательных в концевых точках кривой. На рис. 13.3 представлен пример применения описанного метода к построению контурного описания одного символа шрифта. Для иллюстрации высокого качества метода приведено растровое изображение а) б) г) Рис. 13.3. Построение контурного описания буквы: растровый образ (а), минимальный разделяющий многоугольник (б), характеристический многоугольник (в), составная кривая Безье (г) с очень низким разрешением. На практике в шрифтовых редакторах сканирование исходных картинок осуществляется с использованием гораздо более высокого разрешения, что существенно упрощает задачу и дает возможность более точно воплотить замысел дизайнера. Описанный подход к построению контурного описания символов шрифта по исходному растровому представлению оказался вполне адекватным с точки зрения дизайнеров — разработчиков шрифтов. В настоящее время описанный алгоритм используется в широко распространенных шрифтовых редакторах.
13.2. АВТОМАТИЗАЦИЯ ХИНТОВКИ ШРИФТА 209 13.2. Автоматизация хинтовки шрифта Задача хинтовки шрифта возникает в связи с необходимостью изображения символов, представленных непрерывными контурными линиями, на растровых устройствах (дисплеях, принтерах). Эта операция называется растеризацией. Контурное описание символа представляет собой массив записей вида (#г,Уг>£г)> задающих вершины характеристического многоугольника. Параметры Х{,у{ — это целочисленные координаты г-й вершины в некотором квадратном поле (обычно это поле имеет размеры 1024 χ 1024 или 4096 χ 4096 в зависимости от шрифтового формата), а & принимает одно из двух значений (On или Off), определяющих тип вершины. Для концевых точек элементарных кривых Безье & = On, а для остальных, так называемых виртуальных, вершин характеристического многоугольника & = Off. При растеризации размер площадки, на которой должен быть помещен символ, очень существенно уменьшается, достигая размеров 30x30 и менее. Воспроизведение символов шрифта на растровом устройстве осуществляется путем масштабирования (сжатия) контуров и последующего их заполнения. При масштабировании координаты вершин характеристического многоугольника умножаются на масштабный коэффициент, определяющий степень сжатия и зависящий от разрешающей способности устройства и требуемого размера формируемого изображения символов. А заполнение состоит в закраске тех пикселей растра, центры которых попали внутрь области, ограниченной масштабированными контурами. Между масштабированием и заполнением, однако, должна быть выполнена еще одна операция, связанная с эстетическими требованиями, предъявляемыми к изображению символов шрифта (буквы должны иметь одинаковую ширину штрихов, быть симметричными и т.д.). Она состоит в специальной деформации масштабированных контуров перед их заполнением для того, чтобы искажения, неизбежные при дискретизации, удовлетворяли определенным требованиям эстетического характера. Если эту деформацию не сделать, получаются некачественные изображения, что выражается, в частности, в непостоянстве ширины штрихов, нарушении симметрии символов (рис. 13.4). Особенно эти эффекты заметны на растровых устройствах низкого разрешения. Деформация масштабированных контуров перед заполнением управляется специальными инструкциями, входящими в описание шрифта наряду с описаниями самих контуров. Процесс подготовки этих инструкций и составляет содержание хинтовки. Хинтовка является важнейшим этапом разработки компьютерного шрифта, определяющим в значительной степени его качество. Она представляет собой трудоемкую длительную процедуру, требующую высокой квалификации оператора. Необходимо проанализировать структуру символов, выявить вертикальные и горизонтальные штрихи, засечки, симметричные элементы и т. д. Далее нужно составить инструкции в терминах привязки вершин характеристического многоугольника
210 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ ооооооооооооо 5 С >€? х ν Μί^ψο OUOOOOpOO odqfooo' " oodcboo oodofooo ooqohoo >o ОС Ос Ос o< o< ОФФООСЬСЗОООФ-ЬО ооооооооооооо iOOO ΌΟΟ \obo ©bo a) ооооооооооооо ООООШВЖ)0000 ΟΟΟ)6ρθθ0νΟνΟΟΟΟ οοσαοοοορφοοο ооасюоооёфооо οοαοροοορροοο о о ок^о оарЪ о о о ООО€)ЫЖ^0ООООО ооооооооооооо б) Рис. 13.4. Ошибки растеризации при отсутствии хинтовки: неодинаковая ширина штрихов (а), нарушение симметрии (б) к целочисленной сетке, выполнение которых должно обеспечить правильное изображение этих элементов при масштабировании. При этом инструкции должны работать для самых разных коэффициентов масштабирования. Хинтовка плохо поддается автоматизации. Человеческий глаз легко находит структурные элементы символов, но автоматическое их выявление по контурному описанию представляет собой непростую задачу. Две точки из разных контуров «не знают» о том, что они относятся к одному штриху и должны перемещаться синхронно при деформации. Принадлежность точек одному штриху есть глобальное свойство структуры символа, а контурное представление границы задает лишь локальные свойства: каждая точка «знает» лишь своих соседей по контуру. Тем не менее, использование гранично-скелетного представления символов шрифта открывает возможности для частичной автоматизации хинтовки. Основная идея подхода состоит в использовании скелета для выявления в символах шрифта элементов, называемых вертикальными, горизонтальными и диагональными штрихами, и разработке правил деформации этих элементов при масштабировании. Реализация этой идеи и включает следующие шаги: — построение скелета символа по его контурному представлению; — выявление структурных элементов символа по его скелету, формой описания структурных элементов при этом является подмножество пустых кругов, называемых реперными кругами; — установление инцидентности структурных элементов символа (реперных кругов) и характеристических многоугольников, описывающих границу символа; — описание деформации скелетного представления символа при растеризации в виде смещения реперных кругов и изменения их диаметров; — описание деформации контурного представления символа в виде смещения вершин характеристических многоугольников в соответствии со сдвигом и деформацией инцидентных реперных кругов. Скелет символа, представленного в виде составных кривых Безье, строится следующим образом. Сначала контуры границы аппроксими-
13.2. АВТОМАТИЗАЦИЯ ХИНТОВКИ ШРИФТА 211 руются многоугольниками, образованными из хорд исходных контуров. Длина хорд выбирается таким образом, чтобы точность аппроксимации была достаточной, т.е. отклонение хорды от границы не должно превышать заданной малой величины. После этого строится скелет многоугольной фигуры, в котором затем выделяется базовый скелет. Базовый скелет очень хорошо аппроксимирует скелет исходного символа. Следующим шагом находится некоторое (обычно небольшое) количество пустых кругов, достаточное для описания структурных элементов символов. Такие круги будем называть реперными. На основе анализа скелетного представления полигональной области нужно найти реперные круги, определяющие такие структурные элементы символов, как прямолинейные, экстремальные и концевые штрихи (рис. 13.5). Эти элементы необходимы для правильной растеризации шрифта. Горизонтальные Экстремальные // по ширине Рис. 13.5. Классификация реперных кругов Прямолинейные штрихи связаны с протяженными линейными ребрами в скелете. Если при этом пустые круги с центрами в концах линейного ребра имеют одинаковый диаметр, то ребро определяет прямолинейный штрих постоянной ширины. Эти крайние круги объявляются реперными. Экстремальные штрихи находятся путем поиска экстремальных по вертикали и горизонтали точек скелета. Пустые круги с центрами в этих точках также объявляются реперными. Концевые штрихи находятся на основе выявленных терминальных вершин скелета. Пустые круги с центрами в этих точках касаются границы символа в трех точках. Эти пустые круги также становятся реперными. Все множество реперных кругов будем рассматривать как объединение трех подмножеств, частично пересекающихся: вертикальные, горизонтальные и диагональные круги. К вертикальным относятся реперные круги вертикальных, экстремальных по ширине и концевых штрихов. К горизонтальным кругам отнесем круги горизонтальных, экстремальных по высоте и концевых штрихов. К диагональным относятся круги диагональных штрихов. Основная проблема растеризации состоит в корректном размещении штрихов на растре. С этой точки зрения реперные круги являются
212 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ удобным инструментом модификации штрихов применительно к конкретному размеру символа и разрешающей способности растра. Действительно, небольшие смещения штрихов можно описать смещением соответствующих реперных кругов, а изменения ширины штрихов — изменением диаметров реперных кругов. Но, поскольку стандартные алгоритмы заполнения областей на растре используют контурное представление символа, нужно деформировать контуры адекватно деформации реперных кругов. Для этого необходимо установить инцидентность между контурами и соответствующими реперными кругами. Инцидентность легко описать, связав вершины характеристических многоугольников с реперными кругами. При этом нас интересуют не все, а лишь наиболее важные инцидентные связи. Для «вертикального» круга нужно найти инцидентные вертикальные стороны характеристического многоугольника, для «диагонального» — диагональные и т.д. Пример установления таких связей приведен на рис. 13.6. Инцидентность вершин характеристических многоугольников и кругов изображена линиями, соединяющими эти вершины с центрами кругов. п !z::^m Ж AT/ Рис. 13.6. Инцидентность характеристических многоугольников и реперных кругов Большинство вершин характеристических многоугольников оказывается инцидентными каким-либо кругам, причем некоторые вершины инцидентны сразу нескольким кругам, например, вертикальному и горизонтальному. Поскольку инцидентные связи являются составной частью описания разметки и, следовательно, требуют ресурсов памяти в коде шрифта, желательно было бы минимизировать их число. Можно существенно сократить число запоминаемых инцидентных связей для вертикальных и горизонтальных кругов за счет интерполяции..Суть ее состоит в том, что если пара вершин характеристического многоугольника смещена, то можно пропорционально изменить координаты всех вершин, лежащих между ними. Причем такая операция может быть проведена отдельно по каждой из координат. Это позволяет запоминать лишь существенные инцидентные связи. В примере на рис. 13.6 эти связи изображены сплошными линиями. Особо следует отметить описание инцидентности для диагональных штрихов. Здесь используется следующий искусственный прием. Он состоит в введении дополнительных вершин в характеристический многоугольник в точках касания его сторон с диагональными реперны-
13.2. АВТОМАТИЗАЦИЯ ХИНТОВКИ ШРИФТА 213 ми кругами. В приведенном примере такие дополнительные вершины появляются в контуре буквы N. Таким образом, на основе совместного анализа контурного и скелетного представлений символов шрифта мы определяем структуру символов и формируем взаимосвязь глобальных (структурных) свойств с локальным описанием границы. Этот анализ осуществляется на этапе хинтовки компьютерного шрифта, поэтому к нему не предъявляется требований по высокой скорости исполнения. Деформация контуров при растеризации далее осуществляется на основе следующей информации: — перечень реперных кругов с указанием их типа; — перечень инцидентных связей «точка контура — реперный круг». Рассмотрим теперь вопрос о том, как, используя эту информацию, осуществить соответствующую деформацию контуров в процессе растеризации символов шрифта. При растеризации символы шрифта должны иметь определенную высоту, выраженную в числе точек растра, которая вычисляется через разрешающую способность растрового устройства и требуемый размер изображаемого символа. Приведение символов к этому размеру осуществляется путем масштабирования скелетного и контурного представления. Масштабирование состоит в простом умножении координат центров и величин диаметров кругов, а также координат вершин характеристических многоугольников на масштабный коэффициент. Деформация скелетного представления включает в себя две последовательные операции над масштабированными реперными кругами: коррекцию диаметров и коррекцию центров. Коррекция диаметров кругов выполняется дифференцированно для кругов различного типа. Диаметры горизонтальных и вертикальных кругов просто округляются. При этом, если зна- \ чение диаметра меньше единицы, оно округляется '\р2\ до единицы, в противном случае — до ближайшего \оо\ ш целого. \, Особое правило применяется для коррекции диаметров диагональных кругов. Здесь изменение )\ ширины штриха должно быть подобрано таким ч образом, чтобы после растеризации штрих также рис 13.7. Диаго- имел постоянную ширину. Диагональный штрих нальный штрих по- на растре имеет постоянную ширину, если его стоянной ширины размер одинаков вдоль каждой строки или каждого столбца (в зависимости от угла наклона штриха). Если угол наклона φ лежит в пределах от 45° до 135° (этот случай представлен на рис. 13.7), то нужно обеспечить постоянную ширину вдоль строк, а если угол лежит между 0° и 45° или 135° и 180° — то вдоль столбцов. Коррекция диаметра круга, при которой полученный в результате деформации штрих обладает этим свойством, достигается следующим
214 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ преобразованием: ίRound (-^-) · cosy? при φ G [45°, 135°], D=\ VcosW Round (^—) · siny? при φ e [0°,45°) U (135°, 180°]. Здесь d — старое значение диаметра, a D — новое. Операция округления Round(x) = max{l, [x\} возвращает 1, если х < 1, иначе максимальное целое, не превосходящее х. Коррекция диаметров реперных кругов обеспечивает сохранение одинаковой ширины штрихов на растре. Однако для сохранения симметрии символов при масштабировании требуется изменить положение реперных кругов. Введем понятие пиксельных и межпиксельных линий растра. Пиксельные линии растра — это два семейства вертикальных и горизонтальных прямых, проходящих через центры пикселей. Межпиксельные линии растра — тоже два семейства прямых, но проходящих точно посредине между соседними пикселями. На множестве реперных кругов естественным образом устанавливается упорядочение в соответствии с обходом внешнего контура символа. Обход начинается с самой левой вершины контура против часовой стрелки. Далее все круги расставляются на растровой решетке по мере обхода. При этом осуществляется коррекция положения центров кругов, исходя из следующих правил. 1. Центры всех вертикальных и горизонтальных реперных кругов должны быть установлены соответственно на вертикальные или горизонтальные линии растра. Это достигается смещением вертикальных кругов вдоль оси абсцисс, а горизонтальных — вдоль оси ординат. Если диаметр круга выражается нечетным числом, то центр круга устанавливается на пиксельную линию, а если четным, то на межпиксельную линию (рис. 13.8). В примере показана установка вертикальных в) г) Рис. 13.8. Смещение реперных кругов при растеризации
13.2. АВТОМАТИЗАЦИЯ ХИНТОВКИ ШРИФТА 215 (рис. 13.8, а, б) и горизонтальных (рис. 13.8, в, г) реперных кругов с нечетным и четным диаметрами. Направления перемещения показаны стрелками. На рис. 13.8, α, β изображено исходное положение кругов, а на рис. 13.8,6, г — их положение после сдвига. 2. Сдвиг вертикальных и горизонтальных кругов выполняется по- разному. Это объясняется тем, что символы шрифта должны иметь строго определенные размеры по высоте, а по ширине символов такого требования нет. Незначительные отклонения символов по ширине легко компенсируются с помощью пробелов между символами в строке. 3. Сдвиг горизонтальных реперных кругов по ординате выполняется следующим образом. Сначала устанавливаются все базовые линии по межпиксельным линиям растра. Те круги, что инцидентны базовым линиям, устанавливаются так, чтобы сохранить контакт с этими линиями, а центры остальных кругов смещаются просто на ближайшие растровые линии в семействе, соответствующем четности их диаметров. На рис. 13.9 показана установка горизонтальных кругов для символа «G». te. 5Л Ф- *и φ L'= \x,-x,[/L б) Рис. 13.9. Коррекция размеров и центров реперных кругов Базовые линии изображены пунктиром с точкой, пиксельные линии растра сплошные, а межпиксельные — пунктирные. 4. Сдвиг вертикальных реперных кругов по координате χ осуществляется, начиная с самого левого круга. Далее в порядке обхода скелета устанавливаются все встречающиеся вертикальные круги. При этом очередной круг устанавливается относительно круга, предшествующего ему при обходе. В основе лежит анализ расстояния между центрами реперных кругов. На рис. 13.9, α номерами показана последовательность установки вертикальных кругов. Пусть круг С\ уже установлен, а следующий за ним при обходе скелета круг С% требуется установить. Обозначим координаты центров кругов по оси χ до установки х\ и х^, а после установки Х\ и Х^ соответственно. Пусть L = \х\ — х%\ есть расстояние между центрами кругов до сдвига обоих. Координата Х% определяется следующим образом. Если круг С\ лежит левее Сг, то центр С% устанавливается на вертикальную линию растра (пиксельную или межпиксельную — в зависимости от четности диаметра Сг), лежащую правее Х\ + L. А если С\ лежит правее Сг, то на линию, лежащую левее Х\ — L. На рис. 13.9, б демонстрируется установка круга 2 относительно круга 1.
216 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ 5. Центры всех диагональных кругов устанавливаются на основе линейной интерполяции их координат между центрами установленных вертикальных и горизонтальных кругов. Таким образом, в результате изменения размеров и положения ре- перных кругов скелетное представление символа деформируется адекватно растру. Теперь необходимо соответствующим образом деформировать контурное представление символа. Деформация контурного представления состоит в смещении вершин характеристических многоугольников. Смещение вершин характеристических многоугольников, инцидентных реперным кругам, непосредственно определяется деформацией и сдвигом этих кругов. Стороны характеристических многоугольников, инцидентные реперным кругам, являются касательными к этим кругам. Поэтому сдвиг этих сторон должен осуществляться таким образом, чтобы сохранить касание с измененными кругами. Вершины характеристических многоугольников, инцидентные вертикальным кругам, смещаются с ними по координате х, а инцидентные горизонтальным кругам — по координате у. Что касается диагональных кругов, то поскольку инцидентные им вершины лежат непосредственно на диагональных кругах, то и смещаются они адекватно изменению кругов, оставаясь на этих кругах. Все оставшиеся вершины, не инцидентные реперным кругам, смещаются на основе линейной интерполяции между установленными вершинами. Приведенный на рис. 13.10 пример растеризации символа R иллюстрирует деформацию скелетного и контурного представлений символа для случая, когда его высота должна составить 7 точек растра. б) Рис. 13.10. Растеризация символа для размера 7 точек по высоте Описанный подход оставляет большую свободу для выбора конкретных алгоритмов реализации. Особенно это относится к этапу деформации скелетного представления символов. Причем роль различных эвристических приемов остается довольно высокой. Опыт реализации конкретных алгоритмов хинтовки применительно к формату True Type и проведенные эксперименты позволяют оценить принципиально качество предложенной идеи. Реализация состояла в создании программы автоматической хинтовки, входом которой является любой шрифт, описанный в формате True Type. При этом используется лишь описание
13.2. АВТОМАТИЗАЦИЯ ХИНТОВКИ ШРИФТА 217 контуров границы символов, а остальная информация игнорируется. Выходом разработанной программы является новое представление этого шрифта в формате True Type с хинтовкой, построенной автоматически с помощью предложенного подхода. Все описанные выше операции по деформации скелетного и растрового представлений представлены в виде True Type инструкций. Эксперименты проводились с тремя шрифтами: Arial, Newton и Inform, причем оценка делалась лишь для 52 наиболее часто употребляемых символов. Приведенные образцы (рис. 13.11) показывают результаты растеризации. В первой строке алфавит изображен шрифтом Arial, высотой 12 точек. Во второй строке для сравнения приведены ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxVz ABCDEFGHIJKLMNOPQKSTlA^WXYZabcdefgMj ABCDEFGHmiLMNOPQRSTUVWXYZabc^^^ ABCdEFGmJKmitQPQiRSWVmYZabcdefghijklmnopqrstavwHyi ABmmiJKmmPURmvmYZubcdefghiikimnopqrstuvwxyz Рис. 13.11. Эксперимент по автоматической хинтовке шрифтов результаты растеризации для шрифта, разметка которого проводилась вручную по традиционной технологии. В третьей и четвертой строках алфавит изображен шрифтом Newton высотой 14 точек. Здесь тоже приведен вариант автоматической разметки и для сравнения — ручной разметки. Наконец, в пятой и шестой строках изображен алфавит шрифтом Inform высоты 17 точек. В табл. 13.1 приведены данные о величине полученного кода инструкций. В последней строке таблицы имеются в виду инструкции, подготовленные в формате процедур, описанных выше. Таблица 13.1 Среднее число точек в контурах на один символ Среднее число реперных дисков на один символ Среднее число инструкций на один символ Arial 24.5 7.0 24.1 Inform 53.8 6.4 26.5 Newton 44.0 9.9 37.1 Проведенные эксперименты продемонстрировали не только достоинства данного подхода, но и обозначили вопросы, которые требуют дополнительной проработки. Главная проблема — это обеспечение эффективности алгоритма. Особо нуждаются в усовершенствовании правила деформации скелетного представления при растеризации. Именно здесь имеются наибольшие ресурсы повышения качества воспроизведения шрифта на растровом устройстве.
218 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ В заключение заметим, что подготовка компьютерного шрифта, несмотря на значительную долю рутинной работы, является искусством. Поэтому, говоря об автоматизации процесса хинтовки, не следует рассчитывать на полностью автоматическое решение задачи. Подготовка высококачественного шрифта всегда будет требовать ручной работы художника. Речь может идти лишь о повышения уровня автоматизации рутинных операций. Следует также отметить, что использование гранично-скелетного представления дает удобный аппарат не только для автоматической, но и для ручной хинтовки шрифтов. 13.3. Оценка качества хинтовки шрифта Под качеством хинтовки шрифта понимается степень полноты и правильности инструкций по растеризации для всех начертаний, размеров и разрешающих способностей устройств отображения. Именно качество подготовки инструкций в значительной степени определяет стоимость шрифта, объемы и области его использования. Поэтому современные разработчики шрифтов, как самостоятельные дизайнеры, так*и производящие компании, уделяют вопросам хинтовки большое внимание. Существует сложившийся рынок услуг в области хинтовки вновь созданных шрифтов, а также в части независимого контроля качества хинтовки. Наиболее полно контроль качества хинтовки осуществляется визуально путем последовательного просмотра оператором-дизайнером всех символов шрифта для всех начертаний и размеров на растровом дисплее. В ходе этого процесса ведется протокол учета замеченных недостатков, на основании которого в дальнейшем осуществляется доработка шрифтового описания. Этот процесс является весьма трудоемким и длительным, что объясняется несколькими причинами. Во-первых, количество картинок, которые должен оценить дизайнер, очень велико. Число таких картинок определяется общим количеством символов шрифта (от нескольких десятков до нескольких сотен), количеством шрифтовых начертаний (регулярное, курсивное, жирное и т.п.), а также диапазоном размеров символов, выраженных в количестве точек растра. Так, для контроля хинтовки 100 символов шрифта для 5 начертаний и 20 вариантов размера нужно просмотреть 100 χ 5 χ 20 = 10000 картинок. Во-вторых, оценка качества хинтовки основывается на большом числе (до десяти) плохо формализуемых эстетических критериев. В-третьих, кроме посимвольного анализа необходимо контролировать интегральные свойства всего семейства начертаний шрифта, поскольку ряд критериев касается именно этих свойств. Эти причины приводят к тому, что процесс контроля качества хинтовки становится весьма трудоемким, предъявляет высокие требования к квалификации и опыту оператора-дизайнера. В конечном
13.3. ОЦЕНКА КАЧЕСТВА ХИНТОВКИ ШРИФТА 219 счете, он требует большого времени для реализации и приводит к существенному удорожанию производства качественных шрифтов. Указанные обстоятельства делают актуальной задачу разработки программных средств автоматизации контроля хинтовки. Задача состоит в разработке программного обеспечения — инструмента оператора- дизайнера, способного выполнить большую часть рутинных операций по контролю качества хинтовки шрифтов, оставив на долю человека- оператора лишь анализ особо сложных случаев, число которых, как правило, весьма мало. Предлагаемый подход к решению задачи основан на использовании математического аппарата дискретно-непрерывных преобразований бинарных изображений. В основе его лежит непрерывное гранично- скелетное представление формы дискретных (растровых) образов.. С помощью указанных методов из растрового бинарного изображения символов шрифта получается сначала их граничное описание в виде многоугольных фигур, а затем скелетное описание в виде серединных осей. Анализ этих описаний позволяет выявить особенности как отдельных символов (симметричность, вертикальные и горизонтальные штрихи, прилегание к базовым линиям и т.п.), так и общие свойства шрифта (ширины штрихов, букв, высоты выступающих и свисающих элементов, наплывы и т. п.) Процесс контроля качества хинтовки шрифта включает в себя два этапа: — определение свойств отдельных символов шрифта, общих свойств начертаний и свойств шрифта в целом; — непосредственную проверку выполнения эстетических критериев при растеризации шрифта для различных размеров. Главным достоинством гранично-скелетного представления является возможность выявления топологических и метрических свойств символов и количественное описание критериев в терминах этих свойств. Определить свойства символов шрифта наиболее полно можно по его контурному представлению в векторном виде. Однако поскольку существует несколько форматов описания шрифтов, а возможность анализировать контурные описания необходимо иметь в каждом формате, мы используем другой, более простой путь, позволяющий дать универсальное решение задачи для любых форматов. Суть его состоит в растеризации символов шрифта с высоким разрешением стандартными программными средствами и векторизации полученного дискретного изображения. Высокое разрешение достигается путем задания большого размера символов. Например, при растеризации символов с высотой 400-500 точек полученный растровый образ передает все особенности формы, которые заложены в контурном описании символов. Такую растеризацию будем называть крупноразмерной. Картинки с изображенными таким образом символами подвергаются гранично- скелетному преобразованию. Анализ границ и скелетов символов позволяет определить их свойства: базовые линии, количество граничных контуров в символах,
220 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ Штрихи Базовые линии Рис. 13.12. Определение параметров шрифта по границам и скелетам символов ширину вертикальных и горизонтальных штрихов. На рис. 13.12 показан пример выявления таких свойств. Непосредственный контроль качества хинтовки осуществляется путем растеризации символов шрифта на растре с низким разрешением. Такие картинки с изображениями символов будем называть мелкоразмерными. Для проверки шрифта выполняется его масштабирование и растеризация. Для мелкоразмерных картинок также строятся границы и скелеты символов шрифта и вычисляются соответствующие свойства. Непосредственный контроль хинтовки выполняется путем сравнения границ и скелетов символов, изображенных в большом масштабе, с символами малого размера. На крупных изображениях символов эффект искажения за счет растеризации практически отсутствует, что позволяет хорошо определить «истинные» свойства символов. А на мелких изображениях, где искажения растеризации сказываются существенно больше, эти свойства могут быть проконтролированы. Непосредственная проверка этих свойств позволяет выявить дефекты хинтовки. На рис. 13.13-13.15 приведены примеры различных дефектов, которые могут быть при этом найдены. На рис. 13.13 представлены примеры дефектов, связанных с неодинаковой шириной штрихов. Для крупномасштабных изображений С Η Ш——М с Η а) б) в) UZM г) Рис. 13.13. Определение неверной ширины штрихов
13.3. ОЦЕНКА КАЧЕСТВА ХИНТОВКИ ШРИФТА 221 символов в столбце (рис. 13.13, а) построены границы и скелеты. В скелетах выделены экстремальные круги (рис. 13.13,6). Рядом в увеличенном масштабе представлены изображения этих же символов при растеризации (рис. 13.13, в). Для них также построены границы и скелеты и выделены экстремальные круги (рис. 13.13, г). Дефект растеризации состоит в том, что экстремальные круги, имевшие в крупноразмерном изображении одинаковые размеры, в мелкоразмерном изображении отличаются друг от друга. В символе «С» это экстремальные по вертикали круги, а в символе «Н» — концевые круги на ножках буквы. На рис. 13.14 показано, каким образом выявляется ошибка хин- товки, связанная с установкой базовых линий для символов шрифта. gcj gc jg Рис. 13.14. Определение ошибок в базовых линиях Такая ошибка проявляется при сравнении контурных представлений символов минимальными разделяющими многоугольниками. Символы «g» и «с» в крупноразмерном представлении имеют верхнюю границу по базовой линии высоты строчных букв. А в мелкоразмерном представлении верхние границы этих символов не совпадают. Аналогично нижние границы символов «g» и «j» проходят по базовой линии нижних выносных элементов. А в мелкоразмерном представлении они также не совпадают. Это свидетельствует о некачественной хинтовке соответствующих символов. На рис, 13.15 показан механизм выявления ошибок «слипания» контуров символов, которые возникают при очень малых размерах символов. Признаком того, что произошло слипание, является изменение количества граничных контуров в символах. Символы «6», «а», «е» в крупномасштабном изображении имеют по два граничных контура. А в мелкомасштабной картинке за счет слипания образуются дополнительные контуры. В результате изображения каждого из этих символов в приведенном примере имеют по три контура — один внешний и два внутренних. Это свидетельствует об ошибке в хинтовке для соответствующего размера шрифта.
222 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ Рис. 13.15. Определение ошибок «слипание контуров» Рис. 13.16 демонстрирует еще один вид ошибок, которые могут быть выявлены на основе анализа гранично-скелетного представления символов шрифта. Это ошибки типа «клякса», образующиеся при сильном уменьшении символов за счет слипания пикселей от пересекающихся линий. Такие сгустки выявляются путем анализа размеров кругов в скелетном представлении. Рис. 13.16. Определение ошибок «клякса» Приведенные примеры демонстрируют те правила контроля качества хинтовки, которые сводятся к анализу отдельных символов, либо пар символов. Однако аналогичным образом можно контролировать критерии, относящиеся к большим множествам символов. Например, для всех символов одного начертания. Либо для всего шрифта в целом. Анализ гранично-скелетного представления крупномасштабных и мелкомасштабных изображений дает возможность автоматизировать контроль качества хинтовки по следующим критериям: — прилегание символов к горизонтальным линиям разметки; — ширина вертикальных и горизонтальных штрихов; — симметрия символов; — соответствие ширины штрихов и размеров символов в рамках всего семейства начертаний; — отсутствие утолщений в местах соединения штрихов; — соответствие ширины пробелов и символов и др. Исходными данными для работы программы является имя шрифта, перечень критериев, по которым должен быть проведен контроль, а так-
13.4. МОДЕЛИРОВАНИЕ РУКОПИСНОГО ШРИФТА 223 же список шрифтовых начертаний и размеров, подлежащих контролю. В результате работы программы автоматического контроля оператор получает подробный протокол выявленных ошибок и неточностей с указанием начертания, символа, размера и нарушенного критерия качества. Эксперименты показывают, что время, затрачиваемое оператором на контроль хинтовки, уменьшается при использовании программой автоматической хинтовки в 50-100 раз по сравнению с ручной технологией. Вместе с тем, следует отметить, что автоматический способ не обеспечивает в полной мере выявление всех нарушений эстетических критериев, которыми руководствуется профессиональный шрифтовой дизайнер. Он лишь облегчает выполнение рутинных операций, требующих больших трудозатрат. А окончательная доводка шрифта все равно должна быть выполнена вручную. 13.4. Моделирование рукописного шрифта Существует огромное количество разнообразных компьютерных шрифтов для различных задач и приложений. Основным потребителем шрифтов являются производители печатной (типографской) продукции. Шрифты разрабатываются профессиональными художниками- дизайнерами. Однако, помимо этого каждый человек, обученный письму, обладает своего рода собственным индивидуальным шрифтом — своим почерком. Многие пользователи компьютеров хотят получить шрифт, реализующий собственный почерк. Такой шрифт позволяет выделить «авторское» письмо среди множества других и придать посланию индивидуальный характер. Компании, производящие компьютерные шрифты, предоставляют услуги по разработке полноценных личных компьютерных рукописных шрифтов на базе образца рукописного текста (почерка) любого человека. Такая работа является трудоемкой для художника-шрифтовика и, следовательно — дорогой в финансовом плане для заказчика. С точки зрения формата и описания такой персональный рукописный шрифт ничем не отличается от обычного контурного шрифта: все его символы описываются замкнутыми контурами из составных кривых Безье. Вместе с тем, сама природа рукописного почерка предполагает большую изменчивость символов шрифта. Человек даже при всем желании не может написать совершенно одинаковые буквы. Поэтому настоящий «живой» почерк характерен именно варьируемыми в определенных пределах написаниями всех символов. Это значит, что для хорошего компьютерного персонального шрифта требуется создать некоторый механизм «оживления» при выводе на устройства отображения (дисплей или принтер). Такое оживление может быть получено путем внесения небольших изменений в начертание каждого отдельного символа, свойственного живому почерку человека. Эти изменения должны
224 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ выражаться в мелких вариациях ширины и формы штрихов для одних и тех же символов. С точки зрения реализации такого механизма оживления использование контурного описания символов шрифта оказывается не очень удобным. По сути дела, контурное описание шрифта не позволяет реализовать вариацию ширины штрихов, вариацию формы пера. Описание контура позволяет легко вносить изменения в локальные свойства границы символа за счет небольших смещений точек-вершин характеристических многоугольников кривых Безье. Но для вариации ширины штриха или формы штриха необходимо менять границу на двух участках контура, являющихся границами этого штриха. Такая синхронная вариация обеих границ штриха является весьма сложной задачей, хорошо решить которую в рамках общепринятых штриховых форматов не представляется возможным. Но решение этой задачи становится вполне возможным, если представить символы шрифта в виде жирных линий. Жирная линия является гораздо более адекватной моделью следа пера в рукописи, чем контур границы полученного изображения. Если штрихи, оставляемые пером на бумаге, описать жирными линиями, то появляется возможность варьировать траекторией и шириной пера, т. е. гораздо лучше моделировать реальные вариации эталонного шрифта при письме. Для сканированного образца рукописного текста можно построить представление в виде гибкого графа, состоящего из жирных линий. На рис. 13.17 приведен пример такого представления рукописного слова в виде жирных кривых Безье второго порядка. Это представление может быть получено на основе аппроксимации бинарного растрового изображения циркулярной фигурой с помощью методов, описанных Рис. 13.17. Представление рукописного текста жирными линиями: сканированное изображение исходного текста, характеристические многоугольники составных кривых Безье второго порядка, силуэт циркулярной фигуры
13.4. МОДЕЛИРОВАНИЕ РУКОПИСНОГО ШРИФТА 225 а) б) в) г) д) е) Рис. 13.18. Моделирование динамических изменений почерка: нормальная, увеличенная и уменьшенная ширина пера (а, б, в), письмо с «нажимом» (г), «оживление» письма за счет случайных шевелений (д, е) в IV части. Циркулярную фигуру, получаемую при этом в автоматическом режиме, можно улучшить с помощью «ручного» вмешательства. Редактирование полученной фигуры обеспечивается операциями перемещения и изменения размеров контрольных кругов. С помощью этих операций, а также операций удаления и добавления жирных линий дизайнер выделяет из сканированного слитного текста отдельные буквы — символы шрифта. Полученный таким образом полный алфавит используется для формирования слов. Пример написания слова «дол», собранного из букв слова «модель» (рис. 13.17), приведен на рис. 13.18. Представление букв с помощью жирных линий позволяет моделировать изменение пишущего инструмента («пера»), а также имитировать «живой» почерк путем внесения динамических изменений в форму букв. Выбор более широкого пера осуществляется увеличением радиусов всех контрольных кругов, более узкого — соответствующим уменьшением этих радиусов. Можно автоматически сделать часть линий, например, вертикальных штрихов, более широкими, чтобы изобразить «нажим» пера. «Оживление» текста сводится к внесению небольших случайных изменений в координаты и радиусы контрольных кругов. В результате все изображения одного и того же символа в тексте будут отличаться друг от друга, как это имеет место в реальном рукописном тексте. Формирование шрифта осуществляется с помощью специального шрифтового редактора, обеспечивающего выполнение всех операций по вводу образца текста и построению циркулярных фигур, описывающих символы шрифта. Исходными данными для построения такого шрифта является написанный от руки текст на бумаге, а также отдельно написанный алфавит. Создание компьютерного рукописного шрифта на основе этого образца включает следующие шаги, выполняемые шрифтовым дизайнером: • изображение заносится в компьютер с помощью сканера;
226 Гл. 13. ШРИФТОВЫЕ ТЕХНОЛОГИИ • в сканированном изображении выделяются символы в виде бинарных образов (черные символы на белом фоне); • для каждого символа строится непрерывный базовый скелет и каждая ветвь скелета аппроксимируется жирной линией; • жирные кривые объединяются в штрихи, изображающие символ. Моделирование рукописного шрифта с помощью жирных линий дает возможность решить еще одну важную задачу, связанную с рукописной природой шрифта, которая не возникает в наборных (печатных) шрифтах. Речь идет о склейке букв при слитном реальном письме. Эта процедура может быть обеспечена путем указания в каждой букве «точек склейки» - некоторых концевых кругов жирных линий. Тогда при изображении последовательности букв возможна автоматическая коррекция символов с целью склейки соответствующих кругов соседних букв. Примеры такой склейки демонстрируются на рис. 13.18. Для вывода на принтер страницы текста, написанного рукописным шрифтом, представление символов может быть конвертировано из жирных линий в обычное контурное описание с границей в виде составных кривых Безье (рис. 13.19). Это дает возможность использовать для Рис. 13.19. Преобразование циркулярной фигуры в контурное представление составными кривыми Безье третьей степени для вывода на печать вывода на печать стандартные программы растеризации. Для такого преобразования могут использоваться алгоритмы построения границ жирных линий, описанные в IV части, и алгоритмы подгонки кривых, описанные во II части. Экспериментальная реализация описанного подхода в шрифтовом редакторе показала, что метод жирных линий является весьма удобным и эффективным инструментом для моделирования рукописных шрифтов. Главное преимущество его заключается в адекватном описании рукописного шрифта через «след пера с шириной».
ГЛАВА 14 АНАЛИЗ ТЕКСТА 14.1. Распрямление строк при сканировании текста. 14.2. Сегментация и распознавание рукописного текста. 14.1. Распрямление строк при сканировании текста Задача распрямления строк возникает в системах распознавания текста, обеспечивающих преобразование сканированных текстовых документов в текстовые файлы. Все современные коммерческие системы распознавания текстов предназначены для работы с прямыми горизонтальными строками текста. Однако для большинства реальных документов это требование не выполняется: ориентация строк полученной электронной копии документа не совпадает с ориентацией горизонталей растрового изображения. Причины искажения могут быть самые разные. К примеру, при сканировании толстых книг очень часто возникает искажение строк в области крепления страниц к корешку книги. Если для получения изображения используется цифровая камера, а не сканер, изображение может деформироваться из-за особенностей оптики в фотоаппарате. При этом несколько типов деформации могут накладываться друг на друга, делая невозможным построение точной модели искажения документа. На рис. 14.1 представлены реальный фрагмент сканированного текста, подлежащий распознаванию, и в увеличенном масштабе растровая структура этого изображения. а) б) Рис. 14.1. Изображение текстового документа: исходный сканированный документ (о), увеличенный фрагмент документа (б) Счета Хсннесси ι Хеннесси да^кныы < что не может больше контракта и подал ис
228 Гл. 14. АНАЛИЗ ТЕКСТА Непосредственное распознавание документа с искаженными строками приводит к большим ошибкам. Поэтому перед распознаванием обычно выполняется предобработка изображения документа, состоящая в таком его преобразовании, при котором текстовые строки примут горизонтальное направление. Использование гранично-скелетного представления бинарного изображения сканированного документа дает возможность эффективного решения задачи распрямления строк. Для распрямления будем использовать внешний скелет изображения. Под внешним скелетом здесь понимается скелет области, внешней границей которой является граница документа, а внутренними отверстиями — контуры изображенных в документе букв. По сути дела, речь идет о негативном изображении документа — белые буквы на черном фоне (рис. 14.2). а) б) Рис. 14.2. Негативное изображение текстового документа Основная идея предлагаемого подхода заключается в том, что во внешнем скелете документа (рис. 14.3) легко можно выделить ветви, которые лежат между соседними текстовыми строками. Эти ветви можно использовать, чтобы аппроксимировать деформацию межстрочных пробелов на изображении. Затем по аппроксимации отдельных межстрочных пробелов можно построить аппроксимацию искажения всего документа. Реализация этого подхода включает следующие шаги. Рис. 14.3. Внешний скелет текста и его межстрочные ветви
14.1. РАСПРЯМЛЕНИЕ СТРОК ПРИ СКАНИРОВАНИИ ТЕКСТА 229 1. Фильтрация лишних ребер внешнего скелета. 2. Выделение в скелете ветвей, соответствующих межстрочным пробелам в тексте документа. 3. Аппроксимация выделенных ветвей кубическими кривыми Безье. 4. Построение общей модели искажения страницы в виде планарно- го патча Безье на основе построенных аппроксимаций ветвей скелета. 5. Итерационный процесс подгонки и уточнения полученного патча. Процесс фильтрации ребер сводится к тому, чтобы удалить ребра, не имеющие существенного значения. В построенном скелете есть очень много мелких ребер, обработка которых требует значительного времени, но не несет полезной информации для решения задачи распрямления строк. Действительно значимыми для задачи являются только те ребра, которые лежат между объектами в соседних строках. Удаление лишних ребер осуществляется по следующим критериям. 1. Каждое ребро скелета состоит из точек, являющихся центрами пустых вписанных кругов. Каждый пустой круг касается границы многоугольной фигуры. При этом часть кругов имеет точки касания с одним единственным контуром, а часть — с разными контурами. Поскольку с межстрочными пробелами связаны пустые круги, касающиеся разных компонент границы фигуры, остальные круги и образованные их центрами ребра скелета можно безболезненно удалить (рис. 14.4, а). Нетрудно заметить, что в результате такой фильтрации в скелете остаются только циклические ребра. а) 6) Рис. 14.4. Фильтрация ребер скелета: удаление ребер, связанных с одной компонентой границы (а), удаление ребер, связанных с внешней границей (б) 2. Также не представляют интереса пустые круги, касающиеся границы картинки. Соответствующие ребра скелета также нужно удалить (рис. 14.4,6). Далее для нахождения межстрочных ветвей в скелете текста необходимо выделить все ребра скелета, лежащие между объектами в разных строках. Основным признаком для решения этой задачи является направление ребра. Межстрочные ребра имеют явно выраженную «горизонтальную» ориентацию по сравнению с ребрами скелета, разделяющими объекты в одной и той же строке. Это дает возможность отобрать межстрочные ребра на основе кластеризации всего массива ребер скелета по их направлению. При этом следует рассмотреть только лишь значимые ребра, т. е. те, которые имеют относительно большую длину.
230 Гл. 14. АНАЛИЗ ТЕКСТА Рис. 14.5. Кластериза ция ребер по направле· нию Рассмотрим ребра скелета, как векторы, и совместим их начала с началом координат (рис. 14.5). Получившаяся картина дает возможность выделить ребра, имеющие направление, близкое к горизонтали. Если определить два параметра — минимальную длину горизонтального ребра (Lm[n) и максимальный угол горизонтального ребра (Атах), то все множество ребер скелета можно разделить на три класса: горизонтальные ребра, вертикальные ребра и короткие соединительные ребра. Эксперименты показывают, что для любого изображения текстового документа всегда можно так подобрать параметры Lm\n и Атах, чтобы большинство межстрочных ребер скелета попали в кластер горизонтальных ребер, а остаток межстрочных ребер попал в класс коротких ребер. Оставшиеся ребра «горизонтального направления» в основном расположены в межстрочных пробелах изображения текста (рис. 14.3). Полученные межстрочные ветви скелета являются основой для конструирования распрямляющего преобразования всего текста. Построение такого преобразования осуществляется в два этапа. Сначала каждая межстрочная ветвь скелета аппроксимируется простой кривой Безье третьего порядка. Эта задача решается методом, описанным в главе 6. Пусть h — число полученных межстрочных пробелов. В результате такой аппроксимации получается массив контрольных точек кривых V^·, г = 1,2,... ,/ι, j = 0,1,2,3, где индекс г соответствует номеру межстрочного пробела, a j — номер контрольной точки в характеристическом многоугольнике i-й кривой Безье. Таким образом, каждый межстрочный пробел аппроксимируется г-й кривой ν5(ί) = Σ^·^(*)-*€[ο,ΐ]. Общее преобразование изображения ищем в виде так называемого планарного патча Безье (рис. 14.6), в котором параметр и соответствует вертикальному направлению на странице текста, а параметр t — горизонтальному: Р{иЛ) = ΣΥ,Ρν ■ В\{и) · B]{t), и, t Ε [0,1]. При этом требуется, чтобы кривая Безье Vi(t), t G [0, 1], соответствующая межстрочному пробелу с индексом г, совпадала с высокой точностью с кривой P(ui,t), t G [0,1], где параметр и принимает фикси- г~ 1 рованное значение щ h-l . Построение аппроксимирующего патча Безье представляет собой самостоятельную задачу, которая решается
14.2. СЕГМЕНТАЦИЯ И РАСПОЗНАВАНИЕ РУКОПИСНОГО ТЕКСТА 231 Основная /jpi/мср но мстууяццуецци^ КСГОВЫХ 1 гранича [ения черно-белого Ж)И ш текста й^сгсрониых просвета* Рис. 14.6. Построение аппроксимирующего патча Безье с помощью специальной техники, аналогичной той, которая использовалась нами для подгонки кривых Безье в 6-й главе. Непосредственное преобразование, распрямляющее строки, получается как обратное преобразование к P(u,t). Рассмотрим точку с координатами (х,у) в обрабатываемой картинке. Для каждой такой точки найдется пара значений параметров (u,t) такая, что точка Р[иЛ) имеет координаты (х,у). Эту точку в плоскости параметров (u,t) обозначим, как Р~х(х,у). Преобразование Р~х{х,у) переводит исходную картинку в некоторую другую картинку в плоскости параметров (ιζ,ί), которая визуально представляет собой текст, изображенный на исходной картинке, но уже с распрямленными строками. 14.2. Сегментация и распознавание рукописного текста Структурный подход к off-line распознаванию рукописных документов, основанный на анализе формы изображения, получил весьма широкое распространение. Правильная сегментация рукописных документов является важнейшей составляющей этого подхода. Под сегментацией обычно понимается выделение структурных элементов текста (строк, слов, символов или отдельных штрихов). Выделение в изображении текста строк и слов может быть осуществлено с помощью внешнего скелета изображения. На рис. 14.7, а представлен пример текста, составленного из десяти слов, написанного пятью разными почерками. Внешний скелет этого изображения, в котором выделены все циклические ребра, показан на рис. 14.7,6. Внешний скелет позволяет выделить отдельные связные компоненты изображения. Если бы исходный текст был написан каллиграфически, слитно и был идеально сканирован, то каждая связная компонента скелета представляла бы собой отдельное слово. Но в реальных документах одно слово распадается на несколько связных компонент. Это происходит, потому что в силу индивидуальных особенностей почерка появляются небольшие пробелы между отдельными буквами в словах. Кроме того, из-за помех при сканировании появляются разрывы в линиях штрихов. Эти пробелы и разрывы приводят к разделению одного
232 Гл. 14. АНАЛИЗ ТЕКСТА а) б) Рис. 14.7. Выделение связных компонент сканированного текста: исходный документ (а), внешний скелет (б) слова на несколько связных компонент. Поэтому возникает задача объединения пространственно близких связных компонент изображения в слова. Можно сформулировать простой критерий для объединения в одно слово связных компонент изображения: объединению подлежат те компоненты, которые находятся в пространственной близости друг к другу. Проверка этого критерия эффективно может быть осуществлена на основе анализа внешнего скелета (рис. 14.8). Во внешнем скелете нужно выделить и удалить так называемые «узкие перемычки» — ветви скелета, с которыми связаны пустые круги малого радиуса. Пороговое значение радиуса пустых кругов, которые считаются маленькими, является параметром алгоритма. В примере на рис. 14.8,6 показаны такие выделенные круги. Удаление связанных с ними ветвей скелета приводит к тому, что поле изображения разбивается оставшимися ветвями скелета на отдельные компоненты, внутри каждой из которых находится одно слово текста (рис. 14.8, в). Под сегментацией штрихов будем понимать выделение отдельных фрагментов изображения, которые соответствуют принятым элементам письма: палочки, овалы, соединительные линии и т. п. Эта задача сводится к разрезанию скелетного графа на отдельные компоненты. Данная операция может быть выполнена на основе анализа внутреннего скелета изображения. Выделение штрихов в связных компонентах осуществляется следующим образом. Каждая компонента скелета может рассматриваться как плоский прямолинейный граф. В структуре скелета можно выделить три типа вершин: вершины, степени 3 или выше, терминальные вершины степени 1 и промежуточные вершины степени 2. Поскольку штрих является моделью следа пера, естественно считать, что он представляет собой фрагмент скелетного графа, включающего лишь вершины степени не выше 2. Тогда вершины степени 3 являются
14.2. СЕГМЕНТАЦИЯ И РАСПОЗНАВАНИЕ РУКОПИСНОГО ТЕКСТА 233 Рис. 14.8. Объединение связных компонент, относящихся к одному слову: внешний скелет (а), выделение узких перемычек (б), удаление узких перемычек (в) точками сопряжения или пересечения штрихов. Поэтому задача выделения штрихов сводится к разрезанию графа скелета по вершинам степени 3. При таком разрезании большое значение имеет правильная классификация типа соединения штрихов. Задача правильной классификации штриховых соединений является очень сложной и вряд ли допускает строго математическое решение. Обычно здесь используются эвристические алгоритмы. Применительно к рассматриваемому методу гранично-скелетного представления изображения нужно отметить, что он дает возможность широкого использования различных эвристик, поскольку непрерывный скелет хорошо моделирует след пера, писавшего текст. Еще одним важным достоинством метода является возможность анализа взаимосвязанных свойств границы фигуры и ее скелета. Для примера рассмотрим правило классификации штриховых соединений и самих штрихов, основанное на анализе гранично-скелетного представления изображения. С каждой вершиной скелета степени 3 связан пустой круг, касающийся границы фигуры в трех точках (рис. 14.9, а). Эти точки можно вычислить и определить для них кривизну границы. Для этого делается локальное сглаживание границы фигуры с помощью окружности или сплайна. В примере сглаживание состоит в построении аппроксимирующей составной кривой Безье (рис. 14.9,6). Полученные значения
234 Гл. 14. АНАЛИЗ ТЕКСТА "'"ММ Г) а) б) в) Рис. 14.9. Определение типа сопряжения штрихов: инцидентность узлов скелета и точек границы (а), оценка кривизны границы в окрестности узлов скелета (белые точки — малая кривизна, черные — большая) (б), выделение штрихов (в) кривизны позволяют классифицировать тип соединения: сопряжение или пересечение, что дает возможность непосредственно «разрезать» скелет на отдельные ветви-штрихи (рис. 14.9, в). Проведя такую операцию для каждой вершины степени 3, можно получить разбиение всего текста на штрихи (рис. 14.10). Выделенные штрихи представляют собой сегменты ломаных линий — замкнутые или разомкнутые. С точки зрения правил каллиграфии они могут быть классифицированы по нескольким классам: овал, вертикаль, горизонталь, крючок верхний, крючок нижний, диагональ и т.п. Пример такой классификации представлен на рис. 14.10,е. а) ·> l/l /I OVI /I -I O/l/ I /I Рис. 14.10. Сегментация штрихов: точки соединения штрихов (а), разделение штрихов (б), классификация штрихов (в) Эти элементарные калиграфические знаки образуют некоторый небольшой алфавит штрихов. В результате сегментации каждое рукописное слово представляется в виде кортежа символов такого алфавита. Представление рукописных слов в штриховом алфавите открывает возможности для построения меры сходства рукописных слов. Пусть А — штриховой алфавит. Для каждой пары символов α, β е А зададим величину ρ(α,β) G [0,1], показывающую сходство соответствующих штрихов между собой. Сходство символа с самим ^
14.2. СЕГМЕНТАЦИЯ И РАСПОЗНАВАНИЕ РУКОПИСНОГО ТЕКСТА 235 собой максимально, т.е. ρ(α,α) = 1. Функцию ρ(α,β) можно интерпретировать как меру правильной классификации штрихов. Например, если а — вертикальный штрих, а β — диагональный штрих, то р(а,/3)=0,7 показывает, что эти штрихи достаточно похожи. А мера сходства вертикального и горизонтального штрихов должна быть существенно меньше, например, равняться 0,1. Рассмотрим два слова в штриховом алфавите χ = (х\,... ,хт) и у = (у\,... ,уп). Из символов, составляющих эти слова, соберем I пар {%ik,yjk), к = 1,... ,ί по следующим правилам: 1) каждый символ каждого слова может войти лишь в одну из пар; 2) последовательность пар «монотонна» в том смысле, что г^-μι > &ь jk+i > Зк для всех А; = 1,...,/- 1. Пусть Sxy множество всех вариантов построения такого парного соответствия слов χ и у. Тогда в качестве меры сходства этих ι слов возьмем величину \(х,у) = max Σ p{xik>yjk)> описывающую ме- Sxy k=\ ру сходства символов в двух словах при сохранении их упорядочения. Подобные метрики широко используются в методах распознавания образов. Вычисление меры сходства двух слов сводится к задаче поиска кратчайшего пути на графе следующим образом [56]. Попарно сходство символов, составляющих слова χ и у, задается матрицей р^ =p{xi,yj)· Если выбрано некоторое множество пар {xik,yjk), k= Ι,.,.,Ζ, то ему можно поставить в соответствие маршрут на графе, вершинами которого являются целочисленные точки плоскости, а ребрами — отрезки, 1 2 "" * ί *" * т а) 6) Рис. 14.11. Вычисление сходства двух слов в штриховом алфавите: матрица сходства штрихов (а), соответствие символов слов как маршрут на графе (б) соединяющие эти точки (рис. 14.11). Условие монотонности последовательности пар выражается в том, что путь на графе должен быть монотонно возрастающим по обеим координатам. С каждой целочисленной точкой с координатами (i, j) связан вес pij. Требование максимизации суммарного соответствия сводится к выбору такого маршрута на графе, у которого суммарный вес входящих в него вершин максимальный.
236 Гл. 14. АНАЛИЗ ТЕКСТА Решение этой задачи осуществляется известными методами динамического программирования. Построенная мера сходства рукописных слов дает возможность решать задачи, связанные с распознаванием рукописного текста. Рассмотрим, в частности, задачу поиска ключевых слов в рукописном тексте. Эта задача возникает при работе с большими архивами рукописных документов при переводе их в электронную форму. По запросу пользователя нужно найти документы, содержащие ключевые слова, введенные пользователем с клавиатуры. Одним из возможных способов решения этой задачи является следующий. 1. Для введенного пользователем ключевого слова формируется рукописный эталон в виде изображения, собранного из символов рукописного шрифта. На рис. 14.12 показан пример такого шрифта и собранные из него эталоны. а,® с jj ε ^r& ¥>j / *r uv w zy }>*, * о d ь £ f A Ay f A <t m tl cr £> a- i> л. t cl. nr иг ъ у f ? / / 2 J ¥S678 7 0 Рис. 14.12. Эталонный рукописный шрифт и примеры формирования изображений ключевых слов 2. Построенное таким образом ключевое слова обрабатывается по описанному выше алгоритму: строится гранично-скелетное его представление, выделяются штрихи и осуществляется их классификация. В результате ключевое слово представляется в виде кортежа символов штрихового алфавита. 3. Документ с рукописным текстом, в котором осуществляется поиск, также обрабатывается по описанному алгоритму. В нем производится сегментация строк, слов, штрихов, после чего все найденные слова также представляются в виде кортежей символов штрихового алфавита. 4. Поиск ключевого слова в документе осуществляется последовательным сравнением эталонного представления ключевого слова со словами в документе. Для каждого сравнения вычисляется мера сходства, которая сравнивается с порогом. Если порог превышен, то считается, что ключевое слово найдено. На рис. 14.13 приведен результат поиска ключевого слова «cougar» в документе, изображенном на рис. 14.7. В верхней строке изображено ключевое слово, составленное из букв эталонного шрифта. В следую- (xxvLfayx. f<^ff man \J~crm. zCjUj-ruyuL 0£τηα,γ
14.2. СЕГМЕНТАЦИЯ И РАСПОЗНАВАНИЕ РУКОПИСНОГО ТЕКСТА 237 Key word for searching Found word? 40,00 tAM*4.^ \Г<«~\«< f МЛ-tj» ι I О v.* v.- ... - Ι Ο Ο ν> ·/· 5т^ „~* I f NN -**W<N \ 3g m ^ < О vy vy - О О vy ι/1 α) 6) β) Рис. 14.13. Вычисление меры сходства ключевого слова со словами в тексте: сегментация штрихов (а), оптимальное парное соответствие штрихов (обозначения соответствуют разным типам штрихов) (б), мера сходства слов (в) щих трех строках представлены три наиболее похожих на него слова среди всех, выделенных в документе. Область применения непрерывного гранично-скелетного представления изображения в распознавании рукописного текста не ограничивается задачей сегментации. Весьма перспективной представляется идея восстановления следа пера по сканированному рукописному документу. Целью такого восстановления является сведение задачи off-line распознания рукописного текста к задаче on-line распознавания. Методы решения on-line задачи развиты достаточно хорошо по сравнению с off-line, поэтому такое сведение является вполне оправданным.
ГЛАВА 15 БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ 15.1. Идентификация личности по форме ладони. 15.2. Анализ отпечатков пальцев. 15.3. Восстановление пространственной формы по стереопаре силуэтов. 15.1. Идентификация личности по форме ладони Человеческая ладонь является непростым объектом для классификации. С одной стороны, она имеет устойчивые признаки собственной формы, которые в принципе позволяют различать ладони разных людей. Но, с другой стороны, человек даже при желании не может повторить в нескольких актах измерения одно и то же положение ладони так, чтобы бинарные образы совпали. Различия бинарных изображений одной и той же ладони оказываются соизмеримыми с различиями таких же изображений ладоней разных людей (рис. 15.1). а) б) в) г) Рис. 15.1. Силуэты ладоней двух человек: одна персона (а и б), другая (в и г) Для описания формы ладони, которая может изменяться в определенных пределах, хорошо подходит модель гибкого объекта, основанная на понятии циркулярной фигуры. Форма гибкого объекта может изменяться, и пределы этих изменений описываются специальным множеством преобразований. Преобразования устроены так, что отдельные элементы формы фиксированы и неизменны, а другие могут меняться. Применительно к ладони неизменные элементы — это пясть (часть кисти руки между пальцами и запястьем) и фаланги пальцев, а изменяемыми, подвижными являются суставы. При таком подходе задача определения сходства объектов сводится к подбору таких допустимых преобразований этих объектов, при которых их формы будут наиболее близки друг к другу. В качестве меры различия объектов примем разницу их формы именно в этом наиболее близком состоянии.
15.1. ИДЕНТИФИКАЦИЯ ЛИЧНОСТИ ПО ФОРМЕ ЛАДОНИ 239 Таким образом, определение сходства гибких объектов состоит в следующем: • совместить в наибольшей степени осевые графы объектов, используя допустимые деформации; • произвести деформации границ объектов, соответствующие изменению осевых графов; • сравнить силуэты полученных деформированных объектов. Реализация этого подхода включает построение в явном виде модели гибкого объекта и множества его допустимых деформаций, а также метода поиска «сближающих» преобразований гибких объектов, т. е. таких деформаций, которые минимизируют различия в форме объектов. Поиск сближающих преобразований двух гибких объектов предполагает в общем случае попарное сравнение всех возможных деформаций этих объектов. Но поскольку задачи сравнения формы в системах машинного зрения должны решаться в реальном времени, такой перебор оказывается неприемлемым. Для того чтобы избежать полного перебора всех пар деформаций, необходимо выполнить нормализацию формы, суть которой состоит в приведении ее к некоторому стандартному положению. Непосредственное же сравнение объектов выполняется на основе наложения «нормализованных» объектов друг на друга и вычисления их различий. Согласно формальному определению понятия гибкого объекта, данному в 11.2, будем рассматривать циркулярный граф С = {ct, teT} с осевым графом Τ и силуэтом S = |J Q. Для описания ладони teT осевой граф имеет структуру дерева. В этом смысле будем использовать термин циркулярное дерево для обозначения соответствующего циркулярного графа. Пусть Ρ С Τ это множество точек изгиба циркулярного дерева. С множеством точек изгиба связано множество допустимых деформаций циркулярного дерева за счет изменения углов в точках изгиба в допустимом диапазоне. Два циркулярных дерева называются эквивалентными, если для них существует деформация, в результате которой их силуэты совпадут при наложении. Пусть G = (С, V) — гибкий объект с циркулярным деревом С и множеством его допустимых деформаций V. На множестве гибких объектов введем метрику следующим образом. Расстояние p(C?i,C?2) между двумя гибкими объектами G\ — {C\,V{) и (?2 = (Сг, V^) определим как минимальное расстояние между их циркулярными деревьями по всему множеству допустимых деформаций, т. е. p(G,,G2)= inf uMCiWCfe)]· v2eV2 Здесь v\(C\) и V2(C2) — это преобразованные с помощью деформаций v\ и г>2 циркулярные деревья С\ и Сг, а μ обозначает меру близости циркулярных деревьев.
240 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ В свою очередь, меру близости циркулярных деревьев μ определим через близость их силуэтов. Пусть S\ и S2 — силуэты циркулярных деревьев С\ и Сг. Для измерения сходства (близости) силуэтов может быть выбрана какая-либо известная метрика точечных множеств. Например, это может быть величина Агеа^Дйг U S<2\S\) — площадь симметрической разности, либо H(S\,S2) — хаусдорфово расстояние между силуэтами S\ и ί>2· Минимальная площадь и минимальное расстояние здесь берутся по всевозможным вариантам наложения силуэтов S\ и $2 Друг на друга. Таким образом, задача оценки сходства гибких объектов состоит в выборе такой деформации этих объектов и такого наложения их друг на друга, при которых величина различия их формы будет минимальной. Применительно к человеческим ладоням это значит, что нужно так приложить ладони друг к другу и так пошевелить пальцами, чтобы силуэты ладоней совпали в наибольшей степени. Пусть Φ (С) — некоторый набор метрических характеристик циркулярного дерева, который будем называть сигнатурой. Сигнатура содержит параметры, описывающие местную систему координат циркулярного объекта, а также параметры, определяемые взаимным расположением вершин осевого графа, например, углы треугольников, образованных некоторыми тройками этих вершин. При деформации циркулярного дерева ν (С) сигнатура изменяется и принимает значение Φ (ν (С)). Предположим, что существует заданное значение параметров сигнатуры Ф* такое, что для каждого гибкого объекта G = = (С, V) рассматриваемого класса найдется деформация ν* циркулярного дерева С, при которой имеет место Φ (ν* (С)) = Φ*. Получаемое в результате этой деформации циркулярное дерево ν* (С) будем называть стандартным положением гибкого объекта. Поиск соответствующей деформации составляет суть процесса нормализации гибкого объекта. Вопрос о реалистичности предположения о том, что для каждого гибкого объекта может быть найдено преобразование его в стандартное положение, должен решаться применительно к конкретным приложениям. По отношению к задаче сравнения формы ладоней такое предположение, как будет показано ниже, вполне оправдано. а) б) в) Рис. 15.2. Моделирование ладони в виде гибкого объекта: осевой граф с точками изгиба (а), семейство кругов (б), силуэт (в)
15.1. ИДЕНТИФИКАЦИЯ ЛИЧНОСТИ ПО ФОРМЕ ЛАДОНИ 241 Вычисление меры близости двух нормализованных гибких объектов G\ и (?2 состоит в нахождении величины μ [v*(Ci),v*(C2)], где ν* и ν* — деформации объектов, приводящие их в стандартное положение. Применительно к силуэту ладони задача состоит в построении модели ладони в виде гибкого объекта, изображенного на рис. 15.2. Техника построения аппроксимирующего циркулярного дерева выглядит следующим образом. На рис. 15.3 изображены минимальный разделяющий многоугольник, его скелет и базовый скелет, построенные для бинарного изображения ладони, представленного на рис. 15.1,г. Рис. 15.3. Аппроксимирующий многоугольник минимального периметра, скелет и базовый скелет ладони В базовом скелете в качестве корня выберем вершину третьей степени, находящуюся в центре ладони, в которой сходятся ветви большого пальца и запястья (рис. 15.3). С точки зрения задачи идентификации личности полное /^^^^^^^р-^^ изображение ладони содержит ЩШШШК^^Х ЧентР как значимую часть, так и «по- ^^^^^^x^L·^^б°льшого стороннюю» информацию. По- ^^^^^^\ ) кРУга сторонней информацией являет- ^^^^^^^^\]/ ся изображение запястья. С од- ^^^^^^^^^^Г ной стороны, при сканировании ^^^^^^^^ш^ ладони оно часто скрыто под Jx^J£& Wt одеждой. Кроме того, в кадр при №&'j§gy Ш каждом акте сканирования попа- ^ ^jy Ш дает различная часть запястья. По этим причинам использовать Рис. 15.4. Циркулярное дерево ладони силуэт запястья для сравнения ладоней не всегда возможно. Поэтому в полученном базовом скелете ладони удалим ветвь, относящуюся к запястью. Оставшийся граф и будем рассматривать как осевой граф циркулярного дерева гибкого объекта (рис. 15.4). Таким образом, мы описали структуру циркулярного дерева для ладони, заданной в виде бинарного растрового изображения. Отметим, что полученная циркулярная фигура с высокой точностью (до размера пиксела) аппроксимирует исходное изображение. Точка, выбранная в качестве корня циркулярного дерева, является центром круга, имеющего максимальный радиус среди всех кругов,
242 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ составляющих дерево. Этот «большой» круг практически не меняет своих размеров при различных деформациях ладони, связанных с шевелением пальцев. Поэтому его удобно использовать для описания местной системы координат ладони. Для того чтобы задать полностью гибкий объект, описывающий модель ладони, нужно задать еще множество допустимых деформаций. Для этого следует определить множество точек изгиба. Анализ реального скелета человеческой ладони (рис. 15.5, а) показывает, что таких точек изгиба достаточно рассмотреть пять: по одной на каждом пальце. Рис. 15.5. Выбор точек изгиба в дереве ладони Конкретный способ установления точек изгиба в осевом графе может быть различным. В примере в качестве таковых выбраны точки пересечения осей скелета с большим кругом (рис. 15.5,6). Зададим теперь параметры сигнатуры гибкого объекта. Большой круг дает возможность задать местную систему координат ладони. Началом координат является центр большого круга, направление оси абсцисс совпадает с направлением вектора из точки изгиба среднего пальца (точка 3 на рис. 15.5,6) в центр большого круга. За единицу длины по этой оси выбирается радиус большого круга. Ось ординат выбирается таким образом, чтобы образовать правую систему прямоугольных координат. В качестве параметров, описывающих взаимное расположение вершин циркулярного объекта, выберем углы αϊ, аг, Рис. 15.6. Параметры сигнатуры
15.1. ИДЕНТИФИКАЦИЯ ЛИЧНОСТИ ПО ФОРМЕ ЛАДОНИ 243 аз, щ, ось между радиус-векторами концов пальцев и положительным направлением оси абсцисс (рис. 15.6). Стандартное положение ладони описывается заданными значениями углов αϊ, <*2, аз, щ, а^. Например, можно задать эти значения вектором (130°, 160°, 180°, 200°, 230°). Деформация, переводящая ладонь в стандартное положение, представляет собой «шевеление» пальцев — поворот их вокруг точек изгиба на углы, при которых параметры сигнатуры примут заданные значения (рис. 15.7). После выполнения такой деформации нужно вычислить силуэт нормализованной ладони в виде огибающей семейства кругов, входящих в циркулярное дерево. Полученный силуэт нужно растянуть или сжать, чтобы радиус большого круга стал равным единице. Сравнение нормализованных ладоней требует выполнения следующих действий: 1. Совместить начала местных систем координат и направления осей. 2. Вычислить меру различия силуэтов. На рис. 15.8 приведены примеры сравнения силуэтов нормализованных изображений одной и той же ладони и разных ладоней. Рис. 15.7. Деформация «шевеление пальцев»: исходная форма изображена сплошной линией, а измененное положение — пунктиром Рис. 15.8. Сравнение силуэтов ладоней: одной и той же персоны (а), разных персон (б) Практическая оценка реализуемости и эффективности предлагаемого подхода иллюстрируется данными следующего вычислительного эксперимента. В эксперименте использовалась база образцов, содержащая 1662 изображения ладоней 320 человек (4-6 изображений для
244 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ каждой персоны). Изображения представлены черно-белыми образами размером 640 χ 480 пикселей. Все они получены в одинаковых условиях, одной и той же камерой при одинаковом освещении и дальности съемки. Для всех изображений построены аппроксимирующие гибкие объекты и выполнена их нормализация. Далее для каждой пары изображений вычислена мера близости этих объектов по описанному выше методу. Мера близости силуэта S\ к силуэту S2 определена в виде отношения площади симметрической разности силуэтов к общей площади силуэта p(SuS2) = Aiea,{Si\S2US2\Si Area, (Si) 1000. Для удобства визуализации зависимостей (для представления их в виде целых чисел) эта величина умножается на 1000 и округляется. На рис. 15.9 представлено распределение расстояния от пробного образца до ближайшего соседа. Левая кривая получена на основании попарных сравнений образцов, относящихся к одной и той же персоне. Правая кривая демонстрирует распределение расстояний между силуэтами ладоней разных людей. Таким образом, эти кривые отражают близость образцов в сочетаниях «свой-свой» и «свой-чужой». Диаграмма дает возможность установить порог для решающего правила при классификации ладоней. Например, если в качестве критерия классификации выбрать решающее правило «по одному ближайшему соседу», то в качестве порога можно взять величину 50 (абсциссу точки пересечения кривых на рис. 15.9). 50 40 30 10 \-—)-\ -i-W-i- 0 20 40 60 80 100 120 Рис. 15.9. Распределение расстояний до ближайшего соседа, пары «свой- свой» — левая кривая, «свой-чужой» — правая кривая Очевидно, что при изменении этого порога ошибки классификации будут меняться. Полученные в эксперименте зависимости ошибок классификации от выбора порога для правила одного ближайшего соседа представлены на рис. 15.10. Левая кривая показывает уровень ошибок «не узнан свой» (FRR — False Rejection Rate), а правая кривая — уровень ошибок «чужой принят за своего» (FAR — False Acceptance Rate).
15.2. АНАЛИЗ ОТПЕЧАТКОВ ПАЛЬЦЕВ 245 100 90 80 70 60 50 40 30 20 10 0 20 40 60 80 100 120 140 Рис. 15.10. Зависимость ошибок классификации от выбора порога в решающем правиле (FRR — левая кривая, FAR — правая кривая) Следует отметить, что уровень обеих ошибок (порядка 5%) является весьма высоким. Это объясняется природой самого признака: форма человеческой ладони не является столь индивидуальной, как, например, радужная оболочка глаза или узор папиллярных линий. Однако сравнение силуэтов может быть использовано в комбинации с другими мерами близости формы ладоней, например, с признаками, полученными на основе анализа скелета (длины пальцев, искривление осей пальцев). Кроме того, для классификации можно использовать более эффективные методы распознавания по результатам сравнения с образцами, в частности методы, основанные на алгоритме вычисления оценок [8]. Все это позволяет понизить ошибки классификации до 1-2%. Как показывает анализ рынка биометрических систем, сфера применения систем с таким уровнем ошибок существует и достаточно широкая. В нее входят области, где требования к надежности классификации относительно невысоки: контроль посещений в учебных заведениях, библиотеках, медицинских учреждениях, а также контроль доступа в офисах, на небольших предприятиях и т. п. Эксперимент показал, что описанный метод допускает весьма эффективную в вычислительном отношении реализацию. Высокое быстродействие позволяет использовать его в режиме реального времени для решения задач биометрической идентификации в системах контроля доступа или контроля посещений. 15.2. Анализ отпечатков пальцев Исходными данными для анализа отпечатка пальцев является бинарное изображение, в котором черным цветом представлены линии папиллярного узора, а белыми — фон (рис. 15.11, а). Для этого изображения можно построить соответствующую аппроксимирующую многоугольную фигуру и ее базовый скелет
246 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ а) б) в) Рис. 15.11. Гранично-скелетное представление папиллярного узора: изображение отпечатка пальца (а), аппроксимирующая многоугольная фигура (б), базовый скелет многоугольной фигуры (в) (рис. 15.11,6, в). Базовый скелет изображения папиллярного узора является удобной основой для решения задач анализа отпечатков пальцев. Основной задачей этого анализа является выявление особенностей узора: точек слияния двух папиллярных линий в одну и терминальных точек отдельных линий. Точки слияния папиллярных линий в скелетном графе имеют вершинную степень 3, а терминальные точки — степень 1. Выявление вершин графа, имеющих степень 1 или 3, не представляет труда и осуществляется путем однократного просмотра всех вершин скелетного графа. Анализ ребер скелета, инцидентных этим вершинам позволяет вычислить в каждой из них направление папиллярной линии. На рис. 15.12, α представлено множество найденных а) б) в) Рис. 15.12. Поиск особых точек папиллярного узора: терминальные и узловые вершины скелета (а), триангуляция Делоне на терминальных вершинах (б), фильтрация ложных терминальных вершин на границе изображения (в)
15.2. АНАЛИЗ ОТПЕЧАТКОВ ПАЛЬЦЕВ 247 вершин скелета 1 и 3 степени и направления линий в этих вершинах для изображения из рис. 15.11. Однако не все выявленные терминальные вершины являются особыми точками папиллярного узора. Например, вершины степени 1 в скелетном графе могут образоваться за счет травм кожи либо за счет периферийного положения линий на границе изображения. Примеры таких ложных терминальных точек папиллярных линий хорошо видны на рис. 15.12, а. Автоматическое выявление этих точек представляет собой самостоятельную задачу, решение которой можно осуществить следующим образом. Для множества вершин скелетного графа, имеющих степень 1, построим триангуляцию Делоне, рассматривая эти вершины, как сайты- точки (рис. 15.12,6). Для того, чтобы избежать некоторых вычислительных проблем в множество точек-сайтов добавлены вершины прямоугольника, описывающего границу изображения. Триангуляция Делоне хорошо показывает свойства точек, связанные с их взаимным расположением. В частности, она описывает пространственную близость точек к границе изображения и близость их между собой. Это позволяет выявить точки обрыва линий на границе изображения и точки разрыва линий, образовавшиеся в результате травм кожи. Для терминальных вершин скелетного графа, образовавшихся за счет обрыва линий на границе изображения, характерной чертой является близость к границе выпуклой оболочки триангуляции. Эти вершины можно легко выявить и удалить их из списка вершин — кандидатов в особые точки (рис. 15.12, в). Точки разрыва одной папиллярной линии находятся вблизи друг от друга и, кроме того, направления линий в этих точках должны быть очень близкими. Близкие точки в триангуляции Делоне с высокой вероятностью связаны общим ребром. Поэтому алгоритм выявления таких пар основывается на анализе коротких ребер триангуляции (т. е. ребер, имеющих длину менее некоторого порогового значения). Для а) б) Рис. 15.13. Фрагмент триангуляции (а); выявленные пары вершин, образованных разрывами папиллярных линий (б)
248 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ каждого такого ребра сравниваются направления линий в этих точках и, если разница этих направлений не превышает некоторого порогового значения, а сами направления хорошо согласуются с направлением самого ребра, то такие точки считаются точками разрыва линий и удаляются из списка вершин-кандидатов, претендующих на статус особых точек папиллярного узора. Пример поиска таких пар приведен на рис. 15.13. Показан в увеличенном масштабе фрагмент триангуляции из рис. 15.12,6. Таким образом, анализ триангуляции Делоне, построенной на терминальных вершинах скелетного графа, позволяет произвести фильтрацию этого множества вершин, отбросить ложные вершины-кандидаты и существенно сократить список особых точек. На рис. 15.14 представлена окончательная картина найденных особых точек. Использование скелета дает возможность также вычислить еще одну важную характеристику, используемую при анализе отпечатков пальцев — поле направлений папиллярного узора. Поле направлений определим следующим образом. Все изображение разбивается вертикалями и горизонталями на множество квадратов одинакового размера и в каждом квадрате вычисляется вектор, характеризующий преимущественное направление папиллярных линий, проходящих через этот квадрат (рис. 15.15). Поскольку скелет представляет собой плоский граф, ребрами которого являются короткие отрезки прямых линий и парабол, с каждым квадратом можно связать множество ребер, имеющих с ним пересечение, т. е. попадающих в квадрат полностью либо частично. Тогда Рис. 15.14. Полученные особые точки папиллярного узора и направления линий в этих точках (точки ветвления — белые, терминальные — черные) /////J/////£fe5iBX«»\Nv\\\\Ytffl 7J/Ш1//Ш?К\\\>\\Л\\\\1\\1 Ш/ι/ΙΙΙΙ II IViBfttYMVYAVV YK Vi //'//III 1111111111 V\ \UUVA4\ V\\ VL1 '/Jim inn iniuuxtvAuuvmMii тип mwww ишнихш коя liirrJlllU\nUVL\\V\\\X4V\\\V41i1 lift I \M\V nwnUWYAWWW^B ■ 'J I \\ XIUWUVNttWYKKHMB ■ lliUX№\Vv\\\>\>HKt?C3Ull № Kb 1 Is ОД^ВР iSs^PF ^тЧт-Р· .4s <t> P Nci >s *Гт / • / / / / / / / / / / / / / 1 / 1 X • • • • • • / / / / / / 1 1 / 1 ί I 1 1 I 1 ^ • / / / / / t / 1 1 1 1 1 I / 1 ! 1 1 \ \ \ *" s * / s / / t 1 1 1 t I | | I | J \ \ \ 4 N ^» X У У У / / I I 1 I 1 \ \ \ \ \ \ \ \ N X ^» κ / / t 1 | I 1 \ \ \ \ \ \ \ N — — ·». — X / 1 I \ \ \ \ \ \ \ \ N - «·. — — — ««. >. ·*. 4 N N \ \ \ \ I \ \ \ \ \ \ \ N »4 >. V 4 N S \ \ \ \ \ \ \ I \ \ \ \ \ \ \ N - >. V V V \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ N V N N N N \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ N N \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4 V \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 4 N N V \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ N N N >. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ N 4 V \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Рис. 15.15. Вычисление поля направлений папиллярных линий
15.3. ВОССТАНОВЛЕНИЕ ПРОСТРАНСТВЕННОЙ ФОРМЫ... 249 такому квадрату припишем направление векторного поля, вычисляемое по формуле: ТПг Еез\ b'=i I где г — индекс квадрата, mi — количество ребер скелета, имеющих непустое пересечение с г-м квадратом, ej — вектор, описывающий вклад ребра в поле направлений. Вектор ej вычисляется следующим образом. Пусть ау — ребро скелета. Направление вектора ej выбирается так, чтобы оно было коллинеарно ребру скелета a,j и составляло угол с осью абсцисс в диапазоне [0,π]. А длина вектора е3 устанавливается равной длине той части ребра а^, которая лежит в г-м квадрате. Поскольку параболические фрагменты скелета имеют очень маленькие размеры по сравнению с их радиусом кривизны, в качестве направлений для них мы используем хорды соответствующих сегментов. Получаемое поле направлений может быть визуализировано, как это показано на рис. 15.15. 15.3. Восстановление пространственной формы по стереопаре силуэтов Создание систем машинного зрения, способных распознавать жесты, ставит задачу восстановления пространственной формы ладони или фигуры человека в целом по изображениям, полученным от различных сенсоров. В настоящее время появились активные трехмерные сканеры, способные непосредственно получать описание трехмерных поверхностей объектов. Эти устройства достаточно дороги и требуют специальных условий для съемки. В частности, объект должен быть определенным образом позиционирован перед сканером. С другой стороны, существует более традиционный способ восстановления трехмерной картины по стереопаре изображений, получаемых от двух фотокамер. Предполагается, что камеры откалиброваны, т. е. предварительно определена их привязка к определенной системе координат и установлены внутренние параметры камер. Такая калибровка осуществляется заранее на эталонных объектах. На снимках с изображениями эталона автоматически либо вручную определяются общие точки и по их координатам на изображениях вычисляются необходимые коэффициенты для определения в дальнейшем пространственных координат произвольных точек на стереопарах изображений [5, 25]. Для откалиброванной пары камер восстановление трехмерной картины по стереопаре снимков основывается на следующем принципе. На каждом снимке нужно найти изображение одного и того же точечного объекта и затем, зная координатную привязку камер, вычислить
250 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ пространственные координаты соответствующей точки [5, 25]. Восстановление формы сложных объектов, таких как человеческая фигура или ладонь, требует идентификации большого числа точек по стереопаре изображений. Наиболее сложной частью такого подхода является задача анализа изображения с целью выявления и идентификации различимых точечных объектов на снимках. Решение этой задачи требует большого объема вычислений и неизбежно сопровождается множеством ошибок. В том случае, когда задача должна решаться в реальном масштабе времени и с использованием недорогих серийных устройств, например типовых web-камер, такой подход неприемлем. Качество получаемых изображений в силу низкого разрешения не позволяет надежно выявлять и идентифицировать на стереопаре требуемое количество точек (рис. 15.16). Рис. 15.16. Стереопара изображений, полученных от двух калиброванных web-камер, расположенных друг над другом Вместе с тем, как показывает опыт, при определенных, не очень жестких, требованиях к освещенности объекта, по изображениям такого рода нетрудно выделить форму объекта в виде бинарного изображения. Примеры такой бинаризации изображений ладони человека рассматривались выше в 15.1. Получаемые при этом силуэтные изображения, однако, не могут быть использованы для восстановления трехмерной формы объекта описанным выше способом, поскольку уверенно найти на бинарном изображении можно лишь точки, лежащие на границе объекта и фона. Но идентифицировать эти точки на снимках стереопары невозможно, поскольку граничные точки одного силуэтного снимка в принципе не могут быть граничными точками на другом силуэтном снимке. Таким образом, выявление и идентификация граничных точек силуэтных изображений не позволяет решить задачу восстановления формы пространственных объектов. Особенности таких объектов, как человеческая ладонь и фигура человека в целом, форму которых нужно восстановить при распознавании жестов, позволяют, однако, решить эту задачу на основе использования скелетов. Эти особенности состоят в том, что челове-
15.3. ВОССТАНОВЛЕНИЕ ПРОСТРАНСТВЕННОЙ ФОРМЫ... 251 ческая ладонь и фигура человека приближенно могут быть представлены как объединение нескольких «цилиндрических» элементов. Под цилиндрическим элементом условно будем понимать пространственное тело, образованное семейством шаров, центры которых расположены на некоторой кривой. Говоря более строго, этот объект можно определить как трехмерное обобщение жирной линии. В ладони человека такими пространственными жирными линиями можно моделировать пальцы. А человеческая фигура также может быть составлена из таких жирных кривых, по аналогии с тем, как дети лепят человечков из пластилина. Если рассматривать силуэты на двух снимках стереопары, как проекции пространственных жирных линий на соответствующие плоскости, то можно предположить, что оси этих жирных линий проецируются в серединные оси соответствующих силуэтов. Это соображение может быть положено в основу метода восстановления пространственной формы объекта по стереопаре его силуэтных изображений. Стереопара изображений (рис. 15.16), полученных от двух камер, подвергается стандартной обработке, позволяющей выделить силуэты объектов. Результатом обработки является пара бинарных изображений (рис. 15.17). ^* Рис. 15.17. Бинарные изображения с выделенными силуэтами объекта Для бинарных изображений строятся базовые скелеты (рис. 15.18). Дальнейшая обработка исходит из того, что серединные оси скелетов для каждого пальца — это проекции истинных пространственных осей ладони. Исходя из этого считаем, что все точки ветви одного скелета соответствуют точкам ветви другого. > Рис. 15.18. Скелеты силуэтных изображений
252 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ Рис. 15.19. Сопоставление точек в скелетах силуэтных изображений Пусть на оси скелета первого изображения выбрана точка. В пространстве ей соответствует прямая, которая проектируется в эту точку. Образ этой прямой на другом изображении называется эпиполярной линией выбранной точки. Для заданной точки на скелете ее стереопара находится на пересечении другого скелета с эпиполярной линией этой точки. Используя эпиполярные линии, можно идентифицировать точки скелетов, составляющие стереопару, и тем самым определить пространственное расположение осевого графа ладони. Таким образом, выбрав на оси каждого пальца в первом изображении несколько точек, равноотстоящих друг от друга вдоль оси, мы находим соответствующие им точки на втором изображении (рис. 15.19). Имея откалиброванные камеры и построив пары соответствующих друг другу точек на обоих изображениях, мы получаем возможность вычислить их пространственные координаты известными методами [5, 25]. Анализ скелетов позволяет вычислить не только пространственное положение осей пальцев, но также и оценить их толщину. Если считать, что моделью пальца является пространственная жирная линия, то каждая сфера из числа составляющих эту жирную линию проецируется в круг на соответствующем силуэтном изображении. На основании параметров, полученных при калибровке камер, могут быть вычислены радиусы шаров по радиусам кругов-проекций. Имея полное описание пространственных жирных кривых, можно достаточно хорошо восстановить пространственную структуру ладони и визуализировать ее методами компьютерной графики. На рис. 15.20 представлена трехмерная визуализация построенной модели. Как видно из полученной визуализации, форма ладони восстанавливается достаточно грубо, поскольку пальцы моделируются пространственными жирными линиями с круговыми сечениями, а пясть также воспроизводится жирной линией, что является весьма Рис. 15.20. Визуализация про- неточным. Для описания пальцев такая странственного гибкого объекта модель вполне адекватна, а для пясти
15.3. ВОССТАНОВЛЕНИЕ ПРОСТРАНСТВЕННОЙ ФОРМЫ... 253 Рис. 15.21. Визуализация пространственной модели ладони, построенной по стереопаре силуэтных изображений изображение выглядит не вполне реалистично. Однако эти искажения формы объекта могут быть устранены. Для этого на основе построенного пространственного скелета можно вычислить плоскость ладони, а затем скорректировать модель, слегка «сплющив» сферы, составляющие пясть (рис. 15.21). Несмотря на грубость модели, для оценки взаимного расположения пальцев точность ее является вполне приемлемой. По существу, для распознавания жестов достаточно восстановить лишь пространственную форму скелетов ладоней. Аналогичным образом может быть восстановлена форма человеческой фигуры по стереопаре силуэтных изображений. Модельные примеры решения такой задачи представлены на рис. 15.22-15.23. Рис. 15.22. Модели человеческих фигур (куклы) В качестве моделей для экспериментов, взяты куклы размером 30 см. Это сделано с целью упрощения экспериментов и придания им «настольного» характера. Подобные эксперименты с людьми требуют специального помещения и оборудования. На рис. 15.22 показан внешний вид кукол, а на рис. 15.23 — визуализация пространственных моделей, полученных по стереопарам изображений. Эти результаты также показывают, что точность воспроизведения пространственной формы объектов вполне приемлема для того, чтобы-
254 Гл. 15. БИОМЕТРИЧЕСКИЕ ТЕХНОЛОГИИ Рис. 15.23. Визуализация пространственных моделей человеческих фигур, восстановленных по стереопарам силуэтных изображений решать задачу распознавания жестов. Следует отметить, что благодаря эффективному решению задачи скелетизации бинарных силуэтных изображений построение пространственной модели формы осуществляется также с высокой скоростью — до 5 кадров в секунду. Это дает возможность использовать метод в реальном масштабе времени работы систем машинного зрения.
ГЛАВА 16 КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ 16.1. Смежность объектов и маршрутизация. 16.2. Графические инструменты на основе жирных линий. 16.1. Смежность объектов и маршрутизация Внутренние и внешние скелеты бинарных изображений являются удобным инструментом для описания пространственной смежности отдельных связных объектов в изображении, а также прокладки маршрутов движения между смежными объектами. На рис. 16.1 представлено Рис. 16.1. Карта Малайского архипелага изображение, содержащее большое число отдельных объектов, — это карта Малайского архипелага. Интуитивно понятное соседство островов в архипелаге можно описать с помощью модели, основанной на внешнем скелете архипелага. Пространственное соседство островов архипелага можно описать с помощью диаграммы Вороного, если отдельные острова рассматривать в качестве сайтов. Понятие ячейки Вороного такого сайта определим следующим образом: это множество точек плоскости, расстояние от которых до сайта-острова не более чем до остальных сайтов-островов. Построение диаграммы Вороного множества сайтов такого рода можно осуществить следующим образом.
256 Гл. 16. КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ а) б) Рис. 16.2. Определение соседства островов в архипелаге: многоугольная аппроксимация границы и ее внешний скелет (а), диаграмма Вороного островов архипелага (б) 1. Построить границу и скелет бинарного изображения архипелага. 2. В скелете бинарного изображения удалить все ребра, не являющиеся циклическими. Нетрудно понять, что циклическими являются только те ребра, которые имеют инцидентные пустые круги, касательные к разным контурам границы. Следовательно, эти ребра представляют собой би- секторы, равноудаленные от соседних сайтов-островов, т. е. входят в границу областей Вороного этих островов. На рис. 16.2 представлены скелет бинарного изображения всего архипелага и полученная на его основе диаграмма Вороного островов архипелага. Острова, имеющие общую границу своих ячеек Вороного, являются соседними, а сами эти границы представляют собой маршруты, по которым можно передвигаться между островами. Поскольку ветви скелета лежат строго между граничными контурами, не касаясь и не пересекая их, скелетный граф может служить удобной моделью для решения задач маршрутизации, состоящих в построении сети возможных маршрутов движения в некоторой среде с препятствиями и выборе оптимальных по какому-либо критерию маршрутов. На рис. 16.3, α представлена задача маршрутизации, связанная с поиском пути в лабиринте. Цель этой головоломки — найти кратчай-
16.1. СМЕЖНОСТЬ ОБЪЕКТОВ И МАРШРУТИЗАЦИЯ 257 в) г) Рис. 16.3. Поиск пути в лабиринте: «Зеленый» лабиринт в Чевнинге (а), бинарное изображение лабиринта (б), граница и базовый скелет лабиринта (в), сеть маршрутов и кратчайший путь в сети (г) ший путь от точки входа, обозначенной буквой А, в центр лабиринта, обозначенный буквой В. Решение может быть получено на основе построения границы и скелета бинарного изображения. Само бинарное изображение получается путем раскраски стен лабиринта в белый цвет, а дорожек — в черный (рис. 16.3,6). Для полученного таким образом бинарного изображения строим границу и базовый скелет (рис. 16.3, в). В скелетном графе выделяем вершины, соответствующие точкам А и В. Задача поиска пути в лабиринте в результате сводится к выбору кратчайшего пути на графе. Поскольку для ребер скелета легко вычислить их длину, эта задача решается стандартными алгоритмами оптимизации путей в графах, например алгоритмом Дейкстры для поиска кратчайшего пути на графе [18]. Результат решения задачи приведен на рис. 16.3, г. Информация о пустых кругах, связанных с точками скелета, также может быть использована при решении задач маршрутизации. Если рассматривать ветвь скелета как возможный путь движения в обход
258 Гл. 16. КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ в) г) Рис. 16.4. Маршруты транспортировки мебели в квартире: бинарное изображение квартиры (а), граница и скелет свободного пространства (б), допустимые маршруты для переноски заданного объекта (в), область допустимых размещений объекта (г) каких-то препятствий, то размеры пустых кругов характеризуют ширину этого пути. Ширина пути играет важную роль при транспортировке объекта, который имеет конечные размеры и не может рассматриваться как точечный объект. В примере на рис. 16.4 задача маршрутизации состоит в размещении в квартире такого объекта. Сам объект (круглый стол) представлен на схеме в виде круга. Задача состоит в определении тех мест в квартире, куда объект можно поставить и, главное, куда его при этом можно занести, не передвигая остальную мебель. Решение задачи осуществляется на основе построения границы и скелета бинарного изображения квартиры. Полученный скелет далее подвергается «стрижке» по следующему правилу. Те его ветви, которые содержат пустые круги меньшего размера, чем заданный для переноски объект, удаляются из скелета. Кроме того, удаляются те ветви скелета, которые лежат вне квартиры. Множество оставшихся ветвей (рис. 16.4, в) образует допустимые маршруты переноски объекта. Но при этом не все маршруты реально можно использовать. Интерес представляют только те из них, которые связаны с входной дверью.
16.1. СМЕЖНОСТЬ ОБЪЕКТОВ И МАРШРУТИЗАЦИЯ 259 Это значит, что из всего оставшегося подграфа скелета нужно оставить лишь одну связную компоненту, в которой лежит точка входа в квартиру. Эта компонента вместе со своими пустыми кругами изображена на рис. 16.4, г. Огибающая множества пустых кругов показывает то пространство, куда фактически может быть занесен новый стол. Еще одно полезное применение непрерывных скелетов в геоинформатике связано с задачей размещения надписей на вытянутых географических объектах: островах, озерах, реках, городских улицах и площадях. На цифровых картах необходимо размещать названия таких объектов, причем делать это нужно автоматически при динамически изменяющемся изображении части карты на ограниченном пространстве экрана в реальном масштабе времени. Линия, вдоль которой размещается надпись, должна по возможности лежать внутри объекта, а сами буквы, составляющие надпись, не должны вылезать за границу объекта. Скелет объекта вместе со своими пустыми кругами дает возможность для обоснованного выбора такой линии и размера букв. В примере на рис. 16.5, α представлена карта Японии в виде бинарного растрового изображения, а на рис. 16.5,6 изображены Рис. 16.5. Построение области размещения надписи на географическом объекте: бинарное изображение Японии (а), граница и скелет бинарного изображения (б), максимальные оси связных компонент изображения (в), области для размещения надписей (г)
260 Гл. 16. КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ непрерывная многоугольная граница и скелет этого изображения. Каждый из четырех островов представляется в изображении односвязной компонентой, и каждой компоненте соответствует одна компонента скелета, имеющая вид дерева. Если располагать названия островов в каждом соответствующем острове, то их можно разместить вдоль так называемой «максимальной оси» скелета. Под максимальной осью скелета древовидной формы будем понимать цепь максимальной длины. На рис. 16.5, β показаны такие максимальные оси островов. А на рис. 16.5, г представлены области, в которых следует поместить надписи. Эти области составлены из вписанных кругов с центрами на максимальных осях. Поскольку известны размеры кругов, легко можно выбрать ту часть максимальной оси, у которой «ширина» является достаточной для размещения символов шрифта требуемого размера. Построение максимальной цепи на графе, имеющем форму дерева, можно осуществить с помощью метафоры забега группы бегунов, используемой в известном алгоритме Дейкстры для поиска кратчайшего пути на графе [18]. В нашем случае общее количество бегунов равно числу терминальных вершин в дереве. Все бегуны стартуют из терминальных узлов одновременно и бегут с одинаковой скоростью вдоль ребер графа. Достигнув вершины, степень которой больше 2, бегун останавливается, а ребро графа, по которому он прибежал в эту вершину, отрезается от нее. Вся отрезанная ветвь при этом уничтожается и степень вершины уменьшается на 1. Если бегун встречает другого бегуна на одном и том же ребре графа, это означает, что процесс построения оси завершен. Ось образуется из двух маршрутов, пройденных этими самыми последними бегунами. На рис. 16.6 приведен пример построения максимальной цепи в дереве с 13 вершинами. Рис. 16.6. Построение максимальной цепи в дереве Бегуны завершают бег в такой последовательности: 4, 2, 8, 13, 10, 3, 6, 12, 11, 1, 7. Последними остаются на дистанции 5 и 9 бегуны. Именно они встречаются и формируют максимальную ось, соединяющую 5 и 9 вершины.
16.2. ГРАФИЧЕСКИЕ ИНСТРУМЕНТЫ НА ОСНОВЕ ЖИРНЫХ ЛИНИЙ 261 16.2. Графические инструменты на основе жирных линий Графические инструменты, позволяющие рисовать «линии с шириной», имеются во многих современных редакторах. Обычно такой инструмент представляет собой кисть некоторой определенной формы, след от перемещения которой вдоль задаваемого пользователем- оператором пути и образует широкую линию. При этом форма и цвет пера остаются неизменными в пределах одной линии. Другой подход к построению «линий с шириной» состоит' в сдвиге точек заданной кривой в направлении нормали на заданную величину. Существует еще один способ построения таких линий с помощью «метаболов» — когда широкая линия строится из нескольких опорных кругов путем интерполяции между ними. Использование жирных линий, представляемых как объединение параметрического семейства кругов, для построения векторной кисти позволяет существенно расширить возможности этого изобразительного средства. На его основе появляется возможность рисовать жирные кривые линии переменной ширины, закрашивать двумерные объекты, моделируя 3D эффекты, закрашивать штрихи, нарисованные такой кистью, в соответствии с заданным эталоном. Кроме того, появляется возможность построить для произвольного растрового образа представление в виде рисунка, выполненного с помощью такой кисти, т.е. в виде объединения жирных кривых. Это позволяет осуществлять разнообразные деформации изображения, существенно расширяет и упрощает его морфологические преобразования. На рис. 16.7 представлен пример изображения, нарисованного такой векторной кистью. Рисунок состоит из 36 жирных линий, раскрашенных в разные цвета. yjr а) б) Рис. 16.7. Рисование жирными линиями: характеристические многоугольники жирных линий (а), разноцветная закраска жирных линий (б)
262 Гл. 16. КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ Рис. 16.8. Создание анимации на основе преобразований циркулярной фигуры Поскольку преобразование и рисование циркулярных фигур выполняется с высокой скоростью, существует возможность создания анимации в реальном времени без предварительного рендеринга. Для этого из исходной циркулярной фигуры строятся изображения нескольких ключевых фаз движущегося объекта (рис. 16.8). Поскольку все они состоят из одних и тех же жирных линий, существует возможность непрерывной параметризации перехода одной фазы в другую. Непосредственное формирование кадров анимационного фильма на экране осуществляется программой путем расчета соответствующего положения всех жирных линий, входящих в фигуру. Форма математического описания жирных линий дает возможность рисования не только однотонных штрихов, как в приведенном примере, но позволяет также использовать более сложные способы раскраски, создающие различные художественные эффекты. Мы рассмотрим два возможных способа раскраски: цветовым переходом и по заданному эталону. Суть метода цветового перехода, называемого также градиентной раскраской, состоит в том, что задаются цвета лишь некоторых точек объекта, а цвета остальных точек автоматически вычисляются по ним на основе интерполяции. Для жирной линии раскраска может быть задана цветом осевой линии и цветом границы, а цвета остальных точек определяются в зависимости от их положения как линейная комбинация этих цветов с весовыми коэффициентами. Пусть F = (u(t),v(t),r(t)) — жирная линия. Рассмотрим семейство слоев жирной линии F(X) = (u(t),v[t),\ · r(t)), λ G [0,1], которое было определено в 12.5. Каждый слой, в свою очередь, представляет собой жирную линию. Все слои семейства имеют одну и ту же осевую линию и отличаются лишь своей шириной. Предположим, что для раскраски жирной линии заданы два цвета: ξα — цвет осевой линии и & — цвет границы. Рассмотрим слой глубины λ (называемый λ-слоем). Для точки жирной линии, имеющей глубину λ (рис. 16.9), положим, что ее цвет задается в виде линейной Рис. 16.9. Вычисление цвета λ-слоя жирной линии
16.2. ГРАФИЧЕСКИЕ ИНСТРУМЕНТЫ НА ОСНОВЕ ЖИРНЫХ ЛИНИЙ 263 комбинации цветов ξα и &, имеющей вид ξ = ξα · μ(Χ) + & · (1 - μ(λ)), где μ(Α) — монотонная функция, задающая скорость перехода одного цвета в другой (μ(0) = 1, μ(1) =0). Для описания скорости цветового перехода можно взять, например, функции вида μ(λ) = 1 — Хк, где к — небольшое целое число, например, к = 2 или к = 3. Для быстрой закраски жирной линии можно предложить метод, состоящий в дискретизации ее на га слоев, соответствующих глубинам Xi = 1 — ^, г = 0,.. .га, вычислении цвета каждого слоя ^ = = ζα ' м(Аг) + £ь ' (1 — Μ(λί)), и изображении семейства однотонных жирных линий F(Xi) цвета &. На рис. 16.10, α приведен пример такой раскраски жирной линии. В примере число слоев га = 15, цвета ξα = 128 и £ь = 255, скорость цветового перехода μ(λ) = 1 — λ. а) б) Рис. 16.10. Градиентная раскраска отдельной жирной линии и циркулярной фигуры путем последовательной раскраски слоев Таким же способом может быть осуществлена градиентная раскраска циркулярной фигуры (рис. 16.10,6). При этом для каждого значения λ^ соответствующие λ-слои всех жирных линий, образующих фигуру, должны быть раскрашены одновременно, и лишь после этого выполняется переход к очередному значению А^-ы. Тем самым обеспечивается правильное «слияние» жирных линий в циркулярной фигуре. Кроме монохромной и градиентной раскраски жирных линий существует возможность нанесения на них текстурной раскраски в соответствии с заданным эталоном. Пример такой раскраски представлен на рис. 16.11. Пусть задана некоторая простая жирная линия без изломов (прообраз) и для нее определена эталонная раскраска в виде растрового изображения (рис. 16.11, а). Задача состоит в том, чтобы закрасить некоторую заданную произвольно жирную линию (образ) в соответствии с этим эталоном (рис. 16.11,6, в). Для закрашивания произвольной линии нужно построить непрерывное отображение эталона на нее. Поскольку новая линия изображается на растровом устройстве, нужно для каждого ее пикселя найти прообраз в эталоне и закрасить этот пиксель
264 Гл. 16. КОМПЬЮТЕРНАЯ ГРАФИКА И ВИЗУАЛИЗАЦИЯ Рис. 16.11. Раскраска жирных линий по эталону (эталон (а), произвольные жирные линии (б, в)) а) б) «О г) Рис. 16.12. Деформация текстурного изображения: дракон Гауди (а), его представление циркулярной фигурой (б), деформации фигуры с эталонной раскраской (в, г)
16.2. ГРАФИЧЕСКИЕ ИНСТРУМЕНТЫ НА ОСНОВЕ ЖИРНЫХ ЛИНИЙ 265 в цвет прообраза. Такое отображение может быть построено с помощью циркулярных координат точки в жирной линии. Циркулярные координаты позволяют гомеоморфно связать между собой точки образа и прообраза. Раскраска жирной линии на растре осуществляется следующим образом. 1. Последовательно сканируем все точки растра, лежащие внутри жирной линии-образа, и вычисляем их циркулярные координаты (λ,τ,0,σ). 2. Для каждой точки образа с координатами (λ, г, 0, а) существует точка в жирной линии-прообразе с такими же координатами. Поскольку декартовы координаты такой точки прообраза в общем случае не являются целочисленными, находим ближайшую целочисленную точку в прообразе (т.е. округляем координаты). 3. Точку образа закрашиваем в цвет найденной точки прообраза. Для реализации предложенной схемы могут быть использованы алгоритмы пересчета декартовых координат в циркулярные и обратно, описанные в разделе 12.5. Эталонная раскраска жирных линий может быть использована для текстурной раскраски циркулярных фигур при деформации. На рис. 16.12 представлен пример, показывающий механизм оживления барселонского дракона Гауди на основе его простой цифровой фотографии. Путем деформации и эталонной раскраски жирных линий из исходной циркулярной фигуры получаются фазы «ходьбы» дракона, позволяющие его анимировать. Эти деформации выполняются путем перемещения контрольных кругов жирных кривых, составляющих циркулярную фигуру. Измененные жирные линии далее раскрашиваются в соответствии с эталонной раскраской на исходном изображении. Следует отметить, что поскольку эталонная раскраска требует значительного времени (несколько секунд на одно изображение), анимация в реальном времени уже невозможна и требует предварительного рендеринга.
ГЛАВА 17 ВЫЧИСЛИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ 17.1. Экспериментальные оценки эффективности. 17.2. Сравнение с дискретными методами. 17.1. Экспериментальные оценки эффективности Рассматривая в предыдущих главах алгоритмы решения задач анализа и преобразования формы изображений, мы постоянно делали акцент на оценивании их вычислительной эффективности. Эти оценки выражались описаниями типа 0(Т(п)), Ω(Τ(ή)) и θ(Τ(η)), где параметр η определяет размерность вычислительной задачи, Т(п) задает некоторую монотонно неубывающую функцию этого параметра, а 0(Т(п)), й(Т(п)) и θ(Τ(η)) приняты в качестве обозначения классов подобных монотонно неубывающих функций. К классу 0(Т(п)) относятся те функции, скорость роста которых при η —► оо не превышает скорости роста функции Т{п). Класс Ω(Τ(η)) составляют те функции, у которых скорость роста при η —► оо наоборот, не меньше, чем у Т(п). А к классу θ(Τ(η)) относятся функции, у которых скорость роста такая же, как и у Т{п). В качестве «образующей функции» Т{п) в рассматриваемых нами алгоритмах оказалось достаточным использовать функции Т(п) = log n, T(n) = η, Τ (η) = η · log η и Τ (η) = η2. Выбор параметра η, характеризующего размерность задачи, осуществляется в зависимости от контекста этой задачи. Это может быть размер растрового изображения, например, для задачи граничной аппрокси-. мации дискретной сцены непрерывной сценой. В другом случае это может быть количество вершин в многоугольной фигуре, например, для задач гладкой аппроксимации границы дискретной фигуры, либо для задачи построения скелета многоугольной фигуры. В третьем случае в качестве размерности вычислительной задачи может выступать размерность скелетного графа (число вершин или ребер), как, например, при регуляризации скелета, при построении циркулярных аппроксимаций. Важно отметить общую черту всех этих оценок — их можно назвать теоретическими, поскольку их получение основывается на строгих математических рассуждениях и не зависит от конкретных вычислительных устройств, используемых для реализации построенных алгоритмов. Используя эти оценки эффективности алгоритмов, предложенных в книге, нужно иметь в виду следующее. Во-первых, теоретические оценки вычислительной эффективности алгоритмов являются асимптотическими. Это значит, что они дают
17.1. ЭКСПЕРИМЕНТАЛЬНЫЕ ОЦЕНКИ ЭФФЕКТИВНОСТИ 267 лишь представление о характере роста временных затрат по мере роста размерности обрабатываемых изображений. Во-вторых, оценки эти, как правило, получены для так называемых худших случаев, т. е. для таких вариантов исходных данных, при которых работа алгоритмов наиболее трудоемка. Таким образом, теоретические оценки по сути дела представляют собой гарантированные асимптотические оценки скорости роста временных затрат для работы алгоритмов. Такие оценки чрезвычайно важны для разработки, обоснования, сравнения алгоритмов. Однако, при всей их полезности, очевидна недостаточность этих оценок с точки зрения использования алгоритмов для практических приложений. Поскольку они дают лишь скорость роста затрат с ростом размерности, то трудно заранее понять, каковы будут абсолютные расходы времени для конкретного приложения. А поскольку они являются асимптотическими, то бывает сложно оценить реальную скорость роста затрат при относительно скромных размерах задачи. Вопрос обычно состоит в том, «работает ли уже асимптотика» при той размерности задачи, которая возникла на практике. Реальную оценку того, насколько приемлемы те или иные алгоритмы для конкретных практических задач, могут дать полноценные вычислительные эксперименты с программным обеспечением, реализующим эти алгоритмы. Конечно, рассматривая результаты таких экспериментов, их также не следует абсолютизировать, поскольку они тоже зависят от характера конкретной прикладной задачи, а не только от ее размерности. Так, две многоугольные фигуры, имеющие одинаковое число вершин η = 106, но различающиеся количеством граничных контуров, например, 10 контуров в одной и 10000 в другой, потребуют разного времени для скелетизации, причем отличие может быть в несколько раз. Тем не менее, при отсутствии таких экспериментальных оценок остаются слишком большие неопределенности для понимания реальной полезности того или иного алгоритма. В представленных ниже материалах приводятся данные вычислительных экспериментов с описанными в книге алгоритмами. Все алгоритмы реализованы в среде Борланд-Дельфи-5. Непосредственные оценки получены на компьютере с процессором Интел с частотой 1,6 Ггц и памятью 512 Мб. Выбор примеров для экспериментов осуществлялся достаточно произвольно. Среди них есть изображения, заимствованные из интернета, а также полученные в практических задачах. Следует отметить, что наиболее сложными в вычислительном отношении среди рассмотренных задач являются задачи построения непрерывного скелета для бинарного растрового изображения. Именно к этим задачам относятся, в основном, эксперименты, описанные ниже. На рис. 17.1-17.12 приведены изображения в формате растровых черно-белых картинок с их условными названиями и размерами.
268 Гл. 17. ВЫЧИСЛИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ Рис. 17.1. Палец (288x400) rffi U? iJSr ^β Рис. 17.2. Ладонь (640x480) Рис. 17.3. Козлы черные (540x540) Рис. 17.4. Козлы белые (540x540) Рис. 17.5. Лист (410x444) Рис. 17.6. Квартира (413x506)
17.1. ЭКСПЕРИМЕНТАЛЬНЫЕ ОЦЕНКИ ЭФФЕКТИВНОСТИ 269 Рис. 17.7. Орнамент (800x800) Рис. 17.8. Чертеж (3345x1266) Stmt Count» township or other oivision of county In-^n ' ИлМЕ OF INSTITUTION. THIRTEEN Рис. 17.9. Бланк (2000x1500)
270 Гл. 17. ВЫЧИСЛИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ Рис. 17.10. План (7616x6436) Рис. 17.11. Нейрон (839x731) Рис. 17.12. Корни (1800x1810) Обработка приведенных изображений включает: построение аппроксимирующих многоугольных фигур, построение скелетов этих фигур, регуляризацию (стрижку) скелетов. Результаты обработки представлены в табл. 17.1. Для каждого изображения приведены размеры полученных многоугольных фигур и скелетов, а также затраты времени на их вычисление. Время указано в миллисекундах. Значение 0 в табл. 17.1 означает, что расход времени не превышает 2 мс.
17.1. ЭКСПЕРИМЕНТАЛЬНЫЕ ОЦЕНКИ ЭФФЕКТИВНОСТИ 271 Время вычисления (миллисекунды) Размерность базового скелета Размерность скелета Размерность границы ое изображение Общее Базовый скелет Скелет Дерево смежности Многоугольная фигура со Ονο <υ Си Вершины Ребра Вершины Вершины Контуры Размеры 3 2 О О 2 о S о S <* 5338 836 5456 871 8376 1391 8494 1426 4382 811 288x400 640x480 о ю о о о о 2313 2322 3721 3730 1874 σ> 540x540 грные о о о ю о о 2394 2384 3790 3780 1878 о 540x540 елые о о о о CN 520 , 521 923 924 463 - 410x444 о О О О О 533 СО ю 643 626 296 σ> 413x506 210 о 160 о о 7823 7643 9928 9748 4694 186 800x800 н 460 о 300 о 150 13983 13954 18865 18836 9392 200 3345x1266 1512 о СО 1152 551 330 35553 39002 74707 78156 46750 6925 2000x1500 10164 о 7531 3586 2463 258769 266295 426290 433816 229945 17335 7616x6436 о о о сю о СО о СО 4440 4435 6913 6908 3449 t·- 839x731 420 о 320 130 о 13986 13937 22521 22472 00 1 00 1800x1810 К с ς о —. CN СО * ^ CQ О у Ш Ε Χ ^ ν оо σι о -н in
272 Гл. 17. ВЫЧИСЛИТЕЛЬНАЯ ЭФФЕКТИВНОСТЬ Из приведенных результатов видно, что скорость обработки простых изображений достаточно высока, что дает возможность эту обработку осуществить в режиме реального времени работы систем машинного зрения. Наибольшие временные затраты приходятся на обработку сложных сканированных документов — текстов, географических планов. Но для изображений такого рода полученные расходы времени также вполне приемлемы и укладываются в понятие «реальное время» в системах автоматизированной обработки документов. 17.2. Сравнение с дискретными методами Ранее, сравнивая дискретный и непрерывный подходы, мы отмечали ряд преимуществ непрерывных моделей формы по сравнению с дискретными. Естественно предположить, что за эти преимущества чем- то нужно «расплатиться», в частности, такой платой может оказаться вычислительная эффективность. Поэтому при рассмотрении вопроса о вычислительной эффективности непрерывных алгоритмов анализа формы в бинарных изображениях представляет интерес сравнительная оценка с дискретными алгоритмами, решающими те же задачи. Трудности получения сравнительных оценок непрерывных и дискретных методов состоят в том, что обычно публикации по этой тематике либо вообще не содержат экспериментальных оценок времени решения задач, либо эти оценки получены для очень простых случаев. Публикаций, описывающих такие эксперименты, весьма немного. Обычно либо вообще не приводится данных о реализации и времени работы алгоритма, как, например, в [40], либо приводятся результаты вычислительных экспериментов с «игрушечными» примерами очень простых изображений [33]. Наиболее сложные примеры изображений и реальные временные затраты на их обработку приводятся в работах [46, 55]. Эти примеры представлены на рис. 17.3, 17.5, 17.6, 17.11 и 17.12. Результаты сравнения наших алгоритмов с алгоритмами, описанными в этих работах, приведены в табл. 17.2 и 17.3. Время работы наших алгоритмов получено для процессора Intel с частотой 1,6 Ггц и памятью 512 Мб. Время в таблицах указано в миллисекундах. В таблицах алгоритмы обозначены следующим образом: ОК — алгоритм Ogniewicz-Kubler [46], ST — алгоритм Strzodka-Telea [55], СА — наши алгоритмы (Continuous Approximation), описанные в этой книге. Сравнение с алгоритмом [46] табл. 17.2 показывает, что использование минимальных разделяющих многоугольников для аппроксимации границы изображения позволяет существенно понизить размерность задачи: число элементов в скелете многоугольной фигуры в 6-8 раз меньше, чем в соответствующей диаграмме Вороного граничных точек изображения. Общее сокращение времени вычислений (более чем в
17.2. СРАВНЕНИЕ С ДИСКРЕТНЫМИ МЕТОДАМИ 273 Таблица 17.2. Время работы алгоритмов ОК и СА (в миллисекундах) на построение скелетов для изображения «Козлы черные» (рис. 17.3) Число сайтов Число ребер скелета Число вершин скелета Время решения Дискретный алгоритм (ОК) 11104 31381 20303 9820 Непрерывный алгоритм (СА) 1874 3721 3730 42 Соотношение дискретный/ непрерывный 5.92 8.43 5.44 234 200 раз) частично объясняется этим уменьшением размерности задачи, а частично повышением мощности процессоров за прошедшие 12 лет после публикации работы [46]. В более позднем исследовании в работе [55] описывается новый параллельный алгоритм дискретной скелетизации, причем, как показывают авторы, его скорость является рекордной для дискретных алгоритмов. В таблице приведены данные, полученные авторами на графическом процессоре GeForce FE 5800 Ultra chip, содержащем десятки независимых вычислительных устройств, работающих в параллельном режиме. Однако, как видно из табл. 17.3, скорость работы нашего непрерывного алгоритма на 1-2 порядка выше. Нужно отметить, что непрерывный алгоритм в принципе тоже может быть распараллелен и его быстродействие на многоядерных процессорах вырастет. Таблица 17.3. Время работы алгоритмов ST и СА (в миллисекундах) на построение скелетов для изображений «Лист», «Квартира», «Нейрон», «Корни» (рис. 17.5, 17.6, 17.11, 17.12) ' Изображение Лист Квартира Нейрон Корни Размер бинарного изображения (в пикселях) 410x440=182040 413x506=208978 839x731=613309 1800x1810=3258000 Время Дискретный алгоритм (ST) 140 640 2500 3790 Непрерывный алгоритм (СА) 14 32 100 400 Соотношение дискретный/ непрерывный 10 20 25 9.5 j Таким образом, эксперименты показывают, что скорость работы алгоритма непрерывной скелетизации на порядок превосходит лучшие образцы алгоритмов дискретной скелетизации. Платой за это и другие достоинства непрерывных алгоритмов является, как уже отмечалось, более высокая сложность их программной реализации, требующая более изощренной техники программирования.
ЗАКЛЮЧЕНИЕ Аппроксимация растровых бинарных изображений многоугольными многосвязными фигурами, построение скелетов этих фигур, их регуляризация и аппроксимация циркулярными фигурами последовательно реализуют принцип непрерывного моделирования формы в дискретных бинарных изображениях. Непрерывные модели создают базу для решения задач анализа, распознавания и преобразования изображений. Возможность использования эффективных алгоритмов вычислительной геометрии для построения и анализа полученных непрерывных моделей является основой для применения их в системах машинного зрения и других системах, работающих в реальном масштабе времени. Реализация принципа непрерывного подхода в нескольких практических приложениях, описанных в книге, подтвердили высокую эффективность непрерывных алгоритмов, их преимущества по сравнению с другими решениями, в частности, с дискретными морфологическими методами. Дальнейшее развитие непрерывного подхода к анализу формы изображений может идти по нескольким направлениям. Как уже отмечалось, алгоритмы построения непрерывных моделей формы требуют существенно более высокой техники разработки программного обеспечения по сравнению с дискретными моделями. Одна из проблем непрерывных моделей связана с конечной точностью вычислений на реальных вычислительных устройствах. Эта проблема типична для многих задач вычислительной геометрии, имеющих большую размерность. В ходе вычислений идет накопление ошибок, которое часто приводит к некорректным результатам. В последние годы в теории геометрических алгоритмов разрабатывается направление, называемое «топологически ориентированные методы», в которых средством борьбы с накоплением таких ошибок является постоянный контроль топологической корректности вычисляемых геометрических объектов (границ, скелетов, циркуляров в нашем случае). Для реализации этой идеи требуется разработка таких алгоритмов, в которых существует возможность этого контроля. Обеспечение топологической корректности может вступить в противоречие с выполнением каких- то «метрических» требований. Например, это может быть требование по обеспечению пустоты кругов при построении скелета. Естественно,
ЗАКЛЮЧЕНИЕ 275 речь идет пересечениях «в пределах точности вычислений». Разработка таких топологически ориентированных алгоритмов для построения непрерывных моделей бинарных изображений является текущей задачей, которую нужно решить в рамках непрерывного подхода. Еще одно направление работы состоит в построении универсальных структур данных для описания формы объектов. Границы и скелетные графы многосвязных многоугольных фигур допускают различные варианты представления в структурах данных. С одной стороны, это обеспечивает большую гибкость структур, что дает возможность строить эффективные алгоритмы для анализа и распознавания изображений. Но с другой стороны, разработка таких структур данных представляет собой сложную задачу, которую приходится решать при реализации непрерывного подхода в каждом приложении. Тем не менее, можно рассчитывать на построение таких структур данных, описывающих непрерывные модели, которые обладают универсальностью для многих приложений. Речь идет о построении структур, объектами которых являются многоугольные фигуры, их вершины, стороны; скелеты многоугольных фигур, их вершины, ребра, сайты, пустые окружности; циркуляры, их осевые линии, радиальные функции. При этом для обеспечения эффективного выполнения операций доступа к этим данным нужно поддерживать все связи между этими элементами, описывающие их инцидентность. Разработка таких универсальных структур данных является важной задачей, решение которой позволит сделать непрерывные модели доступными широкому кругу пользователей. Третье направление развития методов непрерывного анализа формы изображений состоит в обобщении этих методов на случай полутоновых изображений. Строгой концепции скелета полутонового изображения пока что не построено. Однако известны подходы к построению таких «скелетов» на основе эвристических алгоритмов утончения полутоновых изображений. Распространение идей непрерывного подхода на эту область требует построения строгих математических моделей для таких понятий, как форма полутонового изображения, граница объекта в этом изображении, скелет объекта. Еще одно направление развития непрерывного подхода состоит в обобщении его на задачи анализа и распознавания «трехмерных» изображений. В последнее время появились недорогие устройства, позволяющие осуществить трехмерное сканирование реальных объектов, результатом которого являются различные варианты дискретного представления формы объектов. Форма может быть представлена трехмерным массивом точек, аналогичным матрице растрового бинарного изображения. Этот массив имеет вид трехмерной дискретной матрицы, элементы которой называются вокселями (volume's elements). Но вексельное представление не является единственным способом представления формы трехмерного объекта. Другой способ состоит в представлении
276 ЗАКЛЮЧЕНИЕ объекта через некоторое нерегулярное дискретное множество точек в трехмерном пространстве, расположенных на поверхности объекта либо заполняющих его, — так называемое облако точек. Для обработки и анализа таких трехмерных изображений существуют подходы, которые можно назвать дискретными по аналогии с дискретными алгоритмами обработки бинарных изображений. В частности, известны методы построения трехмерных скелетов на основе дискретных морфологических операций. Задачи построения непрерывных моделей для трехмерных дискретных объектов также являются весьма актуальными. Причины здесь те же самые, что и для случая двумерных изображений: большая адекватность человеческому пониманию формы, как сплошного тела, а также более высокая вычислительная эффективность. Можно предложить несколько различных подходов к обобщению описанных в книге методов на трехмерный случай. Один путь состоит в построении границы трехмерного объекта в виде многогранника, аналогичного минимальному разделяющему многоугольнику, и последующем построении скелета такого многогранника. Другой возможный путь состоит в рассмотрении двумерных сечений дискретного трехмерного объекта и построении непрерывных скелетов фигур в этих сечениях, а затем реконструкции трехмерного скелета на их основе. Сложность этих задач в большой степени определяется сложностью структуры скелета многогранника, представляющего собой геометрическое место центров вписанных сфер. Скелет в трехмерном случае есть двумерное точечное многообразие, т. е. скелет состоит не из линий, а из поверхностей — большого количества «двумерных лепестков». Соответственно существенно усложняется описание представления этого скелета и алгоритмов его анализа. Полученные решения задач для двумерных бинарных изображений, описанные в этой книжке, дают надежду на успешное продвижение и в разработке более сложных непрерывных моделей: для трехмерных и полутоновых изображений. Автор будет благодарен читателям за полезные замечания, предложения, критику. Писать автору можно по адресу: L.mest@ru.net.
ЛИТЕРАТУРА 1. Арсенин В.Я., Тихонов А.Н. Некорректные задачи. Математическая энциклопедия. Т.З. — М.: Советская энциклопедия, 1982. 2. Ахо Α., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. — М.: Мир, 1979. 3. Брукс Ф.П. Как проектируются и создаются программные комплексы. — М.: Наука, 1979. 4. Вирт Н. Алгоритмы + структуры данных = программы. — М.: Мир, 1985. 5. Голованов Н.Н., Илъютко Д.П., Носовский Г.В., Фоменко А.Т. Компьютерная геометрия. — М.: Издательский центр «Академия», 2006. 6. Гонзалес Р., Вудс Р. Цифровая обработка изображений. — М.: Техносфера, 2006. 7. Делоне Б.Н. О пустом шаре // Известия АН СССР. — 1934. — VII серия. Т. 6. - С. 793-800. 8. Журавлёв Ю.И. Непараметрические задачи распознавания образов. Избранные научные труды. — М.: Магистр, 1998. 9. Иванов Д., Кузьмин Е. Эффективный алгоритм построения остова растрового изображения // Тр. межд. конф. «Графикон-98». — М.: МГУ, 1998. — С. 65-70. 10. Курош AT. Курс высшей алгебры. — М., 1967. 11. Лагно Д., Соболев А. Модифицированные алгоритмы Форчуна и Ли ске- летизации многоугольной фигуры // Тр. межд. конф. «Графикон-2001». — Н. Новгород, 2001. - С. 120-124. 12. Местецкий Л.М. Непрерывный скелет бинарного растрового изображения // Тр. межд.конф. «Графикон-98». - М.: МГУ, 1998. - С. 71-78. 13. Местецкий Л.М. Скелетизация многоугольной фигуры на основе обобщенной триангуляции Делоне // Программирование. — 1999. — № 3. — С. 16-31. 14. Местецкий Л.М. Компьютерная графика на основе жирных линий // Тр. межд. конф. «Графикон-2000». - М.: МГУ, 2000. - С. 165-173. 15. Местецкий Л.М. Скелетизация многосвязной многоугольной фигуры на основе дерева смежности ее границы // Сибирский журнал вычислительной математики. - 2006. - Т. 9, № 3. - С. 299-314. 16. Местецкий Л.М. Сравнение изображений гибких объектов на основе нормализации // Тр. межд. конф. «Графикон-2007». — М.: МГУ, 2007. — С. 203-210.
278 ЛИТЕРАТУРА 17. Моисеев Η.Η. Математика ставит эксперимент. — М.: Наука, 1979. 18. Новиков Φ Л. Дискретная математика для программистов. — СПб.: Питер, 2000. 19. Норден Л.П. Краткий курс дифференциальной геометрии. — М.: Физмат- гиз, 1958. 20. Прасолов В.В. Элементы комбинаторной и дифференциальной топологии. - М.: МЦНМО, 2004, 21. Препарата Ф., Шеймос М. Вычислительная геометрия: введение. — М.: Мир, 1989. 22. Роджерс Д., Адаме Дж. Математические основы машинной графики. — М.: Мир, 2001. 23. Словарь русского языка: В 4-х т. Институт русского языка АН СССР. — М.: «Русский язык», 1981. 24. Старовойтов В.В. Локальные геометрические методы цифровой обработки и анализа изображений. — Минск: Институт технической кибернетики НАН Беларуси, 1997. 25. Форсайт Д., Понс Ж. Компьютерное зрение. Современный подход. — Издательский дом «Вильяме», 2004. 26. Фурман Я.Л., Юрьев Л.Н., Яншин В.В. Цифровые методы обработки и распознавания бинарных изображений. — Красноярск: Изд-во Красноярского университета, 1992. 27. Bat X., Latecki L.J., Liu W.-Y. Skeleton pruning by contour partitioning with discrete curve evolution // IEEE transactions on pattern analysis and machine intelligence. - March 2007. - Vol. 29, № 3. 28. Blum #. A transformation for extracting new descriptors of shape // In Proc. Symposium Models for the perception of speech and visual form. — MIT Press, Cambridge, MA, 1967. 29. Castelman K.R. Digital image processing. — Prentice hall, 1996. 30. Chazelle В.Л. Theorem on polygon cutting with applications // Proc. 23th IEEE symposium on foundations of computer science, Chicago, 1982. — P. 339-349. 31. Costa L., Cesar R. Shape analysis and classification. — CRC Press, 2001. 32. Dehne F., Klein R. The big sweep: On the power of the wavefront approach to Voronoi diagrams // Algorithmica. - 1997. - Vol. 17. - P. 19-32. 33. Deng W., Iyengar S., Brener N. A fast parallel thinning algorithm for the binary image skeletonization // The International Journal of High Performance Computing Applications. - 2000. - Vol. 14, № 1. - P. 65-81. 34. Fortune S. A sweepline algorithm for Voronoi diagrams // Algorithmica. — 1987. - Vol. 2. - P. 153-174. 35. Held M. VRONI: an engineering approach to the reliable and efficient computation of Voronoi diagrams of points and line segments // Computational geometry: theory and application. - 2001. - Vol. 18, № 2. - P. 95-123.
ЛИТЕРАТУРА 279 36. Kirkpatrick D.G. Efficient computation of continuous skeletons // In Proceedings of the 20th Annual IEEE Symposium on FOCS. - 1979. - P. 18-27. 37. Klein R., Lingas A. Fast skeleton construction // In Proc. 3rd Europ. Symp. on Alg. (ESA'95), 1995. 38. Lee D.T., Schachter В J. Two algorithms for constructing a Delaunay tri- angulation // International Journal of computer and information sciences. — 1980. - Vol. 9, № 3. - P. 219-242. 39. Lee D. Medial axis transformation of a planar shape // IEEE Trans. Pat. Anal. Mach. Int. PAMI-4(4). - 1982. - P. 363-369. 40. Manzanera A, Bernard Т., Preteux F., Longuet B. Ultra-fast skeleton based on an isotropic fully parallel algorithm // Proc. of Discrete Geometry for Computer Imagery, 1999. 41. Meijster Α., Roerdink J.B.T.M., Hesselink W.H. A general algorithm for computing distance transforms in linear time // In Mathematical Morphology and its Applications to Image and Signal Processing. — Dordrecht: Kluwer Acad. PubL, 2000. - P. 331-340. 42. Mestetskiy L. Fat curves and representation of planar figures // Computers & Graphics. - 2000. - Vol. 24, № 1. - p. 9-21. 43. Mestetskiy L., Semenov A. Binary image skeleton — continuous approach // Proceedings of the Third International conference on computer vision theory and applications (VISAPP 2008), Portugal, 2008. - Vol. 1. - P. 251-258. 44. Montanari U. A note on minimal length polygonal approximation of a digitized contour // Communications of the ACM. — 1970. — Vol. 13, № 1. — P. 41-47. 45. Montanari U. Continuous skeletons from digitalized images // Journal ACM. - 1969. Vol. 16, № 4. - P. 534-549. 46. Ogniewicz /?., Kubler O. Hierarchic Voronoi Skeletons // Pattern Recognition. - 1995. - Vol. 28, № 3. - P. 343-359. 47. Remy E., Thiel E. Medial axis for chamfer distances: computing look-up tables and neighbourhoods in 2D or 3D // Pattern recognition letters. — 2002. — Vol. 23. - P. 649-661. 48. Rosenfeld A. A characterization of parallel thinning algorithms // Information and control. - 1975. - Vol. 29. - P. 286-291. 49. Russ J.C. The image processing handbook. — CRC Pess, 1999. 50. Sebastian T.B., Kimia B.B. Curves vs skeletons in object recognition // Signal Processing. - 2005. - V. 85. - P. 247-263. 51. Shamos M.I., Hoey D. Closest point problem. Proc. 16th Annual IEEE symposium on foundations of computer science. — 1975. — P. 151-162. 52. Sklansky /., Chazin R.L., Hansen В J. Minimal-perimeter polygons of digitized silhouettes // IEEE transactions on computers. — 1972. — Vol. C-21, № 3. - P. 260-268. 53. Smith R. Computer processing of line images: A survey // Pattern recognition. - 1987. - Vol. 20, № 1. - P. 7-15.
280 ЛИТЕРАТУРА 54. Srinivasan V., Nackman L., Tang J., Meshkat S. Automatic mesh generation using the symmetric axis transform of polygonal domains // Proc. of the IEEE. - 1992. - Vol. 80(9). - P. 1485-1501. 55. Strzodka R., Telea A. Generalized distance transforms and skeletons in graphics hardware // Joint EUROGRAPHICS - IEEE TCVG Symposium on Visualization (2004). 56. Theodoridis S., Koutroumbas K. Pattern Recognition. — Academic Press, 1999. 57. Toussaint G. T. Computing geodesic properties inside a simple polygon // Revue D'Intelligence Artificielle. - 1989. - Vol. 3, № 2. - P. 9-42. 58. Yap C. An 0(n log n) algorithm for the Voronoi diagram of the set of simple curve segments // Discrete Comput. Geom. — 1987. — Vol. 2. — P. 365-393.
CONTINUOUS MORPHOLOGY OF BINARY IMAGES: FIGURES, SKELETONS AND CIRCULARS L. Mestetskiy This book explores methods of describing shapes, when dealing with analysis, recognition and transformation of digital binary images. The human eye does not detect the discrete nature of digital computer images — they look like continuous pictures. It is more customary and easier to operate with «solid» continuous geometric models of the shapes. Therefore the use of continuous models significantly simplifies creation of the algorithms for the analysis, classification and conversion of image shapes. We will use the concept of the figure as a universal continuous model of shape. A figure is a closed area, its boundary consists of a finite number of nonintersecting Jordan curves. We will examine three interconnected methods of the figure's representation: boundary, skeletal and circular descriptions. The task of constructing a continuous model of a digital image is simplified to an approximation by continuous figures of the source binary image, represented by a matrix of points. This book describes the author's approach to the construction of these models and their practical application. The first chapter, «Shapes and Figures», concentrates on the analysis of the continuous and discrete approaches to shape description in image processing. We will introduce two models of image shape — discrete and continuous figures. A discrete figure is a connected set of points of the quadratic lattice (a connection is defined by the adjacency structure). A continuous figure is a closed area, whose boundary consists of several nonintersecting Jordan curves. We will discuss known approaches to the construction of the boundary and skeleton of a discrete figure and analyze the advantages of continuous model of shape. In the second chapter, «Figures and Boundaries», we will examine the task of the continuous approximation of discrete figure boundaries and introduce the concept of the 'boundary corridor' of the discrete figure. The polygon of minimum perimeter inside the boundary corridor is the continuous model of a boundary. The book will describe creating boundary corridors and approximating polygons for any binary images of any complexity. We will also illustrate the method of the polygonal boundary approximation by compound Bezier curves.
282 CONTINUOUS MORPHOLOGY OF BINARY IMAGES The third chapter, «Boundaries and Skeletons», will describe the skeletons of the multi-connected polygonal figures. In this book we will introduce effective algorithms, based on the adjacency graph of the boundary polygon's sides and vertexes. This graph is analogous to the Delaunay triangulation. The skeleton of the multi-connected figure is reduced to the skeleton of the simple polygon as a result of the adjacency tree construction. Here we will also describe the regularization method of the obtained skeleton. The method is based on strict criteria of the figure similarity in the Hausdorff metrics. The fourth chapter, «Skeletons and Circulars», is dedicated to the new «circular» approach to image shape description. A circular is a union of fat curves, which are defined as families of circles with their centers in smooth curves. A circular is a generalized concept of a skeleton; however, it possesses additional properties, connected with the possibility of image shape transformation. We are proposing a method of constructing circulars along with methods of discrete figure shape transformation through its circulars. Finally, the fifth chapter, «Applied Problems», will describe the practical aspects of analysis, comparison and transformation of image shapes. We will examine some of real life applications of the continuous approach: computer font design, text recognition, personal biometric identification, computer graphics, geo-information technologies. In the end we will include experimental data comparing the results of the continuous and discrete methods from the perspective of the computing efficiency.
CONTENTS Preface 7 Chapter 1. Introduction 15 1.1. Binary images 15 1.2. Principles of continuous approach 16 1.3. The background 20 1.4. Organization of the book 23 PARTI SHAPES AND FIGURES Chapter 2. Continuous models of shape 25 2.1. Shape concepts 25 2.2. Figures as a model of shape 26 2.3. Boundary representation of figures 28 2.4. Skeletal representation of figures 30 2.5. «Fire in the prairie» and the distance function 33 2.6. Calculation and the regularization of skeletons 37 Chapter 3. Discrete models of shape 39 3.1. Discrete figures 39 3.2. Discrete boundaries 41 3.3. Discrete skeletons 43 3.4. From the discrete figure to continuous 51 ЧАСТЬ II FIGURES AND BOUNDARIES Chapter 4. Continuous boundaries of discrete figures 53 4.1. Equivalence of discrete and continuous figures 53 4.2. Triangular structures of adjacency 57 4.3. Boundary corridors of the discrete scene 63
284 CONTENTS Chapter 5. Search and the tracking of boundary 66 5.1. Search for boundary corridors 66 5.2. Simplex tracking of boundary corridors 68 5.3. Tracking by the mobile bridge with object adjacency 72 5.4. Tracking by the mobile bridge with component adjacency 76 Chapter 6. Approximation of boundaries 79 6.1. Proximity of discrete and continuous scenes 79 6.2. Approximation of the tracking path by polygon 80 6.3. Minimal separating polygons 83 6.4. Approximation of polygonal boundary by splines 90 PART III BOUNDARIES AND SKELETONS Chapter 7. Skeletons on the basis of the Voronoi diagrams... 103 7.1. Structure of the skeleton of polygonal figure 103 7.2. Voronoi diagram of polygonal figure 105 7.3. Obtaining skeleton from Voronoi diagram 107 7.4. Voronoi diagram vertexes 108 7.5. Voronoi diagram bisectors 112 7.6. Greedy algorithm for Voronoi diagram construction 113 7.7. Voronoi diagram recursive decomposition 121 7.8 Voronoi diagram of the simple polygon 125 Chapter 8. Skeletons on the basis of the adjacency graphs... 129 8.1. Adjacency graph of the polygonal figure 129 8.2. Delaney triangulation of the adjacency graph of points 133 8.3. Adjacency graph of the simple polygon 140 8.4. Merging adjacency graphs of chains of sites 142 8.5. Merging adjacency graphs of polygons 151 Chapter 9. Calculation of the adjacency tree of figure 155 9.1. Adjacency of boundary polygons 155 9.2. Adjacency tree of polygonal figure boundaries 159 9.3. Sweepline algorithm 160 9.4. Sweepline with the absorption of bubbles 164
CONTENTS 285 Chapter 10. Regularization of skeletons 167 10.1. Skeleton transform — incorrect task 167 10.2. Regularization on the basis of skeleton pruning 169 10.3. Skeletal base of the polygonal figure 171 ЧАСТЬ IV SKELETONS AND CIRCULARS Chapter 11. Circular figures and fat curves 177 11.1. The problem of image shape transformation 177 11.2. Circular figure 179 11.3. Fat curves 181 11.4. Boundary of the fat curve 183 Chapter 12. Circular representation of images 189 12.1. Circular representation of the binary image 189 12.2. Approximation of skeletons by fat Bezier curves 191 12.3. Fat Bezier curves transformations 194 12.4. Localization of points in fat Bezier curves 197 12.5. Circular coordinates of points In fat curves 198 ЧАСТЬ V APPLIED PROBLEMS Chapter 13. Computer font technologies 203 13.1. Contour description of font symbols 203 13.2. Automation of font hinting 209 13.3. Automation of font hinting 218 13.4. Handwriting font simulation 223 Chapter 14. Text analysis 227 14.1. Deworping of strings in the scanned text 227 14.2. Segmentation and recognition of the handwritten text 231 Chapter 15. Biometric technologies 238 15.1. Personal identification by the shape of palm 238 15.2. Analysis of fingerprints 245 15.3. Restoration of 3D shapes from stereo mate silhouettes 249
286 CONTENTS Chapter 16. Computer graphics and visualization 255 16.1. Adjacency of objects and routing 255 16.2. Graphic tools on the basis of fat curves 261 Chapter 17. Computational effectiveness 266 17.1. Experimental estimations of effectiveness 266 17.2. Comparison with discrete methods 272 Conclusion 274 Bibliography 277
Научное издание МЕСТЕЦКИЙ Леонид Моисеевич НЕПРЕРЫВНАЯ МОРФОЛОГИЯ БИНАРНЫХ ИЗОБРАЖЕНИЙ: ФИГУРЫ, СКЕЛЕТЫ, ЦИРКУЛЯРЫ Редактор С.А. Тюрина Оригинал-макет: Е.А. Королева Оформление переплета: Н.В. Гришина Подписано в печать 28.11.08. Формат 60x90/16. Бумага офсетная. Печать офсетная. Усл. печ. л. 18. Уч.-изд. л. 18. Тираж 200 экз. Заказ № 170. Издательская фирма «Физико-математическая литература» МАИК «Наука/Интерпериодика» 117997, Москва, ул. Профсоюзная, 90 E-mail: fizmat@maik.ru, fmlsale@maik.ru; http://www.fml.ru Отпечатано с готовых диапозитивов в ОАО «Ивановская областная типография» 153008, г. Иваново, ул. Типографская, 6 E-mail: 091 -018@adminet.ivanovo.ru ISBN 978-5-9221-1050-1 9'
НЕПРЕРЫВНАЯ МОРФОЛОГИЯ Л.М. Местецкий БИНАРН ЫХ ИЗОБРАЖЕНИЙ ! Λ -Л ''«Эк. \*ь
ч Леонид Моисеевич Местецкии - доктор технических наук, профессор, член- корреспондент Российской Академии естественных наук. По окончании мехмата МГУ работал программистом, научным сотрудником, преподавателем. Опубликовал более 120 работ по прикладной математике, моделированию, компьютерной графике, обработке и распознаванию изображении. На факультете вычислительной математики и кибернетики МГУ читает лекции по курсам "Обработка и распознавание изображений" "Математические методы распознавания образов" "Дискретно-непрерывные преобразования изображений". Книга развивает подход к анализу формы объектов в растровых бинарных изображениях, основанный на аппроксимации дискретных объектов непрерывными моделями