Definizione e Valutazione di Algoritmi per la Decomposizione di

UNIVERSITÀ DEGLI STUDI DI CASSINO
SCUOLA DI DOTTORATO IN INGEGNERIA
DIPARTIMENTO DI AUTOMAZIONE, ELETTROMAGNETISMO,
INGEGNERIA DELL’INFORMAZIONE E MATEMATICA INDUSTRIALE
Definizione e Valutazione di
Algoritmi per la Decomposizione
di Curve Digitali
Rossella Patraccone
[email protected]
In Partial Fulfillment of the Requirements for the Degree of
PHILOSOPHIAE DOCTOR in
Electrical and Information Engineering
Novembre 2007
TUTOR
Prof. Francesco Tortorella
COORDINATOR
Prof. Giovanni Busatto
UNIVERSITÀ DEGLI STUDI DI CASSINO
SCUOLA DI DOTTORATO IN INGEGNERIA
Date: Novembre 2007
Author:
Rossella Patraccone
Title:
Definizione e Valutazione di Algoritmi per la
Decomposizione di Curve Digitali
Department:
Automazione, Elettromagnetismo, Ingegneria
dell’Informazione e Matematica Industriale
Degree: Ph.D.
Permission is herewith granted to Univertità degli Studi di Cassino to circulate
and to have copied for non-commercial purposes, at its discretion, the above title upon
the request of individuals or institutions.
Firma dell’Autore
THE AUTHOR RESERVES OTHER PUBLICATION RIGHTS, AND NEITHER
THE THESIS NOR EXTENSIVE EXTRACTS FROM IT MAY BE PRINTED OR
OTHERWISE REPRODUCED WITHOUT THE AUTHOR’S WRITTEN PERMISSION.
THE AUTHOR ATTESTS THAT PERMISSION HAS BEEN OBTAINED FOR
THE USE OF ANY COPYRIGHTED MATERIAL APPEARING IN THIS THESIS (OTHER
THAN BRIEF EXCERPTS REQUIRING ONLY PROPER ACKNOWLEDGEMENT IN
SCHOLARLY WRITING) AND THAT ALL SUCH USE IS CLEARLY ACKNOWLEDGED.
Alla mia famiglia
Ringraziamenti
Questa è forse la parte più difficile di tutto il lavoro, poichè nel fare queste cose
si corre sempre il rischio di dimenticare qualcuno, ma spero che non sia questo il
caso.
Vorrei ringraziare tutte le persone che mi sono state vicine in questi anni e
che mi hanno dato molto concettualmente, professionalmente e interiormente, attraverso consigli, riflessioni, materiale, condivisione di esperienze. Il ringraziamento maggiore va al mio supervisore: Francesco Tortorella che con la sua disponibilità
ed i suoi preziosi consigli ha reso possibile la preparazione di tutto il lavoro di tesi.
Vorrei inoltre ringraziare tutta la mia famiglia per il loro sostegno e per il loro
incoraggiamento. Un grazie particolare va ai miei nipotini “Luca” ed “Alessio”, il
cui sorriso ha sempre illuminato le mie giornate più buie.
Per ultimo, e sicuramente non per importanza vorrei rivolgere un ringraziamento
particolare a Gianluca che con estrema pazienza ha sopportato i miei sbalzi di
umore e le mie paranoie quando, sotto stress, non avevo altra valvola di sfogo che
lui. Grazie per aver sempre riposto in me immensa fiducia.
Non posso dimenticare poi il gruppo LIT, con cui ho trascorso “piacevoli” giornate
di lavoro. A tutti voi un grazie di cuore.
vii
Sommario
Gli esseri umani, ed anche altre specie animali, hanno sviluppato, nel corso della
evoluzione, sofisticate architetture per interpretare e riconoscere “morfologie” nei
dati acquisiti attraverso i loro organi di senso (Jain et al., 2000). Essi hanno imparato a riconoscere i “rumori”, gli “odori”, le “forme”, le ”scritture”. Inizialmente
tale processo è stato originato dalla lotta alla sopravvivenza ed in seguito dallo
sviluppo di comportamenti intelligenti (es. la scrittura). Oggi diamo per scontato le abilità umane nel riconoscere gli oggetti più consueti, ma le cose cambiamo
quando proviamo ad insegnare ad una macchina a fare lo stesso. Nonostante cinquanta anni di ricerche, il progetto di una macchina di questo tipo di uso generale
resta un obiettivo lontano.
Il presente lavoro di tesi rientra nel campo del “Pattern Recognition” (riconoscimento di forme) ed ha l’obiettivo di fornire dei metodi di descrizione di
immagini digitali, al fine di facilitare il successivo passo di riconoscimento delle
stesse. Lo scopo primario del nostro studio, non è infatti, la ricostruzione perfetta
di una immagine digitale, bensı̀ quello di descrivere adeguatamente la stessa.
Il processo di decomposizione di un’immagine consiste nell’individuare delle caratteristiche descrittive significative da poter utilizzare nel successivo passo di riconoscimento. Il nostro lavoro cerca, appunto, di definire e validare algoritmi di
decomposizione di curve digitali, verificandone la validità e la robustezza al variare
della tipologia di curva digitale utilizzata.
La tesi è stata cosı̀ articolata:
• Capitolo 1: in questo capitolo si inquadra il contesto generale in cui si sviluppa il presente lavoro di tesi, in particolare si dà una descrizione generale dei
passi che portano al riconoscimento di immagini digitali. Particolare attenzione è riservata alla descrizione delle metodologie utilizzate nel processo di
decomposizione di curve.
• Capitolo 2: dopo aver inquadrato il contesto applicativo, si espone, con maggiore dettaglio, la fase di descrizione di una immagine digitale. In particolare
si descrive accuratamente la fase di estrazione di caratteristiche salienti, utili
nel successivo passo di riconoscimento di una immagine digitale.
ix
• Capitolo 3: si introduce il concetto di primitiva strutturale, se ne descrivono
le varie tipologie e si dà una giustificazione sulla scelta di una di esse, rispetto
alle altre disponibili. In particolare si descrivono gli strumenti utilizzati per
individuare tali primitive strutturali.
• Capitolo 4: dopo aver scelto la tipologia di descrittori da utilizzare si presentano gli algoritmi di decomposizione, basati su valutazione dell’errore
locale sviluppati per la rappresentazione dell’immagine originale, in termini
di primitive strutturali. Si effettua, inoltre una comparazione tra le varie
tecniche individuate.
• Capitolo 5: in questo capitolo si introduce un metodo di decomposizione
basato su programmazione dinamica, che lavora su valutazione dell’errore
globale commesso nella decomposizione, consentendo di lavorare senza la
definizione di nessun vincolo.
• Capitolo 6: si da una descrizione di dettaglio dei passi condotti per la
definizione delle curve di prova e della sperimentazione. A conclusione è fatta una comparazione tra le prestazioni ottenute dai vari algoritmi al variare
della tipologia di curva utilizzata.
Indice
Ringraziamenti
vii
Sommario
ix
Elenco delle figure
xv
Elenco delle tabelle
xxi
Elenco degli algoritmi
xxiii
1 Introduzione al Pattern Recognition
1
1.1
Campi di applicazione . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Sistema di Pattern Recognition . . . . . . . . . . . . . . . . . . . .
5
1.3
Approccio statistico e strutturale-sintattico . . . . . . . . . . . . .
6
1.3.1
Statistical pattern recognition . . . . . . . . . . . . . . . . .
7
1.3.2
Structural pattern recognition . . . . . . . . . . . . . . . . .
9
1.4
Scelta della tipologia si approccio: Strutturale statistico o sintattico 13
2 Le fasi della descrizione
15
2.1
Acquisizione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
Filtraggio del rumore e sogliatura . . . . . . . . . . . . . . . . . . .
17
2.3
Thinning o assottigliamento dell’immagine . . . . . . . . . . . . . .
18
2.4
Pruning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.5
Labelling dello scheletro . . . . . . . . . . . . . . . . . . . . . . . .
19
2.6
Approssimazione poligonale . . . . . . . . . . . . . . . . . . . . . .
20
xi
INDICE
3 Il processo di decomposizione
23
3.1
La decomposizione . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.2
Scelta della primitiva strutturale . . . . . . . . . . . . . . . . . . .
25
3.3
Rappresentzione nel piano trasformato (L − α) . . . . . . . . . . .
27
3.4
Scelta di una metrica . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4.1
Metrica in L2 (Least Squares Approximation) . . . . . . . .
34
3.4.2
Metrica in L∞ (Uniform Approximation) . . . . . . . . . .
36
3.4.3
Metodo Least Median of Squares - LMS . . . . . . . . . . .
38
3.4.4
Confronto tra le diverse metriche . . . . . . . . . . . . . . .
41
Fitting ed accettazione . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.5
4 La decomposizione in archi di cerchio
47
4.1
Algoritmo di “Merge” . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.2
Algoritmo di “Split” . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.3
Algoritmo di “Split and Merge” . . . . . . . . . . . . . . . . . .
53
4.4
Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
5 Decomposizione basata su Programmazione Dinamica
57
5.1
Programmazione dinamica . . . . . . . . . . . . . . . . . . . . . . .
58
5.2
Formulazione del problema . . . . . . . . . . . . . . . . . . . . . .
59
5.3
Descrizione dell’algoritmo di Decomposizione . . . . . . . . . . . .
65
5.3.1
Studio della curva di errore e determinazione del valore di
M ottimo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.3.2
Individuazione del punto di ginocchio: calcolo di M ottimo
75
5.3.3
Un caso particolare: decomposizione di un poligono regolare
ad N lati . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
5.4
Descrizione dell’algoritmo DpDecomp con M dinamico . . . . . . .
78
5.5
Complessità computazionale dell’algoritmo DpDecomp . . . . . . .
80
5.5.1
Complessità computazionale con M assegnato . . . . . . .
80
5.5.2
Complessità computazionale con M calcolato dinamicamente 81
5.6
Considerazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xii
84
INDICE
6 Valutazione degli algoritmi e conclusioni
87
6.1
Definizione del Set di curve di prova . . . . . . . . . . . . . . . . .
88
6.2
Performance degli algoritmi . . . . . . . . . . . . . . . . . . . . . .
90
6.2.1
Performance degli algoritmi in assenza di rumore . . . . . .
91
6.2.2
Performance degli algoritmi in presenza di rumore . . . . .
98
6.3
Caratterizzazione dell’algoritmo DpDecomp . . . . . . . . . . . . . 103
6.4
Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
A Costruzione del Set di curve di prova (“Test Set 2 ”)
109
A.1 Fast Circle Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.2 Fast Ellipse Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . 112
A.3 Generazione del Set di immagini di prova . . . . . . . . . . . . . . 114
A.3.1 Immagine Test 7 . . . . . . . . . . . . . . . . . . . . . . . . 114
A.3.2 Immagine Test 8 . . . . . . . . . . . . . . . . . . . . . . . . 114
A.3.3 Immagine Test 9 . . . . . . . . . . . . . . . . . . . . . . . . 115
A.3.4 Immagine Test 10 . . . . . . . . . . . . . . . . . . . . . . . 115
A.3.5 Immagine Test 11 . . . . . . . . . . . . . . . . . . . . . . . 116
A.3.6 Immagine Test 12 . . . . . . . . . . . . . . . . . . . . . . . 116
B Rappresentazione in archi di cerchio
117
B.1 Visualizzazione degli archi di cerchio . . . . . . . . . . . . . . . . . 117
B.1.1 Calcolo dei parametri per la costruzione degli archi di cerchio 118
B.1.2 Rappresentazione degli archi di cerchio nel piano di riferimento cartesiano . . . . . . . . . . . . . . . . . . . . . . . . 120
Bibliografia
123
xiii
INDICE
xiv
Elenco delle figure
1.1
1.2
1.3
1.4
1.5
1.6
2.1
2.2
2.3
2.4
3.1
3.2
3.3
3.4
3.5
3.6
Schema a blocchi di un sistema di Pattern Recognition per il
conoscimento di immagini digitalizzate. . . . . . . . . . . . . .
Mapping dallo spazio dei patterns a quello dei significati. . . .
Rappresentazione delle features. . . . . . . . . . . . . . . . . . .
Esempio di Pattern Recognition di tipo statistico. . . . . . . . .
Esempio di grammatica della lingua inglese. . . . . . . . . . . .
Attributed Relational Graph (ARG). . . . . . . . . . . . . . . .
ri. .
. .
. .
. .
. .
. .
Esempio di descrizione della lettera “A” in termini di primitive
strutturali semplici: il carattere è rappresentato in termini di tre
“features”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Immagine “raster ” di un carattere stampato, contenuto all’interno
di un testo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Esempio di bitmap di un carattere stampato, ottenuta dalla rappresentazione “raster ” dello stesso. . . . . . . . . . . . . . . . . .
Scheletro di una immagine di un carattere, ottenuto attraverso la
fase di scheletrizzazione e/o “thinning ”. . . . . . . . . . . . . . .
Decomposizione del carattere “R” in termini di primitive strutturali
semplici: passaggio da una rappresentazione in termini di componenti del primo ordine ad una in termini di componenti del secondo
ordine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Confronto tra primitive strutturali del secondo e del primo ordine.
Trasformazione della rappresentazione di una poligonale nel piano
(x, y), ad una rappresentazione della stessa nel piano (l, α). . . . .
Rappresentazioni notevoli: rappresentazione nel piano (L, α) di un
poligono regolare a cinque lati e di una circonferenza. . . . . . . .
Distanza tra forme nel piano (L, α). . . . . . . . . . . . . . . . . .
Confronto tra metriche: rappresentazione delle rette approssimanti
un insieme di osservazioni in assenza ed in presenza di errori di
posizione delle stesse dovuti a fonti di rumore. . . . . . . . . . . . .
xv
5
6
8
9
11
12
16
17
18
19
24
26
28
29
33
42
ELENCO DELLE FIGURE
3.7
3.8
4.1
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
Rappresentazione di una poligonale e dell’arco di cerchio approssimante nel piano (l, α). . . . . . . . . . . . . . . . . . . . . . . . . .
43
Rappresentazione di una poligonale e delle sue decomposizioni al
variare di k. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Poligonale nel piano (x, y) e relativa decomposizione in archi di
cerchio e segmenti di retta. La figura (a) mostra la poligonale del
carattere S e la sua rappresentazione nel paino (L, α); La figura (b)
mostra la decomposizione dello stesso e le rette approssimanti nel
paino (L, α). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
Grafo a livelli composto da N = 5 stadi: determinazione del minimo percorso che collega lo stato iniziale “O”, con lo stato di destinazione “D”; percorso ottimo: O − 11 − 22 − 33 − D. . . . . . . .
59
(a) Rappresentazione nel piano (x, y) di una poligonale e degli archi
di cerchio approssimanti; (b) rappresentazione nel piano (L, α) della
poligonale di figura (a) e degli archi di cerchio approssimanti. . . .
61
Raffigurazione di aclune fasi della decomposizione di una poligonale costituita N=25 segmenti in M=3 primitive strutturali. (a)
H(P1:13 , 2)+h(P14:25 ); (b) H(P1:14 , 2)+h(P15:25 ); (c) H(P1:15 , 2)+
h(P16:25 ); (d ) H(P1:16 , 2) + h(P17:25 ). . . . . . . . . . . . . . . . .
65
Calcolo dell’errore commesso nella decomposizione della Poligonale
P1:N , costituita da N segmenti consecutivi in M primitive strutturali ΓM
1:N . E tabella contenente i contributi di errore; E(N, M ) =
H(P1:N , M ) errore minimo commesso nella decomposizione. . . . .
67
Calcolo dell’errore commesso nella decomposizione della Poligonale
P1:N , costituita da N segmenti consecutivi in M = N primitive strutturali ΓN
1:N . E tabella contenente i contributi di errore;
E(N, N ) = H(P1:N , N ) errore minimo commesso nella decomposizione. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
Dynamic Programming Decomposition Operating Characteristic. Andamento della curva di errore E(N, M ) in funzione del
numero M degli archi di cerchio considerati, con M = 1, . . . , N . La
curva decresce al crescere delle primitive strutturali considerate. . .
70
Scelta del punto di ottimo preferibile secondo i tre criteri. In questa
figura k = 2 e Z è rappresentata dalla zona grigia. . . . . . . . . .
73
Rappresentazione della DPDOC in funzione di M ed individuazione di alcuni punti notevoli. . . . . . . . . . . . . . . . . . . . . .
73
xvi
ELENCO DELLE FIGURE
5.9
Andamento della curva di errore E(N, M ) in funzione di M. (a) una
piccola riduzione del numero degli archi di cerchio della decomposizione genera un notevole aumento dell’errore di approssimazione;
(b) una piccola riduzione dell’errore di approssimazione comporta
un notevole aumento del numero degli archi di cerchio M. . . . . .
75
5.10 Curva di errore e retta congiungente i due estremi della stessa. Sull’asse X si riporta il numero M delle primitive e sull’asse Y si
riporta l’errore commesso nella decomposizione, al crescere di M ,
fino ad M = N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
5.11 Rappresentazione grafica della determinazione del punto di ginocchio della curva di errore. . . . . . . . . . . . . . . . . . . . . . . .
76
5.12 Andamento della curva di errore E(N, M ) in funzione del numero di
primitive utilizzato per vari poligoni regolari con rappresentazione
in scala lineare. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
5.13 Andamento della curva di errore E(N, M ) in funzione del numero di
primitive utilizzato per vari poligoni regolari con rappresentazione
in scala logaritmica. . . . . . . . . . . . . . . . . . . . . . . . . . .
78
6.1
6.2
6.3
Set 1 - Primo Set di curve di prova utilizzate nella sperimentazione. (a) curva costituita da due semicerchi e da due punti di
cuspide; (b) curva con tre semicerchi, due punti di cuspide più pronunciati ed un punto meno spigoloso; (c) curva costituita da quatto
semicerchi, inglobati in un unico cerchio a raggio maggiore; (d) curva costituita da quattro semicerchi “Testa di Moro”; (e) rappresentazione poligonale di una foglia Leaf-Shaped ; (f) “Cockhead ”,
curva complessa composta da segmenti di retta, cerchi ed archi di
cerchio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
Decomposizione dell’immagine test 1, secondo i quattro criteri di
decomposizione (Merge, Split, Split & Merge, DpDecomp) e secondo i tre criteri di approssimazione (L2 , L∞ , LM S). (a) Decomposizione con Split, Split & Merge, DpDecomp, con metrica L2 , L∞
ed LM S; (b) Decomposizione con Merge e metrica L∞ . . . . . . .
91
Decomposizione dell’immagine test 2, secondo i quattro criteri di
decomposizione ed i tre criteri di approssimazione. (a) Merge e
DpDecomp con metrica L2 ed L∞ ; Split, Split & Merge, con metrica
L2 ; (b) Split e metrica L∞ ; (c) Split & Merge e metrica L∞ ; (d)
Merge e metrica LM S; (e) Split, Split & Merge e metrica LM S;
(f ) DpDecomp e metrica LM S. . . . . . . . . . . . . . . . . . . . .
92
xvii
ELENCO DELLE FIGURE
6.4
6.5
6.6
6.7
6.8
6.9
6.10
6.11
6.12
6.13
6.14
Decomposizione dell’immagine test 3, secondo i quattro criteri di
decomposizione ed i tre criteri di approssimazione. (a) Merge e
DpDecomp con metriche L2 , L∞ ed LM S; Split & Merge con metrica L2 ; (b) Split e metrica L∞ ; (c) Split & Merge e metrica L∞ ;
(d) Split e Split & Merge e metrica LM S. . . . . . . . . . . . . . .
Decomposizione dell’immagine test 4. (a) Merge con metrica L2 ;
(b) Merge e metrica L∞ ; (c) Merge e metrica LM S; (d) Split e
Split & Merge e metrica L2 ; (e) Split con metrica LM S; (f ) Split
& Merge con metrica LM S. . . . . . . . . . . . . . . . . . . . . . .
Decomposizione dell’immagine test 4, secondo il criterio DpDecomp ed i tre criteri di approssimazione. (a) DpDecomp con metrica
L2 ed L∞ ; (b) DpDecomp con metrica LM S. . . . . . . . . . . . .
Decomposizione dell’immagine test 5, secondo i criteri di decomposizione ed i tre criteri di approssimazione. (a) Merge con metrica
L2 ; (b) Merge con metrica LM S; (c) Split & Merge con metrica L2 ; (d) Split & Merge con metrica LM S; (e) DpDecomp con
metrica L2 ; (f ) DpDecomp con metrica LM S. . . . . . . . . . . .
Decomposizione dell’immagine test 6, secondo i criteri di decomposizione ed i metodi di approssimazione. (a) Split & Merge con
metrica L2 ; (b) DpDecomp con metrica L2; (c) Split & Merge con
metrica LM S; (d) DpDecomp con metrica LM S. . . . . . . . . .
Decomposizione dell’immagine test 1 affetta da rumore, con tasso
del 100%. (a) Split & Merge con metrica L2 , L∞ ed LM S; (b)
DpDecomp con metrica L2 , L∞ ed LM S. . . . . . . . . . . . . . .
Immagine test 4 affetta da rumore, con tasso del 50% e del 100%.
(a) Split & Merge con metrica L2 ; (b) Split & Merge con metrica
L∞ ; (c) Split & Merge con metrica LM S; (d) DpDecomp con
metrica L2 , L∞ ed LM S; (e) Split & Merge con metrica L2 ; (f )
DpDecomp con metrica L2 . . . . . . . . . . . . . . . . . . . . . . .
Immagine test 5 affetta da rumore, con tasso del 40%. (a) Split
& Merge con metrica L2 ; (b) Split & Merge con metrica L∞ ; (c)
Split & Merge con metrica LM S; (d) DpDecomp con metrica L2 ;
(e) DpDecomp con metrica L∞ ; (f ) DpDecomp con metrica LM S.
Test Set 2 - Secondo Set di curve utilizzate nella fase di caratterizzazione dell’algoritmo “DpDecomp”. (a) test 7 topolino; (b)
test 8 topolino; (c) test 9 5 Cerchi; (d) test 10 Cerchio&Ellissi; (e)
test 11 Cerchio&Ellissi; (f) test 12 3 Cerchi. . . . . . . . . . . . . .
Decomposizione con algoritmo DpDecomp e metrica L2 . (a) immagine test 7 (b) immagine test 8. . . . . . . . . . . . . . . . . .
Decomposizione con algoritmo DpDecomp e metrica L2 . (a) immagine test 9 ; (b) immagine test 12. . . . . . . . . . . . . . . . .
xviii
93
94
95
96
97
100
101
102
103
104
104
ELENCO DELLE FIGURE
6.15 Decomposizione con algoritmo DpDecomp e metrica L2 . (a) immagine test 10 ; (b) immagine test 11. . . . . . . . . . . . . . . . 105
B.1 Arco di cerchio approssimante un tratto Pi:j di Poligonale costituito
da tre segmenti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
xix
ELENCO DELLE FIGURE
xx
Elenco delle tabelle
1.1
1.2
Applicazioni del Pattern Recognition. . . . . . . . . . . . . . . . . .
Approcci e modelli per i sistemi di Pattern Recognition. . . . . . .
xxi
4
7
ELENCO DELLE TABELLE
xxii
Lista degli Algoritmi
1
2
3
4
5
6
7
8
The One-Point Exchange Algorithm . . . . . . . . . . . . . . . . . 38
Algoritmo di Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Algoritmo di Split . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Algoritmo di Split and Merge . . . . . . . . . . . . . . . . . . . . . 54
Algoritmo di Decomposizione basato su Programmazione Dinamica 66
Algoritmo DpDecomp con M dinamico . . . . . . . . . . . . . . . . 79
Plotcircle - Realizzazione di cerchi nel piano digitale . . . . . . . . 111
PlotEllipse - Realizzazione di ellissi nel piano digitale . . . . . . . . 113
xxiii
LISTA DEGLI ALGORITMI
xxiv
Capitolo 1
Introduzione al Pattern
Recognition
Gli esseri umani e le specie animali, nel corso dell’evoluzione hanno sviluppato notevoli attitudini, che gli hanno permesso di imparare a riconoscere: forme,
suoni, odori, etc. Distinguere i “rumori” dei predatori, riconoscere gli amici ed
i nemici, . . . , riconoscere la scrittura, etc., sono processi che vengono svolti in
massima parte a livello subcoscente. Gli studiosi, nel corso degli hanni hanno
impiegato notevoli sforzi nella ricerca di tecnologie che gli permettessero di creare
una macchina che avesse le stesse capacità. Notevoli ricerche sono state condotte
in ambito tecnologico per creare una macchina in grado di riconoscere particolari
configurazioni in maniera automatica.
“Pattern Recognition can be defined as the scientific discipline that
studies theories and methods for designing machines that are able to
recognise patterns in noisy data . . . . . . . . . Pattern Recognition has an
“engineering” nature, as its final goal is the design of machines” (Duin
et al., 2002).
Il Pattern Recognition (“riconoscimento di forme”) è lo studio su come le macchine possano osservare l’ambiente, imparare a distinguere patterns di interesse
dalle osservazioni acquisite in precedenza e classificarli in maniera opportuna (Jain
et al., 2000). Ma che cosa si intende esattamente per “Pattern”?. Watanable
(Watanable, 1985) afferma che: un “pattern” è l’opposto del caos; è una entità,
vagamente definita alla quale può essere attribuito un nome. Esempi di pattern
possono essere: l’immagine di una impronta digitale, una parola scritta in corsivo,
l’immagine di un volto umano, oppure un segnale acustico. Dunque il Pattern
Recognition implica, dato un determinato oggetto, la sua identificazione in base
alle conoscenze relative ad un modello cui ricondurlo (Pavlidis, 1980).
1
CAPITOLO 1. Introduzione al Pattern Recognition
Occorre fare una distinzione netta tra processi di descrizione, classificazione,
riconoscimento ed interpretazione. Tali concetti sono difficili da separare e sono
attuati progressivamente in modo inconscio nella mente umana. Essi, tuttavia
presentano delle differenze, ed in particolare gli possono essere assegnate le seguenti
definizioni:
• Descrizione: individuare, all’interno di una forma un insieme di primitive
descrittive in grado di rappresentarla adeguadamente, in modo da facilitare
il successivo passo di classificazione (es. descrivere la lettera “P ” come
composta da due primitive strutturali);
• Classificazione: assegnazione di una “forma” (“pattern”) incognita ad una
classe (es. classificare le varie “lettere” in un testo);
• Riconoscimento: confronto di un oggetto, che può essere composto da più
“pattern”, con un modello predefinito (es. riconoscere una “parola” dopo
aver classificato le lettere che la compongono;
• Interpretazione: analisi volta ad evidenziare gli aspetti semantici dei dati
di ingresso (ossia a dargli un “significato”, anche legato alla specifica applicazione). Ad es. interpretare un testo, dopo averne riconosciuto tutte le
parole, e decidere che tratta di “economia” e non di “sport”.
Dato un pattern, il suo riconoscimento (detto anche classificazione) può essere
principalmente effettuato in due modi (Watanable, 1985):
1. supervisionato, in cui il pattern in input viene identificato come membro
di una classe tra quelle predefinite, ovvero viene classificato in maniera
supervisionata avendo l’utente o il progettista definito a priori le classi di
interesse;
2. non supervisionato, in cui il pattern in input viene assegnato ad una classe
sconosciuta a priori, ovvero i pattern vengono raggruppati nei cosiddetti
cluster (tecniche di clustering).
Il problema del pattern recognition quindi viene posto nella forma di classificazione o identificazione delle categorie di appartenenza, dove le classi o categorie
possono essere sia definite dal progettista del sistema (nei metodi supervisionati),
sia apprese dalle similarità tra i pattern (nei metodi non supervisionati).
1.1
Campi di applicazione
I campi di applicazione del “Pattern Recognition” sono svariati e toccano diverse branche della tecnologia. Si può andare dalla gestione di un processo indu2
1.1 Campi di applicazione
striale, all’ambito medico, al riconoscimento visivo e sonoro. In particolar modo,
il riconoscimento di forme pu essere impiegato:
• nel campo delle telecomunicazioni : per individuare i contorni dei diagrammi
interferometrici prodotti da alcuni radar, allo scopo di ricavare informazioni
sulla conformazione del terreno;
• nel campo biomedico: per interpretare le immagini prodotte da diverse apparecchiature di diagnosi, allo scopo di localizzare meglio alcune zone di tali
immagini, facilitando in questo modo la dignosi medica;
• nell’elaborazione di testi : realizzazione di sistemi di conversione automatica
di docuemnti su supporto cartaceo; riconoscimento di caratteri manoscritti;
• in biometrics: identificazione personale basata su vari attributi fisici, quali
viso, impronta digitale, etc.
• nella sicurezza delle reti di calcolatori : rilevazione di attacchi intrusivi su
sistemi informatici grazie allo studio del traffico di rete (Esposito et al.,
2005).
I sistemi di pattern recognition creano, nuovi scenari applicativi sia a livello
accademico che industriale. Si pensi, per esempio, ai vantaggi per un processo industriale che, impiegando il riconoscimento automatico di oggetti, può beneficiare
di un controllo qualità automatizzato. Sempre nell’ambito industriale, l’impiego
di algoritmi di riconoscimento automatico, porta ad arricchire le funzionalità dei
robot impiegati, come ad esempio la possibilità di muoversi in determinati ambienti
riconoscendo automaticamente gli ostacoli.
Già da questi primi esempi è chiaro come l’uso di tecniche di riconoscimento
automatico possa notevolmente migliorare le attuali applicazioni tecnologiche in
diversi campi, dal settore scientifico a quello sociale ed industriale. Di seguito
(tabella 1.1) si riporta una sintesi dei principali domini applicativi dei sistemi di
riconoscimento automatico evidenziando anche le classi di oggetti/entità coinvolte
nei suddetti processi.
Il rapido sviluppo della potenza di calcolo ha permesso l’elaborazione di grandi
quantità di informazioni in tempi rapidi, facilitando l’uso di diversi ed alaborati
metodi di analisi e di classificazione di dati. Allo stesso tempo, la crescita delle
dimensioni dei database e l’esigenza di maggiori performance (velocità, accuratezza, costi, . . . ) hanno portato all’aumento della richiesta di sistemi automatici di
pattern recognition. Tuttavia, in cinquanta anni di ricerca si è arrivati alla conclusione che non esiste un unico approccio “ottimale” e “generale” alla classificazione,
ma esistono molti metodi che possono essere utilizzati, e la scelta di integrarli è
la migliore da perseguire. Se il riconoscimento di forme “meccanizzato” è, dunque
possibile, dipende da come noi lo definiamo.
3
CAPITOLO 1. Introduzione al Pattern Recognition
Dominio
Applicazioni
Pattern
Classi
Analisi di documenti
Ricerca su internet e
Semantic Web
Documenti testuali /
corpus di documenti
digitali o digitalizzati
Categorie
semantiche
(esempio,
affari, sport, scienza,
ecc.
Analisi di immagini
di documenti
Strumento di supporto per i diversamente abili, digitalizzazione automatica di documenti
Immagini di documenti (esempio, acquisire da scanner
Riconoscimento dei
caratteri (OCR), parole, regioni di testo
Automazione
striale
Verifica delle schede
dei circuiti, verifica
del software
Immagini
all’infrarosso o spettroscopiche, e moduli
software)
Rilevamento di componenti hardware e
software difettosi
Data Mining
Ricerca di pattern
significativi in insiemi di dati / documenti
Punti nello spazio
multidimensionale /
vettori multidimensionali
Gruppi omogenei e
ben separati (cluster)
Bioinformatica
Analisi
DNA
Sequenze
proteine
/
Tipi di geni / proteine
Information
Retrieval su basi dati
multimediali
Ricerca su internet o
in reti aziendali di
immagini ed audio /
video
Video clip ed immagini
Generi video, tipi di
immagini o tipologie di inquadrature
(ed.
nello sport:
goal, rigore, fuorigioco, ecc.)
Riconoscimento BioMetrico
Identificazione personale attraverso rilevazione dati biometrici
Immagini
del
volto,
dell’iride,
dell’impronta
digitale
Gestione controllata
accessi
Riconoscimento del
parlato
Inserimento
dati
per
persone
diversamente
abili,
interfaccia audio per
l’uso di telefonia
Onde sonore della
voce
Parole pronunciate,
suoni modulati
Sensor Data Fusion
Riconoscimento della persona e della posizione geografica attraverso diversi
sensori
Informazioni provenienti da sensori
(esempio,
accesso
mediante RFID identificazione
a
radio frequenza)
Posizione,
risorse
disponibili, contesto
dell’utente
Computer Network
Detezione di intrusioni informatiche
Log di connessione
Rilevazione di intrusioni
indu-
sequenze
DNA
Tabella 1.1: Applicazioni del Pattern Recognition.
4
1.2 Sistema di Pattern Recognition
1.2
Sistema di Pattern Recognition
La progettazione di un sistema di “pattern recognition”, per il riconoscimento
di immagini digitalizzate può essere scomposto in più fasi distinte (acquisizione,
pre-elaborazione e normalizzazione, rappresentazione, decisione e classificazione),
come riportato nella seguente figura 1.1.
Figura 1.1: Schema a blocchi di un sistema di Pattern Recognition per il
riconoscimento di immagini digitalizzate.
Una immagine digitale può essere interpretata come una funzione bidimensionale f : R × R → R il cui valore ne rappresenta l’intensità luminosa. Il blocco di
“acquisizione” è composto di tutte quelle fasi che portano da una immagine ad
una sua rappresentazione sotto forma di matrice numerica. Tale blocco comprende
i passi di campionamento e di quantizzazione in livelli di grigio, necessari per la
sua discretizzazione nello spazio e nell’ampiezza.
L’insieme dei patterns di interesse, è, infatti rappresentato da uno spazio Sx ,
generalmente di tipo continuo, e per ottenerne una rappresentazione informatica
occorre effettuarne una discretizzazione come mostrato nella seguente figura 1.2.
Il blocco di “preprocessing” permette, attraverso una serie di elaborazioni, di
rappresentare l’immagine originale in una maniera più adatta ad essere trattata
nelle successive fasi di elaborazione.
Attraverso il blocco di estrazione delle caratteristiche (“features”) si ottiene
una descrizione tramite primitive strutturali dell’immagine originale. In questo
modo si riesce a concentrare l’informazione in pochi dati, ottenendo un maggiore
potere discriminante ed una diminuzione dei dati utilizzati.
Il blocco di “classificazione” effettua il confronto tra la descrizione ottenuta a
valle delle precedenti fasi con un insieme di modelli possibili (presi come riferimento), in modo da poter giungere all’attribuzione della componente in esame, come
appartenente ad una delle classi possibili.
5
CAPITOLO 1. Introduzione al Pattern Recognition
Figura 1.2: Mapping dallo spazio dei patterns a quello dei significati.
Come si può facilmente intuire il blocco di estrazione delle componenti descrittive (“features”) rappresenta il cuore dell’intero sistema (Ullman, 1973), in quanto
una buona descrizione dell’immagine permette una più semplice classificazione
della stessa.
1.3
Approccio statistico e strutturale-sintattico
L’obiettivo di un sistema di riconoscimento automatico per l’analisi di immagini
è fornire una descrizione, plausibile di una scena del mondo reale in tempi utili
a prendere una decisione. Le immagini permeano il nostro mondo percettivosperimentale, spesso sono confuse ed indeterminate, e la ragione di tale confusione
può essere legata alla natura casuale dei dati, ai criteri di rappresentazione utilizzati, o dalla scarsa cognizione del contesto conoscitivo in cui le immagini sono
prodotte.
Il riconoscimento di forme comporta la capacità, da parte di chi lo esercita, di
attribuire un significato ad un insieme di informazioni, che si presume abbiano un
qualche tipo di organizzazione interna (una determinata struttura). La descrizione
o il riconoscimento di tali forme può condurre a delle decisioni circa azioni successive da intraprendere. Per riconoscere quindi, da un lato è necessario aver fatto
esperienza su di un certo numero di situazioni che si è imparato a classificare,
dall’altro in presenza di un qualcosa che non sia direttamente riconducibile ad
un’esperienza nota, è indispensabile fare delle ipotesi o ricevere dei suggerimenti
che orientino su certe scelte piuttosto che su altre.
I quattro principali approcci al pattern recognition (Jain 2000) sono: il Tem6
1.3 Approccio statistico e strutturale-sintattico
plate Matching (approcci basati su modello); lo Statistical Classification (approcci
con classificazione statistica); il Syntactic or Structural Matching (approcci sintattici o strutturali); il Neural Networks (approcci basati su reti neurali). Vedi
tabella seguente (tabella 1.2).
Approccio
Rappresentazione
Riconoscimento
Criterio di classificazione
Basato su modello
(Template Matching )
Dati
campionati,
pixel,
curve
introduzione
di
distanze
Correlazione statistica
Basato su stima dell’errore di classificazione
Classificazione statistica (Statistical
Classification
Misure o caratteristiche (Features)
Funzioni
discriminanti
Basato su stima dell’errore di classificazione
Sintattico o strutturale (Syntactic or
Structural Recognition
Primitive
Regole,
grammatiche
Basato
su
stima dell’errore di
accettazione
Reti Neurali (Neural Network )
Dati
campionati,
pixel,
Caratteristiche
(Features)
Funzioni sinaptiche e
di reti
Basato su stima dell’errore quadratico
medio
Tabella 1.2: Approcci e modelli per i sistemi di Pattern Recognition.
L’approccio più immediato al “pattern recognition” è il “Template matching”.
Il pattern da classificare è confrontato con un insieme di prototipi (templates),
ognuno rappresentativo di una delle classi di interesse. La classificazione è basata
su un opportuno criterio di “Best matching”, in cui si definisce una funzione F di
valutazione del matching, che assume valore massimo per il miglior accoppiamento
esemplare-prototipo. Tale approccio ha fornito risultati apprezzabili quando il
numero delle classi non è grande, e gli esemplari appartenenti ad una stessa classe
presentano una ridotta variabilità tra loro.
I modelli basati su reti neurali cercano di utilizzare principi di organizzazione
dei dati, come: addestramento, generalizzazione, tolleranza ai guasti e distribuzione
dei dati, in una rete di grafi pesati.
Approcci più sofisticati al problema sono quello statistico (di tipo parametrico
o non parametrico) (Fukunaga, 1990), (Schalkoff, 1992) e quello strutturale o sintattico. Nei successivi paragrafi verrà fatta una comparazione tra l’approccio di
tipo statistico e quello di tipo strutturale per evidenziarne le analogie / differenze.
1.3.1
Statistical pattern recognition
Secondo l’approccio statistico, un pattern viene caratterizzato attraverso un insieme di misure eseguite su di esso (vettore delle features) e quindi rappresentato
7
CAPITOLO 1. Introduzione al Pattern Recognition
da un punto in un iperspazio delle features (vedi figura 1.3).
Figura 1.3: Rappresentazione delle features.
Il problema della classificazione può essere ricondotto a quello di suddividere
lo spazio delle features in regioni, ognuna di pertinenza di una diversa classe (approccio non parametrico). Un esemplare è assegnato ad una classe se il punto
che lo rappresenta cade nella regione di pertinenza di quella classe. Ovviamente
per avere una rappresentazione ottimale del problema, gli oggetti di una stessa
classe devono essere “simili ” tra di loro ed il più possibile “diversi ” da quelli
appartenenti alle altre classi.
Alla base dell’approccio statistico, vi è, infatti, l’idea che le forme di oggetti
appartenenti alla stessa classe differiscano di poco tra loro, e per poter valutare la
“lontananza” tra le forme è possibile fare delle misure di loro caratteristiche.
In questa sezione la parola “feature” denota un’entità che è derivata da alcune
misure iniziali. Watanable, insieme ad altri studiosi ha utilizzato un metodo di
valutazione che usa uno spazio detto delle configurazioni o delle misure, in cui
un oggetto esaminato è descritto attraverso un opportuno vettore, detto “feature
vector ” di variabili aleatorie associate ai risultati di un insieme di misure effettuate
sull’oggetto stesso. Il pattern rappresentante, l’oggetto è, dunque un insieme di
misure eseguite sull’immagine. L’aspetto importante, consiste nello scegliere un
insieme di misure adeguato, per le quali due punti poco distanti corrispondano
a due oggetti con caratteristiche molto simili. Benché lo sembri, la valutazione
delle similitudini tra forme non è un problema banale ed il concetto di distanza
tra forme coinvolge la variazione di molti fattori. Nell’approccio statistico ogni
pattern è rappresentato in termini di d features o caratteristiche ed è visto come
un punto in uno spazio d-dimensionale. L’efficacia dello spazio di rappresentazione
(feature set) è determinato da quanto bene patterns provenienti da classi differenti
possono essere distinti.
Dato un set di patterns di prova per ogni classe, l’obiettivo è quello di stabilire dei contorni di decisione nello spazio delle features con cui separare patterns
8
1.3 Approccio statistico e strutturale-sintattico
appartenenti a classi differenti. I contorni sono determinati dalla distribuzione di
probabilità dei patterns appartenenti ad ogni classe (Devroye et al., 1996).
Detto V il vettore delle caratteristiche e D la sua cardinalità, un pattern può
essere rappresentato da un punto in uno spazio S a D dimensioni: se si dispone
di un insieme sufficientemente ampio di patterns campioni appartenenti a tutte le
possibili classi (training set) e per ognuno di questi è nota la classe di appartenenza,
è possibile definire in S delle regioni di pertinenza delle singole classi.
Detto X il vettore delle caratteristiche, ottenuto dalle misure effettuate su un
pattern incognito P, è possibile calcolare la distanza:
Di = |X − Ci | con i = 1, ...., n
Dove le Ci sono dei vettori modello che individuano le varie classi. La regola
di decisione ottimale consiste nell’assegnare il pattern alla classe i-esima se risulta
verificata la seguente condizione:
Di < Dj ∀j 6= i
Nell’approccio di tipo statistico, il sistema di riconoscimento è realizzato mettendo insieme due fasi: una di treaning/learning ed una di classification/testing
(vedi figura 1.4).
Figura 1.4: Esempio di Pattern Recognition di tipo statistico.
Nella modalità training si selezionano le features adeguate per rappresentare
i pattern di input ed il classificatore è addestrato a partizionare lo spazio delle
features. Nella modalità di classificazione il classificatore assegna i pattern ad una
delle classi possibli sulla base di valutazioni di misura effettuate sulle features.
1.3.2
Structural pattern recognition
Nell’analisi di configurazioni complesse una soluzione ottimale può essere quella di
considerare una prospettiva gerarchica al problema (Oommen & Kashyap, 1997),
(Fu, 1982), dove i pattern vengono visti come insiemi di componenti elementari. Il
metodo di riconoscimento di tipo sintattico permette di semplificare la struttura
del pattern (Fu, 1974). Un pattern complesso è scomposto in un insieme di
9
CAPITOLO 1. Introduzione al Pattern Recognition
subpatterns più semplici, i quali a loro volta possono essere suddivisi in sottoelementi.
La componente più piccola che si riesce ad individuare, all’inerno di un pattern
complesso è definita “primitiva strutturale”.
Le primitive strutturali che compongono un pattern complesso sono legate tra di
loro da relazioni; occorre quindi, individuare delle regole che riescano a rappresentarle e che ne diano una descrizione. L’approccio strutturale, vede, infatti le figure
come costituite da un insieme complesso di primitive più semplici, e le relazioni
tra di esse sono definite usando delle regole sintattiche o morfologiche.
Per costruire una classificazione di questo tipo, si devono possedere tutte le tecniche necessarie per il riconoscimento e l’estrazione di componenti da un oggetto.
Rispetto alle features di tipo statistico, le primitive strutturali costituiscono degli
oggetti di più alto livello. Nell’approccio di tipo strutturale (e/o sintattico) si
dà, infatti, maggiore rilievo al problema della scelta delle features; features significative dal punto di vista percettivo, geometrico o morfologico, che rappresentano
componenti di un pattern, sono ritenute più affidabili. Il principale obiettivo è di
giungere a descrizioni efficaci ed efficienti.
Le features estratte utilizzando l’approccio di tipo sintattico possono essere
usate all’interno di vari schemi di classificazione; dal template matching ai classificatori statistici. Esse si rivelano particolarmente adatte a conseguire descrizioni
dei pattern complete, evidenziando, sia le primitive di cui il pattern si compone,
sia il modo in cui esse sono correlate tra loro a formare strutture più complesse.
Negli anni ottanta, Fu (1982) introdusse la nozione di grammatica con attributi
che unifica i conceti di pattern recognition sintattico con quello basato su classificazione statistica.
L’approccio strutturale consente di descrivere un ampio insieme di pattern
complessi, usando un piccolo insieme di pattern assunti a primitive, e di regole di
composizione per esse. L’approccio strutturale coinvolge l’insieme di tre processi
indipendenti:
1. estrazione ed identificazione delle primitive;
2. identificazione delle relazioni esistenti tra le primitive;
3. identificazione di strutture valide in termini di primitive e di regole tra di
esse.
Una analogia potrebbe essere fatta tra l’approccio sintattico in pattern recognition e la sintassi del linguaggio. I pattern sono visti come frasi di un linguaggio,
mentre le primitive vengono rappresentate come l’alfabeto del linguaggio e le frasi
quindi sono generate a partire da una grammatica per questo linguaggio. Un “pattern” deve rispettare la grammatica di una determinata classe per appartenerle.
10
1.3 Approccio statistico e strutturale-sintattico
Cosı̀ un vasto insieme di patterns complessi può essere descritto con un piccolo
numero di primitive e regole grammaticali. (vedi figura 1.5).
Figura 1.5: Esempio di grammatica della lingua inglese.
Un linguaggio può avere diversi tipi di rappresentazioni: quello che interessa,
comunque, è la possibilità di risalire ad una delle sue categorie, a partire dalle componenti elementari ricavate. Nel metodo sintattico (e/o strutturale) il riconoscimento di un esemplare come appartenente ad una tra tutte le classi possibili può
essere ricondotto, quindi, al riconoscimento di una frase come appartenente ad uno
tra un certo numero di linguaggi definiti. Il problema si può risolvere utilizzando
una grammatica per la rappresentazione del linguaggio che, tramite la composizione delle primitive, permetta la costruzione di una rappresentazione formale
della configurazione iniziale. La fase di apprendimento del sistema di riconoscimento coincide con la determinazione di tale grammatica.
Nell’approccio di tipo strutturale sintattico esistono diverse tecniche per individuare ed estrarre le primitive (caratteristiche) elementari che costituiscono il
pattern, tuttavia la maggior parte degli studi sono stati indirizzati alle rappresentazioni derivanti dalla teoria dei grafi. In particolare sono state sviluppate
rappresentazioni in termini di alberi, di grafi e di ipergrafi, che consentono di
rappresentare in maniera semplice una vasta classe di relazioni. Tra le rappresentazioni di questo genere una delle più utilizzate è costituita dai grafi relazionali
con attributi (A. R. G.: Attributed Relational Graphs) (Cordella et al., 2002), in
cui ai nodi e agli archi di un grafo sono associate informazioni che caratterizzano
rispettivamente le primitive e le relazioni esistenti tra di esse.
1.3.2.1
Rappresentazione in termini di ARG
Il metodo basato sui grafici relazionali con attributi consiste nell’ottenere un insieme di prototipi generali, partendo da un set di figure ben identificato. Un grafico
11
CAPITOLO 1. Introduzione al Pattern Recognition
relazionale è composto da un insieme di nodi e di archi (rami), rappresentativi delle
relazioni tra due nodi. Nel caso della descrizione di figure, gli attributi dei nodi
e dei rami, rappresentano rispettivamente le proprietà delle componenti primitive
delle figure e le relazioni tra di esse. Quindi, data una curva originale, la sua
rappresentazione mediante ARG consiste, nell’individuare le primitive strutturali
che la compongono e le relazioni ritenute significative esistenti tra di esse, e nel
tradurle in attributi dell’ARG. Una volta individuate le primitive e le relazioni si
costruisce un grafo ai cui nodi sono associate le informazioni che caratterizzano le
primitive e ai cui rami sono associate le informazioni che caratterizzano le relazioni
esistenti tra le stesse.
Un grafo relazionale con attributi può, quindi essere definito come una sestupla
(N, E, AN , AE ,αN , αE ), dove N ed E sono rispettivamente l’insieme dei nodi
e l’insieme degli archi, AN ed AE sono gli insiemi degli attributi dei nodi e degli
archi, mentre αN e αE sono le funzioni che associano ad ogni nodo o ad ogni arco
l’attributo corrispondente. Lo stesso tipo di nodo può essere utilizzato per rappresentare diverse parti, anche di forma diversa di uno stesso oggetto (vedi figura
1.6).
Figura 1.6: Attributed Relational Graph (ARG).
Il problema del riconoscimento, consiste nell’attribuire un esemplare come appartenente ad una classe. L’algoritmo di apprendimento cerca di trovare una
legge di corrispondenza tra nodi ed archi di due grafi, l’uno rappresentante una
descrizione dell’esemplare e l’altro la descrizione di un prototipo di una classe.
Nella pratica è molto difficile stabilire una perfetta corrispondenza tra un prototipo e la rappresentazione di una figura, in quanto l’insieme delle possibili figure
è praticamente illimitato, mentre quello dei prototipi è un insieme finito. Bisogna
quindi definire una metrica, che consenta di valutare le similitudini tra grafi in
modo da poter stabilire quale dei prototipi è più vicino all’esemplare.
Il problema si può quindi risolvere ricorrendo ad una tecnica di “matching” tra
grafi, tecnica ampiamente usata in pattern recognition ed in particolar modo per
l’OCR. Esistono diversi tipi di algoritmi per ottenere il matching tra grafi, alcuni
di tipo deterministico ed altri di tipo euristico. Per alcuni di essi si hanno dei
12
1.4 Scelta della tipologia si approccio: Strutturale statistico o
sintattico
tempi di elaborazione esponenziali, mentre per altri il tempo di risposta è del tipo
O(N logN ). Un tempo di risposta cosı̀ conveniente è stato ottenuto realizzando
un algoritmo di matching tra grafi che confronta delle loro geometrie, come: gli
angoli (tra gli archi), le posizioni (espresse come coordinate (x,y)) e le lunghezze
(Pavlidis et al., 1995).
Metodi per ottenere delle rappresentazioni strutturali più robuste e degli algoritmi con un basso costo computazionale per il matching tra grafi sono oggetto di
una continua ricerca nel settore del “pattern recognition e dell’OCR.
1.4
Scelta della tipologia si approccio: Strutturale
statistico o sintattico
Come già esposto nei paragrafi precedenti, il “pattern recognition”, cerca di identificare un oggetto in base alle conoscenze relative ad un modello cui ricondurre
l’oggetto in esame. Storicamente i due principali approcci al riconoscimento sono
quello “statistico” e quello “sintattico o strutturale”, mentre una tecnica emergente
è legata alle “reti neurali ”.
Si ricorda che l’approccio statistico utilizza delle tecniche di classificazione, che
sono intrinsecamente statistiche, poichè i vari pattern hanno delle distribuzioni
controllate da leggi probabilistiche. Per valutare la lontananza tra forme (le
loro differenze) si effettuano delle misure sulle loro caratteristiche. Ogni oggetto viene quindi descritto attraverso un opportuno vettore, detto “Feature Vector ”
di variabili aleatorie associate ai risultati di un insieme di misure effettuate sull’oggetto stesso. Il feature vector è rappresentato da un punto P in uno spazio ddimensionale le cui coordinate sono date dai valori assunti dalle d variabili aleatorie. Nel caso ideale, ad oggetti appartenenti alla stessa classe corrisponderanno
feature vector identici, mentre a quelli appartenenti a classi diverse corrisponderanno feature vector differenti. Il processo di classificazione consiste nell’individuare la regione di appartenenza del fature vector associato al campione in esame,
risolvendo eventualmente ambiguità generate dalla contemporanea appartenenza
a più regioni di alcuni punti.
I modelli statistici sono decisamente più potenti. Essi mettono a disposizione
strumenti estremamente sofisticati per procedere alla classificazione di un pattern
una volta che questo sia stato opportunamente caratterizzato per mezzo di un vettore di features adeguatamente rappresentativo. Tuttavia questo tipo di algoritmo
incontra notevoli difficoltà quando i patterns sono molto complessi od il numero
di classi è elevato, ovvero quando è presente una larga variabilità tra membri di
una stessa classe. In questo modo si avranno sempre più punti comuni a regioni di
decisione diverse, generando una notevole ambiguità. Pertanto il metodo statistico
diviene inadeguato quando la variabilità degli oggetti da rappresentare ed il loro
13
CAPITOLO 1. Introduzione al Pattern Recognition
numero crescono.
Il metodo di riconoscimento di tipo sintattico è indicato per configurazioni
complesse. Un pattern complesso può essere scomposto in un insieme di subpatterns più semplici, i quali a loro volta cono suddivisi in sottocomponenti. In
tal modo ci si può avvicinare alla maniera di descrivere un oggetto di un essere
umano. Il primo fondamentale vantaggio di una tale impostazione è che la ricerca di un oggetto complesso può essere ricondotto alla sensibilità percettiva degli
esseri umani. Un secondo vantaggio è la possibilità di spostare il problema della
modellizzazione della variabilità delle forme in ingresso a quella della variabilità dei
descrittori primitivi utilizzati. Lo svantaggio è che può generare una esplosione
di combinazioni da investigare per inferire dalle primitive e dalle loro relazioni
la grammatica conseguente; per cui necessita di grandi insiemi di pattern per
l’apprendimento e quindi grosse risorse di elaborazione dati.
14
Capitolo 2
Le fasi della descrizione
In generale il processo di riconoscimento può essere scomposto in quattro fasi,
come di seguito evidenziato:
1. “scanning” o “acquisizione”: localizzazione e digitalizzazione delle immagini
da interpretare; solitamente questa fase è svolta da delle apparecchiature atte
al prelevamento dell’immagine, tramite meccanismi che tendono ad impedire
all’utente di fornire immagini distorte;
2. “preprocessing” o “preelaborazione”: rappresentazione dell’immagine digitalizzata in un formato più conveniente per le successive elaborazioni;
3. “feature extraction”: decomposizione dell’immagine in componenti primitive e descrizione in termini di caratteristiche strutturali, ritenute descrittive
dell’immagine originale;
4. “classification”: confronto della descrizione, ottenuta tramite primitive semplici con descrizioni di riferimento allo scopo di attribuire l’immagine in
esame ad una delle possibili classi.
Il lavoro di tesi sviluppato, non si pone come obiettivo la ricostruzione perfetta
di una immagine digitale (“Curve Fitting”), ma bensı̀ la descrizione della stessa
in termini di componenti elementari, in modo da facilitare il successivo passo di
riconoscimento. La descrizione ottenuta deve essere tale, che attraverso le primitive
strutturali individuate e le relazioni esistenti tra le stesse si riesca a determinare la
classe di appartenenza dell’oggetto da riconoscere, mediante il confronto con dei
modelli di riferimento.
Consideriamo ad esempio il carattere “A”; l’obiettivo è quello di descriverlo
come la decomposizione di tre primitive strutturali e di relazioni esistenti tra le
stesse, come di seguito rappresentato (vedi figura 2.1).
15
CAPITOLO 2. Le fasi della descrizione
Figura 2.1: Esempio di descrizione della lettera “A” in termini di primitive
strutturali semplici: il carattere è rappresentato in termini di tre “features”.
Un buon metodo di descrizione deve possedere la capacità di conservare le informazioni utili per il riconoscimento dell’oggetto descritto e di filtrare le informazioni
non necessarie (in particolare il rumore introdotto nel processo di acquisizione),
producendo una descrizione compatta e maneggevole che rappresenti in maniera
simile oggetti che differiscono per dettagli non significativi (Foggia, 1999).
Il punto di partenza è una adeguata rappresentagione dell’oggetto originale,
che faciliti il processo di estrazione delle “features”. In particolare si parte da una
rappresentazione in termini di segmenti di retta connessi a formare una “poligonale” dell’immagine originale. La rappresentazione poligonale deve, ovviamente
essere libera da ogni fonte di rumore e deve contenere le sole informazioni necessarie.
Tale rappresentazione è ottenuta sottoponendo l’immagine da descrivere alle seguenti fasi:
1. acquisizione;
2. filtraggio del rumore e sogliatura;
3. thinning o assottigliamento dell’immagine;
4. lebelling dello scheletro;
5. pruning;
6. approssimazione poligonale.
Per ciascuno di questi passi analizzeremo quali sono le informazioni che sono
ritenute importanti e vadano preservate e quali invece sono considerate inutili o
dannose ai fini della descrizione e debbano essere eliminate.
2.1
Acquisizione
Il primo passo di un sistema di riconoscimento è l’acquisizione dell’immagine da
trattare. Essa è condotta utilizzando particolari dispositivi (scanner, sensori,
16
2.2 Filtraggio del rumore e sogliatura
etc.). Attraverso questa fase si ottiene una rappresentazione digitale dell’immagine, denominata “rappresentazione raster ”.
Mediante un campionamento spaziale dell’immagine si ottiene una matrice numerica in cui ogni elemento rappresenta un pixel. La distanza (orizzontale e/o
verticale) tra due pixel definisce la risoluzione alla quale l’acquisizione è stata effettuata. Nella seguente figura 2.2 si riporta un esempio di immagine relativa a un
carattere stampato.
Figura 2.2: Immagine “raster ” di un carattere stampato, contenuto all’interno di
un testo.
2.2
Filtraggio del rumore e sogliatura
Le fasi successive a quella di acquisizione lavorano su di una bitmap dell’immagine
originale; questo perchè nel processo di riconoscimento non è significativo il valore
esatto della luminosità di un pixel. Quindi la prima elaborazione a cui l’immagine
è sottoposta è una binarizzazione, il cui scopo è di trasformare l’immagine in una
matrice di bit (bitmap) in cui ciascun pixel assume il valore 0 se appartiene allo
sfondo e 1 se appartiene all’immagine. Per arrivare alla bitmap occorre, quindi
effettuare una operazione di sogliatura (tresholding), che attribuisca ogni pixel
come appartenente allo sfondo oppure all’immagine a seconda che superi o meno
una soglia predefinita (Shaoo et al., 1988).
Sulla bitmap dell’immagine originale potrebbero essere presenti dei punti spuri
(pixel dello sfondo con valore 1) o dei buchi (pixel dell’immagine con valore 0)
causati da fonti di rumore generate durante la precedente fase di acquisizione. Per
ovviare a questi inconvenienti è necessario sottoporre la rappresentazione ottenuta
17
CAPITOLO 2. Le fasi della descrizione
ad una operazione di filtraggio, mediante filtri digitali. Nella seguente figura 2.3 è
riportata la bitmap dell’immagine mostrata nella precedente figura 2.2.
Figura 2.3: Esempio di bitmap di un carattere stampato, ottenuta dalla rappresentazione “raster ” dello stesso.
2.3
Thinning o assottigliamento dell’immagine
La “bitmap” dell’immagine ottenuta a valle delle fasi di acquisizione, di filtraggio
e di sogliatura contiene una grande mole di informazioni, non tutte rilevanti al fine
della descrizione e del successivo riconoscimento. Per ridurre la quantità di queste
informazioni è possibile effettuare una operazione di assottigliamento, in modo da
passare dalla bitmap a delle linee di spessore unitario.
Tale trasformazione è detta “thinning” o “scheletrizzazione”. La seguente figura 2.4 mostra il processo di assottigliamento (scheletrizzazione) della lettera “K ”.
Un algoritmo di thinning ottimale deve permettere di ricostruire la struttura
lineare dell’immagine senza perderne la connessione, consentendo una riduzione
dei dati, senza perdita di informazioni basilari (Arcelli et al., 1981), (Arcelli &
di Baja, 1985), (Duda et al., 2001). La fase di thinning si basa, infatti sull’ipotesi
che lo spessore dei tratti non sia una informazione necessaria al riconoscimento
dell’oggetto. Ovviamente il thinning dell’immagine deve soddisfare alcuni requisiti
fondamentali (Ramer, 1972):
• non deve dare origine a connessioni se la figura di partenza non era connessa;
• non deve operare fusioni tra parti non connesse.
18
2.4 Pruning
Figura 2.4: Scheletro di una immagine di un carattere, ottenuto attraverso la fase
di scheletrizzazione e/o “thinning ”.
2.4
Pruning
La fase di thinning (o assottigliamento) potrebbe produrre, in alcuni casi uno
cheletro che non riflette in maniera puntuale l’andamento dell’immagine. Lo
scheletro potrebbe presentare delle distorsioni. La fase di “pruning” è necessaria
per depurare lo scheletro da tutte queste imperfezioni, quali per esempio eventuali
rami spuri che non trovano un corrispondente nell’immagine originale.
2.5
Labelling dello scheletro
L’approssimazione ottenuta a valle delle precedenti fasi presenta però ancora un
fondamentale difetto per poter essere considerata un buon punto di partenza per il
riconoscimento; essa è infatti ancora una curva complessa e difficilmente gestibile.
Il nostro obiettivo è quello di ottenere delle linee elementari da utilizzare nella fase
di descrizione. Per poter suddividere la curva (complessa) ottenuta in un insieme
di linee elementari bisogna individuare dei punti notevoli, rappresentanti i punti
di incrocio, al fine di poter sbrogliare lo scheletro ed ottenere la poligonale su cui
effettuare il processo di descrizione.
Si possono individuare cinque classi differenti per i punti appartenenti ad uno
scheletro, come di seguito descritto (Tortorella, 1995), (Kong & Rosenfield, 1989):
• “normal point (NP)”: è un punto il cui cerchio di raggio massino tocca i
bordi dell’oggetto in due insiemi separati e continui di punti;
• “branch point (BP)”: è un punto il cui cerchio di raggio massimo tocca i
bordi dell’oggetto in tre o più insiemi separati e continui di punti;
19
CAPITOLO 2. Le fasi della descrizione
• “end point (EP)”: è un punto il cui cerchio di raggio massimo tocca il bordo
in un unico insieme continuo di punti;
• “terminal point (TP)”: è un punto con la stessa definizione di un NP, con il
requisito aggiuntivo di essere adiacente ad un BP;
• “adjacent branch point (ABP)”: è un punto con la stessa definizione di un
BP con il requisito aggiuntivo di essere vicino ad un altro BP.
2.6
Approssimazione poligonale
La rappresentazione mediante scheletro, consente di ridurre notevolmente l’enorme
quantità di dati contenuti nell’immagine originale. Tale rappresentazione risulta
notevolmente più sintetica rispetto alla bitmap, ma è ancora poco adatta ad essere
trattata all’interno di un sistema di riconoscimento.
Una volta estratto lo scheletro dell’immagine occorre compiere un altro passo
per sfoltire ulteriormente il suo contenuto informativo, usando degli algoritmi di
approssimazione poligonale. L’obiettivo di tale approssimazione è quello di rimuovere il rumore generatosi nelle precedenti fasi, comprimere i dati, e descrivere
l’immagine in maniera opportuna (es. Spline ed Archi di Cerchio), mantenendone
il contenuto informativo. La scelta delle primitive da utilizzare dovrebbe permettere di rappresentare in maniera compatta i tratti che compongono la poligonale.
Ad esempio la lettera “A” dovrebbe poter essere rappresentata mediante tre stratti
rettilinei, mentre la lettera “B ” dovrebbe essere descritta da un tratto rettilineo e
due tratti curvilinei con concavità rivolta verso sinistra.
Prima di procedere alla descrizione dei passi che compongono tutto il processo
di decomposizione introduciamo alcune componenti che saranno utilizzate poi nel
seguito di questo lavoro. Come già detto in precedenza, il nostro punto di partenza sarà una rappresentazione poligonale dell’immagine digitale originale, in altre
parole un insieme di segmenti di retta che uniscono due punti consecutivi.
Definiamo tali componenti “CPL o Componenti di Primo Livello”. Da tale
rappresentazione si passa, poi ad una costituita da componenti dalle più ampie
capacità descrittive, che verranno descritte in seguito, e che definiamo “CSL o
Componenti di secondo Livello”.
Esistono numerosi algoritmi di approssimazione poligonale (Ramer, 1972), che
permettono di passare dalla descrizione tramite CPL a quella in termini di CSL,
classificabili in funzione della strategia di accorpamento dei punti che adottano.
Nel nostro lavoro abbiamo sviluppato delle metodologie di decomposizione
basate su valutazione locale dell’errore di approssimazione ed una basata su valutazione globale dello stesso, ed in particolare:
20
2.6 Approssimazione poligonale
• “Merge”;
• “Split”;
• “Split and Merge
• “Decomposizione basata su programmazione dinamica”.
L’algoritmo di “merge” (Slansky et al., 1972) procede in maniera sequenziale;
parte da un estremo della curva, assumendolo come primo vertice della poligonale,
tenta di approssimare con un unico segmento (arco di cerchio o spline), il tratto di
curva compreso tra il primo vertice ed il punto successivo. Punti consecutivi della
curva vengono considerati fino a quando il criterio di approssimazione è soddisfatto. Il primo punto in corrispondenza del quale l’errore di approssimazione supera
la soglia prefissata viene assunto come nuovo vertice e da esso riparte il procedimento di approssimazione, fino a quando non è stato esaminato l’ultimo punto
della curva. Quando è stato raggiunto, quindi, l’altro estremo della poligonale, il
procedimento di decomposizione termina.
L’algoritmo di “split” considera inizialmente l’intera curva, cercando di approssimarla con un unico segmento (arco di cerchio o spline); nel caso in cui
l’errore di approssimazione risulti maggiore di una soglia prefissata, la curva viene
suddivisa in due parti in corrispondenza del punto che produce l’errore massimo.
In tale punto si pone un nuovo vertice e si riconsidera l’approssimazione su ognuna delle parti ottenute. Il procedimento viene ripetuto fino a quando l’errore di
approssimazione non risulta inferiore della soglia per tutti i tratti in cui è stata
divisa la curva originale, ed essa non ha subito mutamenti nel precedente passo.
L’algoritmo di “split and merge” (Pavlidis & Horowitz, 1974) combina i due
algoritmi precedenti, alternando un passo di split ad uno di merge che fonde coppie
di segmenti successivi generate dal precedente passo di split, ma che comunque
soddisfano il criterio di approssimazione.
L’implementazione dei metodi appena descritti necessita la definizione di un
criterio di accettazione delle approssimazioni effettuate. Esistono numerose tecniche per la definizione del criterio di accettazione, alcune delle quali segmentano
la curva nei punti di massima deviazione, altre in corrispondenza dei punti di massima curvatura, mentre altre utilizzano tecniche miste.
Purtroppo esse hanno l’inconveniente di utilizzare una soglia fissa, in questo
modo la descrizione dell’immagine, cambia al variare delle dimensioni e della conformazione della stessa. Alcuni algoritmi sopperiscono al fatto di avere una soglia
fissa con una misura ottenuta normalizzando la stessa rispetto alla lunghezza to21
CAPITOLO 2. Le fasi della descrizione
tale del tratto approssimante (Wu & Wang, 1993), il che permette di ottenere
l’invarianza dalla scala della soglia.
Nel presente lavoro è stata sviluppata una ulteriore tecnica di decomposizione
basata su programmazione dinamica che prescinde completamente dalla definizione
della soglia e che quindi può essere utilizzata su qualsiasi tipo di curva, indipendentemente dalla dimensione della stessa. Il vantaggio ulteriore che ne deriva è
l’assenza di vincoli nel processo di accettazione dell’approssimazione da effettuare.
22
Capitolo 3
Il processo di
decomposizione
Nel “capitolo 1 ” è stata data una panoramica dei possibili campi di applicazione
del “Pattern Recognition”; in particolare sono stati analizzati i metodi di approccio ed i passi fondamentali che precedono la decomposizione di una immagine
digitale. Nel “capitolo 2 ” sono state, invece analizzate le fasi che portano dalla rappresentazione “raster ” dell’immagine originale a quella mediante una poligonale,
ovvero un insieme contiguo di segmenti. Attraverso una serie di passi (acquisizione,
filtraggio del rumore e sogliatura, thinning o assottigliamento dell’immagine, labelling dello scheletro, pruning, ed approssimazione poligonale) si è, infatti giunti
ad una rappresentazione dell’immagine costituita da un insieme di segmenti contigui che formano una poligonale. L’obiettivo della decomposizione è quello di
partire da questa rappresentazione e di individuare un insieme di primitive strutturali, che siano significative e che descrivano adeguatamente la curva di partenza,
mantenendo il solo contenuto informativo rilevante e riducendo la rappresentazione
poligonale dell’immagine originale (Kanal, 1974).
L’obiettivo del presente capitolo è quello di descrivere gli strumenti utilizzati
per passare dalla rappresentazione mediante poligonale dell’immagine originale
alla sua descrizione mediante tali primitive strutturali semplici.
3.1
La decomposizione
Il punto di partenza per il processo di descrizione e di riconoscimento è una adeguata rappresentazione dell’immagine originale, fatta in termini di segmenti di retta
connessi a formare una poligonale. I dati di input per il sistema di descrizione
sono, dunque delle componenti di primo livello (“CPL”). Il fine ultimo è quello
di ottenere una rappresentazione di secondo livello (“RSL”), costituita da un insieme di componenti di secondo livello (“CSL”), da fornire in ingresso al sistema
23
CAPITOLO 3. Il processo di decomposizione
di riconoscimento. Nel nostro caso, le CPL sono i segmenti che costituiscono la
poligonale, mentre le CSL sono le primitive strutturali individuate.
Partendo da una rappresentazione abbastanza fedele dell’immagine originale,
fatta in termini di segmenti di retta connessi a formare una poligonale, occorre
utilizzare delle primitive strutturali dalle più ampie capacità descrittive, che riassorbano l’eccessiva variabilità dei singoli elementi della poligonale.
Descrivere una curva, significa individuare, all’interno di essa delle caratteristiche (primitive) salienti, che la rappresentino adeguatamente, dandone una descrizione che sia quanto più possibile unica e che soprattutto riducano la rappresentazione della curva di partenza. La rappresentazione dell’immagine originale,
in termini di poligonale (componenti di primo livello) conserva una quantità di
informazioni superiore a quelle realmente necessarie per il successivo passo di riconoscimento. L’identificazione di primitive di secondo livello consente di descrivere i tratti salienti di una curva, mantenendo allo stesso tempo solo la quantità
di informazioni necessaria alla sua identificazione, riducendone la complessità di
rappresentazione.
Se consideriamo uno stesso carattere che compare più volte all’interno di un
testo possiamo osservare che le rappresentazioni delle sue occorrenze, in termini
di matrici di pixel sono differenti, anche se per pochi dei pixel che le compongono.
Dovremmo, invece trovare una rappresentazione, che permetta di descrivere una
stessa curva sempre con le stesse primitive strutturali. Ad esempio uno stesso
carattere (lettera “R”) dovrebbe essere descritto sempre con le stesse primitive
fondamentali (per esempio, due tratti ed un arco; vedi figura seguente).
Figura 3.1: Decomposizione del carattere “R” in termini di primitive strutturali
semplici: passaggio da una rappresentazione in termini di componenti del primo
ordine ad una in termini di componenti del secondo ordine.
24
3.2 Scelta della primitiva strutturale
Analizzando la figura 3.1 si può notare che il contenuto informativo del carattere, necessario alla fase di riconoscimento (identificazione della curva) non è cambiato. Tuttavia, la seconda rappresentazione della curva (riquadro a destra) è
notevolmente semplificata rispetto alla poligonale originale. Ciò comporta che la
trasformazione ottenuta non sia reversibile, ovvero non è più possibile passare dalla
rappresentazione in termini di componenti di secondo livello a quella in termini di
componenti di primo livello. Le informazioni, ritenute scarsamente rilevanti al fine
del riconoscimento della curva sono, ad esempio quelle relative alla rumorosità del
processo di scrittura e/o a quello di acquisizione e sono completamente trascurate
in fase di descrizione.
Partendo dalla rappresentazione poligonale dell’immagine da descrivere, si vuole
indagare sui diversi algoritmi di decomposizione, al fine di valutare il loro comportamento al variare di diverse condizioni operative ed arrivare ad un compromesso
tra “accurata ricostruzione” e una “adeguata tolleranza” al variare della forma in
esame.
3.2
Scelta della primitiva strutturale
“Visual primitive” o “primitive component” è un concetto che ha un chiaro
significato nell’approccio strutturale al “pattern recognition”. Secondo questo approccio un pattern complesso può essere decomposto in semplici subpatterns, in
maniera ricorsiva. Essi successivamente possono essere caratterizzati in termini di
semplici componenti, chiamate “primitive” ed in termini di relazioni tra di esse,
in modo da descrivere la struttura del pattern.
Selezionare delle primitive strutturali è un problema complesso, che non ha
una soluzione generale. Il criterio di selezione di primitive strutturali adeguate si
basa sul selezionare le stesse, come elementi base del pattern, in modo che diano
una rappresentazione compatta, ma adeguata dello stesso, in termini di specifiche
relazioni strutturali tra loro (Rosin & West, 1989) (Ichoku et al., 1996).
Nella nostra applicazione le primitive strutturali utilizzate sono delle curve
del secondo ordine, e cioè degli archi di cerchio, che sono usati come descrittori
elementari della curva. Se avessimo usato dei segmenti di retta come descrittori
elementari la complessità della rappresentazione sarebbe stata ancora elevata e
la descrizione della curva non sarebbe stata abbastanza fedele. Utilizzare degli
archi di cerchio, in luogo di segmenti di retta permette il conseguimento, a parità
di sinteticità della descrizione ottenuta, di una rappresentazione più fedele degli
oggetti da decomporre (vedi figura 3.2).
25
CAPITOLO 3. Il processo di decomposizione
Figura 3.2: Confronto tra primitive strutturali del secondo e del primo ordine.
Dalla figura 3.2 si vede chiaramente che utilizzando come primitive strutturali
dei segmenti di retta (curve del primo ordine) la quantità di informazione a nostra
disposizione non è sufficiente a descrivere adeguatamente la curva, e la sua rappresentazione non è sufficientemente semplificata. Scegliendo al contrario delle ellissi
il contenuto informativo a nostra disposizione sarebbe inferiore a quello necessario.
Gli archi di cerchio sembrano, quindi essere la soluzione ottimale per i nostri scopi.
Inoltre, i segmenti di linea possono essere considerati come degli archi di circonferenza con curvatura nulla. Quindi, dal punto di vista matematico, descrivere
una curva con archi di cerchio e/o con segmenti di linea è equivalente (Horng &
Li, 2001).
Nel nostro lavoro la poligonale da descrivere, che rappresenta l’immagine in
esame è decomposta in archi di cerchio di differente raggio e curvatura e segmenti
di retta. Come detto precedentemente, i segmenti di retta sono considerati come
casi particolari di archi di cerchio a curvatura nulla. Dato un insieme di segmenti
di retta, costituenti un tratto di poligonale, essi sono sostituiti con un unico arco
di cerchio solo se si ottiene una semplificazione della rappresentazione (in termini
di componenti di secondo livello) e se l’errore ottenuto nell’approssimazione è inferiore ad un determinato valore (ovvero solo se sussistono determinate condizioni).
L’obiettivo è quello di ottenere la minore segmentazione possibile dell’immagine
originale pur mantenendo basso l’errore di approssimazione. Si trasforma, quindi
una rappresentazione di primo livello (RPL), costituita da componenti di primo
livello (segmento di poligonale, CPL) in una rappresentazione di secondo livello
(RSL) costituita da un insieme di componenti di secondo livello (CSL), ovvero
archi di cerchio.
Ciascuna componente di secondo livello (arco di cerchio) deve essere scelto in
modo da poter rappresentare nel miglior modo possibile segmenti di retta consecutivi, costituenti un tratto di poligonale. Deve essere mantenuto sostanzialmente
basso lo scostamento tra l’arco di cerchio approssimante e l’insieme di segmenti
26
3.3 Rappresentzione nel piano trasformato (L − α)
della poligonale approssimati; ovvero l’errore di approssimazione commesso.
Per non generare una eccessiva segmentazione della poligonale, si cerca di rappresentarla con il minor numero possibile di componenti di secondo livello (archi
di cerchio).
Il primo problema da affrontare è dunque quello di approssimare, con un unico
arco di circonferenza una poligonale qualsiasi, di prefissato numero di segmenti.
Questo problema, di non semplice soluzione può essere opportunamente semplificato, ricorrendo ad una trasformazione del piano geometrico (x,y) nel quale si
rappresenta la poligonale e l’eventuale arco approssimante. L’introduzione di un
opportuno piano trasformato ci consente di ottenere una descrizione di una immagine che sia indipendente dall’orientamento e dalla posizione della stessa. La
rappresentazione ottenuta è unica indipendentemente dalla disposizione della curva originale. Inoltre utilizzando una trasformazione di coordinate si riesce ad ottenere una indipendenza dalla dimensione poichè si effettua una normalizzazione
rispetto alla lunghezza. Informazioni relative alla dimensione, all’orientamento
e/o alla posizione di una curva sono fondamentali in fase di ricostruzione (“curve
fitting”) della stessa, ma non nel caso della descrizione; quindi passando al piano
trasformsto si ottiene una notevole semplificazione del problema.
3.3
Rappresentzione nel piano trasformato (L−α)
In molte applicazioni nel campo scientifico, si osserva che è utile effettuare le operazioni più onerose e complicate, non nello spazio che si è assunto come riferimento,
bensı̀ in un opportuno spazio trasformato dotato di convenienti proprietà che facilitano le elaborazioni, semplificando il progetto degli algoritmi da adottare e lo
studio del problema in esame.
Il sistema di riferimento adottato nel presente lavoro è quello cartesiano, in cui
ciascuno dei due vertici del segmento che costituisce la poligonale è rappresentato
da una coppia di coordinate (xi , yi ). Poichè per molte delle elaborazioni che si
dovranno effettuare sulla struttura a nostra disposizione è molto oneroso lavorare
con tale riferimento, si è ritenuto particolarmente utile passare da tale riferimento
ad un piano trasformato (de Santo, 1989), denominato (l, α). Tale trasformazione
fa corrispondere, ad ogni punto del piano cartesiano di riferimento (xi , yi ), la
coppia di coordinate (li , αi ) secondo la seguente definizione:
1. si assuma un riferimento curvilineo lungo la curva; li è definito come la
coordinata curvilinea del punto (xi , yi );
2. si scelga un riferimento angolare Ra , in cui l’angolo di riferimento è quello
che la tangente alla curva nell’origine del riferimento curvilineo forma con
l’asse x. αi sarà, quindi definito come l’angolo che la tangente al punto
27
CAPITOLO 3. Il processo di decomposizione
(xi , yi ) forma con l’origine del riferimento Ra ; αi è per convenzione positivo
nel verso antiorario.
Utilizzando la trasformazione nel piano (l, α) una poligonale, anche complessa
è rappresentata da una funzione costante a tratti. Ogni tratto della funzione
ottenuta corrisponde ad un lato della poligonale, con lunghezza pari a quella del
lato; la distanza lungo le ordinate tra due tratti contigui è data dall’angolo formato
tra gli stessi nel sistema cartesiano di partenza. Nella seguente figura 3.3 si riporta
un esempio di trasformazione nel piano (l, α) di una poligonale composta da sei
tratti.
Figura 3.3: Trasformazione della rappresentazione di una poligonale nel piano
(x, y), ad una rappresentazione della stessa nel piano (l, α).
Dalla figura 3.3 si può osservare che l’asse delle ascisse ha come unità di misura
le lunghezze, mentre quello delle ordinate è tarato in gradi.
28
3.3 Rappresentzione nel piano trasformato (L − α)
Si può facilmente intuire che:
1. la trasformata di una retta nel piano (l, α) è un segmento orizzontale, essendo
nullo l’angolo tra ogni segmento ed il suo precedente o il suo successore.
2. la trasformata nel piano (l, α) di una circonferenza è una retta in quanto,
lungo la circonferenza l’angolo formato dalla tangente con una direzione di
riferimento varia linearmente con l’ascissa curvilinea.
3. la trasformata di un poligono regolare a k lati è una funzione costante a
tratti che cresce, o decresce con passo assegnato (vedi figura 3.4).
Figura 3.4: Rappresentazioni notevoli: rappresentazione nel piano (L, α) di un
poligono regolare a cinque lati e di una circonferenza.
29
CAPITOLO 3. Il processo di decomposizione
La trasformazione dal piano cartesiano di riferimento al piano trasformato (l, α)
è ottenuta mediante le seguenti due equazioni:
li =
p
(xi+1 − xi )2 + (yi+1 − yi )2
µ
xi+1 − xi
yi+1 − yi
αi = arctan
(3.1)
¶
(3.2)
Come si può notare dalla figura 3.4 la rappresentazione nel piano trasformato
di una circonferenza è una retta passante per l’origine, il cui coefficiente angolare
è pari all’inverso del raggio “r ” della circonferenza stessa. L’angolo sotteso tra la
retta e l’asse delle ascisse è pari a:
µ ¶
1
γ = arctan
r
(3.3)
quindi il coefficiente angolare della retta nel piano (l, α) è proprio pari a:
m = tan γ =
dα
dl
(3.4)
mentre in (x,y), supponendo che α sia espresso in radianti, risulta:
dl = rdα
(3.5)
da cui si ottiene:
r=
1
m
(3.6)
La trasformazione dal piano cartesiano di riferimento al piano trasformato (l, α)
comporta notevoli semplificazioni, sia dal punto di vista degli algoritmi da implementare sia per quanto riguarda la complessità dei calcoli da eseguire. Lavorare con
delle poligonali e con delle primitive di secondo livello (archi di cerchio) equivale a
lavorare, nel piano trasformato (l, α) con delle funzioni a gradino e delle rette. Nel
piano trasformato, inoltre si perde ogni informazione relativa alla posizione originale, all’orientamento ed alla dimensione della poligonale nel piano (x,y). In altre
parole si perde ogni informazione legata alle proprietà geometriche delle curve.
30
3.4 Scelta di una metrica
Una stessa curva è sempre disegnata nello stesso modo nel piano trasformato, indipendentemente dalla sua rappresentazione originale nel piano (x, y). L’angolo
formato tra segmenti contigui della poligonale diviene, infatti il riferimento lungo
le ordinate e la lunghezza dei segmenti, il riferimento lungo le ascisse. In questo
modo si ottiene una invarianza per rotazione e per traslazione della rappresentazione; ogni poligonale nel piano (x, y) viene rappresentata, nel piano (l, α) con
una funzione a gradino con primo vertice nell’origine.
La complessità della rappresentazione diminuisce poichè nel piano (l, α) si trattano curve del primo ordine, invece che curve del secondo ordine, quali sono gli
archi di cerchio. Nel riferimento (x, y), le curve sono rappresentate da poligoni
ed archi di circonferenza, mentre nel piano (l, α), sono funzioni a gradino e rette.
Ovviamente lavorare in (l, α) non è equivalente a lavorare in (x, y). Tutto ciò
rende particolarmente interessante per i nostri scopi tale trasformazione.
In definitiva il problema di trovare nel piano (x, y) il numero minimo di archi
di cerchio che ben approssimano la poligonale di riferimento, viene tradotto nel
piano (l, α), nel trovare il minimo numero di segmenti di retta che approssimino
al meglio la funzione a gradino. Ovviamente, fissata la poligonale originale, rappresentata nel piano mediante una funzione a gradino, esisteranno più archi di
cerchio, ovvero più rette in (l, α) in grado di approssimarla; la scelta della migliore
retta approssimante può essere effettuata soltanto quando sia stato definito un
opportuno criterio per misurare la distanza tra due curve nel piano geometrico.
Lo spazio metrico M deve, per definizione, essere in grado di definire una funzione
D, che gode di opportune proprietà e che sia rappresentativa della distanza tra
due oggetti del dominio.
3.4
Scelta di una metrica
Una volta ottenuta una poligonale dell’immagine originale bisogna descrivere la
stessa con delle primitive strutturali idonee. Come già detto in precedenza le
primitive designate sono degli archi di cerchio e dei segmenti di retta. Nel piano
trasformato il problema può essere formulato nella determinazione di un insieme
di segmenti di retta che ben approssimano una funzione a gradino (e/o costante a
tratti). Ovviamente questo insieme non sarà unico e la determinazione del miglior
insieme possibile è legato alla valutazione della distanza tra forme. Formalizziamo,
quindi il problema come segue:
Data una poligonale P costituita da K punti e da N=K-1 segmenti di retta
{S1 , S2 , . . . , SN }, occorre determinare un insieme di M (M ≤ N ) archi di cerchio
Γ = {γ1 , γ2 , . . . , γM } che rappresenti al meglio la poligonale P.
31
CAPITOLO 3. Il processo di decomposizione
La bontà dell’approssimazione effettuata può essere valutata definendo una
opportuna metrica che ci consenta di valutare l’entità dell’errore commesso approssimando con uno o più archi di cerchio la poligonale P.
L’idea è quella di descrivere la poligonale P con il minor numero possibile di
primitive strutturali e l’introduzione di una distanza tra forme consente di valutare,
tra tutti gli insiemi Γ = {γ1 , γ2 , . . . , γM }, quale sia quello che fornisce l’errore di
approssimazione minore.
Ovviamente il grado di approssimazione ottenuto e la rappresentazione in archi
di cerchio, saranno diversi al variare della metrica adottata.
Nel nostro lavoro sono state introdotte diverse tipologie di metriche, al fine
di valutare la bontà della rappresentazione fornita in funzione della tipologia di
curva. In particolare sono state implementate:
• la metrica in L2 : che stima il minimo della somma dei residui al quadrato;
L2 è lo spazio delle funzioni al quadrato sommabili;
• la metrica in L∞ : che minimizza il valore assoluto dei residui;
• la regressione lineare LMS (Least Median of Squares): che stima il minimo
del valor mediano dei residui al quadrato.
Dove per residui intendiamo la differenza puntuale tra curva approssimante e curva approssimata. Attraverso queste metriche siamo riusciti a valutare la differenza di forma tra la poligonale P e la decomposizione in archi di cerchio
Γ = {γ1 , γ2 , . . . , γM }.
Una volta individuata la metrica da utilizzare si deve individuare il più piccolo
valore di M (cardinalità dell’insieme degli archi di cerchio) per cui risulta soddisfatta la seguente relazione:
kP − Γk < Emax
(3.7)
dove Emax è l’errore massimo tollerato. Ovviamente l’errore è calcolato secondo
la metrica prescelta.
Una volta individuato un insieme Γ = {γ1 , γ2 , . . . , γM } di archi di cerchio
dobbiamo valutare se essi si prestano bene ad essere sostituiti alla poligonale P
originale e per fare questo occorre individuare un criterio di accettazione della
approssimazione effettuata. Ciò purtroppo comporta la definizione di una soglia
di errore (Emax ), con cui confrontare l’errore commesso. La soglia può essere predefinita (soglia fissa) oppure può essere determinata dinamicamente; in base alla
32
3.4 Scelta di una metrica
sua tipologia il grado di approssimazione ottenuto sarà differente.
L’aspetto fondamentale, dunque è la definizione di un criterio che ci consenta
di valutare quando una approssimazione è accettabile e ciò comporta la necessità
di effettuare una misurazione tra le curve nel piano di riferimento (x, y) in cui esse
si trovano. Per ridurre la complessità di questo problema si è pensato di effettuare
una trasformazione del sistema di riferimento.
La trasformazione nel piano (L, α) consente di semplificare notevolmente il
problema della determinazione della distanza tra forme, in quanto ci troviamo ad
operare con funzioni costanti a tratti e rette (curve del primo ordine), in luogo di
poligonali ed archi di cerchio (curve del secondo ordine) come avveniva nel piano di
riferimento (x, y). per capire meglio come l’introduzione del cambio di riferimento
ci aiuti nella trattazione di seguito ne mostriamo delle caratteristiche fondamentali.
Date le proprietà del piano trasformato, la distanza in (l, α) tra la retta approssimante e la funzione approssimata dipende, qualunque sia la metrica adottata,
dalla differenza ∆α(l) che esiste tra le tangenti alle due curve nel piano (x, y) in
punti aventi la stessa ascissa curvilinea l (vedi figura 3.5).
Figura 3.5: Distanza tra forme nel piano (L, α).
Dato che l’andamento della tangente in funzione della lunghezza della curva,
33
CAPITOLO 3. Il processo di decomposizione
nel piano (x, y) costituisce un buon descrittore della forma (Cordella et al., 1994),
la distanza in (l, α) può essere interpretata come la differenza di forma tra le curve
nel piano (x, y).
Date quindi due curve nel piano (x, y), e scelto un sistema di ascisse curvilineo
lungo le due curve, la differenza del modulo degli angoli formati dalle due tangenti
in quel punto con un comune angolo di riferimento:
∆α(l) = |α1 (l) − r(l)|
(3.8)
costituisce un buon descrittore della differenza di forma esistente tra le due curve
nel piano (x, y).
Il problema di determinare nel piano (x, y) l’insieme di archi di cerchio che ben
approssimano una determinata poligonale costituita da segmenti consecutivi può
essere risolto nel piano (l, α) determinando l’insieme di rette che approssimano
un insieme di tratti, costituenti la funzione costante a tratti corrispondente alla
poligonale nel piano (x, y).
La nostra attenzione non sarà focalizzata sull’utilizzo di una sola metrica e
ciò ci consentirà di effettuare un confronto di prestazioni tra le stesse. Di seguito riportiamo la formalizzazione dei criteri utilizzati per definire le tre differenti
metriche.
3.4.1
Metrica in L2 (Least Squares Approximation)
Il criterio dei minimi quadrati è spesso usato per approssimare dati sperimentali
tramite regressioni lineari. In realtà è adeguato per approssimare i dati con qualsiasi combinazione lineare (a coefficienti costanti) di elementi appartenenti ad una
base di uno spazio di funzioni (Monegato, 1998).
Secondo la metrica in L2 , che è lo spazio delle funzioni al quadrato sommabili,
l’errore commesso approssimando una funzione con una retta è definito come:
||f −
r||22
Zltot
=
(f (l) − r(l))2 dl.
(3.9)
0
dove ltot rappresenta la lunghezza totale della funzione da approssimare nel piano
(L − α). Nel nostro caso l’equazione precedente può essere espressa nel modo
seguente:
34
3.4 Scelta di una metrica
v
u ltot
uZ
u
2
E2 = t |α1 (l) − α2 (l)| dl.
(3.10)
0
Per poter quindi trovare la retta che meglio approssima la nostra funzione (a
gradino) occorre applicare il criterio dei minimi quadrati, implementando una regressione lineare. Il metodo di approssimazione proposto è definito “Least Squares
Approximation” (Buchanan & Turner, 1992).
Definiamo f (l) come la funzione a gradino da approssimare; ed assegniamo un
generico intervallo [0, ltot ], in cui tale funzione si estende. Detta:
r(l) = a0 + a1 l
(3.11)
la retta approssimante tale funzione, occorre determinare a0 ed a1 tali che la funzione:
Zltot
F (a0 , a1 ) =
(f (l) − a0 − a1 l)2 dl = ||f − r||22
(3.12)
0
sia minimizzata. Il problema può essere anche formulato nel modo seguente:
∂F
= −2
∂ai
Zltot
li (f (l) − a0 − a1 l)dl
∀i.
0
La funzione F è minimizzata quando si verifica:
quazione 3.13 si ottiene la seguente:
∂F
∂ai
= 0 ∀i. Riorganizzando l’e-
Zltot
Zltot
Zltot
i
i+1
a0
l dl + a1
l dl =
li f (l)dl
0
(3.13)
0
(3.14)
0
che può essere espressa anche in forma matriciale come:
La = f.
35
(3.15)
CAPITOLO 3. Il processo di decomposizione
Dove:
Zltot
lij =
li+j−2 dl;
Zltot
fi =
li−1 f (l)dl;
0
con i = 1, . . . , 2 e
j = 1, . . . , i
0
(3.16)
ed a rappresenta il vettore incognito da determinare. Nel nostro caso la risoluzione
del problema di minimizzazione equivale a risolvere il seguente sistema di equazioni
lineari:
½
f11 a0 + f12 a1 = f1
f21 a0 + f22 a1 = f2
(3.17)
ovvero:
"
# ·
¸ ·
¸
a0
f1
•
=
a1
f2
2
ltot
2
3
ltot
3
ltot
2
ltot
2
dove a0 ed a1 sono rispettivamente, il termine noto ed il coefficiente angolare della
retta approssimante, ottenuta con il metodo dei minimi quadrati e:
Zltot
f1 =
f (l)dl
Zltot
f2 =
lf (l)dl.
0
3.4.2
(3.18)
0
Metrica in L∞ (Uniform Approximation)
In questa sezione affrontiamo il problema della determinazione della migliore approssimazione di una funzione a gradino f, all’interno di un intervallo [0, ltot ].
Nella metrica L∞ la definizione della distanza tra due forme è data dalla seguente
equazione (Buchanan & Turner, 1992):
||f − p||∞ = min ||f − p||∞ = min max |f (l) − p(l)|
p∈Πn
p∈Πn l∈[0,ltot ]
(3.19)
dove p ∈ Πn (p ∈ Πn è l’insieme dei polinomi, ed n = 1 nel nostro caso) ed ltot
è la lunghezza totale della funzione a gradino lungo l’asse delle ascisse; nel nostro
caso tale formula può anche essere espressa come:
E∞ = max |α1 (l) − α2 (l)|.
l
(3.20)
Per determinare la retta approssimante la funzione data, bisogna selezionare dei
36
3.4 Scelta di una metrica
punti l0 < l1 < . . . < ln+1 lungo l’asse delle ascisse e determinare gli elementi di
Πn che minimizzano maxi |f (li ) − p(li )|.
Teorema 3.1 Il polinomio p0 ∈ Πn con funzione di errore e0 (l) = f (l) − p0 (l) è
la migliore approssimazione minima di f , nell’intervallo [0, ltot ] se e soltanto se
esistono n + 2 punti 0 ≤ y0 < y1 < . . . < yn+1 ≤ ltot tali che:
|e0 (yi )| = ke0 k∞
(i = 0, 1, . . . , n + 1)
e0 (yi+1 ) = −e0 (yi )
(i = 0, 1, . . . , n)
(3.21)
(3.22)
L’approssimazione uniforme determinata in questo modo è, inoltre l’unica possibile. Per determinare il polinomio p(l), per cui l’errore di approssimazione è
e(l) = f (l) − p(l), utilizziamo il predente teorema. In particolare deve risultare:
e(li ) = f (li ) − p(li ) = (−1)i c (i = 0, 1, . . . , n + 1)
(3.23)
dove: p(l) = a0 + a1 l + . . . + an ln è la retta da determinare. Nel nostro caso, il
problema può essere semplificato in forma matriciale come segue:

 a0 + a1 l0 + a2 = f0
a0 + a1 l1 − a2 = f1
(3.24)

a0 + a1 l2 + a2 = f2
ovvero:

1
 1
1
dove: f0 = f (l0 );
l0
l1
l2
f1 = f (l1 );
 
 

1
a0
f0
−1  •  a1  =  f1 
1
a2
f2
f2 = f (l2 );
L = [l0 , l1 , l2 ] = [0, ltot
2 , ltot ];
ed a è il vettore incognito da determinare, in cui a0 è il termine noto ed a1
è il coefficiente angolare della retta, mentre a2 è un termine che ci consente di
determinare l’errore (c) commesso nell’approssimazione.
L’algoritmo utilizzato per l’approssimazione uniforme è: “The one-point exchange algorithm”. Si procede risolvendo il precedente sistema, ricercando a0 , a1 ,
a2 , . . . , an , c in modo tale che l’equazione 3.23 sia soddisfatta, ovvero, che l’errore
e(li ) ∀i sia alternato in segno ed uguale in modulo. Una volta trovata la retta
approssimante, si cerca di migliorare l’approssimazione, sostituendo ad li l’ascissa
0
curvilinea li0 , in corrispondenza della quale e(li ) è massimo, e si ridetermina la
37
CAPITOLO 3. Il processo di decomposizione
0
retta. Il processo termina solo quando tutti gli errori e(li ), calcolati nelle diverse
scisse curvilinee sono uguali in valore assoluto ed opposti in segno. Ovviamente
nel nostro caso n = 1. Di seguito riportiamo in dettaglio l’algoritmo utilizzato.
Algorithm 1 The One-Point Exchange Algorithm
Input: 0 ≤ l0 ≤ . . . ≤ ln+1 ≤ ltot e funzione da approssimare;
Output: Coefficienti dell’approssimazione polinomiale a0 , . . . , an
Iterate:
find y:
e(y) = max |e(l)|
l∈[0,ltot ]
if |e(y)| − |c| > ε then
if y < l0 then
if e(y)e(l0 ) > 0 then
l0 = y
else
for i = (n + 1) : −1 : 1 do
li = li−1 ;
l0 = y
end for
end if
else if y ∈ [li , li+1 ] then
if e(y)e(l0 ) > 0 then
li = y
li+1 = y
end if
else if y > ln+1 then
if e(y)e(ln+1 ) > 0 then
ln+1 = y
else
for i = 0 : 1 : n do
li = li+1
ln+1 = y
end for
end if
end if
end if
3.4.3
Metodo Least Median of Squares - LMS
Lo scopo della regressione lineare è di determinare una funzione, in grado di rappresentare un insieme di osservazioni sperimentali. Nel nostro caso abbiamo una
funzione a gradino (che rappresenta la poligonale nel piano (x, y)) e dobbiamo determinare la retta (arco di cerchio) che meglio approssima tale funzione a seconda
della metrica adottata.
38
3.4 Scelta di una metrica
La metrica in L2 , come già detto, determina tale retta cercando di minimizzare
la somma dei quadrati dei residui:
ri = yi − ŷi
ovvero:
min
θ̂
n
X
ri2 =
i=1
n
X
(yi − ŷi )2
i=1
Lo stimatore prodotto in questo caso dipende fortemente dalle osservazioni; se
esse si spostano dalla loro posizione originaria, a causa di fonti di rumore sovrapposto, la metrica in L2 fornisce una approssimazione diversa da quella corretta,
nel tentativo di minimizzare la somma dei quadrati dei residui. Eliminando la
sola componente corrotta dal rumore si ottiene, infatti la retta approssimante
desiderata (attesa).
Utilizzando la metrica LMS si riesce ad ovviare a questo tipo di problematica.
Secondo Rousseeuw & Leroy (1987), lo stimatore LMS che ben approssima la funzione data può essere determinato procedendo come di seguito descritto:
considerato un insieme S di n punti in <2 , il problema consiste nel determinare
uno stimatore ϑ̂ = (ϑ̂1 , ϑ̂2 ), che ben rappresenta l’insieme delle rappresentazioni,
secondo il seguente modello:
ŷi = θ̂1 xi + θ̂2 + ei
i = 1, . . . , n
(3.25)
dove (e1 , . . . , en ) rappresenta l’errore incognito, con distribuzione di probabilità
N (0, σ). In altre parole, detto:
ri = yi − (xi ϑ1 + ϑ2 )
l’i-esimo residuo, secondo il metodo LMS, il vettore parametrico θ = (θ1 , θ2 ) è
ottenuto risolvendo il seguente problema di minimizzazione non-lineare (Mount
et al., 2007):
£
¤
min median ri2 = min median (yi − xi ϑ1 − ϑ2 )2
θ̂
i
ϑ
i
(3.26)
dove ϑ1 e ϑ2 rappresentano rispettivamente il coefficiente angolare ed il termine
noto della retta approssimante le osservazioni.
39
CAPITOLO 3. Il processo di decomposizione
Quindi, il metodo LMS (“Least Median of Squares”) cerca di trovare la retta
che meglio approssima le osservazioni (nel nostro caso una funzione a gradino),
non minimizzando la somma del quadrato dei residui, bensı̀ minimizzando il valor
mediano degli stessi.
Secondo Hampel (1975), questo tipo di approccio fornisce uno stimatore che è
molto più robusto rispetto alle osservazioni. Il metodo LMS è in un certo senso
equivalente alla metrica LS (Least Squares), a meno di una maggiore robustezza
rispetto al rumore sovrapposto, sempre che si mantenga a livelli bassi.
Non esiste una soluzione in forma chiusa per la determinazione della migliore
approssimazione di un insieme di osservazioni con il metodo LMS (Barreto & Maharry, 2006); Molti algoritmi possono essere sviluppati per determinare la retta
che ben approssima un insieme di punti, minimizzando il mediano dei residui
al quadrato, ma il più efficiente sembra essere il metodo LSR (Least Squares
Regressor).
Nel nostro lavoro, per determinare uno stimatore ϑ̂ con il metodo LSR abbiamo
utilizzato un algoritmo che procede iterativamente su sottocampioni di n differenti
osservazioni, nello spazio p-dimensionale; dove nel nostro caso p = 2.
Detto n il numero delle osservazioni; si procede effettuano la regressione lineare, cercando di determinare la retta che passa attraverso p = 2 punti su n (per
esempio f e g), e quindi risolvendo il seguente sistema lineare:
½
αf = ϑ01 lf + ϑ02
αg = ϑ01 lg + ϑ02
(3.27)
di due equazioni in due incognite, dove (lf , αf ) e (lg , αf ) sono le coordinate dei
punti f e g . A questo punto si calcolano i residui:
ri = αi − θ10 li − θ20
tra la retta ottenuta mediante la regressione e tutti i punti che costituiscono le
osservazioni. Una volta ottenuto il vettore (r12 , r22 , . . . , rn2 ) dei residui al quadrato
se ne determina il valor mediano.
Il processo viene ripetuto per la coppia di punti (g , h), per la coppia (f , h),
e cosı̀ via per tutte le possibili coppie. Viene scelta a questo punto, la retta
che origina il minore valor mediano dei residui al quadrato, ovvero che soddisfa
l’equazione 3.26.
Questa tipologia di approccio consente di applicare l’algoritmo anche ad un
numero n elevato di punti; nel processo di regressione sono considerati tutti i possibili sottocampioni (ottenuti raggruppando p < n punti, dove p è la dimensione
dello spazio).
40
3.4 Scelta di una metrica
3.4.4
Confronto tra le diverse metriche
Il problema dell’approssimazione di un insieme di dati consiste nel determinare
con sufficiente precisione una curva (funzione) che descriva il fenomeno a cui i dati
appartengono. Lo scopo è quello di determinare l’andamento del fenomeno, anche
negli intervalli fra i punti di osservazione.
In questa sezione daremo una descrizione delle analogie e differenze presentate
dalle tre differenti metriche adottate per determinare tali approssimazioni; in particolare ne verranno analizzate: le caratteristiche, le prestazioni e le complessità.
La metrica in L2 fornisce la misura dello scostamento medio tra due curve,
che viene influenzato in maniera relativa dall’andamento locale della differenza
|α1 (l) − α2 (l)|, in quanto eventuali picchi esibiti da tale differenza sono pesati
proporzionalmente all’intervallo di integrazione. In tale modo l’andamento della
retta approssimante sarà poco influenzato dalla posizione dei singoli punti, assicurando una buona approssimazione media. Tale metrica risulta maggiormente
robusta rispetto agli scarti locali, conferendo un maggiore potere discriminante
tra le varie forme.
La metrica in L∞ è abbastanza sensibile alla posizione dei singoli punti, in
quanto è influenzata dall’andamento locale della differenza |α1 (l) − α2 (l)|. Tale
metrica possiede dunque un maggiore potere discriminante rispetto alla metrica in L2 e l’approssimazione ottenuta minimizzando E∞ segue maggiormente
l’andamento locale della forma, a prezzo però di una maggiore sensibilità al rumore.
Il metodo LMS (Least Median of Squares) determina la retta approssimante
un insieme di osservazioni minimizzando il valor mediano, consentendo di ottenere
una maggiore insensibilità alla variazione di posizione di una di essa a causa di
fenomeni rumorosi sovrapposti.
Un fattore che influenza il potere discriminante delle diverse metriche è, infatti il
rumore sovrapposto alle forme da riconoscere e il metodo LMS mostra una minore
sensibilità ad esso. Tale metodo riesce a fornire un’approssimazione abbastanza
fedele delle osservazioni, anche nel caso in cui uno dei punti sia spostato dalla sua
posizione originale.
Per capire meglio la differenza di prestazioni delle metriche utilizzate in presenza di variazioni di posizione delle singole osservazioni consideriamo la regressione
di n = 5 osservazioni: (x1 , y1 ), . . . , (x5 , y5 ). La figura 3.6(a) mostra, come la
metrica L2 ed L∞ approssimino in maniera accurata la sequenza di punti, come
mostrato dalle rette fornite da: ŷ = θ̂1 x + θ̂2 . Tuttavia supponendo che una osservazione si sposti dalla sua posizione originaria lungo le ascisse, le figure 3.6(b)
e 3.6(c) mostrano come le due approssimazioni siano sensibili a questa variazione.
In particolare per quanto riguarda la metrica L2 , il residuo r1 assume un valore
41
CAPITOLO 3. Il processo di decomposizione
grande e fornisce un notevole contributo alla somma:
5
X
ri2
i=1
causando lo spostamento della retta di regressione. Stessa cosa dicasi per la metrica in L∞ , che valuta il valore massimo della differenza |α1 (l) − α2 (l)|. Il regressore
LMS, invece, valutando il valor mediano non è influenzato dall’aumento di valore
del residuo r1 , come mostrato nella seguente figura 3.6(d).
Figura 3.6: Confronto tra metriche: rappresentazione delle rette approssimanti un
insieme di osservazioni in assenza ed in presenza di errori di posizione delle stesse
dovuti a fonti di rumore.
42
3.5 Fitting ed accettazione
Per quanto riguarda la complessità computazionale dei vari algoritmi utilizzati
si nota che: il miglior algoritmo conosciuto che implementi il metodo LMS ha
una complessità computazionale pari ad Ω(n2 ) (Edelsbrunner & Souvaine, 1990),
pari a quella del metodo ai minimi quadrati; l’approssimazione uniforme ha una
complessità comutazionale pari ad Ω(n). L’algoritmo LMS possiede, quindi una
maggiore robustezza rispetto al rumore sovrapposto alle osservazioni, a partità di
complessità computazionale rispetto alla metrica in L2 .
3.5
Fitting ed accettazione
Una volta individuate le metriche da voler adottare per valutare la distanza tra
le forme, occorre determinare l’arco di cerchio che ben approssima un tratto di
lunghezza k di una poligonale costituita da n segmenti. La decomposizione di una
poligonale costituita da n segmenti in m archi di cerchio può essere vista, nel piano
trasformato (L, α), come la scelta di m segmenti di retta che ben approssimano
una funzione a gradino costituita da n tratti.
Secondo il criterio di fitting va ricercato l’arco di cerchio, che meglio approssima un dato insieme di segmenti, in base alla valutazione della distanza tra forme,
in funzione della metrica di riferimento.
Nel piano (L, α) il calcolo della distanza tra forme si semplifica, in quanto è sufficiente determinare la differenza di ordinate tra due punti di uguale ascissa curvilinea, appartenenti rispettivamente al tratto di retta approssimante ed alla funzione
a gradino da approssimare, come mostrato nella seguente figura 3.7.
Figura 3.7:
Rappresentazione di una poligonale e dell’arco di cerchio
approssimante nel piano (l, α).
43
CAPITOLO 3. Il processo di decomposizione
La parte colorata di grigio della precedente figura rappresenta lo scostamento
percentuale tra retta approssimante e la rappresentazione (l, α) della poligonale.
L’approccio e la complessità computazionale saranno differenti a seconda della
metrica adottata. In particolare:
• secondo la metrica in L2 , determinare l’arco di cerchio che meglio approssima
una poligonale, equivale a trovare la retta che minimizzi l’integrale tra [0, ltot ]
dei quadrati delle proiezioni dei gradini sulla retta. Si applica, infatti il
criterio dei minimi quadrati, cercando di trovare l’errore: ||f − r||22 , con
f ∈ [0, ltot ];
• secondo la metrica in L∞ , determinare l’arco di cerchio che meglio approssima una poligonale, equivale (Buchanan & Turner, 1992) a trovare la retta
che minimizzi lo scostamento massimo (in valore assoluto) tra le ordinate dei
gradini della funzione e della retta approssimante nei punti di uguale ascissa
curvilinea;
• secondo il metodo LMS, determinare l’arco di cerchio che meglio approssima
una poligonale, equivale (Rousseeuw & Leroy, 1987) a trovare la retta che
minimizzi il valor mediano dei quadrati dei residui, e cioè dello scostamento
tra le ordinate dei gradini della funzione e della retta approssimante nei punti
di uguale ascissa curvilinea.
Determinato l’arco di cerchio che ben approssima un tratto di poligonale,
bisogna controllare la bontà dell’approssimazione effettuata, valutando se esso si
presta bene ad essere sostituito, ai fini della descrizione, alla parte di poligonale
approssimata. Come detto nel paragrafo 2.6, per definire quando un insieme k di
segmenti costituenti una poligonale formata da n tratti possa essere rappresentato
da un’unico arco di cerchio occorre definire dei criteri di accettazione. Si deve
definire, quindi una opportuna soglia con cui confrontare gli errori commessi considerando tale arco di cerchio come rappresentativo del tratto di poligonale che si
sta tentando di approssimare. Nel paragrafo 2.6 si è visto come gli algoritmi di
descrizione basati su valutazione dell’errore locale utilizzino una opportuna soglia
per confrontare l’adeguatezza di una approssimazione. La soglia deve essere scelta
basandosi su di un criterio di somiglianza tra curve, ed in particolare: tra poligonale da approssimare ed arco di cerchio approssimante e tra una opportuna curva,
da usare come confronto e lo stesso arco di cerchio.
Dal punto di vista della descrizione si può ritenere somiglianti: un poligono regolare a k lati ed un cerchio, in quanto per k che tende all’infinito un poligono
regolare può essere approssimato con un cerchio. Maggiore è l’ordine k del poligono
e maggiore è la somiglianza tra esso ed il cerchio. La soglia può essere quindi determinata valutando l’errore di approssimazione che si ha descrivendo un poligono
regolare a k lati con un unico arco di circonferenza.
44
3.5 Fitting ed accettazione
Tale soglia deve essere scelta dinamicamente, ovvero deve variare in funzione della
curva che si sta considerando; la scelta di una soglia fissa rischierebbe di non essere
adeguata per ogni diverso caso che si presenti. La soglia dovrebbe in qualche modo
essere legata alla forma della curva che si sta considerando, ovvero al numero dei
segmenti che compongono la poligonale. Per ottenere tale soglia potremmo considerare l’errore che si commetterebbe approssimando con un solo arco di cerchio
una porzione di un poligono regolare a k lati, che abbia lo stesso span angolare
della poligonale in esame. Aumentando il numero k dei lati del poligono l’errore di approssimazione diminuisce, poiché idealmente per un valore di k tendente
all’infinito un poligono regolare a k lati corrisponderebbe ad una circonferenza,
generando quindi un errore di approssimazione nullo. Di seguito (figura 3.8) si
riporta la possibile decomposizione di una poligonale in funzione del valore k.
Figura 3.8: Rappresentazione di una poligonale e delle sue decomposizioni al
variare di k.
Come si può vedere dalla figura, al diminuire dell’ordine k del poligono regolare, l’errore di approssimazione aumenta. Si deve però tener presente che nella
metrica in L2 la soglia di errore dipende fortemente dalla lunghezza dei tratti che
costituiscono la poligonale. Per tale motivo occorre normalizzare l’errore relativo
al poligono regolare per la sua lunghezza totale, al fine di rendere la soglia dinamica indipendente dalla dimensione del poligono, e quindi della poligonale.
Data una poligonale P da descrivere, composta di n segmenti, si confronta
l’errore commesso approssimando con un unico arco di cerchio una porzione k di
tale poligonale con una soglia dinamica ottenuta calcolando l’errore che si avrebbe
45
CAPITOLO 3. Il processo di decomposizione
approssimando, con un unico arco di cerchio una porzione, costituita da k lati
consecutivi di un poligono regolare, avente n lati. Se il numero k dei lati considerati è maggiore dell’ordine n del poligono regolare, si impiega l’errore relativo
all’intero poligono. Questa soluzione offre il vantaggio di rendere la procedura di
decomposizione più flessibile ed indipendente dalla forma della poligonale e dal
numero dei lati che la compongono.
Molto più complesso e poco efficiente sarebbe, invece dover trovare una soglia
fissa da poter utilizzare come valore di confronto nella decomposizione di tutte le
poligonali. Tale valore sarebbe, infatti difficile da determinare e rischierebbe di
non essere adeguato per tutte le figure da trattare. Una volta definito il criterio
di accettazione occorre descrivere gli algoritmi utilizzati per poter individuare i
tratti di poligonale ai quali si intende applicare il criterio di approssimazione.
Nei seguenti capitoli verranno analizzati tutti gli algoritmi di decomposizione
sviluppati, partendo da quelli basati su valutazione dell’errore locale, che necessitano quindi della definizione di una soglia di confronto per valutare la bontà delle
approssimazioni, fino ad arrivare ad un algoritmo di tipo dinamico che non richiede
tale tipo di confronto e che quindi non impone nessun tipo di vincolo nel processo
di decomposizione.
46
Capitolo 4
La decomposizione in archi
di cerchio
Nei precedenti capitoli è stata fatta una panoramica del contesto in cui è stato
sviluppato il presente lavoro e degli obiettivi che esso si propone. In particolare ci si
è focalizzati sulla definizione del concetto di primitive strutturali e della descrizione
di curve. È stata introdotta una semplificazione al problema trattato, attraverso
la definizione di un opportuno piano trasformato che ci ha consentito di andare a
lavorare con curve più semplici (del primo ordine). In questo modo si è perso ogni
riferimento geometrico, relativo alla posizione, all’orientamento e alla dimensione
delle curve esaminate. È stato introdotto il concetto di “similarità” tra curve ed
in particolare di distanza e sono state definite delle opportune metriche. Per poter
valutare la bontà delle approssimazioni fatte, nel processo di descrizione, è stato,
inoltre definito un criterio di accettazione, basato sulla definizione di una soglia
dinamica, da utilizzare negli algoritmi di decomposizione basati su valutazione
dell’errore di approssimazione locale.
In questo capitolo focalizzeremo la nostra attenzione sulla descrizione degli
algoritmi utilizzati nella fase di descrizione di curve digitali, ovvero sul passo successivo alla rappresentazione della poligonale da decomporre nel piano trasformato
(L, α).
Nei metodi di analisi strutturata dell’immagine, gli algoritmi di decomposizione
giocano un ruolo fondamentale ai fini del loro riconoscimento e della loro descrizione. Negli anni passati sono stati proposti diversi tipi di algoritmi di decomposizione. Affinché tali metodi siano realmente applicabili a situazioni reali è necessario che essi presentino alcune caratteristiche fondamentali, quali, unicità della
soluzione, ed inoltre, devono essere “size translation” e “rotation indipendent”. Un’altra caratteristica, che è ritenuta fondamentale, è la prevedibilità
dell’algoritmo, in altre parole, la capacità di ottenere predefiniti comportamenti
dell’algoritmo in termini di sinteticità ed errore della decomposizione richiesta.
47
CAPITOLO 4. La decomposizione in archi di cerchio
I metodi implementati consentono la decomposizione di una curva, rappresentata in termini di poligonale (ovvero di segmenti retta contigui), in un insieme
di archi di cerchio, in modo da soddisfare ai precedenti requisiti e da garantire,
a parità di sinteticità della descrizione ottenuta, una rappresentazione più fedele
della curva originale.
Gli algoritmi di Decomposizione sviluppati si differenziano tra di loro in base
al tipo di strategia adottata per accorpare e rappresentare con un unico arco di
cerchio, segmenti consecutivi della poligonale. Alcune tecniche di descrizione scandiscono sequenzialmente la curva da descrivere, altri applicano una sorta di ricerca
dicotomica, altri ancora integrano le due precedenti tecniche e possono essere realizzati degli algoritmi di tipo dinamico, che cercano di ottenere la decomposizione
della poligonale che genera il minimo errore. In particolare, nel seguito descriviamo
gli algoritmi implementati, basati su valutazione dell’errore locale:
• Algoritmo di Merge: si parte dal primo segmento che costituisce la poligonale e si considerano successivamente, uno per volta gli altri segmenti; si
approssima tale insieme di segmenti con l’arco di cerchio che minimizza la
distanza tra l’arco e l’insieme stesso, valutata in base alla metrica adottata. Il processo di accorpamento dei segmenti si arresta non appena la
approssimazione risulta essere inaccettabile, ovvero appena è superata una
determinata soglia valutata dinamicamente; il segmento in corrispondenza
del quale la approssimazione non è verificata viene considerato come segmento di partenza del successivo tratto di poligonale e da esso riparte il
procedimento di accorpamento;
• Algoritmo di Split: si cerca di approssimare inizialmente l’intera poligonale con un unico arco di cerchio; se l’errore di approssimazione è maggiore
della soglia ottenuta dinamicamente, si spezza la poligonale in corrispondenza del segmento che ha generato il massimo scostamento tra arco di cerchio
approssimante e porzione di poligonale da approssimare. A questo punto il
processo di accorpamento (e/o decomposizione) è applicato ad entrambi i
pezzi della poligonale ottenuti; l’algoritmo è iterato fino a quando l’errore
di approssimazione si mantiene al di sotto della soglia dinamica per ogni
pezzo di poligonale ottenuto e la poligonale non ha subito trasformazioni nel
precedente passo;
• Algoritmo di Split and Merge: combiniamo insieme i due precedenti algoritmi (di split e di merge), alternando ad un passo di split uno di merge
che cerca di accorpare insieme tratti di poligonale consecutivi, ottenuti nel
precedente passo di split; sempre che l’errore di approssimazione è, naturalmente inferiore alla soglia dinamica per tutti i tratti che vengono accorpati
insieme.
48
4.1 Algoritmo di “Merge”
Tra i tre precedenti schemi di decomposizione, quelli più semplici sono quello
di Split e quello di Merge, in quanto l’ultimo presentato è una combinazione dei
precedenti due.
Nei seguenti paragrafi analizzeremo dettagliatamente gli schemi di decomposizione
proposti, evidenziandone le analogie e le differenze.
4.1
Algoritmo di “Merge”
Di seguito riportiamo una descrizione dettagliata della procedura di merge.
Algorithm 2 Algoritmo di Merge
Input: Poligonale costituita da N segmenti S1 , S2 , . . . , SN
Output: Insieme Γ = {γ1 , γ2 . . . , γm } di archi di cerchio; l’arco γj è
rappresentativo di un cluster Pj , che contiene segmenti contigui della Poligonale.
m = 1; /*Numero di archi di cerchio*/
j = 1;
i = 2; /*Tiene conto dell’indice dei segmenti*/
P1 = S1 ∪ S2 ; /*Accorpo i primi due segmenti della poligonale in un unico
arco di cerchio*/
while (i ≤ N ) do
/*Determina l’arco di cerchio che meglio approssima Pj */
if kPj − γj k < Ek then
if (i < N ) then
/*Il prossimo segmento della poligonale è inserito nel cluster Pj */
i = i + 1;
Pj = Pj ∪ Si ;
end if
else
/*Il segmento Si non può essere incluso nel cluster Pj ; si considera allora
un nuovo cluster che contiene inizialmente i segmenti Si ed Si+1 */
Pj = Pj − Si ; /*Devo togliere il segmento Si */
j = j + 1;
Pj = Si ∪ Si+1 ;
i = i + 2;
end if
end while
return P
/*Restituisco la rappresentazione della poligonale in termini di
archi di cerchio.*/
Per quanto riguarda la strategia di “Merge’, si inizia considerando come primo
vertice il punto iniziale della poligonale e si prosegue accorpando segmenti contigui della poligonale. L’insieme di segmenti considerato è, quindi rappresentato
49
CAPITOLO 4. La decomposizione in archi di cerchio
con l’arco di cerchio che minimizza la distanza tra le due forme. Il processo di
accorpamento prosegue fino a quando l’approssimazione è considerata accettabile
e termina non appena l’errore di approssimazione è maggiore della soglia ottenuta
dinamicamente.
Il segmento in corrispondenza del quale l’approssimazione è ritenuta non accettabile è considerato come segmento iniziale del nuovo tratto di poligonale da
approssimare; il processo di decomposizione riparte proprio da tale segmento. In
definitiva, l’algoritmo di merge considera un segmento per volta della poligonale
da approssimare e lo accorpa ai precedenti soltanto se l’errore di approssimazione
non supera una determinata soglia calcolata dinamicamente; in caso contrario inizia un nuovo processo di decomposizione proprio da quel segmento, ma sempre
considerando un segmento alla volta.
4.2
Algoritmo di “Split”
Nell’algoritmo di “Split” si considera inizialmente l’intera poligonale da decomporre e si tenta di approssimarla con un unico arco di cerchio. Se l’errore di
approssimazione, ottenuto in base alla metrica adottata, è maggiore della soglia,
ottenuta dinamicamente si spezza la poligonale in corrispondenza del segmento
che ha originato l’errore di approssimazione maggiore.
L’algoritmo è ripetuto su entrambi i tratti generati dal passo precedente ed
il processo di decomposizione prosegue in questo modo fino a quando l’errore di
approssimazione non risulta minore della soglia dinamica, per ognuno dei pezzi
di poligonale ottenuti. la descrizione dettagliata di tale tecnica è contenuta nel
seguente Algoritmo 3.
L’algoritmo di Split e quello di Merge precedentemente introdotti presentano
alcuni problemi di raggruppamento. Per quanto riguarda la procedura di merge, il
suo inconveniente principale è legato al modo in cui essa raggruppa i segmenti che
costituiscono la poligonale da approssimare (Cordella et al., 1994). L’algoritmo
di merge, infatti, accorpa i segmenti contigui della poligonale uno per volta fino a
quando l’errore di approssimazione non supera la soglia calcolata dinamicamente.
Procedendo in maniera sequenziale lungo la poligonale da descrivere, si rischia
di generare più archi di cerchio approssimanti (poiché con pochi tratti la soglia
di errore dinamica è bassa), anche se in realtà si sarebbe ottenuta una migliore
approssimazione della poligonale accorpando insieme un maggior numero di tratti,
in quanto, per un insieme più ampio di segmenti il criterio di accettabilità potrebbe
essere ancora verificato (aumentando il numero di tratti, aumenta anche la soglia
valutata dinamicamente, che cresce con l’ordine k del poligono). L’aver, inoltre
esaminato la poligonale in maniera sequenziale ha impedito di poter determinare
delle migliori configurazioni possibili dei segmenti che la compongono, ovvero delle
50
4.2 Algoritmo di “Split”
combinazioni per cui l’errore complessivo di rappresentazione è più basso rispetto
al precedente.
Algorithm 3 Algoritmo di Split
Input: Poligonale costituita da N segmenti S1 , S2 , . . . , SN
Output: Insieme Γ = {γ1 , γ2 . . . , γm } di archi di cerchio; l’arco γj è rappresentativo di un cluster Pj , che contiene segmenti contigui della Poligonale.
m = 1; /*Numero di archi di cerchio*/
i = 1; /*Numero di iterazioni*/
(1)
N
P1 = ∪ St ; /*Considero per primo l’intero tratto di poligonale*/
t=1
repeat
SplitF lag = false;
h = 0; /*Numero di cluster generati dall’algoritmo di Split*/
for j = 1 to m do
(i)
(i)
/*Determina l’arco di cerchio γj che meglio approssima Pj */
°
°
° (i)
(i) °
if °Pj − γj ° ≥ Ek then
(i)
/*Il cluster Pj può essere approssimato da un solo arco di cerchio e
deve essere suddiviso in due clusters*/
SplitF lag = true;
(i)
/*Suddividi Pj in due subclusters Q0 e Q00 con archi di cerchio θ0
e θ00 approssimanti in modo da minimizzare l’errore totale kQ0 − θ0 k +
kQ00 − θ00 k*/
h = h + 1;
(i+1)
Ph
= Q0 ;
(i+1)
Ph+1 = Q00 ;
(i+1)
γh
= θ0 ;
(i+1)
γh+1 = θ00 ;
h = h + 1;
else
h = h + 1;
(i+1)
(i)
Ph
= Pj ; /*Lascio invariato il tratto di poligonale in esame*/
end if
m = h;
i = i + 1;
end for
until (N otSplitF lag )
return P
/*Restituisco la rappresentazione della poligonale in termini di
archi di cerchio.*/
Se i rimanenti tratti della poligonale sono approssimati con un unico arco di
cerchio e l’errore commesso in tale approssimazione è molto basso, si potrebbe
51
CAPITOLO 4. La decomposizione in archi di cerchio
pensare, che spostando uno o più segmenti terminali dal primo insieme al successivo, in modo da ottenere due nuovi clusters, l’errore di approssimazione del
secondo cluster sia ancora al di sotto della soglia, e contemporaneamente l’errore
complessivo dei due clusters decresce rispetto alla prima decomposizione. Si ottiene in questo modo una ridistribuzione dell’errore. L’obiettivo della descrizione
è quello di approssimare la poligonale con il minor numero possibile di archi di
cerchio, pur rispettando il criterio di accettabilità, e cercando di mantenere basso
l’errore di approssimazione complessivo. L’algoritmo di merge, pur producendo
una decomposizione ammissibile ai fini dell’errore di approssimazione, non è però
in grado di determinare una soluzione ottimale del problema.
Gli algoritmi di Split permettono di approssimare segmenti di particolari poligonali con un minor numero di rette rispetto agli algoritmi di merge, ma per
particolari configurazioni della poligonale presentano dei problemi. Se la poligonale può essere infatti approssimata con due soli clusters che mostrano concavità
opposte, gli algoritmi di split portano ad un numero eccessivo di archi di cerchio
approssimanti, come mostrato nella seguente figura 4.1.
(a)
(b)
Figura 4.1: Poligonale nel piano (x, y) e relativa decomposizione in archi di cerchio
e segmenti di retta. La figura (a) mostra la poligonale del carattere S e la sua
rappresentazione nel paino (L, α); La figura (b) mostra la decomposizione dello
stesso e le rette approssimanti nel paino (L, α).
Il primo passo del processo di split prova a determinare l’arco di cerchio che
meglio approssima l’intera poligonale e valuta l’errore commesso nella decomposizione. Se l’errore commesso è maggiore della soglia valutata dinamicamente, la
52
4.3 Algoritmo di “Split and Merge”
poligonale è spezzata in corrispondenza del segmento che fornisce il maggiore contributo di errore. Nel caso considerato in figura 4.1 l’errore maggiore si presenta,
generalmente agli estremi della poligonale e nel punto in cui essa cambia concavità. Se il massimo dell’errore è raggiunto proprio in uno degli estremi della curva,
il primo passo di split restituisce due pezzi di poligonale, uno contenente un solo
segmento e l’altra contenente i restanti segmenti della poligonale. Il successivo
passo di split, opera su quest’ultimo ed ancora una volta restituirà due porzioni
di poligonale, uno costituito da un solo segmento ed uno contenente i restanti segmenti. Il procedimento viene iterato fino a quando non viene raggiunto il cambio
di concavità della curva. Il risultato di tale decomposizione è che una delle parti
che costituiscono la poligonale è segmentata nei segmenti che la compongono.
A causa delle problematiche presentate dagli algoritmi sopracitati, si è introdotta una nuova tecnica, che è essenzialmente una combinazione delle due
precedenti.
4.3
Algoritmo di “Split and Merge”
La strategia di Split and Merge alterna un passo di merge ad un passo di split,
cercando di accorpare insieme e di rappresentare con un unico arco di cerchio una
coppia di insiemi di segmenti generati dal precedente passo di split. La procedura
termina quando non è più possibile né effettuare suddivisioni, né fusioni tra gruppi
di segmenti contigui. Il procedimento è iterativo ed opera in questo modo:
Nel primo passo si tenta di approssimare l’intero insieme di segmenti con un unico
arco di cerchio; se questo non è possibile, la poligonale è spezzata in corrispondenza del segmento che fornisce il più elevato contributo di errore. Nelle successive
iterazioni, l’algoritmo di split controlla se è possibile, per ciascuno degli insiemi
generati precedentemente rappresentare i segmenti che li compongono con un unico arco di cerchio. Se i due insiemi verificano il criterio di accettazione, restano
inalterati, altrimenti si procede ad una ulteriore suddivisione degli stessi.
Dopo ogni passo di split viene eseguito un passo di merge, in cui si tenta di accorpare coppie di insiemi contigui generati dai precedenti passi di split. Ogni coppia
di insiemi viene considerata come una possibile candidata ad essere rappresentata
con un unico arco di cerchio; se ne calcola quindi l’errore di approssimazione, che
viene inserito in una opportuna struttura. Dopo aver considerato tutte le possibili coppie di insiemi contigui e di averne calcolato gli errori di approssimazione, si
tenta di fondere in un unico sottoinsieme la coppia che presenta l’errore di approssimazione più basso, purchè rispetti il criterio di accettazione dell’approssimazione.
Se la struttura è vuota il passo di merge lascia invariati gli insiemi di segmenti
della poligonale. La procedura termina quando, nell’ultimo passo effettuato non
vengono effettuate né fusioni, né divisioni e la distribuzione dei segmenti rimane
inalterata. Di seguito (algoritmo 4) si descrive in dettaglio l’algoritmo.
53
CAPITOLO 4. La decomposizione in archi di cerchio
Algorithm 4 Algoritmo di Split and Merge
Input: Poligonale costituita da N segmenti S1 , S2 , . . . , SN
Output: Insieme Γ = {γ1 , γ2 . . . , γm } di archi di cerchio; l’arco γj è
rappresentativo di un cluster Pj , che contiene segmenti contigui della Poligonale.
m = 1; i = 1; /*Numero di archi di cerchio e di iterazioni*/
(1)
N
P1 = ∪ St ; /*Considero per primo l’intero tratto di poligonale*/
t=1
repeat
SplitF lag = false; M ergeF lag = false; /*Passo di Split*/
h = 0; /*Numero di cluster generati dal passo di Split*/
for j°= 1 to m do
°
° (i)
(i) °
if °Pj − γj ° ≥ Ek then
SplitF lag = true; h = h + 1;
(i+1)
(i+1)
Ph
= Q0 ; Ph+1 = Q00 ;
(i+1)
(i+1)
γh
= θ0 ; γh+1 = θ00 ; h = h + 1;
else
(i+1)
(i)
h = h + 1; Ph
= Pj ; /*Lascio invariato il tratto di poligonale*/
end if
m = h; i = i + 1;
end for /*Passo di Merge*/
for j = 1 to (m − 1) do
(i)
(i)
Pj ∪ Pj+1 ;
°
°
°
(i)
(i) °
errj = °λj − Pj ∪ Pj+1 °;
end for
Dome = false; /*Realizza il possibile Merge*/
repeat
(i)
(i)
/*Trova il cluster Pq ∪ Pq+1 con il più piccolo errore Eq */
if errq < Ek then
(i)
(i)
(i)
(i)
(i)
Pq = Pq ∪ Pq+1 ; Pq+1 = ∅; γq = λq ;
errq−1 = +∞; errq = +∞; errq+1 = +∞;
M ergeF lag = true;
else
Done = true;
end if
until Done /*Compatta la lista dei clusters*/
k = 0;
for j = 1 to m do
(i)
if Pj 6= ∅ then
(i+1)
(i)
(i+1)
(i)
k = k + 1; Pk
= P j ; γk
= Pj ;
end if
end for
m = k; i = i + 1;
until (N otSplitF lag orM ergeF lag )
return P /*Restituisco la rappresentazione poligonale.*/
54
4.4 Considerazioni
4.4
Considerazioni
Nelle precedenti sezioni abbiamo esaminato le caratteristiche e le modalità operative degli algoritmi di:
• Merge,
• Split,
• Split and Merge
evidenziandone i pregi ed i difetti, nonchè le differenze presentate in corrispondenza
di differenti conformazioni delle curve da descrivere. In particolare abbiamo visto
che:
• l’algoritmo di merge, data la sua modalità sequenziale di procedere lungo
la curva porta ad una eccessiva segmentazione della stessa, ovvero ad una
rappresentazione con un numero maggiore di componenti di secondo livello
rispetto a quelle necessarie;
• l’algoritmo di split porta ad una segmentazione di un tratto di curva in tutti
i segmenti che la compongono in corrispondenza di un cambio di concavità
della stessa;
• l’algoritmo di split and merge ovvia ai precedenti problemi e restituisce una
decomposizione accurata ed affidabile della poligonale da descrivere.
Da una prima analisi emerge che l’algoritmo di Split and Merge sembra essere
preferibile agli altri due e che la descrizione della curva che si ottiene è abbastanza
fedele; gli archi di cerchio e i segmenti di retta ottenuti, riducono la complessità
della rappresentazione originale della curva e mantengono le informazioni necessarie ad un corretto riconoscimento della stessa. Ovviamente queste considerazioni
devono essere avvalorate da una esaustiva sperimentazione degli algoritmi sopracitati su di un opportuno set di curve di prova.
L’aspetto fondamentale su cui si basano i precedenti algoritmi è la valutazione
della bontà delle approssimazioni che si vuole effettuare. Una volta individuato
un insieme di segmenti di poligonale consecutivi, con uno dei precedenti metodi,
per valutare se essi si prestano bene ad essere sostituiti (approssimati) con un
unico arco di cerchio occorre valutare la distanza tra le due forme e confrontare
la stessa con una opportuna soglia calcolata dinamicamente. L’aspetto critico è,
dunque la scelta di un criterio di valutazione della soglia, in modo che sia del tutto
indipendente dalla forma e dalla dimensione della poligonale da descrivere.
55
CAPITOLO 4. La decomposizione in archi di cerchio
Il nostro obiettivo è quello di arrivare alla definizione di un algoritmo che
consenta di eliminare anche quest’ultimo vincolo e che possa procedere indipendentemente, valutando soltanto la distanza tra le forme, basandosi sul concetto di
determinazione del minimo percorso.
Nel seguente capitolo 5 si introduce un metodo robusto di decomposizione
basato su di una tecnica di Programmazione Dinamica.
Al termine del presente lavoro tutti gli algoritmi sviluppati saranno testati su di
un opportuno set di curve per validarli e per definirne le prestazioni in funzione
della tipologia delle curve e della metrica utilizzata in fase di valutazione della
distanza tra arco di cerchio e porzione di poligonale e di definizione del criterio di
accettazione.
56
Capitolo 5
Decomposizione basata su
Programmazione Dinamica
Nel precedente capitolo si è visto come gli algoritmi di Merge, di Split e di
Split and Merge si basino su di una valutazione dell’errore locale commesso nella rappresentazione di un insieme di segmenti contigui, costituenti la poligonale
da descrivere con un unica primitiva strutturale. Tali tecniche necessitano, quindi
della scelta di una soglia con cui valutare la bontà dell’approssimazione effettuata.
L’introduzione della stessa è fondamentale per definire il punto in cui arrestare
l’accorpamento di segmenti contigui costituenti la poligonale e proseguire con un
nuovo insieme di segmenti. Questo aspetto è legato al fatto che la valutazione dell’errore commesso nella decomposizione è riferito al solo sottoinsieme di segmenti
considerato in quel momento e non a tutta la poligonale da descrivere. Poichè la
scelta di tale soglia è un aspetto particolarmente critico, sarebbe auspicabile poter
definire un metodo che non richieda il suo utilizzo.
In questo capitolo si introduce, un metodo robusto per la decomposizione di
curve digitali che ha proprio tale caratteristica. Il metodo che si propone nel seguito si avvale dell’utilizzo della “Programmazione Dinamica” per determinare
la migliore distribuzione possibile degli archi di cerchio. Data una poligonale
da descrivere, l’intento è quello di individuare le primitive strutturali necessarie
per ottenerne una rappresentazione fedele della stessa e di definire la migliore distribuzione dei segmenti che costituiscono la poligonale nelle primitive individuate
senza l’utilizzo di una soglia di confronto. Prima di analizzare il nostro algoritmo,
diamo una descrizione sulla programmazione dinamica e sulle proprietà che essa
possiede.
57
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
5.1
Programmazione dinamica
Nella Programmazione Dinamica si affrontano problemi in cui è possibile sviluppare un processo decisionale multistadio, nei quali si riescono ad individuare degli
stati di evoluzione, di tipo temporale, spaziale o logico, cioè delle fasi di sviluppo
successivo, sequenziale. In Dynamic Programming, Bellman (2003) afferma:
“Il proposito di questo lavoro è fornire una introduzione della teoria
matematica dei processi decisionali multistadio. Poichè questi considerano un notevole numero di problemi, abbiamo coniato l’espressione
“Programmazione Dinamica” per descrivere l’argomento. In effetti,
come si vedrà, al di là della differente terminologia, essa comporta
una struttura concettuale ben precisa che fornisce un nuovo e versatile
strumento matematico per il trattamento di molti, recenti e interessanti
problemi sia in questa disciplina, sia in varie parti dell’analisi classica”.
Nella formulazione classica del problema, si considera l’intero processo multistadio come costituente un solo stadio. In questo modo se il processo è ad N
stadi ed M decisioni, queste ultime devo essere prese in ciascuno stadio, facendo
diventare il processo monostadio di MN dimensioni. La metodologia di tipo dinamica decompone il problema nelle N fasi in esso individuabili e lo risolve per
stadi, analizzando cioè queste fasi separatamente e in successione. In questo modo
le decisioni non saranno prese tutte contemporaneamente, ma M alla volta in N
gruppi successivi, basandosi sul principio di ottimalità definito da Bellman (1961).
Consideriamo un generico problema in cui si debba andare da una città di origine
ad una di destinazione passando attraverso delle città intermedie. Ad ogni strada
di collegamento tra due città adiacenti sarà attribuito un peso (vedi figura 5.1). Il
problema consiste nel determinare il percorso più breve che, passando per tutte le
zone intermedie, congiunga la zona origine con la zona destinazione (supponiamo
che le zone in totale siano cinque). Per giungere alla soluzione ottimale dell’intero
problema si può pensare di frazionarlo nelle sue parti costituenti e affrontarlo per
stadi, risolvendo in successione i sottoproblemi relativi al passaggio da ciascun
livello al successivo. Procediamo esaminando le distanze relative al passaggio da
ciascuno stadio al successivo ed associando a ciascun vertice individuato la minima
distanza per giungere ad esso dallo stadio precedente. Per esempio il vertice 21
può essere raggiunto dai vertici 11 e 12; nel primo caso il cammino avrà lunghezza
(2 + 1) = 3 e nel secondo caso (3 + 2) = 5. Tra questi si sceglie il primo e si
segna il vertice 21 con il valore 3. Procedendo in questo modo si giunge al calcolo
della soluzione del cammino ottimo che sarà dato da: O − 11 − 22 − 33 − D, la cui
lunghezza è pari a: (2 + 2 + 1 + 1) = 6.
58
5.2 Formulazione del problema
Figura 5.1: Grafo a livelli composto da N = 5 stadi: determinazione del minimo percorso che collega lo stato iniziale “O”, con lo stato di destinazione “D”;
percorso ottimo: O − 11 − 22 − 33 − D.
L’elemento che caratterizza la procedura che origina il grafo di figura 5.1 è l’aver
calcolato il percorso minimo che porta dall’origine (O) alla destinazione (D). Nel
nostro caso il valore attribuito ai percorsi tra i vari stadi sono dati dall’errore
commesso nell’approssimazione. La metodologia sulla quale si basa la programmazione dinamica è il principio di ottimalità, che Bellman (2003) enuncia in questo
modo:
“Una politica ottimale ha la proprietà che, quali che siano lo stato e
le decisioni che lo hanno preceduto, le rimanenti decisioni devono costituire una politica ottimale riguardo allo stato risultante dalle decisioni
precedenti”. Quindi una “politica ottimale è costituita da sotto-politiche
ottimali”.
Nel segiuto si definisce una tecnica di decomposizione basata su Programmazione Dinamica, attraverso l’utilizzo di tale principio di ottimalità.
5.2
Formulazione del problema
Prima di formulare matematicamente il problema evidenziamo che il nostro obiettivo può essere riassunto nella necessità di ottenere:
• una rappresentazione fedele della curva originale, che sia insensibile a variazioni non significative presenti su istanze diverse dello stesso oggetto e che
sia in grado di discriminare tra istanze di oggetti diversi;
• una maggiore sinteticità nella descrizione, ovvero una rappresentazione dell’oggetto di interesse con il minor numero possibile di primitive strutturali.
Supponiamo di poter fissare a priori un vincolo nella decomposizione; ad esempio
il numero delle primitive strutturali da utilizzare nella descrizione. Il problema
59
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
si riduce nella determinazione della rappresentazione più fedele della curva originale a partire dal numero di primitive assegnato. Occorre quindi determinare la
migliore distribuzione possibile dei segmenti costituenti la poligonale. Il problema
di rappresentare una poligonale costituita da N segmenti consecutivi, delimitati
da (N+1) punti con un insieme M di archi di cerchio può essere, quindi enunciato
come segue (Bellman, 1961):
data una poligonale costituita da N segmenti consecutivi, si decomponga la
stessa in M tratti, approssimando la poligonale originale con M archi di cerchio,
delimitati da M+1 vertici, in modo tale da minimizzare l’errore commesso nella
decomposizione. In particolare indichiamo con:
S = {S1 , S2 , S3 , . . . . . . , SN }
(5.1)
l’insieme degli N segmenti, che costituiscono la poligonale da descrivere, la quale
sarà indicata con la seguente notazione:
N
P = S1 ∪ S2 ∪ . . . ∪ SN = ∪ Sk .
k=1
(5.2)
Vogliamo definire l’insieme degli M archi di cerchio approssimanti la curva da dej
scrivere, che minimizzi l’errore di approssimazione. Se definiamo con Pi:j = ∪ Sk
k=i
un generico tratto di poligonale e con γi:j il generico arco di cerchio che approssima il tratto di poligonale Pi:j , il nostro problema diviene quello di determinare la
migliore distribuzione possibile degli archi di cerchio. In pratica vogliamo trovare,
secondo i vari metodi di approssimazione, la soluzione al seguente problema:
min
∗
k1∗ ,k2∗ ,...,kM
∗
d(P, γ1:k1∗ ∪ γk1∗ +1:k2∗ ∪ . . . ∪ γkM
:N )
−1
(5.3)
il quale può essere scritto come:
(M )
min d(P, Γ1:N )
Γ
(5.4)
dove:
(M )
M −1
Γ1:N = ∪ γki +1:ki+1
i=0
(5.5)
dove k0 = 0 e kM = N . Di seguito riportiamo un esempio della decomposizione di
una poligonale in due sole primitive (vedi figura 5.2).
60
5.2 Formulazione del problema
(b)
(a)
Figura 5.2: (a) Rappresentazione nel piano (x, y) di una poligonale e degli archi
di cerchio approssimanti; (b) rappresentazione nel piano (L, α) della poligonale di
figura (a) e degli archi di cerchio approssimanti.
Nell’esempio riportato in figura 5.2 il numero di archi di cerchio considerati è
M = 2, mentre la poligonale da descrivere è composta da N = 18 segmenti consecutivi. L’arco di cerchio γ1:k1∗ approssima i segmenti della poligonale compresi
tra il segmento S1 ed il segmento Sk1∗ = S9 , mentre l’arco di cerchio γk1∗ +1:N accorpa i segmenti compresi tra il segmento Sk1∗ +1 = S10 ed il segmento SN = S18 .
Per cui nel nostro caso possiamo scrivere:
(2)
Γ1:18 = γ1:9 ∪ γ10:18
Tornando al problema iniziale dato dall’equazione 5.3, è quindi necessario determinare i valori di ki∗ per i = 1, . . . , M in corrispondenza dei quali interrompere
l’accorpamento del tratto di poligonale corrente e considerare la successiva primitiva strutturale ed un nuovo tratto di poligonale, sulla base di una valutazione
dell’errore commesso nelle approssimazioni.
La formulazione matematica del problema si basa sulla valutazione dell’errore
commesso nell’approssimazione di un insieme di segmenti con una unica primitiva, secondo i criteri di valutazione della distanza tra curve adottati. In particolare
denotiamo con h(Pi:j ) l’errore commesso approssimando la porzione di poligonale
Pi:j con un solo arco di cerchio. Data quindi la poligonale Pi:j , la migliore retta
γi:j approssimante nel piano (L, α) è determinata utilizzando uno dei tre criteri di
approssimazione definiti, ovvero:
• Minimi quadrati ; la migliore retta approssimante è ottenuta valutando la
differenza di forma in maniera integrale, come di seguito descritto:
min ||Pi:j −
γi:j
γi:j ||22
Zltot
= min
(Pi:j (l) − γi:j (l))2 dl;
γi:j
0
61
(5.6)
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
• Approssimazione uniforme; la migliore retta approssimante è ottenuta valutando la differenza di forma in maniera puntuale, come di seguito
descritto:
min max |Pi:j (l) − γi:j (l)|
(5.7)
γi:j l∈[0,ltot ]
• Least median of squares; la migliore retta approssimante è ottenuta
valutando il valor mediano dei residui al quadrato, come di seguito descritto:
min med (Pi:j (l) − γi:j (l))2
γi:j l∈[0,ltot ]
(5.8)
Sulla base del tipo di metrica utilizzata definiamo l’errore commesso nell’approssimazione, come di seguito descritto:
• Minimi quadrati :
Zltot
h(Pi:j ) =
(Pi:j (l) − γi:j (l))2 dl
(5.9)
0
• Approssimazione uniforme:
h(Pi:j ) = max |Pi:j (l) − γi:j (l)|
l∈[0,ltot ]
(5.10)
• Least median of squares:
h(Pi:j ) = med (Pi:j (l) − γi:j (l))2
l∈[0,ltot ]
(5.11)
Definito l’errore h(Pi:j ), il problema può essere formulato, in forma matematica
come segue:
data una poligonale P costituita da N segmenti, delimitati da N+1 punti,
determinare la migliore distribuzione possibile degli N segmenti consecutivi in
M primitive strutturali (comprese tra k1 , . . . , kM ) minimizzando l’errore totale
commesso nell’approssimazione. A tal proposito definiamo:
H(P1:N , M ) =
min
k1 ,k2 ,...,kM −1
M
−1
X
h(Pkj +1:kj+1 )
(5.12)
j=0
la funzione di errore da minimizzare per determinare la migliore configurazione
62
5.2 Formulazione del problema
possibile degli N segmenti negli M archi di cerchio; ricordiamo nuovamente che
k0 = 0 e kM = N .
Assegnato il numero di archi di cerchio da utilizzare (in quanto vincolo imposto nella formulazione del problema) si deve determinare il valore dei ki con
i = 1, . . . , M − 1, ovvero dei punti in corrispondenza dei quali si passa da una
primitiva alla successiva. Il generico punto i-esimo, in cui interrompere l’accorpamento del tratto di poligonale Pi:j e considerare un altro tratto è compreso tra i
segmenti ki e ki + 1; esso sarà indicato con il termine Break-Point.
La tecnica adottata nel metodo di decomposizione basato su programmazione
dinamica è quella di determinare la soluzione ottimale (la migliore combinazione
possibile di segmenti consecutivi) al passo corrente, basandosi sulla combinazione
ottimale trovata al passo precedente. Partendo dall’equazione 5.12, consideriamo
i casi in cui M = 1, 2, 3, 4:
H(P1:N , 1) = h(P1:N )
H(P1:N , 2) =
H(P1:N , 3) =
min[h(P1:k1 ) + h(Pk1 +1:N )]
(5.13)
min [h(P1:k1 ) + h(Pk1 +1:k2 ) + h(Pk2 +1:N )]
(5.14)
k1
k1 ,k2
= min[H(P1:k2 , 2) + h(Pk2 +1:N )]
k2
H(P1:N , 4) =
min [h(P1:k1 ) + h(Pk1 +1:k2 ) + h(Pk2 +1:k3 ) + h(Pk3 +1:N )]
k1 ,k2 ,k3
(5.15)
= min[H(P1:k3 , 3) + h(Pk3 +1:N )].
k3
Guardando l’equazione 5.14 si osserva facilmente che [h(P1:k1 ) + h(Pk1 +1:k2 )] è
l’errore commesso approssimando la poligonale P1:k2 con due primitive strutturali, per cui tale termine può essere riscritto utilizzando l’equazione 5.13 con
N = k2 . Analogo discorso può essere fatto per l’equazione 5.15, in cui il termine
[h(P1:k1 ) + h(Pk1 +1:k2 ) + h(Pk2 +1:k3 )] rappresenta l’errore commesso approssimando la poligonale P1:k3 con tre primitive strutturali; per cui tale termine può essere
riscritto utilizzando l’equazione 5.14, con N = k3 .
Per induzione possiamo quindi dire che l’errore minimo commesso approssimando
il generico tratto di poligonale P1:n con m primitive strutturali (archi di cerchio
e/o segmenti di retta) può essere determinato applicando la seguente funzione:
H(P1:n , m) =
min
m−1≤j≤n−1
[H(P1:j , m − 1) + h(Pj+1:n )]
dove poniamo:
63
1≤m≤n
(5.16)
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
P1:0
= {∅}
(0)
= {∅}
Γ1:0
H(P1:0 , 0)
=
0
H(P1:n , 0)
=
+∞
per
n = 1, . . . , N
H(P1:j , m − 1) è il minimo errore commesso approssimando j segmenti consecutivi
con m-1 archi di cerchio e/o segmenti di retta ed h(Pj+1:n ) è l’errore commesso
approssimando i rimanenti segmenti con un unico arco di cerchio (o segmento di
retta). Inoltre possiamo definire:
H(Pi:j , m) =
min
k1 ,k2 ,...,km−1
d(Pi:j , γi:k1 ∪ γk1 +1:k2 ∪ . . . ∪ γkm−1 :j )
(5.17)
come l’errore commesso approssimando la poligonale Pi:j con m archi di cerchio
γ. Si nota facilmente dalla equazione 5.17 che se si utilizza una sola primitiva
strutturale si ha H(Pi:j , 1) = h(Pi:j ). La decomposizione in archi di cerchio della
poligonale Pi:j può essere denotata come segue:
(m)
Γi:j = γi:k1 ∪ γk1 +1:k2 ∪ . . . ∪ γkm−1 :j
(5.18)
Di seguito (vedi figura 5.3) riportiamo un esempio per capire meglio come il metodo di decomposizione appena introdotto, basandosi sulla valutazione dell’errore
commesso nella decomposizione, riesca ad individuare la migliore distribuzione
possibile dei segmenti costituenti la poligonale da descrivere nelle M primitive
(con M assegnato a priori).
Sulla base dell’errore ottenuto distribuendo i vari segmenti consecutivi che com∗
pongono la poligonale P, si determina la posizione dei k1∗ , k2∗ , . . . , kM
−1 ottimi in
corrispondenza dei quali l’errore complessivo commesso H(P1:N , M ) è minimo. La
poligonale da descrivere è composta da N=25 segmenti, delimitati da ventisei
punti. Il numero delle primitive strutturali scelto per decomporre la poligonale è
M=3, ovvero tre soli archi di cerchio.
Il metodo di decomposizione procede valutando l’errore commesso in ogni passo
accorpando vari tratti di segmenti consecutivi della poligonale, fino ad ottenere
che l’errore minimo H(P1:25 , 3), è ottenuto quando k1 = k1∗ = 8 e k2 = k2∗ =
16 (mentre k0 = 0 e k3 = 25 per definizione), ovvero quando la porzione di
poligonale P1:8 è approssimata dall’arco di cerchio γ1:8 , la porzione di poligonale
P9:16 è approssimata dall’arco di cerchio γ9:16 e la porzione di poligonale P17:25 è
approssimata dall’arco di cerchio γ17:25 (vedi figura 5.3). Il minore errore commesso
nella decomposizione è quindi dato da: H(P1:25 , 3) = H(P1:16 , 2) + h(P17:25 ).
64
5.3 Descrizione dell’algoritmo di Decomposizione
L
L
0
0
−50
−50
−100
−100
−150
−150
−200
−200
−250
−250
−300
−300
−350
−350
−400
−400
−450
−450
0
5
10
15
20
Alfa
0
25
5
(a)
10
15
20
Alfa
25
15
20
Alfa
25
(b)
L
L
0
0
−50
−50
−100
−100
−150
−150
−200
−200
−250
−250
−300
−300
−350
−350
−400
−400
−450
−450
0
5
10
15
20
Alfa
25
0
(c)
5
10
(d)
Figura 5.3: Raffigurazione di aclune fasi della decomposizione di una poligonale costituita N=25 segmenti in M=3 primitive strutturali. (a) H(P1:13 , 2) +
h(P14:25 ); (b) H(P1:14 , 2)+h(P15:25 ); (c) H(P1:15 , 2)+h(P16:25 ); (d ) H(P1:16 , 2)+
h(P17:25 ).
5.3
Descrizione dell’algoritmo di Decomposizione
In questa sezione descriveremo nel dettaglio il metodo con cui opera tale algoritmo ed i vantaggi che esso offre rispetto agli altri visti nel capitolo 4. Il metodo di
decomposizione basato su programmazione dinamica opera partendo dal presupposto che siano noti a priori il numero degli archi di cerchio M da utilizzare nella
decomposizione. Durante il procedimento, una poligonale costituita da N segmenti consecutivi è percorsa sequenzialmente alla ricerca della migliore distribuzione
possibile degli stessi in M possibili archi di cerchio, basandosi sulla valutazione
dell’errore commesso nella decomposizione ad ogni singolo passo. Il metodo si basa,
quindi sulla distribuzione dell’errore lungo la poligonale in esame. La definizione
del percorso con il minimo errore di approssimazione è garantita dal fatto che ad
ogni passo si considera il valore dell’errore determinato al passo precedente.
65
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
Alla fine del processo, sulla base dell’errore H(P1:N , M ) si determina la sequenza
∗
k1∗ , k2∗ , k3∗ , . . . , kM
−1 (con k0 e kM assegnati) che ha generato il minimo contributo di errore e si considera la decomposizione in corrispondenza dei break-point
individuati. Di seguito riportiamo una descrizione sintetica dell’algoritmo implementato, nel caso in cui sia fissato a priori il numero M delle primitive strutturali
da utilizzare per descrivere la poligonale P1:N .
Algorithm 5 Algoritmo di Decomposizione basato su Programmazione Dinamica
Input: Poligonale P1:N costituita da N segmenti S1 , . . . , SN ; M , numero degli
archi di cerchio da usare per descrivere la poligonale P1:N ;
(M )
Output: Insieme Γ1:N = {γ (1) , . . . , γ (m) } di archi di cerchio; l’arco γi:j è rappresentativo di un cluster Pi:j , di segmenti di poligonale; H(P1:N , M ) errore
minimo commesso nell’approssimazione di P1:N in M archi di cerchio Γ.
E(0, 0) = 0; /*Inizializzazione dell’errore*/
for n = 1 to N do
E(n, 0) = +∞;
end for
C(0, 0) = [ ] ;
for i = 1 to M do
for j = i + 1 to N do
e(i, j) = h(P1:j )
c(i, j) = par(γi:j ) /*con par (γi:j ) intendiamo il Coefficiente angolare ed
il termine noto di γi:j */
end for
end for
for m = 1 to M do
for n = m to N do
j min = arg min [E(j, m − 1) + e(j + 1, n)]
m−1≤j≤n−1
E(n, m) = [E(jmin , m − 1) + e(jmin + 1, n)];
C(n, m) = [C(jmin , m − 1)[jmin + 1, n]]
end for
end for
return E(N, M );
return c(N, M ); C(N, M );
/*Parametri della decomposizione; ΓM
1:N =
(M −1)
∗
Γ1:jmin ∪ γjmin +1:N = γ1:k1∗ ∪ γk1∗ +1:k2∗ ∪ . . . ∪ γkM
:N è la migliore distribuzione
−1
di N segmenti in M archi di cerchio.*/
66
5.3 Descrizione dell’algoritmo di Decomposizione
Durante il procedimento si stima ripetutamente l’errore h(Pi:j ) per ogni insieme di sotto-segmenti della poligonale in esame e lo si inserisce all’interno di
una matrice triangolare superiore. Il processo di decomposizione termina con il
calcolo di E(N, M ), che rappresenta l’errore in corrispondenza della migliore distribuzione possibile degli N segmenti costituenti la poligonale P1:N in M archi
di cerchio ΓM
1:N (vedi tabella rappresentata nella seguente figura 5.4).
Figura 5.4: Calcolo dell’errore commesso nella decomposizione della Poligonale
P1:N , costituita da N segmenti consecutivi in M primitive strutturali ΓM
1:N . E
tabella contenente i contributi di errore; E(N, M ) = H(P1:N , M ) errore minimo
commesso nella decomposizione.
Le frecce verticali rappresentate nella figura 5.4 indicano la progressione del calcolo, ovvero la dipendenza dei valori determinati al passo corrente, da quelli determinati al passo precedente, mentre le frecce tratteggiate indicano la necessità
di aggiungere una colonna nella tabella di errore per poter considerare una altra
primitiva strutturale nella decomposizione. L’approccio di tipo dinamico permette
di determinare la soluzione ottima, che in molti casi è anche unica; se ne esistono
più di una, considera una di queste come soluzione.
L’applicazione del metodo di decomposizione basato su Programmazione Dinamica richiede di determinare l’errore H(P1:N , M ), come definito nella equazione
5.12 e rappresentato nella tabella di figura 5.4, determinando l’errore h(Pi:j ) tra
67
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
il tratto di poligonale Pi:j e l’arco di cerchio (o il segmento di retta) γi:j approssimante. In altre parole occorre determinare l’errore di approssimazione commesso
sostituendo il trato di poligonale Pi:j (compreso tra i segmenti i e j) con l’unico
arco di cerchio o segmento di retta γi:j , basandosi su di un criterio oggettivo di valutazione dello stesso come definito nelle equazioni 5.9, 5.10 e 5.11. Per ottenere la
migliore distribuzione possibile degli (N) segmenti della poligonale negli M archi
di cerchio, nel passo corrente si considera l’errore commesso al passo precedente,
prendendone il contributo minore, come descritto nella equazione 5.16. Al passo
corrente deve essere determinato, quindi il solo valore di h(Pi:j ).
L’algoritmo sviluppato si basa sulla considerazione che siano noti a priori il
numero M degli archi di cerchio da utilizzare nella decomposizione. Dalle sperimentazioni effettuate si è osservato che l’algoritmo ha un comportamento estremamente robusto, e fornisce una descrizione molto fedele della curva originale. Con
l’introduzione di tale metodologia si è ovviato all’inconveniente di dover utilizzare
una soglia per valutare la bontà dell’approssimazione. Nonostante ciò, l’algoritmo
in esame impone un vincolo nella decomposizione, rappresentato dal numero di
primitive strutturali da considerare per descrivere opportunamente la poligonale.
La scelta di tale valore può essere basata soltanto su di una valutazione di tipo
percettivo.
Si può pertanto considerare di eliminare tale vincolo determinando il numero
M ottimo andando a studiare il comportamento della decomposizione in funzione
della variazione dello stesso. L’intento è quello di analizzare l’andamento dell’errore di approssimazione al fine di determinare delle analogie di comportamento,
indipendentemente dalla curva considerata nella decomposizione. Iniziamo considerando il comportamento della curva di errore H(P1:N , M ), al variare di M,
fino ad un massimo di M = N , ovvero fino al fitting completo della stessa e
cercando di determinare il valore di M ottimo.
5.3.1
Studio della curva di errore e determinazione del valore di M ottimo
Dopo aver rimosso il vincolo di avere un numero di primitive strutturali fisso per
la decomposizione, lo scopo di questo paragrafo è quello di analizzare il problema
e di sviluppare un criterio per la determinazione del numero essenziale delle stesse.
Per poter ottenere una rappresentazione grafica della curva di errore in funzione
dei vertici utilizzati nella decomposizione, facciamo variare M fino al numero dei
segmenti che compongono la poligonale da descrivere. Si ottiene quindi la tabella di errore riportata nella seguente figura 5.5. Ovviamente per quanto detto
E(N, N ) = 0, poichè rappresenta l’errore commesso approssimando la poligonale
P1:N con se stessa.
68
5.3 Descrizione dell’algoritmo di Decomposizione
Figura 5.5: Calcolo dell’errore commesso nella decomposizione della Poligonale
P1:N , costituita da N segmenti consecutivi in M = N primitive strutturali ΓN
1:N .
E tabella contenente i contributi di errore; E(N, N ) = H(P1:N , N ) errore minimo
commesso nella decomposizione.
Per capire come varia l’errore in funzione di M , consideriamo l’ultima riga della
tabella rappresentata nella precedente figura 5.5. Questa contiene, per ogni valore di M = 1, . . . , N , l’errore commesso approssimando la poligonale P1:N con M
primitive strutturali, ovvero con ΓM
1:N . Il grafico di tali valori, in funzione di M
produce una curva che definiamo “Dynamic Programming Decomposition
Operating Characteristic (DPDOC)”, la quale raffigura l’andamento della
curva di errore E(N, M ) in funzione del numero delle primitive strutturali considerato (ovvero del numero degli archi di cerchio e/o segmenti di retta considerati).
Come si può notare dal grafico di figura 5.6, l’errore commesso nell’approssimazione decresce all’aumentare del numero M delle primitive strutturali considerate, ovvero del numero degli archi di cerchio. L’errore minimo, uguale a 0 è
raggiunto in corrispondenza del fitting completo della curva, cioè nella decomposizione della stessa in tutti i segmenti che la compongono. Prima di proseguire con
la trattazione, ricordiamo quali sono gli intenti che vogliamo perseguire nel nostro
lavoro:
69
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
30
25
E (N, M)
20
15
10
5
0
0 1
4
10
15
20
25
30
34
M
Figura 5.6: Dynamic Programming Decomposition Operating Characteristic. Andamento della curva di errore E(N, M ) in funzione del numero M degli
archi di cerchio considerati, con M = 1, . . . , N . La curva decresce al crescere delle
primitive strutturali considerate.
• Obiettivo 1 : ottenere il minor numero possibile di archi di cerchio approssimanti, ovvero avere una minore segmentazione della curva da descrivere;
• Obiettivo 2 : avere il minimo errore possibile di approssimazione, ovvero
ottenere una rappresentazione fedele della curva originale.
Il problema della determinazione del valore di M ottimo non può essere risolto
semplicemente determinando il minimo della curva di errore, in quanto tale valore
è ottenuto banalmente in corrispondenza di un fitting completo della curva. Il nostro obiettivo è invece, quello di combinare insieme accuratezza della descrizione e
riduzione della rappresentazione; si cerca di trovare un compromesso tra numero
massimo dei vertici ammissibili ed errore di approssimazione. I due obiettivi sono,
infatti in relazione (e in conflitto) tra di loro e devono essere entrambi contemporaneamente minimizzati.
Occorre, quindi risolvere un problema di Ottimizzazione Multiobiettivo,
caratterizzato dalla presenza contemporanea di più obiettivi, cioè funzioni a valori
reali da massimizzare e/o minimizzare, tipicamente in contrasto tra di loro.
Un problema di ottimizzazione multi-obiettivo (MOP - Multiobjective Optimization Problems) può essere definito come segue (Das, 1999):
min (f1 (x)f2 (x) . . . fk (x))
x∈F
70
T
(5.19)
5.3 Descrizione dell’algoritmo di Decomposizione
ove k ≥ 2 e fi : <n → <, per i = 1, . . . , k. Indichiamo con <k lo spazio degli
obiettivi, con <n lo spazio delle variabili di decisione, con x ∈ <n il vettore delle
decisioni, con z ∈ <k il vettore degli obiettivi. Indichiamo inoltre con f (x) il
vettore delle funzioni obiettivo (f1 (x)f2 (x) . . . ff (x))T e con Z = f (F ) l’immagine
della regione ammissibile F nello spazio degli obiettivi:
©
ª
Z = f (F ) = z ∈ <k : ∃x ∈ F, z = f (x)
Il vettore ideale degli obiettivi Z id sarà definito come: (z1id z2id . . . zkid ), dove:
ziid = min fi (x)
(5.20)
x∈F
Per risolvere il problema multiobiettivo si devono minimizzare contemporaneamente tutte le funzioni obiettivo. Se non ci fossero conflitti tra le stesse, una
soluzione banale al problema sarebbe quella ottenibile risolvendo separatamente
k problemi di ottimizzazione (uno per ogni funzione obiettivo), ottenendo quindi
come soluzione proprio il vettore ideale z id . Nel caso contrario le funzioni obiettivo
f1 (x), f2 (x), . . . , fk (x) sono tutte, almeno in parte, in contrasto tra di loro ed occorre quindi determinare una soluzione ottima che soddisfi simultaneamente tutti
gli obiettivi prefissati, per cui z id ∈
/ Z.
La definizione della soluzione ottima di un problema multiobiettivo è stata
introdotta per la prima volta da Edgeworth (1881) e successivamente è stata ripresa
da Pareto (1896), che la approfondı̀ ulteriormente. In particolare, quest’ultimo ha
elaborato le seguenti definizioni.
Definizione 5.1 Dati due vettori z 1 , z 2 ∈ <k , diciamo che z 1 domina z 2 secondo
Pareto (z 1 ≤P z 2 ) quando risulta
zi1
zj1
≤
zi2
∀i = 1, 2, . . . , k
<
zj2
per almeno un indice
e
j ∈ {1, . . . . . . , k} .
Definizione 5.2 Un vettore di decisioni x∗ ∈ F è un ottimo di Pareto se non
esiste un altro vettore x ∈ F tale che:
f (x) ≤P f (x∗ ).
Quindi, un vettore di obiettivi z ∗ ∈ Z è ottimo secondo Pareto quando non esiste
un altro vettore z ∈ Z tale che z ≤P z ∗ . Dove la relazione binaria ≤P è un ordinamento parziale nello spazio delle k -uple di numeri reali.
71
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
Se ci troviamo in un punto di ottimo secondo Pareto e vogliamo ulteriormente
diminuire il valore di una o più funzioni obiettivo dobbiamo essere disposti ad
accettare un conseguente aumento in alcune (oppure tutte) le rimanenti funzioni
del problema.
In tal senso possiamo affermare che, nello spazio degli obiettivi, gli ottimi di Pareto
sono punti di equilibio che si trovano sulla frontiera dell’insieme Z .
Definizione 5.3 Diciamo frontiera efficiente l’insieme degli ottimi di Pareto del
problema.
Molti problemi reali di ottimizzazione implicano il coinvolgimento di più obiettivi da considerare simultaneamente. Solitamente essi sono in conflitto tra di loro
e non è possibile trovare una soluzione unica al problema che sia ottima rispetto a
tutti gli obiettivi considerati. La presenza contemporanea di tali obiettivi conflittuali genera, quindi un insieme di soluzioni ottime in luogo di una unica (Branke
et al., 2004) (Deb, 2003). In particolar modo esistono delle soluzioni denominate
pareto-ottime, caratterizzate dal fatto che il miglioramento di uno degli obiettivi
può essere determinato causando un grosso degrado in tutti o alcuni degli altri
obiettivi del problema. Per poter considerare una unica soluzione occorre definire
un criterio di preferenza tra tutte le possibili soluzioni pareto-ottime (Veldhuizen
& Lamont, 2000).
Esistono numerose tecniche euristiche che possono essere adottate per scegliere
un punto pareto ottimo come preferibile, ovvero come punto di lavoro.
Le principali tecniche impiegate in letteratura sono:
1. Compromise Programming : l’ottimo preferibile è il punto più vicino al
punto ideale, valutato secondo diverse tipologie di distanza (Zeleny, 1973);
2. Marginal Rate of Return: il punto di ottimo preferibile coincide con
il punto in cui l’ottenimento di un lieve miglioramento di uno degli obiettivi causa un grosso peggioramento in tutti o alcuni degli altri obiettivi del
problema;
3. Weighted Average: il punto di ottimo preferibile è determinato cercando di ottenere una linearizzazione nel problema attraverso l’attribuzione di
opportuni pesi agli obiettivi.
Di seguito si riporta la raffigurazione dei punti di ottimo preferibile scelti attraverso l’utilizzo delle tecnice sopra citate (vedi figura 5.7).
72
5.3 Descrizione dell’algoritmo di Decomposizione
Figura 5.7: Scelta del punto di ottimo preferibile secondo i tre criteri. In questa
figura k = 2 e Z è rappresentata dalla zona grigia.
Nel nostro problema di ottimizzazione l’insieme dei punti ammissibili è rappresentato dalla DPDOC, come mostrato nella seguente figura 5.8.
Figura 5.8: Rappresentazione della DPDOC in funzione di M ed individuazione
di alcuni punti notevoli.
Ogni punto su tale curva è un punto di ottimo secondo Pareto, in quanto non è
dominato da nessun altro; per cui essa coincide con la frontiera ottima di Pareto.
I due obiettivi del problema sono rappresentati dal numero degli archi di cerchio
M della decomposizione e dall’errore commesso nell’approssimazione (ovvero nella sostituzione di un insieme di segmenti consecutivi con unico arco di cerchio o
73
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
segmento di retta). Essi devono essere contemporaneamente minimizzati al fine
di ridurre sia la complessità della rappresentazione di partenza, sia di descrivere
adeguatamente la curva in esame.
Secondo tutti e tre i criteri sopra elencati il punto di ottimo preferibile coincide
con il ginocchio della DPDOC. Il punto di ginocchio costituisce una protuberanza
nella frontiera ottima di Pareto (nel nostro caso DPDOC), in cui il miglioramento
di uno degli obiettivi causa un grosso degrado di tutti gli altri obiettivi (Taboada
et al., 2005). La presenza del ginocchio è, inoltre scala-invariante (Rachmawati
& Srinivasan, 2006) ed è estremamente significativa in quanto esso rappresenta il
punto di equilibrio in corrispondenza del quale:
• diminuendo di poco il numero di primitive M della decomposizione (al fine
di ridurre la segmentazione della stessa), abbiamo un grande aumento dell’errore di approssimazione ovvero una rappresentazione meno fedele della
curva originale;
• diminuendo di poco l’errore di approssimazione, cercando di ottenere una descrizione più fedele, abbiamo un aumento del numero degli archi di cerchio;
si ha una aumento di complessità della rappresentazione (segmentazione eccessiva della poligonale originale).
Come si può facilmente notare dalla seguente figura 5.9, il punto di ginocchio1 sulla
DPDOC, anche dal punto di vista percettivo rappresenta un buon compromesso
tra numero di primitive strutturali da utilizzare nella decomposizione ed errore di
approssimazione, ovvero tra sinteticità della rappresentazione ed accuratezza della
descrizione.
Se ci spostiamo da tale punto per cercare di minimizzare ulteriormente uno dei
due obiettivi dobbiamo essere disposti ad accettare un aumento notevole dell’altro,
ovvero un peggioramento nel raggiungimento dell’altro obiettivo. Nella figura
5.9(a) è mostrato chiaramente come il tentativo di ridurre leggermente il numero
delle primitive strutturali utilizzate nella decomposizione (circa del 3 %), comporta
un notevole aumento dell’errore di approssimazione (circa del 13 %), mentre la
figura 5.9(b) mostra come una piccola riduzione dell’errore di approssimazione
(circa del 3 %) comporti un aumento del numero delle primitive strutturali (circa
del 6 %). La curva rappresentata in figura 5.9 è la stessa riportata in figura 5.8, con
un opportuno ingrandimento per poter apprezzare meglio tale comportamento.
1 Il punto di ginocchio sulla frontiera di Pareto è il punto più lontano dal raggiungimento di
ciascun obiettivo parziale (Das, 1999).
74
19
19
18
18
17
17
15.8
15.8
E (N, M)
E (N, M)
5.3 Descrizione dell’algoritmo di Decomposizione
15
14
15
14
13
13
12.2
12.2
11.3
11
10
10
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
M
M
(a)
(b)
6
7
8
9
10
Figura 5.9: Andamento della curva di errore E(N, M ) in funzione di M. (a) una
piccola riduzione del numero degli archi di cerchio della decomposizione genera
un notevole aumento dell’errore di approssimazione; (b) una piccola riduzione
dell’errore di approssimazione comporta un notevole aumento del numero degli
archi di cerchio M.
5.3.2
Individuazione del punto di ginocchio: calcolo di M
ottimo
Descriviamo ora un metodo operativo per ottenere il punto di ginocchio della curva
di errore. Come è facile osservare, è possibile determinare tale punto in corrispondenza dello scostamento massimo tra retta congiungente i due estremi e funzione
di errore, come mostrato nella seguente figura 5.10.
27
25
E (N, M)
20
15
10
5
0
0 1
4
10
15
20
25
30
35
M
Figura 5.10: Curva di errore e retta congiungente i due estremi della stessa. Sull’asse X si riporta il numero M delle primitive e sull’asse Y si riporta l’errore
commesso nella decomposizione, al crescere di M , fino ad M = N .
75
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
La retta congiungente gli estremi è traslata parallelamente ad essa fino a quando
non tocca la curva di errore in un unico punto, rappresentante il ginocchio della
stessa, come rappresentato nella seguente figura 5.11.
30
27
25
E (N, M)
20
15
10
5
0
0 1
4
10
15
20
25
30
35
M
Figura 5.11: Rappresentazione grafica della determinazione del punto di ginocchio
della curva di errore.
Per ottenere il ginocchio della curva di errore si procede quindi come di seguito
descritto. Definiamo:
y c = m c x + qc ;
la retta congiungente i due estremi della curva di errore,
yp = mc x + qp ;
la generica retta parallela alla stessa e:
1
x + q⊥ ;
mc
la retta perpendicolare ad entrambe e passante per il ginocchio della curva. Per
ogni valore di (M, E(N, M )) determiniamo le due rette yp e y⊥ , ottenendo il punto
di intersezione (x(m,E(N,m)) , y(m,E(N,m)) ) con la retta yc . Per cui definita:
q
D(m) = [(X(m,E) − m)2 + (Y(m,E) − E(N, m))2 ] m = 1, . . . , N
y⊥ =
la freccia tra la tangente alla curva di errore e la retta congiungente i due estremi
della stessa, per ogni valore di m, si ottiene:
F = M AX(D);
76
(5.21)
5.3 Descrizione dell’algoritmo di Decomposizione
ed M è l’ascissa in corrispondenza di F ; dove (m, E(N, m)) è la coordinata di un
generico punto sulla curva di errore.
5.3.3
Un caso particolare: decomposizione di un poligono
regolare ad N lati
Al fine di comprendere meglio le caratteristiche del metodo proposto, analizziamo
i risultati ottenuti dalla decomposizione di alcuni poligoni regolari. In particolare
consideriamo dei poligoni regolari inscritti in una circonferenza di raggio fissato.
Quando il numero dei lati del poligono è piccolo (es. triangolo, pentagono, etc.), il
punto di ottimo preferibile (secondo i tre criteri euristici citati precedentemente)
è rappresentato dal raggiungimento di uno dei due obiettivi parziali, ovvero dalla
minimizzazione dell’errore di approssimazione. La descrizione migliore corrisponde
quindi al fitting del poligono stesso, ovvero alla decomposizione in tutti i segmenti
che lo compongono. In figura 5.12 è rappresentato l’andamento dell’errore di
approssimazione in funzione di M , per un triangolo, pentagono e decagono in
scala lineare.
30
Poligono 3 lati
Poligono 5 lati
Poligono 10 lati
25
E (N, M)
20
15
10
5
0
0
1
2
3
4
5
6
7
8
9
10
M
Figura 5.12: Andamento della curva di errore E(N, M ) in funzione del numero di
primitive utilizzato per vari poligoni regolari con rappresentazione in scala lineare.
All’aumentare dell’ordine del poligono la curva di errore tende ad abbassarsi ed
a divenire parallela all’asse delle ascisse (es. poligono regolare a cinquanta lati,
etc.). Il punto di ottimo preferibile si sposta verso il punto rappresentato dal
raggiungimento dell’altro obiettivo parziale e la decomposizione migliore è ottenuta
utilizzando una sola primitiva strutturale. In figura 5.13 si riporta l’andamento di
77
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
E(N, M ) rispettivamente per un poligono a tre, cinque, dieci, cinquanta, cento e
cinquecento lati. La rappresentazione è stata effettuata tarando l’asse delle ascisse
in scala logaritmica per facilitare la visualizzazione e per consentire una maggiore
discriminazione tra le varie curve.
30
Poligono 3 lati
Poligono 5 lati
Poligono 10 lati
Poligono 50 lati
Poligono 100 lati
Poligono 500 lati
25
E (N, M)
20
15
10
5
0
0
10
1
10
2
M
10
3
10
Figura 5.13: Andamento della curva di errore E(N, M ) in funzione del numero
di primitive utilizzato per vari poligoni regolari con rappresentazione in scala
logaritmica.
In definitiva quando l’ordine del poligono è tale da poter approssimare lo stesso
con la circonferenza in cui esso è inscritto, la curva di errore giace sul piano delle
ascisse. In tal caso l’errore commesso nella decomposizione è nullo, qualunque sia
il numero delle primitive strutturali considerato. Per cui una circonferenza può
essere rappresentata con l’utilizzo di un unico arco di cerchio.
Nel seguito il metodo di decomposizione basato su programmazione dinamica sarà
denotato con l’acronimo “DpDecomp”.
5.4
Descrizione dell’algoritmo DpDecomp con M
dinamico
Studiando quindi, la matrice di errore in funzione del numero dei vertici considerato si è giunti alla conclusione che è possibile ottenere dinamicamente tale numero
M risolvendo un problema di ottimizzaizone multiobiettivo; per cui l’algoritmo può
essere modificato in questo modo:
78
5.4 Descrizione dell’algoritmo DpDecomp con M dinamico
Algorithm 6 Algoritmo DpDecomp con M dinamico
Input: Poligonale P1:N costituita da N segmenti S1 , . . . , SN ;
(M )
Output: Insieme Γ1:N = {γ (1) , . . . , γ (m) } di archi di cerchio; l’arco γi:j è rappresentativo di un cluster Pi:j , di segmenti di poligonale; H(P1:N , M ) errore minimo
commesso nell’approssimazione di P1:N in M archi di cerchio. M numero degli
archi di cerchio della decomposizione.
E(0, 0) = 0;
for n = 1 to N do
E(n, 0) = +∞;
/*Inizializzazione dell’errore commesso accorpando N
segmenti con un solo arco di cerchio*/
end for
Epd (1, 1) = ∞;
Epd (1, 2) = 1;
C(0, 0) = [ ];
for i = 1 to N do
for j = i + 1 to N do
e(i, j) = h(Pi:j );
c(i, j) = par(γi:j ); /*con par (γi:j ) intendiamo il Coefficiente angolare e
termine noto di γi:j */
end for
end for
for m = 1 to N do
for n = m to N do
j min = arg min [E(j, m − 1) + e(j + 1, n)] ;
m−1≤j≤n−1
E(n, m) = [E(jmin , m − 1) + e(jmin + 1, n)];
C(n, m) = [C(jmin , m − 1)[jmin + 1, n]];
end for
Epd (m, 1) = E(N, m);
Epd (m, 2) = m; /*Determino il valore di E(N, M ) ∀ m = 1, . . . , N */
end for
X E = Epd (:, 1);
Y E = Epd (:, 2);
for i = 1 to p
N do
F (i, 1) = (XiE − Xir )2 + (YiE − Yir )2
F (i, 2) = i;
end for
M = arg max [F ] ; /*M = Ginocchio della curva di errore Epd ;*/
1≤i≤N
return E(N, M );
(M )
return c(N, M ); C(N, M );
/*Parametri della decomposizione; Γ1:N =
(M −1)
∗
Γ1:jmin ∪ γjmin +1:N = γ1:k1∗ ∪ γk1∗ +1:k2∗ ∪ . . . ∪ γkM
:N è la migliore distribuzione
−1
di N segmenti in M archi di cerchio.*/
79
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
Nell’algoritmo di decomposizione basato su programmazione dinamica, introdotto nel paragrafo 5.3 si cercava di determinare la migliore distribuzione possibile
di N segmenti, costituenti la poligonale in M archi di cerchio. Nell’algoritmo
DpDecomp con M dinamico, data una poligonale da descrivere, si determina il
numero degli archi di cerchio Ottimo in cui decomporre la stessa ed in seguito si
distribuiscono gli (N) segmenti consecutivi della stessa negli M archi individuati,
cercando di minimizzare l’errore di approssimazione.
Quindi i passi essenziali di questo algoritmo sono la decomposizione della poligonale in M archi di cerchio (con M = 1, . . . , N ), lo studio della curva di errore
E con conseguente determinazione del numero di primitive Ottimo e la selezione
della migliore distribuzione dei segmenti costituenti la poligonale negli M archi
di cerchio individuati. Ad ogni passo si determina anche la distribuzione dei segmenti in funzione dell’M corrente in modo da non doverlo ripetere a valle della
determinazione di M. Nel seguito vedremo quanto questo processo sia costoso a
livello computazionale.
5.5
Complessità computazionale dell’algoritmo DpDecomp
Nel presente paragrafo si cerca di dare una valutazione della complessità computazionale dovuta all’utilizzo della tecnica di decomposizione basata su programmazione dinamica.
5.5.1
Complessità computazionale con M assegnato
Se consideriamo assegnato a priori il numero M delle primitive strutturali da
utilizzare nella decomposizione, la complessità computazionale può essere ottenuta
considerando separatamente il calcolo dei termini e(i, j) = h(Pi:j ) per ogni generico
tratto di poligonale Pi:j ed E(N, M ). In particolare il calcolo di e(i, j) = h(Pi:j )
richiede l’esecuzione delle seguenti istruzioni:
for i = 1 to M do
for j = i + 1 to N do
e(i, j) = h(Pi:j );
c(i, j) = par(γi:j );
end for
end for
il cui costo computazionale è dato da:
M X
N
X
i=1 j=i+1
80
1
(5.22)
5.5 Complessità computazionale dell’algoritmo DpDecomp
il cui risultato in forma chiusa è:
M X
N
X
1=
i=1 j=i+1
M
[2N − M − 1] ;
2
(5.23)
per cui la complessità di tale calcolo è O(N M ). Il calcolo di E(N, M ) richiede
l’esecuzione delle seguenti istruzioni:
for m = 1 to M do
for n = m to N do
j min = arg min [E(j, m − 1) + e(j + 1, n)] ;
m−1≤j≤n−1
E(n, m) = [E(jmin , m − 1) + e(jmin + 1, n)];
C(n, m) = [C(jmin , m − 1)[jmin + 1, n]];
end for
end for
Risolvendo l’equazione:
M X
N
n−1
X
X
1
(5.24)
m=1 n=m j=m−1
si ottiene il seguente risultato in forma chiusa:
M X
N
n−1
X
X
m=1 n=m j=m−1
1=
¤
M£ 2
N + M 2 + 3N − M N − 2M
2
(5.25)
per cui la complessità di tale calcolo è O(M N 2 ), che rappresenta anche la complessità dell’intero algoritmo.
5.5.2
Complessità computazionale con M calcolato dinamicamente
Nel DpDecomp con calcolo del numero delle primitive strutturali da utilizzare
nella decomposizione, la complessità computazionale aumenta leggermente poichè
andiamo da M = 1 ad M = N . Il calcolo di e(i, j) = h(Pi:j ) richiede l’esecuzione
delle seguenti istruzioni:
for i = 1 to N do
for j = i + 1 to N do
e(i, j) = h(Pi:j );
c(i, j) = par(γi:j );
end for
end for
81
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
il cui costo computazionale è dato da:
N X
N
X
1
(5.26)
i=1 j=i+1
il cui risultato in forma chiusa è:
N X
N
X
N
[N − 1] ;
2
1=
i=1 j=i+1
(5.27)
per cui la complessità di tale calcolo è O(N 2 ). Il calcolo di E(N, N ) richiede
l’esecuzione delle seguenti istruzioni:
for m = 1 to N do
for n = m to N do
j min = arg min [E(j, m − 1) + e(j + 1, n)] ;
m−1≤j≤n−1
E(n, m) = [E(jmin , m − 1) + e(jmin + 1, n)];
C(n, m) = [C(jmin , m − 1)[jmin + 1, n]];
end for
end for
Risolvendo l’equazione:
N X
N
n−1
X
X
1
(5.28)
m=1 n=m j=m−1
si ottiene il seguente risultato in forma chiusa:
N X
N
n−1
X
X
m=1 n=m j=m−1
1=
¤
N£ 2
N − 3N − 4
6
(5.29)
per cui la complessità di tale calcolo è O(N 3 ), che rappresenta anche la complessità
dell’intero algoritmo.
Il notevole vantaggio dell’implementazione di questo algoritmo risiede nella
considerazione che ad ogni passo non è necessario ricalcolare l’errore di approssimazione dei passi precedenti, ma è sufficiente aggiungere uno step al crescere di
M di una unità. In termini di tabelle di errore è necessario aggiungere una sola
colonna. Per capire meglio come questo sia possibile consideriamo la decomposizione di una poligonale costituita da cinque (5) segmenti, dapprima in M = 3
e poi in M = 4 archi di cerchio. Nel primo caso dobbiamo fermarci ad E(5, 3),
mentre nel secondo caso ad E(5, 4);
82
5.5 Complessità computazionale dell’algoritmo DpDecomp
1. determinazione di E(5, 3):
E(0, 0) =
0;
E(n, 1) =
+∞
E(1, 1) =
min {[E(0, 0) + e(1, 1)]}
E(2, 1) =
min {[E(0, 0) + e(1, 2)], [E(1, 0) + e(2, 2)]}
E(3, 1) =
min {[E(0, 0) + e(1, 3)], . . . . . . , [E(2, 0) + e(3, 3)]}
E(4, 1) =
min {[E(0, 0) + e(1, 4)] , . . . . . . , [E(3, 0) + e(4, 4)]}
E(5, 1) =
min {[E(0, 0) + e(1, 5)], . . . . . . , [E(4, 0) + e(5, 5)]}
E(2, 2) =
min {[E(1, 1) + e(2, 2)]}
E(3, 2) =
min {[E(1, 1) + e(2, 3)], [E(2, 1) + e(3, 3)]}
E(4, 2) =
min {[E(1, 1) + e(2, 4)] , . . . . . . , [E(3, 1) + e(4, 4)]}
E(5, 2) =
min {[E(1, 1) + e(2, 5)] , . . . . . . , [E(4, 1) + e(5, 5)]}
E(3, 3) =
min {[E(2, 2) + e(3, 3)]}
E(4, 3) =
min {[E(2, 2) + e(3, 4)], [E(3, 2) + e(4, 4)]}
E(5, 3) =
min {[E(2, 2) + e(3, 5)] , . . . . . . , [E(4, 2) + e(5, 5)]}
per
n = 1, . . . , 5
2. determinazione di Ep (5, 4):
E(0, 0) =
0;
E(n, 1) =
+∞
E(1, 1) =
min {[E(0, 0) + e(1, 1)]}
E(2, 1) =
min {[E(0, 0) + e(1, 2)], [E(1, 0) + e(2, 2)]}
E(3, 1) =
min {[E(0, 0) + e(1, 3)], . . . . . . , [E(2, 0) + e(3, 3)]}
E(4, 1) =
min {[E(0, 0) + e(1, 4)] , . . . . . . , [E(3, 0) + e(4, 4)]}
E(5, 1) =
min {[E(0, 0) + e(1, 5)], . . . . . . , [E(4, 0) + e(5, 5)]}
E(2, 2) =
min {[E(1, 1) + e(2, 2)]}
E(3, 2) =
min {[E(1, 1) + e(2, 3)], [E(2, 1) + e(3, 3)]}
E(4, 2) =
min {[E(1, 1) + e(2, 4)] , . . . . . . , [E(3, 1) + e(4, 4)]}
E(5, 2) =
min {[E(1, 1) + e(2, 5)] , . . . . . . , [E(4, 1) + e(5, 5)]}
per
n = 1, . . . , 5
83
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
E(3, 3)
=
min {[E(2, 2) + e(3, 3)]}
E(4, 3)
= min {[E(2, 2) + e(3, 4)], [E(3, 2) + e(4, 4)]}
E(5, 3)
=
E(4, 4)
= min {[E(3, 3) + e(4, 4)]}
E(5, 4)
= min {[E(3, 3) + e(4, 5)], [E(4, 3) + e(5, 5)]} .
min {[E(2, 2) + e(3, 5)] , . . . . . . , [E(4, 2) + e(5, 5)]}
Come si può facilmente vedere dall’esempio precedente il passare da E(5, 3)
ad E(5, 4) comporta l’aggiunta di un solo passo, a partire da quelli precedenti, in
termini di tabella di errore, si aggiunge una sola colonna composta dai seguenti
termini: E(4, 4), E(5, 4). Quindi il grosso vantaggio a livello computazionale è che
aumentare il numero delle primitive utilizzate nella decomposizione non richiede
di effettuare nuovamente il calcolo della tabella di errore e la distribuzione dei
segmenti della poligonale, ma di riprendere dal passo in cui è stata arrestata la
computazione.
5.6
Considerazioni
L’algoritmo appena descritto fornisce una maggiore flessibilità rispetto agli algoritmi di merge, di split e di split and merge, basati su valutazione locale dell’errore
di approssimazione. Prima di verificare le prestazioni degli stessi, in funzione del
set di curve di prova definito, possiamo dire in prima battuta che il fondamentale
vantaggio nell’utilizzare il DpDecomp consiste nel non dover definire una soglia
di valutazione della bontà delle approssimazioni effettuate. Inoltre l’algoritmo
sviluppato consta di due differenti utilizzi:
• il DpDecomp, che si basa sulla definizione a priori del numero di primitive
della decomposizione e che determina la migliore distribuzione possibile degli
N segmenti costituenti la poligonale negli M archi di cerchio definiti;
• il DpDecomp con M dinamico, che prima determina dinamicamente il numero ottimale delle primitive della decomposizione per la poligonale da descrivere e poi considera la migliore distribuzione possibile degli N segmenti
costituenti la poligonale negli M archi di cerchio individuati.
Una volta definiti questi algoritmi, occorre passare ad una fase di sperimentazione
esaustiva, che consiste nel valutare il loro comportamento in diverse situazioni,
al variare della tipologia di curva utilizzata. Occorre, infatti, valutare l’effettiva
validità degli stessi nei vari casi che si presentano, ad esempio in funzione della
forma e delle dimensioni dell’immagine in esame. In particolare ciò che si vuole
fare è testare il comportamento dei diversi algoritmi nella decomposizione di una
84
5.6 Considerazioni
immagine e confrontarla con il risultato della decomposizione della stessa immagine
corrotta dal rumore (additivo).
Come già detto, parlando delle metriche adottate, il rumore può causare lo
spostamento di uno o più punti che costituiscono la linea poligonale dell’immagine
dalla posizione originaria, compromettendo la decomposizione della stessa. Gli
algoritmi di decomposizione adottati si basano su diverse strategie, e si vuole valutare quale di queste sia meno sensibile al rumore, fornendo ugualmente buoni
risultati quando esso è presente.
Da ciò si evince, come sia fondamentale poter effettuare una rappresentazione
visiva dei risultati delle decomposizioni. Per questo motivo abbiamo realizzato
una rappresentazione grafica degli archi di cerchio con cui è descritta la poligonale,
sovrapponendoli alla stessa, come descritto nell’appendice B. In questo modo è più
semplice effettuare una valutazione dell’efficacia nel processo di decomposizione.
85
CAPITOLO 5. Decomposizione basata su Programmazione Dinamica
86
Capitolo 6
Valutazione degli algoritmi e
conclusioni
Nei capitoli 4 e 5 abbiamo introdotto e descritto gli algoritmi di decomposizione
definiti e sviluppati; ne abbiamo evidenziato i punti di forza e le carenze, nonchè
le differenti strategie di accorpamento dei tratti di poligonale. Arrivati a questo
punto abbiamo a nostra disposizione tutti gli elementi e gli strumenti, per poter
valutare il comportamento degli algoritmi di decomposizione in funzione della conformazione e dimensione delle curve da descrivere. Gli algoritmi proposti saranno
testati in presenza di fonti di rumore, attraverso il confronto delle decomposizioni
prodotte dagli stessi su di un insieme di curve di prova con le decomposizioni
prodotte sulle repliche delle stesse corrotte da rumore additivo. Tale studio è utile
per valutare quanto sia robusta ed affidabile la fase di decomposizione, all’interno
dell’intero processo di riconoscimento di una generica immagine digitale, quando intervengono delle condizioni che distorcono la poligonale che la rappresenta.
Questo aspetto è di notevole importanza per l’intero processo di riconoscimento,
perché una maggiore robustezza del processo di descrizione, in presenza di immagini affette da rumore permette di avere una rappresentazione più fedele e stabile
dell’immagine originale al variare dei disturbi sovrapposti, permettendo al classificatore di svolgere al meglio il proprio lavoro e di fornire risultati attendibili. La
robustezza degli algoritmi di decomposizione può essere intesa come la capacità di
quest’ultimi di assorbire delle variazioni delle forme, che non sono dovute al rumore, ma alle fasi che precedono la decomposizione, come ad esempio, le distorsioni
introdotte dalla fase di thinning e non perfettamente eliminate dalla successiva fase
di pruning. In questo modo è possibile semplificare il lavoro che deve svolgere il
classificatore, ottenendo un riconoscimento attendibile, anche in presenza di distorsioni (non a livelli troppo elevati, da cambiare completamente aspetto alla curva).
Da ciò si intuisce l’importanza degli algoritmi di decomposizione e la necessità di
progettarli in maniera che siano quanto più possibile insensibili a tali disturbi.
87
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
6.1
Definizione del Set di curve di prova
Il passo di validazione degli algoritmi di decomposizione implementati deve essere
basato sulla scelta di un insieme di curve di prova adeguato agli scopi che ci si
propone. In particolare il set di immagini deve racchiudere, quanto più possibile
delle curve con delle caratteristiche che possano far risaltare il comportamento dei
diversi schemi di decomposizione. Si utilizzano, quindi delle immagini di prova
che mettano in risalto il comportamento dei diversi algoritmi in presenza di punti
angolosi e di cambi di concavità, che rappresentano delle tipiche situazioni in cui
essi hanno dei comportamenti differenti e sono testati efficacemente. L’insieme di
curve di prova, appartenenti al primo Set di immagini è riportato in figura 6.1.
Le figure che appartengono a questo insieme possiedono una grande varietà
di caratteristiche (Teh & Chin, 1989) e si prestano molto bene a testare le performance dei quattro algoritmi sviluppati e delle metriche utilizzate. L’insieme è
costituito da curve con andamenti molto regolari ed altre con tratti frastagliati,
più simili ad immagini del mondo reale. In particolare: le curve rappresentate
in figura 6.1 (a), (b) e (c), create da noi mettendo insieme archi di cerchio quasi
perfetti e la curva di figura 6.1 (d), utilizzata da Pei & Horng (1996) e ripresa da
Horng & Li (2001) hanno un andamento abbastanza regolare, con soli punti di
cuspide; la curva di figura 6.1 (e), utilizzata da Pei & Horng (1996) per validare
il proprio algoritmo di approssimazione rappresentante la sintetizzazione di una
foglia ha un andamento molto irregolare e frastagliato; la curva di figura 6.1 (f),
definita da Sheu & Hu (1999), composta da ogni combinazione possibile di punti
di giunzione e da segmenti di diversa lunghezza rappresenta la sintetizzazione della
testa di un gallo.
Oltre all’insieme di curve classiche riportato nella figura 6.1 è stato definito un
ulteriore insieme di immagini sintetiche che saranno presentate nel paragrafo 6.3.
Mediante l’utilizzo del primo set di curve è stato possibile valutare l’andamento e le
prestazioni degli algoritmi implementati, attraverso la comparazione delle diverse
decomposizioni al variare della curva in esame. Il secondo insieme di immagini,
invece è stato utilizzato per caratterizzare il metodo di decomposizione basato
su Programmazione Dinamica al variare dei parametri caratteristici (quali raggio
e centro) delle curve; in particolare è stata analizzata la capacità di descrizione
di quest’ultimo in funzione della modalità di composizione della poligonale che
rappresenta la curva. La fase di sperimentazione sarà dunque articolata in due
frasi:
• nella prima fase si considera il primo set di prova (“Test Set 1 ”) e la
sua versione corrotta dal rumore e si valutano le decomposizioni generate
dagli algoritmi al variare della percentuale di distorsione introdotta ed in
funzione delle diverse metriche adottate. Questo processo consente di ana88
6.1 Definizione del Set di curve di prova
lizzare le performance degli algoritmi in assenza ed in presenza di disturbi e
di confrontare le relative prestazioni;
• nella seconda fase si caratterizza l’algoritmo “DpDecomp” sul secondo insieme di curve (“Test Set 2 ”), confrontando le decomposizioni ottenute al
variare del centro e del raggio degli archi di cerchio e di ellisse che compongono le curve stesse. Tale insieme sarà presentato nel paragrafo 6.3.
(a) test 1
(b) test 2
(c) test 3
(d) test 4
(e) test 5
(f ) test 6
Figura 6.1: Set 1 - Primo Set di curve di prova utilizzate nella sperimentazione.
(a) curva costituita da due semicerchi e da due punti di cuspide; (b) curva con
tre semicerchi, due punti di cuspide più pronunciati ed un punto meno spigoloso;
(c) curva costituita da quatto semicerchi, inglobati in un unico cerchio a raggio maggiore; (d) curva costituita da quattro semicerchi “Testa di Moro”; (e)
rappresentazione poligonale di una foglia Leaf-Shaped ; (f) “Cockhead ”, curva
complessa composta da segmenti di retta, cerchi ed archi di cerchio.
89
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
6.2
Performance degli algoritmi
Il processo di validazione dei quattro algoritmi definiti ed implementati è oggettivamente molto complesso, in quanto occorre considerare diversi fattori, per cercare
di dare una spiegazione univoca e coerente dei risultati ottenuti, ovvero delle decomposizioni delle curve prodotte dagli stessi. Consideriamo, quindi in prima
analisi le decomposizioni delle immagini con errore nullo (ideali), cercando di analizzare il comportamento dei quattro algoritmi in funzione della metrica adottata,
identificando quale tra loro fornisce una decomposizione più fedele.
Il primo passo è quello di verificare il comportamento dei diversi algoritmi e la
robustezza delle metriche adottate per verificare la bontà delle approssimazioni.
Consideriamo, quindi le immagini di prova appartementi al Test Set 1 , non
corrotte dal rumore (ideali), ovvero con rumore nullo sovrapposto ad esse. Le
immagini che costituiscono questo set di prova possono essere suddivise in due
sottoinsiemi, uno contenente figure più regolari, con archi di cerchio quasi perfetti
(Test 1, Test 2, Test 3, Test 4) e l’altro contenente figure più aderenti alla realtà,
che hanno una conformazione più frastagliata, ed un andamento più irregolare
(Test 5, Test 6). L’immagine test 4, pur essendo sintetica, è una via di mezzo tra
il primo ed il secondo sotto-insieme.
Nella fase di sperimentazione seguente si può notare una differenza di comportamento tra le decomposizioni di un’immagine appartenente ad un sottoinsieme
e quelle di un’immagine appartenente all’altro sottoinsieme; ciò consente di descrivere il comportamento dei diversi algoritmi in base all’andamento regolare (o
irregolare) delle immagini. Questa analisi può essere ripetuta anche per le metriche, che esibiscono, anch’esse un comportamento diverso (diverse prestazioni),
a seconda che siano usate per decomporre un’immagine del primo o del secondo
sottoinsieme. Non è, quindi semplice valutare e definire il comportamento degli
schemi di decomposizione; vanno infatti esaminati diversi aspetti, tra cui il comportamento delle metriche al variare della conformazione delle immagini di prova,
quello degli algoritmi e la robustezza rispetto al rumore sovrapposto all’immagine
di prova.
Il punto di partenza per la sperimentazione è la rappresentazione tramite componenti di primo livello (RPL) e la trasformazione nel piano (L, α) dell’immagine
originale e di un certo numero di repliche distorte con un assegnato tasso di distorsione. Si effettua la decomposizione dell’immagine originale con le sue repliche
distorte, utilizzando, uno alla volta, i quattro algoritmi e le tre metriche implementate, ottenendo quindi, per ogni assegnato tasso di distorsione, dodici decomposizioni dell’immagine originale e dodici per la sua replica distorta (per ogni tasso
di distorsione abbiamo 24 decomposizioni). Nel nostro lavoro sono state utilizzate
sei immagini di prova appartenenti al Test Set 1 e cinque repliche distorte per
ciascuna di esse. Per ciascuna immagine digitale originale, sono state considerate
90
6.2 Performance degli algoritmi
le repliche distorte, ottenute prendendo un tasso di distorsione dal 5% al 100% con
passo del 5%, in modo da poter valutare il comportamento dei vari algoritmi in
funzione della quantità di rumore sovrapposto. Per ogni percentuale di rumore si
ha, dunque a disposizione un set composto da sei immagini di prova, da utilizzare
come confronto rispetto al set originale. Di seguito saranno quindi analizzate le
decomposizioni prodotte dagli algoritmi sul Test Set 1 (vedi par. 6.2.1) e sulla
sua versione corrotta dal rumore (vedi par. 6.2.2).
6.2.1
Performance degli algoritmi in assenza di rumore
In questa sezione consideriamo il Test Set 1 (vedi figura 6.1) in assenza di rumore
e verifichiamo la bontà delle decomposizioni prodotte dagli algoritmi, in funzione
delle tre metriche adottate. Per gli algoritmi basati su valutazione dell’errore locale
si è scelto, in maniera euristica, di considerare una soglia pari a cinque, considerando come poligonale di confronto, quella rappresentante un pentagono regolare.
La prima immagine considerata ha un andamento piuttosto regolare e presenta
soltanto due punti angolosi; le sue decomposizioni, ottenute attraverso l’utilizzo
dei quattro metodi di decomposizione ed i tre criteri di approssimazione sviluppati
sono pressochè identiche (vedi figura 6.2 seguente).
(b)
(a)
Figura 6.2: Decomposizione dell’immagine test 1, secondo i quattro criteri di
decomposizione (Merge, Split, Split & Merge, DpDecomp) e secondo i tre criteri di approssimazione (L2 , L∞ , LM S). (a) Decomposizione con Split, Split &
Merge, DpDecomp, con metrica L2 , L∞ ed LM S; (b) Decomposizione con Merge
e metrica L∞ .
Come è semplice osservare dalla precedente figura 6.2, le decomposizioni dell’immagine sono identiche a meno di una lieve differenza per l’algoritmo di Merge,
unitamente con la metrica L∞ , per il quale si generano tre primitive strutturali in
luogo di due. Dalle decomposizioni si osserva che gli altri algoritmi individuano
invece due soli archi di cerchio, i quali danno un’accurata descrizione della curva.
91
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
Sono, inoltre ben evidenziati i due punti angolosi, in corrispondenza dei quali si
passa da un arco di cerchio al successivo.
Considerando le decomposizioni dell’immagine test 2 prodotte dagli algoritmi
si può facilmente notare che il metodo di approssimazione LM S tende, per figure
estremamente regolari come questa e per alcuni degli algoritmi di decomposizione,
a trascurare uno dei tre punti angolosi (quello meno pronunciato) considerandolo
come fonte di rumore.
(a)
(b)
(c)
(d)
(e)
(f )
Figura 6.3: Decomposizione dell’immagine test 2, secondo i quattro criteri di
decomposizione ed i tre criteri di approssimazione. (a) Merge e DpDecomp con
metrica L2 ed L∞ ; Split, Split & Merge, con metrica L2 ; (b) Split e metrica L∞ ;
(c) Split & Merge e metrica L∞ ; (d) Merge e metrica LM S; (e) Split, Split &
Merge e metrica LM S; (f ) DpDecomp e metrica LM S.
92
6.2 Performance degli algoritmi
Come si può facilmente osservare dalla precedente figura 6.3, gli algoritmi di split e
di Split & Merge pur trascurando, con il metodo di approssimazione LM S, il punto
di cuspide meno pronunciato, riescono a discriminare perfettamente i due più rilevanti; si osserva che gli stessi algoritmi forniscono delle decomposizioni non accurate quando utilizzano il criterio di approssimazione L∞ . L’algoritmo DpDecomp,
invece, pur producendo una primitiva strutturale in più rispetto ai precedenti algoritmi, riesce a discriminare perfettamente tutti e tre i punti di cuspide quando si
utilizza il metodo LMS. Inoltre tale algoritmo produce delle decomposizioni fedeli
dell’immagine originale anche con gli altri due criteri di approssimazione (vedi
figura 6.3 (a) e (f )).
Nella seguente figura 6.4 analizziamo il comportamento degli schemi di decomposizione sull’immagine test 3.
(a)
(b)
(c)
(d)
Figura 6.4: Decomposizione dell’immagine test 3, secondo i quattro criteri di
decomposizione ed i tre criteri di approssimazione. (a) Merge e DpDecomp con
metriche L2 , L∞ ed LM S; Split & Merge con metrica L2 ; (b) Split e metrica L∞ ;
(c) Split & Merge e metrica L∞ ; (d) Split e Split & Merge e metrica LM S.
Come si può osservare dalla figura sopra riportata, gli algoritmi DpDecomp e di
Merge producono la stessa decomposizione indipendentemente dal criterio di approssimazione utilizzato. Inoltre la descrizione dell’immagine risulta estremamente
fedele alla stessa. Gli altri due schemi di decomposizione producono, invece una
decomposizione che varia in funzione del tipo di metrica impiegata; L’algoritmo di
93
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
Split & Merge comunque genera una descrizione fedele della curva quando è utilizzata la metrica L2 . Dall’analisi del primo sottoinsieme di curve (con caratteristiche
molto regolari) appartenente al test set 1, si nota come l’algoritmo DpDecomp fornisca delle decomposizioni fedeli della curva da descrivere. Le decomposizioni fornite dallo stesso sono indipendenti dal tipo di metrica utilizzata nella valutazione
dell’errore di approssimazione. L’algoritmo di Split & Merge appare anche esso
robusto su questo tipo di curve, anche se legato al criterio di approssimazione ed
al valore scelto per la soglia.
Per avvalorare queste considerazioni passiamo ora all’immagine sintetica test
4, che rappresenta una via di mezzo tra i due sotto-insiemi di curve appartenenti
al test set 1.
(a)
(b)
(c)
(d)
(e)
(f )
Figura 6.5: Decomposizione dell’immagine test 4. (a) Merge con metrica L2 ;
(b) Merge e metrica L∞ ; (c) Merge e metrica LM S; (d) Split e Split & Merge e
metrica L2 ; (e) Split con metrica LM S; (f ) Split & Merge con metrica LM S.
94
6.2 Performance degli algoritmi
Dalla figura 6.5 si nota come l’algoritmo di Split & Merge sia robusto ed efficace
nella decomposizione di tale curva. Si osserva nuovamente che le decomposizioni
prodotte dagli algoritmi basati su valutazione locale dell’errore producono delle
decomposizioni diverse in funzione delle metriche adottate. In particolare l’algoritmo di Merge, data la modalità sequenziale di procedere genera una eccessiva
segmentazione della curva, nella descrizione prodotta; esso porta all’individuazione
di un numero eccessivo di archi approssimanti, benchè la curva possa essere ben
approssimata con un numero minore. Gli algoritmi di Split e Split & Merge,
unitamente con la metrica L2 generano una rappresentazione fedele dell’immagine
originale, anche se con una primitiva strutturale in più rispetto a quelle necessarie.
Nella seguente figura 6.6 è possibile apprezzare le decomposizioni prodotte dall’algoritmo DpDecomp.
(a)
(b)
Figura 6.6: Decomposizione dell’immagine test 4, secondo il criterio DpDecomp
ed i tre criteri di approssimazione. (a) DpDecomp con metrica L2 ed L∞ ; (b)
DpDecomp con metrica LM S.
L’algoritmo DpDecomp genera una descrizione fedele della curva test 4, rappresentando la stessa con sole quattro primitive strutturali (quattro archi di cerchio),
nel caso di metrica L2 ed L∞ . Con la metrica LM S, pur individuando il numero
corretto di primitive da considerare, l’algoritmo non riesce a discriminare due dei
punti di cuspide, considerandoli come fonte di rumore. Questa caratteristica è
strettamente legata al criterio di approssimazione LM S. In definitiva possiamo
affermare che per questo tipo di curva, l’algoritmo DpDecomp fornisce un’adeguata decomposizione della stessa, generando delle caratteristiche strutturali che ben
la rappresentano.
Passiamo ora all’analisi delle due curve con andamento molto più irregolare e
frastagliato, appartenenti al secondo sottoinsieme del Test set 1. Nella seguente
figura 6.7 riportiamo la decomposizione dell’immagine test 5.
95
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
(a)
(b)
(c)
(d)
(e)
(f )
Figura 6.7: Decomposizione dell’immagine test 5, secondo i criteri di decomposizione ed i tre criteri di approssimazione. (a) Merge con metrica L2 ; (b) Merge
con metrica LM S; (c) Split & Merge con metrica L2 ; (d) Split & Merge con
metrica LM S; (e) DpDecomp con metrica L2 ; (f ) DpDecomp con metrica LM S.
96
6.2 Performance degli algoritmi
Gli algoritmi di Merge e di Split producono, per questi tipi di curve, una segmentazione eccessiva della stessa. L’algoritmo di Split & Merge fornisce delle decomposizioni accurate, soprattutto quando sono utilizzati i criteri di approssimazione L∞
ed LM S. Tali metodi di approssimazione sono infatti molto più robusti quando
sono utilizzati su curve più frastagliate e molto più aderenti alla realtà. L’algoritmo DpDecomp genera delle decomposizioni accurate con tutti e tre i criteri di
approssimazione considerati; esso fornisce, inoltre una decomposizione migliore e
meno segmentata rispetto ai precedenti algoritmi, generando una descrizione con
quindici primitive strutturali.
(a)
(b)
(c)
(d)
Figura 6.8: Decomposizione dell’immagine test 6, secondo i criteri di decomposizione ed i metodi di approssimazione. (a) Split & Merge con metrica L2 ; (b)
DpDecomp con metrica L2; (c) Split & Merge con metrica LM S; (d) DpDecomp
con metrica LM S.
Come si può osservare dalle curve riportate nella precedente figura 6.8, gli algoritmi di Split & Merge e DpDecomp producono delle decomposizione accurate. Il
metodo DpDecomp permette, inoltre di ottenere un adeguato compromesso tra
accurata descrizione e sinteticità della rappresentazione, fornendo una decompo97
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
sizione in sole tredici (13) primitive strutturali. L’algoritmo di Split & Merge
produce, invece una maggiore segmentazione della stessa.
Dalle sperimentazioni effettuate sul Test set 1 si evince che, tra gli algoritmi di decomposizione basati su valutazione dell’errore locale, il più efficiente
è quello di Split & Merge. Tale algoritmo genera una decomposizione accurata
dell’immagine originale, trovando un buon compromesso tra accurata descrizione
e sinteticità della rappresentazione. Gli algoritmi di Merge e Split producono, invece delle decomposizioni formate da un numero eccessivo di primitive strutturali
rispetto a quelle necessarie per ottenere una adeguata rappresentazione della stessa. Le prestazioni di tali algoritmi sono state valutate utilizzando una soglia di
confronto pari a cinque, ovvero prendendo come poligonale di riferimento, quella
relativa ad un pentagono. Dalle decomposizioni ottenute variando il valore della
soglia utilizzata si è arrivati, infatti alla conclusione che, per curve estremamente
regolari non si hanno grossi cambiamenti nelle decomposizioni all’aumentare della
stessa, mentre per figure irregolari è preferibile utilizzare la soglia relativa ad un
pentagono regolare.
Per quanto concerne l’algoritmo di decomposizione DpDecomp, l’analisi effettuata consente di affermare che esso genera delle rappresentazioni delle curve
estremamente fedeli alle immagini originali. Tale criterio è in grado sia di determinare il numero essenziale di primitive strutturali necessarie per una accurata
descrizione, sia di definire la posizione dei break-point, in corrispondenza dei quali
si passa da un arco di cerchio (o segmento di retta) al successivo.
Per poter avvalorare tali considerazioni passiamo ad analizzare le decomposizioni
generate in presenza di rumore. La fase di sperimentazione proseguirà soffermando
la nostra attenzione sugli algoritmi di Split & Merge e DpDecomp.
6.2.2
Performance degli algoritmi in presenza di rumore
Per poter testare gli algoritmi di decomposizione occorre creare delle immagini di
prova corrotte dal rumore e confrontare le decomposizioni ottenute su di esse con
quelle delle immagini di prova originali (non distorte). La fase di validazione degli
algoritmi consiste, dunque nella sequenza di passi di seguito descritti:
1. definizione e rappresentazione dell’immagine di prova originale (appartenente
al Test Set 1 );
2. introduzione del rumore per creare delle repliche distorte delle immagini di
prova appartenenti al test set 1;
3. decomposizione dell’immagine originale e della sua replica distorta, in fun98
6.2 Performance degli algoritmi
zione dei diversi algoritmi di decomposizione, e dei diversi metodi di approssimazione;
4. comparazione tra le diverse decomposizioni ottenute.
Il punto di partenza dovrebbe essere la rappresentazione poligonale delle immagini
di prova. La creazione delle repliche distorte del set di immagini di prova dovrebbe
ottenersi attraverso lo spostamento delle coordinate dei punti che costituiscono la
poligonale di una quantità pari alla percentuale di rumore introdotto, generato in
maniera casuale:
∆Xrumore = ρ · percentuale rumore · Lx;
∆Y rumore = ρ · percentuale rumore · Ly;
dove ρ è una quantità casuale, generata in base ad una densità di probabilità
uniforme nell’intervallo [−0.5, 0.5] ed LX e LY sono rispettivamente la lunghezza
totale della curva in X ed in Y .
L’aspetto importante, nell’introduzione del rumore è quello di non modificare
completamente la curva, per conservare una certa similitudine tra immagine di
prova e replica distorta (corrotta dal rumore). Si è, pertanto deciso di non partire
dalla rappresentazione poligonale dell’immagine originale, ma bensı̀ dalla sua rappresentazione nel piano trasformato (L, α).
Partendo dal piano (L, α) si sposta ogni singolo tratto della trasformata dell’immagine in esame andandogli a sommare un rumore casuale generato nell’intervallo
[−0.5, 0.5] moltiplicato per una percentuale di distorsione fissata. Si ottengono in
questo modo delle repliche distorte in (L, α), con vari tassi di distorsione, dell’immagine suddetta. Definita:
∆Lrumore
=
ρ · percentuale rumore · L;
∆αrumore
=
ρ · percentuale rumore · α.
la percentuale di distorsione da introdurre su ogni singolo tratto (per ogni tasso
di rumore considerato), la replica distorta di un generico tratto è data da:
Li
= Li + ∆Lrumore;
αi
= αi + ∆αrumore.
99
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
Una volta ottenuta la replica distorta della rappresentazione in (L, α) di una immagine appartenente al Test Set 1 si ripassa al piano cartesiano (x, y) per ottenerne una rappresentazione in termini di poligonale, ovvero di RPL, applicando
una trasformazione inversa:
(L, α) −→ (x, y).
In questa sezione consideriamo il Test Set 1 affetto da rumore, verificando la
differenza di comportamento tra le decomposizioni prodotte dagli algoritmi su di
esso e quelle prodotte dagli stessi sul set originale. Le percentuali di errore considerate vanno dal 5% al 100%, con passo del 5%; sono state considerate cinque
delle repliche distorte cosı̀ ottenute.
Per quanto riguarda l’immagine test 1, si ottiene una decomposizione unica
per tutte le percentuali di errore, con identiche prestazioni rispetto al rumore per
entrambi gli algoritmi e per tutte le metriche adottate (vedi figura seguente).
(a)
(b)
Figura 6.9: Decomposizione dell’immagine test 1 affetta da rumore, con tasso
del 100%. (a) Split & Merge con metrica L2 , L∞ ed LM S; (b) DpDecomp con
metrica L2 , L∞ ed LM S.
Di seguito consideriamo invece l’immagine sintetica test 4 con varie percentuali
di rumore sovrapposto e valutiamo il comportamento dei due algoritmi, anche in
funzione dei criteri di approssimazione.
Dalla figura 6.10 si osserva facilmente che il criterio di approssimazione LM S
produce una minore segmentazione della curva sia nella parte superiore che inferiore della stessa, fornendo una decomposizione che è molto più simile a quella
100
6.2 Performance degli algoritmi
prodotta nel caso di curva (ideale) non rumorosa. Lo stesso comportamento, anche se con lievi differenze è riscontrato per la metrica L∞ , mentre la metrica L2
fornisce una decomposizione abbastanza differente rispetto a quella della curva
ideale e molto frammentata. L’algoritmo di Split & Merge è più sensibile al rumore rispetto al criterio DpDecomp e produce una segmentazione maggiore nella
decomposizione delle repliche distorte dell’immagine test 4.
(a) rumore al 50%
(b) rumore al 50%
(c) rumore al 50%
(d) rumore al 50%
(e) rumore al 100%
(f ) rumore al 100%
Figura 6.10: Immagine test 4 affetta da rumore, con tasso del 50% e del 100%.
(a) Split & Merge con metrica L2 ; (b) Split & Merge con metrica L∞ ; (c) Split
& Merge con metrica LM S; (d) DpDecomp con metrica L2 , L∞ ed LM S; (e)
Split & Merge con metrica L2 ; (f ) DpDecomp con metrica L2 .
Nella seguente figura 6.11 riportiamo le decomposizioni ottenute sulla replica distorta con tasso di rumore del 40% dell’immagine test 5.
101
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
(a)
(b)
(c)
(d)
(e)
(f )
Figura 6.11: Immagine test 5 affetta da rumore, con tasso del 40%. (a) Split &
Merge con metrica L2 ; (b) Split & Merge con metrica L∞ ; (c) Split & Merge con
metrica LM S; (d) DpDecomp con metrica L2 ; (e) DpDecomp con metrica L∞ ;
(f ) DpDecomp con metrica LM S.
Le decomposizioni ottenute su tale immagine danno chiara evidenza della robustezza dei due algoritmi utilizzati. Le decomposizioni effettuate utilizzando le metriche
L2 ed LM S originano una minore segmentazione della curva in accordo con il fatto che tali criteri di approssimazione hanno un comportamento migliore quando
sono applicati nella descrizione di curve irregolari e frastagliate. Sia gli algoritmi
che le metriche L2 ed LM S mostrano una maggiore insensibilità a fonti di rumore
sovrapposto all’immagine originale.
102
6.3 Caratterizzazione dell’algoritmo DpDecomp
6.3
Caratterizzazione dell’algoritmo DpDecomp
In questa sezione è effettuata la caratterizzazione dell’algoritmo di decomposizione
basato su programmazione dinamica (“DpDecomp”). A tale scopo è stato definito un ulteriore insieme di figure attraverso la combinazione di archi di cerchio e di
ellisse, ottenuti utilizzando gli algoritmi di Bresenham (1965). La descrizione di
tali algoritmi è riportata nell’appendice A, insieme con la metodologia utilizzata
per ottenere la composizione delle curve. Consideriamo il Test Set 2 (vedi figura
6.12 seguente) in assenza di rumore, valutando le prestazioni di tale algoritmo.
(a) test 7
(b) test 8
(c) test 9
(d) test 10
(e) test 11
(f ) test 12
Figura 6.12: Test Set 2 - Secondo Set di curve utilizzate nella fase di caratterizzazione dell’algoritmo “DpDecomp”. (a) test 7 topolino; (b) test 8 topolino;
(c) test 9 5 Cerchi; (d) test 10 Cerchio&Ellissi; (e) test 11 Cerchio&Ellissi; (f)
test 12 3 Cerchi.
103
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
Di seguito effettueremo la decomposizione di tali curve in funzione del criterio di
approssimazione L2 , verificando la robustezza dell’algoritmo DpDecomp.
Le prime due curve considerate sono l’immagine test 7 e l’immagine test 8. Le
decomposizioni sono riportate nella seguente figura 6.13.
(a)
(b)
Figura 6.13: Decomposizione con algoritmo DpDecomp e metrica L2 .
immagine test 7 (b) immagine test 8.
(a)
Come si osserva facilmente, l’algoritmo DpDecomp è in grado di discriminare perfettamente i due cerchi a raggio più piccolo rispetto a quello di raggio maggiore;
esso produce, inoltre una decomposizione accurata delle due curve. Per quanto
riguarda la curva test 8, essa è stata ottenuta dalla precedente variando il raggio
ed il centro dei due cerchi più piccoli; la decomposizione è ancora composta da
quattro primitive strutturali. Se quindi consideriamo la seconda curva come una
variazione della prima a causa di fondi di rumore, possiamo affermare che l’algoritmo di decomposizione è estremamente robusto rispetto ad esso riuscendo a
discriminare fino al raggio minimo dei cerchi minori.
(a)
(b)
Figura 6.14: Decomposizione con algoritmo DpDecomp e metrica L2 .
immagine test 9 ; (b) immagine test 12.
104
(a)
6.4 Conclusioni
(a)
(b)
Figura 6.15: Decomposizione con algoritmo DpDecomp e metrica L2 .
immagine test 10 ; (b) immagine test 11.
(a)
Le curve riportate nelle precedenti figure 6.14 e 6.15 alternano punti di cuspide
molto pronunciati a tratti moto regolari. Le decomposizioni ottenute con l’algoritmo DpDecomp riescono a seguire perfettamente tali andamenti. In particolare
si può osservare come l’algoritmo riesca ad identificare bene sia i tratti regolari,
approssimandoli con un unico arco di cerchio, sia i punti di cuspide, in corrispondenza dei quali interrompe l’accorpamento dei tratti di poligonale.
6.4
Conclusioni
Come detto in precedenza, non è stato semplice trarre delle conclusioni di carattere generale, in quanto si è dovuto tenere conto, oltre che degli algoritmi di
decomposizione, anche dei criteri di approssimazione e della scelta della soglia più
opportuna.
Nel valutare la robustezza degli algoritmi, si è dimostrato che Split & Merge e
DpDecomp sono i più robusti ed efficienti. L’algoritmo di Merge, fornisce ugualmente buone prestazioni per curve regolari, ma genera decomposizioni con un
eccessivo numero di archi approssimanti per curve più complesse, a causa della
sequenzialità della tecnica di accorpamento sulla quale si basa. L’algoritmo di
Split invece, presenta dei problemi in corrispondenza di cambi di concavità della
curva; in corrispondenza del cambio di concavità il tratto di poligonale successivo
è segmentato in tutti i segmenti che lo compongono.
Alcune considerazioni possono essere fatte anche sulla scelta della soglia utilizzata
per gli algoritmi basati su valutazione dell’errore locale. Nella sperimentazione è
stata considerata la soglia di un pentagono, di un esagono e di un eptagono. La
soglia più indicata è risultata quella del pentagono, che fornisce buone prestazioni
105
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
sia per figure irregolari, sia per quelle con variazioni molto lente. Per figure
frastagliate, se si passa ad un valore più alto per la stessa si ottiene una segmentazione eccessiva della curva, mentre per figure regolari si ottengono le stesse
prestazioni.
Effettuiamo ora delle considerazioni sui risultati ottenuti valutando l’algoritmo
DpDecomp. Nel presentare tale criterio sono stati evidenziati i limiti degli altri
criteri di decomposizione. Il principale problema che essi presentano è la necessità
di definire una soglia di comparazione per valutare se un arco di cerchio γi:j si
presta bene ad approssimare un tratto di poligonale Pi:j . La necessità di adottare
una soglia è legata al fatto che la valutazione della bontà delle approssimazioni
effettuate è limitata al singolo tratto di poligonale. L’adozione di una soglia implica una dipendenza dal criterio di approssimazione utilizzato. Le sperimentazioni
effettuate sui due insiemi di curve hanno avvalorato tali considerazioni, in quanto nella maggioranza dei casi, le decomposizioni erano fortemente dipendenti dal
metodo di approssimazione utilizzato. Le prestazioni sono quindi migliori o peggiori a seconda che si considerano delle curve regolari o frastagliate.
L’algoritmo basato su programmazione dinamica non utilizza alcuna soglia e come
si è visto dalle decomposizioni effettuate, le sue prestazioni sono pressochè indipendenti dal tipo di metrica impiegato. Il grosso vantaggio di tale metodo risiede
infatti nel non essere legato a nessun vincolo ed in particolare alla tipologia della
curva su cui esso è applicato. L’anali delle decomposizioni prodotte dallo stesso ha
portato alla conclusione che è in grado sia di individuare il numero M ottimo di
primitive strutturali (ovvero archi di cerchio e segmenti di retta) da considerare,
sia di individuare i break-point in corrispondenza dei quali occorre passare da una
primitiva alla successiva.
Per quanto riguarda il rumore sovrapposto alle curve, gli algoritmi di Split
& Merge e DpDecomp sono robusti rispetto ad esso, e si ottengono delle buone
decomposizioni anche all’aumentare di quest’ultimo.
Il discorso sul migliore criterio di approssimazione è più complesso, in quanto
vanno esaminati diversi aspetti, tra cui la conformazione delle curve da descrivere.
Dalle sperimentazioni si è osservato che la metrica L2 è molto robusta e produce
decomposizioni efficienti, sia nel caso di curve regolari, con archi quasi perfetti e
con variazioni molto lente, sia con curve fortemente irregolari e frastagliate. I criteri L∞ ed LM S, hanno un comportamento molto robusto quando sono applicate
per la decomposizione di quest’ultime. Per curve regolari, invece le prestazioni
di queste due metriche decadono leggermente, in quanto, aumentando il rumore
tendono a considerare un eventuale punto di cambio di concavità come un punto
rumoroso, non spezzando l’accorpamento in corrispondenza di quest’ultimo.
106
6.4 Conclusioni
Andando poi a considerare il rumore sovrapposto alle curve di prova, si nota una lieve perdita di prestazioni del metodo di approssimazione L2 su curve
frastagliate ed irregolari ed un aumento per curve più regolari, pur rimanendo sufficientemente affidabile anche nel primo caso. Per curve irregolari si nota un buon
comportamento dei criteri L∞ ed LM S, soprattutto all’aumentare del rumore
sovrapposto, purchè si mantenga a livelli accettabili.
107
CAPITOLO 6. Valutazione degli algoritmi e conclusioni
108
Appendice A
Costruzione del Set di curve
di prova (“Test Set 2 ”)
Di seguito illustreremo la metodologia utilizzata per generare il secondo Set di
immagini utilizzato nella fase di sperimentazione e di validazione degli algoritmi e
delle tecniche di descrizione introdotti.
L’obiettivo primario della creazione di questo secondo insieme è quello di poter
generare diverse versioni della stessa tipologia di curva, semplicemente variando
alcuni parametri caratteristici utilizzati nella generazione delle stesse. Le immagini
di prova appertenenti a questo insieme sono state, infatti generate dalla combinazione di cerchi e di ellissi con differente raggio e curvatura, che ci consentono
di ottenere una rappresentazione digitale della curva da descrivere. Attraverso la
variazione dei parametri utilizzati per ottenere cerchi ed ellissi è possibile ottenere
diverse istanze di una stessa curva, proprio come avviene nel font di un testo, in
cui uno stesso carattere può avere diverse rappresentazioni in termini di matrici
di pixel.
Lo scopo della realizzazione di queste tipologie di immagini è quello di verificare
il comportamento delle diverse tecniche di decomposizione su istanze differenti di
una stessa tipologia di curva, per verificare la ripetibilità, l’attendibilità e l’affidabilità di una descrizione effettuata dagli stessi. Nel paragrafo A.1 sarà descritto
l’algoritmo di generazione in digitale di un cerchio, a partire dalle coordinate del
centro e dal raggio, mentre nel paragrafo A.2 sarà esplicata la tecnica di generazione di un ellisse, a partire dalle coordinate del centro e dai raggi. Infine nel
paragrafo A.3 si descrive in dettaglio il metodo utilizzato per la generazione delle
curve, al variare dei parametri caratteristici.
109
CAPITOLO A. Costruzione del Set di curve di prova (“Test Set 2 ”)
A.1
Fast Circle Drawing
Un cerchio può essere rappresentato usando una matrice discreta di pixel, dove
ogni pixel è costituito da coordinate di interi, utilizzando la seguente equazione:
x2 + y 2 = r2 ;
(A.1)
Solitamente, quando si rappresenta un cerchio, si disegnano dei punti di coordinate
P (xi , yi ), i quali non soddisfano esattamente il cerchio definito dall’equazione A.1.
Assumendo che xi sia accurato, la coordinata
y di P che rappresenta il punto
p
del cerchio, secondo l’equazione A.1 è: r2 − x2i , ma la risoluzione della seguente
espressione:
q
√
r2 + yi2 − r2
ci dice che il punto P si trova al di fuori del cerchio (Bresenham, 1977). Occorre,
quindi determinare dei termini di correzione, basandosi sulla misura di errore fornita dalla seguente equazione:
¯ 2
¯
¯xi + yi2 − r2 ¯ .
(A.2)
È, quindi possibile definire una funzione che rappresenti la misura di errore per
ognuno dei punti che costituisce il cerchio, mediante la seguente equazione:
¯
¯
RadiusError(xi , yi ) = ¯x2i + yi2 − r2 ¯ .
(A.3)
La rappresentazione del cerchio è realizzata seguendo lo stesso ordine che presentano le seguenti equazioni parametriche:
x =
cos(t);
y
sin(t).
=
Si necessita, dunque della definizione di altre due quantità, necessarie per incrementare e decrementare le coordinate xi e yi . In particolare definiamo:
XChange
= (1 − 2xi );
Y Change
= (2yi + 1).
110
A.1 Fast Circle Drawing
Di seguito (Algoritmo 7) riportiamo la descrizione dell’algoritmo utilizzato per
disegnare i cerchi nel piano digitale, utilizzati nella fase di sperimentazione.
Cx , Cy ed R indicano rispettivamente le coordinate del centro ed il raggio del
cerchio.
Algorithm 7 Plotcircle - Realizzazione di cerchi nel piano digitale
Input: (Cx , Cy ) centro del cerchio; R raggio del cerchio;
Output: A matrice contenente le coordinate dei punti del cerchio.
X = R;
Y = 0;
XChange = 1 − 2 ∗ R;
Y Change = 1;
RadiusError = 0;
while X ≥ Y do
A(Cx + X, Cy + Y ) = 0;
A(Cx − X, Cy + Y ) = 0;
A(Cx − X, Cy − Y ) = 0;
A(Cx + X, Cy − Y ) = 0;
A(Cx + Y, Cy + X) = 0;
A(Cx − Y, Cy + X) = 0;
A(Cx − Y, Cy − X) = 0;
A(Cx + Y, Cy − X) = 0;
Y = Y + 1;
RadiusError = RadiusError + Y Change;
Y Change = Y Change + 2;
if (2 ∗ RadiusError + XChange) > 0 then
X = X − 1;
RadiusError = RadiusError + XChange;
XChange = XChange + 2;
end if
end while
return A /*Restituisco in uscita la matrice contenente le coordinate dei
punti che compongono il cerchio.*/
Il cerchio è disegnato effettuando una suddivisione in ottanti del piano (x, y)
e determinando i punti compresi nei 45◦ , per ognuno di essi. In questo modo si
riesce a mantenere la simmetria del cerchio.
111
CAPITOLO A. Costruzione del Set di curve di prova (“Test Set 2 ”)
A.2
Fast Ellipse Drawing
Una ellissi può essere rappresentata usando una griglia discreta di pixel, dove ogni
pixel è costituito da coordinate di interi, utilizzando la seguente equazione:
x2
y2
+
= 1.
a2
b2
(A.4)
Solitamente, quando si rappresenta una ellissi si disegnano dei punti di coordinate
P (xi , yi ), i quali non soddisfano esattamente l’equazione A.4. È, quindi possibile
definire una funzione che rappresenti la misura di errore per ognuno dei punti che
costituisce l’ellissi, mediante la seguente equazione:
¯
¯
EllipseError(xi , yi ) = ¯b2 · x2i + a2 · yi2 − b2 · a2 ¯
(A.5)
Al contrario del cerchio, la rappresentazione dell’ellisi è ottenuta suddividendo
il piano cartesiano (x, y) di riferimento in quadranti, in quanto il criterio adottato
per interrompere la sequenza dei punti è determinato dalla pendenza della tangente
all’ellisse stessa (van Aken, 1984).
Come per il cerchio determiniamo altre due quantità necessarie per incrementare e decrementare le coordinate xi e yi . In particolare definiamo:
XChange
= b2 · (1 − 2xi );
Y Change
= a2 · (2yi + 1).
Definiamo, inoltre altri due valori StoppingX e StoppingY, necessari per determinare il valore iniziale e quello finale per la generazione dei due insiemi di punti
appartenenti all’ellisse, attraverso la seguente equazione:
StoppingX
= 2 · b2 · xi ;
StoppingY
= 2 · a2 · yi .
Di seguito (Algoritmo 8) riportiamo la descrizione dell’algoritmo utilizzato per
disegnare le ellissi nel piano digitale, utilizzati nella fase di sperimentazione.
Cx e Cy indicano le coordinate del centro dell’ellisse, mentre XRadius Y Radius
rappresentano rispettivamente il raggio orizzontale e verticale della stessa.
112
A.2 Fast Ellipse Drawing
Algorithm 8 PlotEllipse - Realizzazione di ellissi nel piano digitale
Input: (Cx , Cy ) centro dell’ellisse; XRadius e YRadius raggi dell’ellisse;
Output: A matrice contenente le coordinate dei punti dell’ellisse.
T woASquare = 2 ∗ XRadius ∗ XRadius;
T woBSquare = 2 ∗ Y Radius ∗ Y Radius;
X = XRadius;
Y = 0;
XChange = Y Radius ∗ Y Radius ∗ (1 − 2 ∗ XRadius);
Y Change = XRadius ∗ XRadius;
EllipseError = 0;
StoppingY = 0;
StoppingX = T woBSquare ∗ XRadius;
while (StoppingX ≥ StoppingY ) do
A(Cx + X, Cy + Y ) = 0; A(Cx − X, Cy + Y ) = 0;
A(Cx − X, Cy − Y ) = 0; A(Cx + X, Cy − Y ) = 0;
Y = Y + 1;
StoppingY = StoppingY + T woAsquare;
EllipseError = EllipseError + Y Change;
Y Change = Y Change + T woAsquare;
if (2 ∗ EllipseError + XChange) > 0 then
X = X − 1;
StoppingX = StoppingX + T woBsquare;
EllipseError = EllipseError + XChange;
XChange = XChange + T woBsquare;
end if
end while
X = 0; Y = Y Radius;
XChange = Y Radius ∗ Y Radius;
Y Change = XRadius ∗ XRadius ∗ (1 − 2 ∗ Y Radius);
EllipseError = 0;
StoppingX = 0;
StoppingY = T woASquare ∗ Y Radius;
while (StoppingX ≤ StoppingY ) do
A(Cx + X, Cy + Y ) = 0; A(Cx − X, Cy + Y ) = 0;
A(Cx − X, Cy − Y ) = 0; A(Cx + X, Cy − Y ) = 0;
X = X + 1;
StoppingX = StoppingX + T woBsquare;
EllipseError = EllipseError + XChange;
XChange = XChange + T woBsquare;
if (2 ∗ EllipseError + Y Change) > 0 then
Y = Y − 1;
StoppingY = StoppingY + T woAsquare;
EllipseError = EllipseError + Y Change;
Y Change = Y Change + T woAsquare;
end if
end while
113
CAPITOLO A. Costruzione del Set di curve di prova (“Test Set 2 ”)
A.3
Generazione del Set di immagini di prova
Il secondo Set di immagini utilizzate nella fase di validazione degli algoritmi di
decomposizione è ottenuto dalla combinazione di cerchi e di ellissi attraverso l’utilizzo dell’algoritmo 7 e dell’algoritmo 8 definiti da Bresenham (1977). In figura
6.12 è riportato il secondo set di immagini di prova, ottenuto attraverso l’utilizzo
degli algoritmi di Bresenham ed utilizzato per la caratterizzazione dell’algoritmo
di decomposizione basato su programmazione dinamica (DpDecomp).
A.3.1
Immagine Test 7
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2 ; (Cx , Cy )3 , R3 ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(30, 30); /* Matrice 30 × 30 di uno */
• [A] = plotcircle(A, 15, 10, 6); /* Costruzione del cerchio con raggio 6 */
• [A] = plotcircle(A, 21, 15, 2); /* Costruzione del cerchio con raggio 2 */
• [A] = plotcircle(A, 21, 5, 2); /* Costruzione del cerchio con raggio 2 */
Nome della curva di prova:
• test 7 topolino.
A.3.2
Immagine Test 8
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2 ; (Cx , Cy )3 , R3 ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(30, 30); /* Matrice 30 × 30 di uno */
• [A] = plotcircle(A, 15, 10, 6); /* Costruzione del cerchio con raggio 6 */;
• [A] = plotcircle(A, 20, 14, 1); /* Costruzione del cerchio con raggio 1 */;
114
A.3 Generazione del Set di immagini di prova
• [A] = plotcircle(A, 20, 6, 1); /* Costruzione del cerchio con raggio 1; */
Nome della curva di prova:
• test 8 topolino.
A.3.3
Immagine Test 9
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2 ; (Cx , Cy )3 , R3 ; (Cx , Cy )4 , R4 ; (Cx , Cy )5 ,
R5 ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(20, 20); /* Matrice 20 × 20 di uno */
• [A] = plotcircle(A, 15, 10, 7); /* Costruzione del cerchio con raggio 7 */
• [A] = plotcircle(A, 10, 5, 2); /* Costruzione del cerchio con raggio 2 */
• [A] = plotcircle(A, 20, 5, 2); /* Costruzione del cerchio con raggio 2 */
• [A] = plotcircle(A, 10, 15, 2); /* Costruzione del cerchio con raggio 2 */
• [A] = plotcircle(A, 20, 15, 2); /* Costruzione del cerchio con raggio 2 */
Nome della curva di prova:
• test 9 5Cerchi.
A.3.4
Immagine Test 10
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2x , R2y ; (Cx , Cy )3 , R3x , R3y ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(30, 30); /* Matrice 30 × 30 di uno */
• [A] = plotcircle(A, 15, 10, 6); /* Costruzione del cerchio con raggio 6 */
• [A] = plotEllipse(A, 20, 6, 4, 1); /*Costruzione dell’ellisse con raggi 4 ed 1*/
115
CAPITOLO A. Costruzione del Set di curve di prova (“Test Set 2 ”)
• [A] = plotEllipse(A, 20, 14, 4, 1); /*Costruzione dell’ellisse con raggi 4 ed 1*/
Nome della curva di prova:
• test 10 Cerchio&Ellissi.
A.3.5
Immagine Test 11
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2x , R2y ; (Cx , Cy )3 , R3x , R3y ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(30, 30); /* Matrice 30 × 30 di uno */
• [A] = plotcircle(A, 15, 15, 7); /* Costruzione del cerchio con raggio 7 */
• [A] = plotEllipse(A, 16, 8, 4, 2); /*Costruzione dell’ellisse con raggi 4 e 2*/
• [A] = plotEllipse(A, 16, 22, 4, 2); /*Costruzione dell’ellisse con raggi 4 e 2*/
Nome della curva di prova:
• test 11 Cerchio&Ellissi.
A.3.6
Immagine Test 12
Ingresso: (Cx , Cy )1 , R1 ; (Cx , Cy )2 , R2 ; (Cx , Cy )3 , R3 ;
Uscita: A - Matrice contenente le coordinate dei punti costituenti l’immagine
generata;
Procedimento:
• A = ones(18, 18); /* Matrice 18 × 18 di uno */
• [A] = plotcircle(A, 10, 9, 3); /* Costruzione del cerchio con raggio 3 */
• [A] = plotcircle(A, 10, 14, 2); /* Costruzione del cerchio con raggio 2 */
• [A] = plotcircle(A, 10, 4, 2); /* Costruzione del cerchio con raggio 2 */
Nome della curva di prova:
• test 12 3Cerchi.
116
Appendice B
Rappresentazione in archi di
cerchio
Partendo da una rappresentazione (RPL), costituita da componenti di primo livello (segmenti - CPL), attraverso il processo di decomposizione si arriva ad una
rappresentazione (RSL), fatta in termini di componenti di secondo livello (archi
di cerchio CSL). Quindi data una poligonale P1:N , costituita da N segmenti, una
volta determinata la sua decomposizione ΓM
1:N (nel piano trasformato (L, α)), devono essere raffigurati gli archi di cerchio γi:j approssimanti ciascuna porzione di
poligonale Pi:j costituente la stessa nel piano (x, y). Occorre dunque effettuare
una trasformazione inversa che converta le rette approssimanti (ottenute nel piano
(L, α)) in archi di cerchio nel piano cartesiano.
Lo scopo di questa sezione è di descrivere più dettagliatamente la parte relativa
alla costruzione di tali archi di cerchio. In particolare sarà descritta la fase di
determinazione dei parametri caratteristici degli stessi.
B.1
Visualizzazione degli archi di cerchio
Come già ampiamente descritto nei capitoli precedenti lo scopo del nostro lavoro
di tesi è di definire e di validare degli algoritmi di decomposizione di curve digitali,
cercando di operare un confronto tra le decomposizioni di un’immagine e della sua
versione distorta (corrotta dal rumore). Siamo partiti da una rappresentazione
poligonale dell’immagine originale, abbiamo determinato una sua trasformazione
in un piano (L, α), capace di eliminare ogni relazione geometrica tra i segmenti che la compongono ed attraverso una serie di elaborazioni siamo arrivati alla
decomposizione dell’immagine.
L’insieme di partenza era quindi costituito da componenti di primo livello
(CPL), mentre il risultato della decomposizione è un insieme di componenti di
117
CAPITOLO B. Rappresentazione in archi di cerchio
secondo livello (archi di cerchio CSL), che accorpa insieme un certo numero di
componenti di primo livello. Nel seguito descriviamo come siamo arrivati alla
determinazione dei parametri caratteristici di queste ultime componenti.
B.1.1
Calcolo dei parametri per la costruzione degli archi
di cerchio
Per la visualizzazione nel piano cartesiano (x, y) di una componente di secondo
livello (arco di cerchio), che approssima un determinato insieme di segmenti Pi:j
dobbiamo determinare alcuni parametri caratteristici, quali il centro dell’insieme
di segmenti ed il raggio dello stesso (Pei & Horng, 1996) (Thomas & Chan, 1989),
come mostrato nella seguente figura B.1.
Figura B.1: Arco di cerchio approssimante un tratto Pi:j di Poligonale costituito
da tre segmenti.
Nella decomposizione della poligonale da descrivere tutti i calcoli sono stati
svolti nel piano trasformato, in cui non vi sono relazioni geometriche tra i segmenti considerati, per determinare invece il centro ed il raggio dell’arco di cerchio
dobbiamo considerare la posizione e tutti i vincoli geometrici del segmento nel
piano di riferimento iniziale (x, y).
L’arco di cerchio che approssima un dato insieme di segmenti deve andare dal
primo vertice del segmento iniziale al secondo vertice di quello finale e deve avere
centro e raggio dipendenti dalle relazioni geometriche esistenti tra i segmenti considerati. Nel calcolo dei parametri dell’arco di cerchio da visualizzare si possono
originare tre diverse situazioni:
1. la componente è un segmento di retta: arco di cerchio a curvatura nulla;
2. la componente è un arco di cerchio vero e proprio;
118
B.1 Visualizzazione degli archi di cerchio
3. la componente è un arco di cerchio approssimato.
Per semplicità consideriamo ancora una volta l’arco di cerchio diagrammato in
figura B.1. Il primo passo è determinare l’angolo iniziale formato tra il primo segmento dell’insieme da accorpare e l’asse parallelo a quello delle ascisse e passante
per il primo vertice di tale segmento, per cui:
µ
Alf a in = arctg
Y2 − Y1
X2 − X1
¶
+ b.
(B.1)
Definiamo invece:
Corda =
p
[(XN − X1 )2 + (YN − Y1 )2 ]
(B.2)
la corda che unisce l’intero insieme di segmenti (con N = 4), e con:
µ
Ang in
=
Ang f in
=
∆ang
=
¶
Y2 − Y1
arctg
+ k · l1 ;
X2 − X1
¶
µ
Y2 − Y1
+ k · ltot ;
arctg
X2 − X1
Ang f in − Ang in;
(B.3)
la differenza tra gli angoli iniziali e finali dell’insieme di segmenti, dove b e k sono
rispettivamente il termine noto e il coefficiente angolare della retta approssimante
l’insieme dei segmenti nel piano (L, α), dove ltot è la lunghezza totale dei segmenti.
A questo punto trattiamo separatamente le tre diverse situazioni descritte precedentemente:
• se 4ang è molto piccolo (4ang < 5) l’arco di cerchio è un segmento di
retta ed in tal caso il centro giace sull’arco, che ha curvatura nulla; la
visualizzazione di tale componente si realizza semplicemente con una Spline;
• se 5 < 4ang < 355 la componente è considerata un vero e proprio arco di
cerchio. Il raggio è dato da :
µ
R=
Corda
2 · sin(∆ang/2)
119
¶
,
(B.4)
CAPITOLO B. Rappresentazione in archi di cerchio
ed il centro è dato da:
XC1
= X1 − [R · cos(Ang in)];
YC1
= Y1 − [R · sin(Ang in)];
XC2
= X2 − [R · cos(Ang f in)];
YC2
= Y2 − [R · sin(Ang f in)];
µ
XC
YC
¶
XC1 + XC2
=
;
2
µ
¶
YC1 + YC2
=
;
2
dove gli angoli riportati nelle equazioni sono espressi in radianti;
• se 4ang è molto grande (4ang > 355) l’arco che raggruppa i segmenti è
considerato un cerchio ed occorre trovarne il centro ed il raggio in modo
approssimato.
Il raggio è espresso dall’equazione B.4, mentre il centro è dato dalla media
dei centri calcolati per ogni segmento dell’insieme da accorpare:
n
P
XC
=
i=1
n
n
P
YC
B.1.2
=
XCi
i=1
;
YCi
n
;
Rappresentazione degli archi di cerchio nel piano di
riferimento cartesiano
Una volta ottenuti i parametri caratteristici degli archi di cerchio (in particolare
centro e raggio degli stessi) occorre determinarne la rappresentazione nel piano
cartesiano (x, y), sovrapponendoli alla poligonale P1:N da descrivere. Data la conformazione della poligonale originale, può accadere che le ordinate e/o le ascisse
dei vertici, iniziali e finali dell’arco da diagrammare coincidano, rendendone difficoltosa la rappresentazione nel sistema di riferimento. Per tali ragioni si utilizza
una rappresentazione mediante coordinate polari degli archi di cerchio, andando
120
B.1 Visualizzazione degli archi di cerchio
a considerare gli angoli iniziali e finali per ognuno di essi. In questo modo, ogni
coordinata iniziale e finale dell’arco di cerchio in esame è rappresentata cone di
seguito descritto:
½
½
Xi = ρ cos ϑi + Xc
Yi = ρ sin ϑi + Yc
(B.5)
Xf = ρ cos ϑf + Xc
Yf = ρ sin ϑf + Yc
(B.6)
µ
ϑi = arctg
µ
ϑf = arctg
yi
xi
yf
xf
¶
;
¶
;
(B.7)
La rappresentazione dell’arco di cerchio che approssima un insieme contiguo di segmenti è diagrammato partendo da ϑi e finendo in ϑf . Nella visualizzazione bisogna
avere cura di preservare la stessa concavità posseduta dall’insieme di segmenti da
approssimare.
121
CAPITOLO B. Rappresentazione in archi di cerchio
122
Bibliografia
Arcelli, C. & di Baja, G.S. (1985). A width indipendent fast thinning algoritm.
IEEE Transaction, Pattern analysis and machine intelligence, 7, 463–474.
Arcelli, C., Cordella, L.P. & Levialdi, S. (1981). From local maxima to connected skeletons. IEEE Transaction, Pattern analysis and machine
intelligence, 2, 134–143.
Barreto, H. & Maharry, D. (2006). Least median of squares and regression
through the origin. Computational statistics and data analysis, 50, 1391–1397.
Bellman, R. (1961). On the approximation of curves by line segments using
dynamic programming. Communication of the ACM , 4, 48–51.
Bellman, R.E. (2003). Dynamic Programming. Courier Dover.
Branke, J., Deb, K., Dierolf, H. & Osswald, M. (2004). Finding knees
in multi-objective optimization. In the Eighth Conference on Parallel Problem
Solving from Nature (PPSN VIII), 722–731.
Bresenham, J. (1965). Algorithm for computer control of a digital plotter. IBM
System Journal , 4, 25–30.
Bresenham, J. (1977). A linear algorithm for incremental display of circular arcs.
Communications of the ACM , 20, 100–106.
Buchanan, D.J.L. & Turner, P.R. (1992). Numerical methods and analysis.
Mc. Graw Hill.
Cordella, L.P., Tortorella, F. & Vento, M. (1994). Shape description
through line decomposition. in C. Arcelli, L.P. Cordella, G. Sanniti di Baja
(eds.), Aspects of Visual Form Processing, World Scientific, Singapore, 129–138.
Cordella, L.P., Foggia, P., Sansone, C. & Vento, M. (2002). Learning
structural shape description from examples. Pattern Recognition Letters, 23,
1427–1437.
123
BIBLIOGRAFIA
Das, I. (1999). On characterizing the “knee” of the pareto curve based on normalboundary intersection. Structural Optimization, 18, 107–115.
de Santo, M. (1989). Un metodo per l’estrazione di caratteristiche mediante la decomposizione di curve piane. Ph. D. thesis, Tesi di dottorato presso l’Università
Federico II di Napoli.
Deb, K. (2003). Multi-objective evolutionary Algorithms: Introducing Bias Among
Pareto-Optimal Solution. In A. Ghosh and S. Tsutsui, editors, Advances in
Evolutionary Computing: Theory and Application. London Springer-Verlag.
Devroye, L., Gyorfi, L. & Lugosi, G. (1996). A probabilistic theory of pattern
recognition. New York: Springer-Verlag.
Duda, R.O., Hart, P.E. & Stork, D.G. (2001). Pattern Classification. John
Wiley & Sons, 2nd edn.
Duin, R.P.W., Roli, F. & de Ridder, D. (2002). A note on core research issues
for statistical pattern recognition. Pattern Recognition Letters, 23, 493–499.
Edelsbrunner, H. & Souvaine, D.L. (1990). Computing least median of
squares regression lines and guided topological sweep. Journal of the american
statistical association, 85, 115–119.
Edgeworth, F.Y. (1881). “Mathematical Psychics”. P. Keagan, London,
England.
Esposito, M., Mazzariello, C., Oliviero, F., Romano, S.P. & Sansone,
C. (2005). Evaluating pattern recognition techniques in intrusion detection systems. In Proceeding of 5th Workshop on Pattern Recognition on Information
Systems (PRIS 05), 144–153.
Foggia, P. (1999). Classificazione e prototipazione di descrizioni strutturali rappresentate attraverso grafi relazionali con attributi . Ph.D. thesis, Tesi di dottorato
presso l’Università Federico II di Napoli.
Fu, K.S. (1974). Syntactic Methods in Pattern Recognition. Academic Press.
Fu, K.S. (1982). Syntactic pattern recognition and applications. Prentice Hall.
Fukunaga, K. (1990). Introduction statistical pattern recognition. Academic
Press, Second edition.
Hampel, F.R. (1975). Beyond location parameters: Robust concepts and
methods. Bull. Int. Internal Statistic Instit., 46, 375–382.
124
BIBLIOGRAFIA
Horng, J.H. & Li, J.T. (2001). A dynamic programming approach for fitting
digital planar curves with line segments and circular arcs. Pattern recognition
letters, 22, 183–197.
Ichoku, C., Deffontaines, B. & Chorowicz, J. (1996). Segmentation of
digital plane curves: a dynamic focusing approach. Pattern Recognition Letters,
17, 741–750.
Jain, A.K., Duin, R.P.W. & Mao, J. (2000). Statistical pattern recognition:
A review. IEEE transaction on pattern analysis and machine intelligence, 22.
Kanal, L. (1974). Patterns in pattern recognition. IEEE Transaction on
information theory, 20, 697–722.
Kong, T. & Rosenfield, A. (1989). Digital topology: Introduction and survey.
Compututer Vision, Graphics and Image Processing, 48, 357–393.
Monegato, G. (1998). Fondamenti di calcolo numerico. CLUT.
Mount, D.M., Netanyahu, N.S., Romanik, K., Silverman, R. & Wu,
A.Y. (2007). A practical approximation algorithm for the lms line estimator.
Computational statistics and data analysis, 51, 2461–2486.
Oommen, B.J. & Kashyap, R.L. (1997). A formal theory for optimal and
information theoretic syntactic pattern recognition. Ottawa, Canada.
Pareto, V. (1896). “Cours d’economie politique”. Rouge, Lausanne, Switzerland.
Pavlidis, T. (1980). Structural Pattern Recognition. Springer-Verlag, Berlino.
Pavlidis, T. & Horowitz, S.L. (1974). Segmentation of planar curves. IEEE
transaction on computers, 23, 860–870.
Pavlidis, T., Sakoda, W.J. & Shi, H. (1995). Matching graph embeddings
for shape analysis. Third International Conference on Document Analysis and
Recognition (ICDAR’95), 2, 729.
Pei, S.C. & Horng, J.H. (1996). Optimum approximation of digital planar
curves using circular arcs. Pattern Recognition, 29, 383–388.
Rachmawati, L. & Srinivasan, D. (2006). A multi-objective genetic algorithm
with controllable convergence on knee region. IEEE Congress on Evolutionary
Computation. Sheraton Vancouver Wall Centre Hotel, BC, Canada, 1916–1922.
Ramer, U. (1972). An interactive procedure for the polygonal approximation of
planar curves. Computer graphics and image processing, 1, 244–256.
125
BIBLIOGRAFIA
Rosin, P. & West, G.A.W. (1989). Segmentation of edge into lines and arcs.
Image Vision Comuting, 7, 109–114.
Rousseeuw, P.J. & Leroy, A.M. (1987). Robust regression and outlier
detection. John Wiley and Sons.
Schalkoff, R.J. (1992). Pattern Recognition: Statistical, structural and neural
approaches. Wiley, New York.
Shaoo, P.K., Soltani, S. & Wong, A.K.C. (1988). A survey of thresholding
techniques. Computer vision, graphics, image processing, 41, 233–260.
Sheu, H.T. & Hu, W.C. (1999). Multiprimitive segmentation of planar curve-a
two-level breackpoint classification and tuning approach. I.E.E.E. Transaction
on Pattern Analysis and Machine Intelligence, 21, 791–797.
Slansky, J., Chazin, R.L. & Hansen, B.J. (1972). Minimum-perimeter
polygons of digitalized silhouettes. IEEE transaction on computers, 21, 260–268.
Taboada, H.A., Baheranwala, F., Coit, D.W. & Wattanapogsakom,
N. (2005). Practical solutions of milti-objective system reliability design using
genetic algorithms. International Conference on Quality and Reliability (ICQR).
Teh, C.H. & Chin, R.T. (1989). On the detection of dominant points on digital
curves. I.E.E.E. Transaction Pattern Analysis Machine Intelligence, 11, 859–
872.
Thomas, S.M. & Chan, Y.T. (1989). A simple approach for the estimation
of circular arc center and its radius. Computer Vision, Graphics and Image
Processing, 45, 362–370.
Tortorella, F. (1995). Algoritmi per la rappresentazione e l’analisi automatica
di mappe e disegni tecnici . Ph.D. thesis, Tesi di dottorato presso l’Università
Federico II di Napoli.
Ullman, J.R. (1973). Pattern recognition techniques. Butterworths.
van Aken, J.R. (1984). An efficient ellipse-drawing algorithm. I.E.E.E. Computer
Graphics & Applications, 24–35.
Veldhuizen, D.V. & Lamont, G.B. (2000). Multi-objective evolutionary algorithms: Analyzing the state-of-the-art. Evolutionary Computation Journal ,
125–148.
Watanable, S. (1985). Pattern Recognition: Human and Mechanical . New York:
Wiley.
126
BIBLIOGRAFIA
Wu, W.Y. & Wang, M.J.J. (1993). Detecting the dominant point by the
curvature-based polygonal approximation. CVGIP: Graphical Models and Image
Processing, 55, 79–88.
Zeleny, M. (1973). Compromise programming. In J. L. Cochrane and M. Zeleny
(Eds.) multiple criteria decision making. Columbia: South Carolina: University
of South Carolina Press.
127