- •Глава 3
- •3.1. Задача описания
- •3. 1.1. Содержательная
- •3.1.2. Общие подходы
- •3.2. Методы и алгоритмы
- •3.2.1. Категории признаков.
- •3.2.2. Методы и алгоритмы
- •Сканирующий алгоритм определения связности
- •3.2.2. Методы и алгоритмы
- •Методы и алгоритмы подсчета признаков
- •Алгоритм подсчета метрических признаков на пирамидах
- •Сканирующий алгоритм вычисления метрических признаков
- •3.3. Методы вычисления
- •3.4. Структурные методы
- •3. 4. 1. Структурные методы
- •Методы сегментации кривых
- •Алгоритм оценки кривизны дискретной кривой через кусочно-линейную аппроксимацию кривой
- •Алгоритм вычисления углов дискретной кривой через анализ поведения угла отклонения касательной к кривой
- •3. 4. 1. Синтез структурных
- •1) , 4) ,
- •2) , 5) ,
- •3) , 6) ,
- •Алгоритм построения «дерева полосок»
- •3. 4. 3. Структурные методы
- •Построение реляционные дескриптивных структур на основе разбиения области
- •Алгоритм разбиения многоугольника на выпуклые составляющие
- •Алгоритм построения дерева вогнутостей
- •Алгоритм прослеживания границ для построения дерева связности
- •Построение реляционных дескриптивных структур на основе декомпозиции области через покрытие
Алгоритм разбиения многоугольника на выпуклые составляющие
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), нечетно.