Indice
1 Introduzione ...5
1.1 Scopo del progetto ... 7
1.2 Panoramica delle soluzioni esistenti ... 8
1.2.1 Template matching... 8 1.2.2 Trasformata di Hough... 9 1.2.3 Approssimazione poligonale... 12 1.3 Conclusioni... 13 2 Approssimazione poligonale ...15 2.1 Elaborazioni preliminari... 17 2.2 Algoritmo di Douglas-Peucker... 19 2.3 Algoritmo modificato... 22
2.4 Confronto tra i due algoritmi ... 24
3 Ottimizzazioni...29
3.1 Determinazione automatica della soglia ... 31
3.2 Creazione di raccordi... 32
3.2.1 Geometria del raccordo ... 33
3.2.2 Eliminazione di segmenti ... 35
3.2.3 Condizioni di allineamento ... 37
3.3 Individuazione di circonferenze ... 38
4 Struttura del progetto ...39
4.1 Organizzazione generale... 41 4.2 simplify.m... 42 4.3 pchain.m ... 42 4.4 checkerr.m... 43 4.5 computecircle.m... 43 4.6 smooth.m... 44 4.7 intersection.m... 44 4.8 intersect_ll.m... 45 4.9 intersect_cl.m ... 45 4.10 intersect_cc.m... 46 4.11 lineline.m... 46 4.12 arcline.m... 47 4.13 arcarc.m... 48 4.14 checkpoint.m ... 48
4.15 checktan.m ... 49 4.16 paralline.m ... 49 4.17 parallarc.m ... 50 4.18 arcends.m ... 51 4.19 drawseg.m ... 51 4.20 gui.m... 51 5 Contour approximator v1.0...53
5.1 Caratteristiche del programma ... 55
5.2 Sequenza delle operazioni... 55
6 Conclusioni ...61
6.1 Risultati ... 63
6.2 Difetti e possibili miglioramenti... 63
7 Codice sorgente ...65 7.1 simplify.m... 67 7.2 pchain.m ... 72 7.3 checkerr.m... 74 7.4 computecircle.m... 75 7.5 smooth.m... 75 7.6 intersection.m... 88 7.7 intersect_ll.m... 90 7.8 intersect_cl.m ... 91 7.9 intersect_cc.m... 92 7.10 lineline.m... 93 7.11 arcline.m... 94 7.12 arcarc.m... 96 7.13 checkpoint.m ... 98 7.14 checktan.m ... 99 7.15 paralline.m ... 99 7.16 parallarc.m ...100 7.17 arcends.m ...101 7.18 drawseg.m ...102 7.19 gui.m...103 8 Bibliografia...113