Скачиваний:
113
Добавлен:
01.05.2014
Размер:
964.61 Кб
Скачать

Алгоритм разбиения многоугольника на выпуклые составляющие

begin

(* разбиение дискретного объекта DB на выпуклые состав­ляющие DB(m) *)

m := 1;

repeat сформировать объект DB(m) ={dbi, dbj, dbk}, где dbi, dbj, dbk произвольные соседние элементы DB;

while (удовлетворяется условие выпуклости DB(m)) do присоединить к DB(m) по правилу ;

m :=m+ 1;

until (просмотрены все точки DB)

end

Пусть задан дискретный объект DB={db1, db2, ..., dbN}, dbi DB, i = 1, 2, 3,.... N (dbi – точки дискретного объекта DB).

На основе разбиения, осуществляемого вышеприведенным алгоритмом, может быть синтезирован помеченный RAG-граф (граф соседства) [32, 41], характеризующий отношение сосед­ства между выделенными примитивными частями и между центрами тяжести соседних частей.

Отметим, что описанный выше подход недостаточно ин­формативен, так как многоугольник может быть выражен че­рез конечное объединение выпуклых подмножеств не единственным образом. Кроме того, разбиение на выпуклые составляющие не всегда соответствует естественной организации формы объекта [32, 41].

Последнее замечание делает актуальным следующий метод.

Метод декомпозиции области на семан­тически определенные части. Термин «семантически определенные части» отражает тот факт, что данная группа методов опирается на фундаментальные признаки фор­мы, такие, как связные компоненты (дыры), удлинения (утолщения), «заливы» (вогнутости) объектов [14, 17, 32]. Это поз­воляет строить как реляционные структуры, описывающие взаимное пространственное расположение частей (взвешенные графы), так и рекурсивно-иерархические структуры, характе­ризующие отношения «часть — целое» (деревья).

Дерево вогнутостей представляет собой древовидную стру­ктуру, корневым узлом которой является сам объект, а каж­дому узлу на последующих уровнях соответствуют отклонения от выпуклости («заливы») дискретной области, представлен­ной предыдущим уровнем [40] (рис. 3.13). Алгоритм постро­ения дерева вогнутостей использует процедуру проверки вы­пуклости дискретного объекта DB и процедуру построения вы­пуклой оболочки DH.

Алгоритм построения дерева вогнутостей

program «Дерево вогнутостей»;

begin

PUSH «» STACK1;

DX := DB;

CTR(DX, M, DY1, ...,DYM);

ifM= then go toLL

else

begin

LAB: PUSH «M» STACK1;

for j:= 1to Mdo PUSH « DYj» STACK2;

while STACK1do

begin

DX: =STACK2;

CTR(DX, M, DY1, ...,DYM);

POP STACK2;

lf M 0

then beginSTACK1:=STACK1- 1;

go toLAB end

elseSTACK1: = STACK1- 1;

ifSTACK1= thenPOP STACK1

end

end

LL: (* объект прямолинейный *)

end (* программы*)

procedure CTR(DX, M, DY1, ...,DYM);

begin

Вычислить признак выпуклости объекта DX-CNVDX;

ifCNVDX= 1then begin M=; go toLend;

Вычислить выпуклую оболочку DH объекта DX;

Найти множество дефицитов выпуклости DA как DA := DH\DX;

Найти связные компоненты DA и их число M;

Сформировать выходные массивы DY1, ..., DYM, соответствующие связным компонентам DAj;

Сформировать узлы дерева вогнутостей, соответствующие объектам DX, DY1, ..., DYM (объекту DX соответствует узел-отец, объектам – узлы-сыновья);

L: return

end (* процедуры CTR *)

В данном алгоритме приняты следующие обозначения:

CNVDB – признак выпуклости дискретного объекта DB;

STACK1 — стек, содержащий количество дефицитов выпуклости объекта DX;

STACK2 — стек, содержащий представления дискретных объектов, являющихся дефицитами выпуклости объекта DX;

STACK1, STACK2 — значения переменных в вершинах стеков;

PUSH «X» STACK1 — операция «загрузить X в стек»;

POP STACK1 операция «разгрузить стек».

По аналогии с деревом вогнутостей для описания объекта можно синтезировать древовидную структуру, основанную на свойстве связности, узлы которой соответствуют дырам объ­екта. Один из путей построения дерева связностисостоит в использовании алгоритма выделения границы дискретного объекта [40]. Алгоритм, описываемый ниже, предназначен для вычисления координат граничных точек объекта DB и основан на прохождении окна размером 44 последователь­но вдоль границы.Направление движения окна задается значением функции , гдерk четыре соседних элемента изображения с координатами р1(i, j), р2(i, j+1), р3(i+1, j+1), р4(i+1, j) (рис. 3.14,а).

Входе работы алгоритма точки границы получают меткуi, если это точки внутренней границы, и метку e, если это точки внешней границы. Дерево связности представляет собой древовидную структуру, узлами которой являются границы DEj (внутренние и внешние) дискретного объекта DB, а дуги ука­зывают на отношение «внутри от» (см. рис. 3.14,6). Построение дерева связности осуществляется с помощью рекурсивной процедуры, использующей приводимый ниже алгоритм и ос­нованной на следующих утверждениях. Граница DE(i) содержится внутри границы DE(e) тогда и только тогда, когда выполняются условия:

описывающий DE(e) прямоугольник содержит DE(i);

число пересечений границы DE(e) с прямой, параллельной оси y на участке ниже DE(i), нечетно.

Соседние файлы в папке LECTURE12