12.07.2015 Views

Interrogazione di Immagini in DBMS Multimediali: analisi ... - DBGroup

Interrogazione di Immagini in DBMS Multimediali: analisi ... - DBGroup

Interrogazione di Immagini in DBMS Multimediali: analisi ... - DBGroup

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

UNIVERSITÀ DEGLI STUDI DI MODENA EREGGIO EMILIAFacoltà <strong>di</strong> IngegneriaCorso <strong>di</strong> Laurea <strong>in</strong> Ingegneria Informatica<strong>Interrogazione</strong> <strong>di</strong> <strong>Immag<strong>in</strong>i</strong> <strong>in</strong> <strong>DBMS</strong>Multime<strong>di</strong>ali: <strong>analisi</strong> esperimentazioneRelatoreChiar.mo Prof. Sonia BergamaschiTesi <strong>di</strong> Laurea <strong>di</strong>Marco TorricelliContro RelatoreChiar.mo Prof. Paolo TiberioAnno Accademico 1998 – 1999


Parole chiave:Database Multime<strong>di</strong>aliContent Based Visual QueryFeature extractionDistance MetricsQBIC


Alla mia famiglia


RINGRAZIAMENTIR<strong>in</strong>grazio la Professoressa Sonia Bergamaschi per l’aiuto fornito allarealizzazione della presente tesi.Un r<strong>in</strong>graziamento particolare va <strong>in</strong>oltre al Dott. Marco Patella dell’Universitàdegli Stu<strong>di</strong> <strong>di</strong> Bologna per i preziosi consigli e la costante <strong>di</strong>sponibilità riguardol’<strong>in</strong>stallazione del motore <strong>di</strong> ricerca W<strong>in</strong>dSurf.


In<strong>di</strong>ceIntroduzione 11 I Database Multime<strong>di</strong>ali 51.1 Architetture per Database Multime<strong>di</strong>ali (MM<strong>DBMS</strong>). . . . . . . . 71.2 Database <strong>di</strong> immag<strong>in</strong>i IDB. . . . . . . . . . . . . . . . . . . . . . 111.3 Query sul contenuto visuale delle immag<strong>in</strong>i. . . . . . . . . . . . . 141.4 Efficacia ed Efficienza. . . . . . . . . . . . . . . . . . . . . . . . 172 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>i 212.1 Feature <strong>di</strong> Colore. . . . . . . . . . . . . . . . . . . . . . . . . . . 222.1.1 Lo spazio <strong>di</strong> colore OPP. . . . . . . . . . . . . . . . . . . 232.1.2 Lo spazio <strong>di</strong> colore <strong>di</strong> Munsell. . . . . . . . . . . . . . . . 242.1.3 Lo spazio <strong>di</strong> colore HSV. . . . . . . . . . . . . . . . . . . 242.1.4 Istogramma dei colori. . . . . . . . . . . . . . . . . . . . 252.2 Feature <strong>di</strong> tessitura. . . . . . . . . . . . . . . . . . . . . . . . . . 262.2.1 Caratterizzazione <strong>di</strong>retta. . . . . . . . . . . . . . . . . . . 272.2.2 La trasformata Wavelet. . . . . . . . . . . . . . . . . . . 272.2.3 Istogramma della tessitura. . . . . . . . . . . . . . . . . . 332.3 Feature <strong>di</strong> forma. . . . . . . . . . . . . . . . . . . . . . . . . . . 372.3.1 Descrittori d’area e posizione. . . . . . . . . . . . . . . . 372.3.2 Determ<strong>in</strong>azione dell’orientamento. . . . . . . . . . . . . . 382.3.3 Determ<strong>in</strong>azione del MER. . . . . . . . . . . . . . . . . . 392.3.4 Descrittori <strong>di</strong> forma. . . . . . . . . . . . . . . . . . . . . 402.3.5 Momenti <strong>in</strong>varianti. . . . . . . . . . . . . . . . . . . . . . 413 Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>i 453.1 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra istogrammi. . . . . . . . . . . . . . . 453.1.1 Funzione <strong>di</strong> corrispondenza . . . . . . . . . . . . . . . . 453.1.2 Normalizzazione degli istogrammi. . . . . . . . . . . . . 453.1.3 Classificazione delle pr<strong>in</strong>cipali metriche . . . . . . . . . . 463.2 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra Color Set. . . . . . . . . . . . . . . . 49


iiINDICE3.3 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra s<strong>in</strong>goli pixel. . . . . . . . . . . . . . . 504 Algoritmi per l’estrazione <strong>di</strong> regioni 534.1 Classificazione degli algoritmi <strong>di</strong> segmentazione. . . . . . . . . . 534.2 Algoritmi <strong>di</strong> Split and Merge. . . . . . . . . . . . . . . . . . . . . 554.3 Algoritmi <strong>di</strong> “Region Grow<strong>in</strong>g”. . . . . . . . . . . . . . . . . . . 554.3.1 Algoritmo K–Means. . . . . . . . . . . . . . . . . . . . . 564.3.2 Retro proiezione dei Color Set. . . . . . . . . . . . . . . . 58¡£¢¥¤5 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong> 635.1 k-d Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.1.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d tree. . . . . . . . . 655.1.2 Cancellazione <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d Tree. . . . . . . . . . . . 685.1.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> 2-d Tree. . . . . . . . . . . 715.1.4 k-d tree per . . . . . . . . . . . . . . . . . . . . . . 735.2 Po<strong>in</strong>t QuadTree. . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.2.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> po<strong>in</strong>t QuadTree. . . . . . 745.2.2 Cancellazione nei Po<strong>in</strong>t QuadTree. . . . . . . . . . . . . . 765.2.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> Po<strong>in</strong>t QuadTree. . . . . . . 785.3 MX QuadTree. . . . . . . . . . . . . . . . . . . . . . . . . . . . 785.3.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> un MX QuadTree. . . . . . . 795.3.2 Cancellazione negli MX QuadTree. . . . . . . . . . . . . 825.3.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> MX QuadTree. . . . . . . . 835.4 R-Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.4.1 Ricerche ed aggiornamenti <strong>di</strong> R-tree. . . . . . . . . . . . 855.4.2 Cancellazione <strong>di</strong> elementi <strong>in</strong> un R-tree. . . . . . . . . . . 895.4.3 Aggiornamenti ad altre operazioni. . . . . . . . . . . . . . 905.4.4 Evoluzioni degli R-tree. . . . . . . . . . . . . . . . . . . 905.5 In<strong>di</strong>ci multi<strong>di</strong>mensionali e memorizzazione delle feature. . . . . . 926 Stato dell’arte dei MM<strong>DBMS</strong> 996.1 QBIC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006.1.1 Fase 1: “Database Population”. . . . . . . . . . . . . . . 1036.1.2 Fase 2: “Database Query”. . . . . . . . . . . . . . . . . . 1046.1.3 Implementazione. . . . . . . . . . . . . . . . . . . . . . . 1056.2 W<strong>in</strong>dSurf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1066.2.1 Estrazione delle feature. . . . . . . . . . . . . . . . . . . 1086.2.2 Esecuzione delle query. . . . . . . . . . . . . . . . . . . . 1126.3 WebSeek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156.3.1 Popolazione del Database. . . . . . . . . . . . . . . . . . 1156.3.2 Estrazioni delle feature testuali. . . . . . . . . . . . . . . 117


INDICEiii6.3.3 Estrazione delle feature visuali. . . . . . . . . . . . . . . 1196.3.4 Esecuzione delle Query. . . . . . . . . . . . . . . . . . . 1196.4 VisualSEEK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206.4.1 Implementazione Software. . . . . . . . . . . . . . . . . 1216.4.2 Interfaccia Utente. . . . . . . . . . . . . . . . . . . . . . 1246.5 Metaseek. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1266.5.1 Architettura <strong>in</strong>terna. . . . . . . . . . . . . . . . . . . . . 1277 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC. 1337.1 I programmi eseguibili a l<strong>in</strong>ea <strong>di</strong> comando. . . . . . . . . . . . . 1347.2 La classe <strong>di</strong> alto livello QbWrapClass. . . . . . . . . . . . . . . . 1367.3 Gerarchia <strong>di</strong> classi <strong>di</strong> basso livello. . . . . . . . . . . . . . . . . . 1428 Implementazione <strong>di</strong> un IDB tramite QBIC 1478.1 Ambiente e l<strong>in</strong>guaggio utilizzato. . . . . . . . . . . . . . . . . . . 1478.2 La libreria <strong>di</strong> Classi MFC. . . . . . . . . . . . . . . . . . . . . . 1478.3 Architettura del sistema. . . . . . . . . . . . . . . . . . . . . . . 1488.4 La libreria CImage. . . . . . . . . . . . . . . . . . . . . . . . . . 1498.5 QbicProg: gestione delle <strong>in</strong>terrogazioni. . . . . . . . . . . . . . . 1508.6 QbicProg: popolazione del Database. . . . . . . . . . . . . . . . . 1538.7 Esecuzione <strong>di</strong> <strong>in</strong>terrogazioni tramite Picker. . . . . . . . . . . . . 1558.8 Modalità <strong>di</strong> compilazione del co<strong>di</strong>ce. . . . . . . . . . . . . . . . . 1589 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf 1619.1 Modalità <strong>di</strong> valutazione. . . . . . . . . . . . . . . . . . . . . . . 1619.2 Analisi delle capacità <strong>di</strong> <strong>in</strong>terrogazione. . . . . . . . . . . . . . . 1629.3 Descrizione del Test-set. . . . . . . . . . . . . . . . . . . . . . . 1639.4 Prove e Risultati. . . . . . . . . . . . . . . . . . . . . . . . . . . 1639.5 Conclusioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Conclusioni 179


ivINDICE


©Elenco delle figure1.1 Architettura <strong>di</strong> un database multime<strong>di</strong>ale secondo il pr<strong>in</strong>cipio <strong>di</strong>autonomia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.2 Architettura <strong>di</strong> un database multime<strong>di</strong>ale secondo il pr<strong>in</strong>cipio <strong>di</strong>uniformità. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3 Architettura <strong>di</strong> un database multime<strong>di</strong>ale secondo il pr<strong>in</strong>cipio <strong>di</strong>organizzazione ibrida. . . . . . . . . . . . . . . . . . . . . . . . . 101.4 Architettura generale <strong>di</strong> un DB <strong>di</strong> immag<strong>in</strong>i. . . . . . . . . . . . . 141.5 Rappresentazione <strong>in</strong>siemistica delle relazioni a, b, c e d. . . . . . . 182.1 Schema a blocchi dei passi <strong>di</strong> ¦¨§ trasformazione e quantizzazionenecessari all’estrazione dell’istogramma dei colori. . . . . . . 25§2.2 Funzione base <strong>di</strong> Harr. . . . . . . . . . . . . . . . . . . . . . . . 292.3 Rappresentazione Filter Bank FB <strong>di</strong> una decomposizione Wavelet1D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.4 Disposizione delle sottobande <strong>di</strong> frequenza <strong>di</strong> un’immag<strong>in</strong>etrasformata attraverso la WT iterata f<strong>in</strong>o al terzo livello. . . . . . . 342.5 Rappresentazione Filter Bank FB della decomposizione W avelet2D implementata <strong>in</strong> VisualSEEk . . . . . . . . . . . . . . . . . . 352.6 Schema a blocchi delle operazioni necessarie all’estrazionedell’istogramma delle tessiture e dei relativi texture set. . . . . . . 373.1 Rappresentazione <strong>di</strong> tre istogrammi a 10 elementi. . . 473.2 Rappresentazione <strong>di</strong> tre istogrammi a 27 elementi. . . 495.1 Struttura <strong>di</strong> un nodo <strong>di</strong> 2d Tree. . . . . . . . . . . . . . . . . . . . 645.2 Disposizione delle ipotetiche regioni da <strong>in</strong>serire nell’<strong>in</strong><strong>di</strong>ce. . . . . 665.3 Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nel 2-d Tree. . . . . . . . . . . . . 685.4 Grafico del 2-d Tree generato dall’<strong>in</strong>serimento delle 5 regioni. . . 695.5 Schema <strong>di</strong> query su un <strong>in</strong>tervallo <strong>di</strong> valori. . . . . . . . . . . . . . 735.6 Struttura <strong>di</strong> un nodo <strong>di</strong> Po<strong>in</strong>t QuadTree. . . . . . . . . . . . . . . 75


viELENCO DELLE FIGURE5.7 Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nel Po<strong>in</strong>t QuadTree. . . . . . . . . 765.8 Grafico del QuadTree generato dall’<strong>in</strong>serimento delle 5 regioni. . . 775.9 Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nell MX QuadTree. . . . . . . . . 805.10 Grafico del MX QuadTree generato dall’<strong>in</strong>serimento dei centridelle 5 regioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.11 Schema delle regioni e dei relativi raggruppamenti da <strong>in</strong>serirenell’R-Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845.12 Grafico del R-Tree generato dall’<strong>in</strong>serimento delle regioni delloschema precedente. . . . . . . . . . . . . . . . . . . . . . . . . . 856.1 Architettura del motore <strong>di</strong> ricerca QBIC. . . . . . . . . . . . . . . 1026.2 Architettura del motore <strong>di</strong> ricerca W<strong>in</strong>dsurf. . . . . . . . . . . . . 1076.3 Architettura degli Spider 1 e 2 del motore <strong>di</strong> ricerca WebSeek. . . 1166.4 Architettura dello Spider 3 del motore <strong>di</strong> ricerca WebSeek. . . . . 1176.5 Passi necessari all’estrazione delle feature sul colore e sullaTessitura <strong>in</strong> VisualSEEk. . . . . . . . . . . . . . . . . . . . . . . 1226.6 Architettura del motore <strong>di</strong> meta–ricerca Metaseek. . . . . . . . . . 1327.1 Schematizzazione della gerarchia <strong>di</strong> classi <strong>di</strong> basso livelloimplementata dalle API <strong>di</strong> QBIC. . . . . . . . . . . . . . . . . . . 1428.1 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’apertura/creazione <strong>di</strong> un nuovo catalogo<strong>in</strong> un Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508.2 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’<strong>in</strong>serimento <strong>di</strong> una nuova feature nelcatalogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1518.3 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione dell’immag<strong>in</strong>e d’esempio sucui eseguire la query. . . . . . . . . . . . . . . . . . . . . . . . . 1528.4 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’esecuzione dell’<strong>in</strong>terrogazione. . . . . . . 1538.5 Risultati dell’<strong>in</strong>terrogazione su flower04.jpg utilizzando l’istogrammadei colori. . . . . . . . . . . . . . . . . . . . . . . . . 1548.6 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione delle immag<strong>in</strong>i da <strong>in</strong>serirenel catalogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558.7 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione della chiave dell’ immag<strong>in</strong>eda elim<strong>in</strong>are dal catalogo. . . . . . . . . . . . . . . . . . . . . . . 1568.8 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per il calcolo del numero <strong>di</strong> immag<strong>in</strong>i presentiper una data feature. . . . . . . . . . . . . . . . . . . . . . . . . . 1578.9 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izioni delle <strong>di</strong>mensioni dell’area <strong>di</strong><strong>di</strong>segno del Picker. . . . . . . . . . . . . . . . . . . . . . . . . . 1588.10 F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la selezione del colore nello spazio RGB. . 159


Elenco delle tabelle2.1 Confronto delle caratteristiche peculiari dei <strong>di</strong>versi spazi <strong>di</strong> coloredescritti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.2 Raffronto delle feature estratte nei motori commerciali analizzati. . 443.1 Raffronto delle metriche <strong>di</strong> <strong>di</strong>stanza implementate nei motoricommerciali analizzati. . . . . . . . . . . . . . . . . . . . . . . . 514.1 Raffronto delle capacità <strong>di</strong> calcolo delle regioni e dei meto<strong>di</strong>impiegati per l’estrazione nei motori commerciali analizzati. . . . 615.1 coor<strong>di</strong>nate del baricentro delle regioni da <strong>in</strong>serire nel 2-d Tree. . . 655.2 Assegnamento dalle costanti !"$#&%'()*+($#&% alnodo figlio <strong>in</strong> funzione dei valori del nodo padre <strong>in</strong> un Po<strong>in</strong>tQuadTree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.3 Assegnamento dalle costanti !"$#&%'()*+($#&% alnodo figlio <strong>in</strong> funzione dei valori del nodo padre <strong>in</strong> un MX quadTree. 795.4 Coor<strong>di</strong>nate del baricentro delle regioni calcolate per ,.-¥/ . . . . 795.5 Raffronto delle tipologie <strong>di</strong> <strong>in</strong><strong>di</strong>ci multi<strong>di</strong>mensionali implementat<strong>in</strong>ei motori commerciali analizzati. . . . . . . . . . . . . . . . . . 986.1 In<strong>di</strong>rizzi HTTP dei motori <strong>di</strong> ricerca <strong>di</strong>sponibili su WWW. . . . . 1329.1 Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e 301200.jpg. . 1659.2 Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>e 301200.eps.1659.3 Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e B10374.jpg. . 1679.4 Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>e B10374.jpg.1679.5 Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e B13870.jpg. . 1699.6 Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>eB13870.eps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699.7 Descrizione del contenuto <strong>di</strong> alcune tessiture contenute nelsecondo Test–Set. . . . . . . . . . . . . . . . . . . . . . . . . . . 1719.8 Risultati ottenuti <strong>in</strong>terrogando QBIC sulla texture 1102.jpg. . . . . 1739.9 Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sulla texture 1102.jpg. . . 173


viiiELENCO DELLE TABELLE9.10 Risultati ottenuti <strong>in</strong>terrogando QBIC sulla texture 1101.jpg. . . . . 1759.11 Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sulla texture 1101.jpg. . . 175


IntroduzioneL’evoluzione tecnologica degli ultimi anni ha permesso l’acquisizione, lamemorizzazione e la <strong>di</strong>stribuzione a costi ridotti <strong>di</strong> sorgenti <strong>di</strong> <strong>in</strong>formazione<strong>in</strong>novative. <strong>Immag<strong>in</strong>i</strong>, filmati, file au<strong>di</strong>o, frammenti <strong>di</strong> testo scritto a mano,rappresentano gli esempi più noti <strong>di</strong> queste nuove tipologie <strong>di</strong> dati.Le nuove tecnologie hanno portato alla riduzione dei costi necessari alla gestioneed all’acquisizione <strong>di</strong> queste nuove sorgenti. Basti pensare agli scannerper le immag<strong>in</strong>i e alle telecamere per i filmati. Questi, grazie allo sviluppodella tecnologia CCD, hanno beneficiato della riduzione delle <strong>di</strong>mensioni, dellasemplificazione dei circuiti <strong>di</strong> <strong>in</strong>terfaccia e della conseguente riduzione dei costi.L’aumento delle <strong>di</strong>mensioni, a parità <strong>di</strong> costo, dei <strong>di</strong>spositivi <strong>di</strong> memorizzazioneprimaria (memorie RAM), secondaria (Hard Disc) e terziaria (Cd-Rom)ha consentito l’elaborazione e l’archiviazione <strong>di</strong> file <strong>di</strong> <strong>di</strong>mensioni ed <strong>in</strong> quantitàsempre maggiore.D’altro canto l’aumento delle capacità <strong>di</strong> tutti i computer ha consentito anchealla maggior parte degli utenti <strong>di</strong> personal computer operazioni prima consentitesolo agli utilizzatori <strong>di</strong> ma<strong>in</strong>frame.L’evoluzione della rete Internet e la <strong>di</strong>sponibilità <strong>di</strong> modem sempre più velociha favorito la <strong>di</strong>stribuzione <strong>di</strong> immag<strong>in</strong>i, filmati e suoni, sia separatamente che<strong>in</strong>tegrati tra loro sotto forma <strong>di</strong> documenti multime<strong>di</strong>ali, ad una platea <strong>di</strong> utenticrescente <strong>in</strong> maniera esponenziale.A questa crescente <strong>di</strong>sponibilità <strong>di</strong> sorgenti Multime<strong>di</strong>ali ed all’evoluzionedell’Hardware necessario alla loro gestione non è però seguita un’ugualeevoluzione degli strumenti Software forniti agli utenti per recuperare nel m<strong>in</strong>ortempo possibile le <strong>in</strong>formazioni possibilmente conformi alle loro richieste.I Database che memorizzano dati classici come numeri <strong>in</strong>teri o float<strong>in</strong>g po<strong>in</strong>t,str<strong>in</strong>ghe <strong>di</strong> testo e campi data si avvalgono, per il recupero delle <strong>in</strong>formazionimemorizzate al loro <strong>in</strong>terno, <strong>di</strong> potenti l<strong>in</strong>guaggi <strong>di</strong> <strong>in</strong>terrogazione come SQL e <strong>di</strong>strumenti per la gestione <strong>di</strong> Basi <strong>di</strong> Dati Relazionali (R<strong>DBMS</strong>) per ottimizzare itempi <strong>di</strong> recupero.Questi tipi <strong>di</strong> dati sono noti dall’<strong>in</strong>troduzione dei database ed è ovvio che le


2 Introduzionetecniche <strong>di</strong> recupero siano molto più evolute <strong>di</strong> quelle sui nuovi dati multime<strong>di</strong>ali,<strong>in</strong>oltre questi sono <strong>in</strong>tr<strong>in</strong>secamente più complessi da analizzare rispetto a semplicistr<strong>in</strong>ghe o date <strong>di</strong> nascita.Questa tesi analizza le problematiche relative alle <strong>in</strong>terrogazioni <strong>di</strong> basi <strong>di</strong> datimultime<strong>di</strong>ali ed <strong>in</strong> particolare nella prima parte si concentra sulla determ<strong>in</strong>azionedella similitu<strong>di</strong>ne tra immag<strong>in</strong>i.Lo schema della prima parte della tesi è il seguente:nel Capitolo 1 si <strong>in</strong>troducono: le architetture <strong>di</strong> riferimento per i database0multime<strong>di</strong>ali e per quelli <strong>di</strong> immag<strong>in</strong>i <strong>in</strong> particolare e si analizzano lemodalità <strong>di</strong> <strong>in</strong>terrogazione <strong>di</strong>sponibili e le tecniche <strong>di</strong> valutazione deirisultati delle medesime;nel Capitolo 2 si illustra il panorama delle caratteristiche (feature) <strong>di</strong>sponibiliper caratterizzare il contenuto non semantico delle immag<strong>in</strong>i da0recuperare;nel Capitolo 3 vengono valutate le metriche <strong>di</strong>sponibili per valutare la0similitu<strong>di</strong>ne delle feature estratte dalle immag<strong>in</strong>i.nel Capitolo 4 vengono illustrati gli algoritmi <strong>di</strong> segmentazione che permettono<strong>di</strong> migliorare la precisione nel recupero delle immag<strong>in</strong>i associando <strong>in</strong>-0formazioni sulla posizione ai sotto<strong>in</strong>siemi delle feature estratte nel Capitolo2.Nel Capitolo 5 si <strong>in</strong>troducono i nuovi <strong>in</strong><strong>di</strong>ci per i dati multime<strong>di</strong>ali e si0illustrano alcune tecniche per la riduzione delle <strong>di</strong>mensioni delle feature;nel Capitolo 6 vengono analizzate le potenzialità e le soluzioni tecniche0implementate da una serie <strong>di</strong> motori <strong>di</strong> ricerca per immag<strong>in</strong>i <strong>di</strong>sponibili <strong>in</strong>rete. In particolare vengono analizzati: il sistema QBIC sviluppato pressoi laboratori IBM e W<strong>in</strong>dSurf sviluppato presso il DEIS dell’Università <strong>di</strong>Bologna.Nella seconda parte i Capitoli 7, 8 e 9 illustrano l’implementazione <strong>di</strong>un’applicazione per la gestione <strong>di</strong> un database <strong>di</strong> immag<strong>in</strong>i <strong>in</strong> QBIC. Inparticolare:nel Capitolo 7 viene illustrata la libreria <strong>di</strong> classi implementata da0QBIC, che permette <strong>di</strong> <strong>in</strong>cludere le funzionalità <strong>di</strong> recupero delle immag<strong>in</strong>iall’<strong>in</strong>terno dei programmi sviluppati dagli utenti;nel Capitolo 8 vengono descritte le caratteristiche ed il funzionamento <strong>di</strong>0una applicazione sviluppata per facilitare l’<strong>in</strong>serimento delle immag<strong>in</strong>i e


Introduzione 3le <strong>in</strong>terrogazioni sul contenuto <strong>in</strong> un Database <strong>di</strong> immag<strong>in</strong>i implementatotramite QBIC;0<strong>in</strong>f<strong>in</strong>e nel capitolo 9 si confrontano le prestazioni nel recupero <strong>di</strong> gruppi <strong>di</strong>immag<strong>in</strong>i appartenenti al Database, per tutte le opzioni <strong>di</strong> query <strong>di</strong>sponibili,per i sistemi QBIC e W<strong>in</strong>dSurf <strong>di</strong> cui sono <strong>di</strong>sponibili la versione sviluppata<strong>in</strong> questa tesi e quella fornita dall’Università <strong>di</strong> Bologna.


4 Introduzione


Capitolo 1I Database Multime<strong>di</strong>aliF<strong>in</strong> dalla loro <strong>in</strong>troduzione l’utilizzo pr<strong>in</strong>cipale, <strong>in</strong> campo <strong>in</strong>dustriale, deicomputer è consistito nell’elaborazione <strong>di</strong> <strong>in</strong>siemi <strong>di</strong> simboli.Questi sistemi selezionano simboli appartenenti ad uno specifico alfabeto d’<strong>in</strong>gressoe producono un <strong>di</strong>verso set, frutto <strong>di</strong> adeguate elaborazioni, come uscita.Questo è il modello a cui si ispirano i sistemi <strong>di</strong> elaborazione teorizzati da Tur<strong>in</strong>gnell’omonima macch<strong>in</strong>a.Negli ultimi anni si è verificato il crescente bisogno <strong>di</strong> realizzare sistemi <strong>in</strong>grado <strong>di</strong> <strong>in</strong>terrogare ed elaborare vaste quantità <strong>di</strong> dati che non sempre sono facilmentedescrivibili attraverso semplici simboli. Alcuni esempi <strong>di</strong> queste nuovitipologie <strong>di</strong> dati consistono <strong>in</strong>:immag<strong>in</strong>i, filmati, suoni, testi strutturati, appunti scritti a mano, ecc111 Questenuove tipologie <strong>di</strong> dati sono solamente una classificazione parziale <strong>di</strong> una realtà<strong>in</strong> cont<strong>in</strong>ua espansione e ciascun tipo è ulteriormente frammentato <strong>in</strong> una miriade<strong>di</strong> formati con strutture anche molto <strong>di</strong>fferenti:gif, jpeg, png, ecc111 per le immag<strong>in</strong>i, avi, mpeg, ecc111 per i filmati,waw,mp3, ecc111 per i file au<strong>di</strong>o, doc, txt, html, ecc1121 per i file <strong>di</strong> testostrutturato.Una def<strong>in</strong>izione <strong>in</strong>formale def<strong>in</strong>isce un sistema per la gestione <strong>di</strong> un databasemultime<strong>di</strong>ale MM<strong>DBMS</strong> (Multime<strong>di</strong>a Database Management System)come unambiente che organizza <strong>di</strong>fferenti tipi <strong>di</strong> dati, che possono essere rappresentati <strong>in</strong>una moltitu<strong>di</strong>ne <strong>di</strong> formati e risiedere fisicamente su me<strong>di</strong>a <strong>di</strong>versi.Per poter funzionare <strong>in</strong> maniera efficiente un MM<strong>DBMS</strong> deve sod<strong>di</strong>sfare leseguenti caratteristiche:Deve avere la possibilità <strong>di</strong> <strong>in</strong>terrogare <strong>in</strong> maniera uniforme i dati0(immag<strong>in</strong>i, testi, ecc.) memorizzati <strong>in</strong> <strong>di</strong>versi formati.Ad esempio un MM<strong>DBMS</strong> deve fornire la possibilità <strong>di</strong> <strong>in</strong>terrogare ed <strong>in</strong>tegrare<strong>in</strong> maniera uniforme i dati provenienti da database relazionali, file <strong>di</strong>


6 I Database Multime<strong>di</strong>alidati non strutturati oppure dati memorizzati <strong>in</strong> <strong>DBMS</strong> <strong>di</strong> tipo object orientedo spaziali.In particolare, <strong>in</strong>terrogazioni che spaziano su sorgenti memorizzate <strong>in</strong><strong>DBMS</strong> <strong>di</strong>versi devono essere <strong>in</strong> grado <strong>di</strong> fondere i risultati e presentarli<strong>in</strong> maniera uniformeIn maniera analoga deve essere possibile <strong>in</strong>terrogare dati appartenenti a0me<strong>di</strong>a <strong>di</strong>versi.Ad esempio un MM<strong>DBMS</strong> deve essere <strong>in</strong> grado <strong>di</strong> <strong>in</strong>terrogare contemporaneamentesia un Database <strong>di</strong> immag<strong>in</strong>i, uno au<strong>di</strong>o e uno relazionale e<strong>di</strong>ntegrare adeguatamente i risultati.Un MM<strong>DBMS</strong> deve rendere possibile il recupero <strong>di</strong> oggetti appartenentia me<strong>di</strong>a <strong>di</strong>versi, memorizzati localmente, con cont<strong>in</strong>uità senza ritar<strong>di</strong>0evidenti.Siccome oggetti multime<strong>di</strong>ali come i video spesso occupano grosse quantità<strong>di</strong> memoria, nell’or<strong>di</strong>ne <strong>di</strong> dec<strong>in</strong>e <strong>di</strong> gigabyte, anche <strong>in</strong> formato altamentecompresso bisogna tenere <strong>in</strong> considerazione il fatto che questi dati possonoessere memorizzati su sistemi <strong>di</strong> memorizzazione secondaria (hard <strong>di</strong>sk) eterziaria(CD-ROM o nastri) che presentano prestazioni <strong>di</strong>verse.Qu<strong>in</strong><strong>di</strong> sistemi per il recupero <strong>di</strong> <strong>in</strong>formazioni multime<strong>di</strong>ali devono tenereconto delle variazioni dei tempi <strong>di</strong> recupero e renderli il più possibile simili.Un MM<strong>DBMS</strong> deve, partendo dalla risposta <strong>di</strong> una query, che è una strutturamatematica <strong>di</strong> qualche tipo, sviluppare una presentazione <strong>di</strong> questi0risultati <strong>in</strong> maniera au<strong>di</strong>ovisiva.In<strong>di</strong>pendentemente dal fatto che l’<strong>in</strong>terfaccia ed il contenuto <strong>di</strong> ciascunapresentazione possa variare da un applicazione all’altra, l’utente deve averela possibilità <strong>di</strong> specificare la struttura ed il contenuto della risposta chevuole ottenere dal sistema.Inf<strong>in</strong>e quando la presentazione è stata del<strong>in</strong>eata secondo le specifiche del0punto precedente deve essere possibile <strong>di</strong>stribuirla <strong>in</strong> maniera che vengarispettata la qualità <strong>di</strong> trasmissione del mezzo impiegato.Ad esempio se al punto precedente il sistema che sovr<strong>in</strong>tende alla presentazioneha deciso che un filmato ed un file sonoro devono essere presentati<strong>in</strong> parallelo l’MM<strong>DBMS</strong> deve essere <strong>in</strong> grado <strong>di</strong> garantire che la presentazionenon subisca rallentamenti o sfasamenti dovuti ai requisiti <strong>di</strong>versiche i due flussi <strong>di</strong> dati devono sod<strong>di</strong>sfare.


1.1 Architetture per Database Multime<strong>di</strong>ali (MM<strong>DBMS</strong>). 7Inoltre, poiché i risultati delle query vengono trasmessi attraverso i no<strong>di</strong>della rete, per raggiungere i vari utilizzatori il sistema <strong>di</strong> gestione della basemultime<strong>di</strong>ale deve garantire che la rete presenti sempre una banda adeguatae la <strong>di</strong>sponibilità dei buffer necessaria a garantire una qualità <strong>di</strong> servizio taleda trasmettere senza <strong>in</strong>terruzioni la presentazione dei risultati prodotti dalsistema.Negli ultimi decenni sono stati sviluppati i l<strong>in</strong>guaggi <strong>di</strong> <strong>in</strong>terrogazione, le tecniche<strong>di</strong> <strong>in</strong><strong>di</strong>cizzazione, gli algoritmi <strong>di</strong> recupero e i meto<strong>di</strong> <strong>di</strong> aggiornamento impiegat<strong>in</strong>elle basi <strong>di</strong> dati relazionali, orientate agli oggetti, spaziali e temporali ed altri tipi<strong>di</strong> database.Ognuno <strong>di</strong> questi sistemi ha esteso i l<strong>in</strong>guaggi, gli algoritmi e le conoscenzeprecedenti allo scopo <strong>di</strong> <strong>in</strong>corporare nuovi ed importanti tipi <strong>di</strong> dati.In questa ottica i dati multime<strong>di</strong>ali non sono <strong>di</strong>fferenti dai precedenti e lenovità devono <strong>in</strong>tegrarsi nel panorama esistente senza richiedere <strong>di</strong> ricreare tutto<strong>di</strong> nuovo.Ad esempio un l<strong>in</strong>guaggio <strong>di</strong> <strong>in</strong>terrogazione per le immag<strong>in</strong>i deve tenere conto<strong>di</strong> oltre 30 anni <strong>di</strong> ricerca sull’esecuzione e sull’ottimizzazione delle query senzaripartire necessariamente da zero.1.1 Architetture per Database Multime<strong>di</strong>ali(MM<strong>DBMS</strong>).Quando si realizza un database multime<strong>di</strong>ale che rappresenta una vasta varietà<strong>di</strong> tipi appartenenti a me<strong>di</strong>a <strong>di</strong>versi dobbiamo confrontarci con <strong>di</strong>versi aspettiriguardanti l’organizzazione del loro contenuto <strong>in</strong>formativo.In questo stu<strong>di</strong>o analizziamo tre architetture per l’organizzazione delcontenuto <strong>di</strong> un database multime<strong>di</strong>ale che adottano i seguenti pr<strong>in</strong>cipi:Pr<strong>in</strong>cipio <strong>di</strong> autonomia: possiamo raggruppare <strong>in</strong>sieme tutte le immag<strong>in</strong>i,tutti i video e tutti i documenti e creare un <strong>in</strong><strong>di</strong>ce per ciascun raggruppamento <strong>in</strong>modo da ottenere la massima efficienza possibile per la rispettiva sorgente.Parliamo <strong>di</strong> autonomia poiché ciascuna sorgente mantiene una organizzazionetotalmente separata dalle altre, <strong>in</strong> questa maniera non è necessario scenderea compromessi ed è possibile adottare la soluzione migliore ed ottimizzare leprestazioni. La figura 1.1 illustra un <strong>di</strong>agramma concettuale <strong>di</strong> <strong>di</strong>versi tipi <strong>di</strong> datimultime<strong>di</strong>ali organizzati secondo il pr<strong>in</strong>cipio <strong>di</strong> autonomia.Pr<strong>in</strong>cipio <strong>di</strong> uniformità: al contrario della soluzione precedente possiamoutilizzare una s<strong>in</strong>gola struttura astratta che viene impiegata per tutti i tipi <strong>di</strong> me<strong>di</strong>asupportati dal sistema e creare un <strong>in</strong><strong>di</strong>ce unico che <strong>in</strong><strong>di</strong>rizza tutte le entità delsistema <strong>in</strong><strong>di</strong>pendentemente dalla loro natura.


`ba&ce?fdHijiIkl


1.1 Architetture per Database Multime<strong>di</strong>ali (MM<strong>DBMS</strong>). 9ä³åbæ{ç&å~æí½îXï*ð¸ñžï9òbó×ÂØRÙ2ÚÛÙÜ&Ý~ÞßàKáJܸÙØPàXÚâNã_ÝbÞÝXàè½éNêë…ìÉËÊ"?@'ACBED>"@GFH@'ACIKJ-Löø÷ ùûú üþýÿ¡ ¢¤£ ¥§¦ ¨© ôRõ¡! " #%$'&!(*),+-$ .0/2143-5 687:9:;4


ìÓnÔbÕYÖ:×ØÙÚÖ½Ü"ÝÞ ÛßÇàÉáYâ:ãCäæåçâ½é"ê§ë èegf4hCijh\kYlnm,op:qrk"hf4pGisbt!l-m,lGp10 I Database Multime<strong>di</strong>aliuwv-xzyYvnx€VG‚Hƒ"„‚Z…n†{V|b}\~¡MONQPGN2RTSVUXWYRZW'[S\R4[]^M`_ba!PGW!cdSKUYW']KaGSÅÇÆÉÈYÊ:ËÌÎÍXÆbÊ'Ï¡Ê:ËCÐzÑGÒŠ ‹%ŒŽ ‘ ’ “”–•—‰˜ š%› œ ‘ž Ÿ ¡ ¢£‰¤¥ ¦%§ ¨ ©‘ª « ¬­ ®‡‰ˆ¯¤°²±b³*´ µ¤²·b¸§¹ º¤»½¼"¾8¿ À¤Á½Â"ÃwÄFigura 1.3: Architettura <strong>di</strong> un database multime<strong>di</strong>ale secondo il pr<strong>in</strong>cipio <strong>di</strong>organizzazione ibrida.L’operazione <strong>di</strong> annotazione manuale può risultare molto costosa <strong>in</strong> term<strong>in</strong>i<strong>di</strong> tempo e <strong>di</strong> risorse impiegate ed <strong>in</strong>oltre <strong>in</strong> questo caso le annotazioni risultano<strong>di</strong>pendenti da chi le ha <strong>in</strong>serite.L’annotazione automatica <strong>in</strong>vece rischia <strong>di</strong> essere troppo superficiale trascurando<strong>in</strong>formazioni importanti per la caratterizzazione della sorgente. Ad esempiostrumenti per l’annotazione automatica delle immag<strong>in</strong>i possono perdere <strong>in</strong>formazionisulla tessitura <strong>di</strong> gruppi <strong>di</strong> pixel, <strong>in</strong> maniera analoga uno strumento perl’annotazione <strong>di</strong> suoni può perdere <strong>in</strong>formazioni sull’ampiezza o sulla frequenza<strong>in</strong> alcuni punti strategici del segnale.Il pr<strong>in</strong>cipio dell’organizzazione ibrida si avvantaggia dei punti positivi <strong>di</strong> entrambele architetture precedenti cercando contemporaneamente <strong>di</strong> attenuare moltiaspetti negativi.Supponiamo <strong>di</strong> creare un database multime<strong>di</strong>ale formato dai tipi 111øîíÉï <strong>in</strong>iziamo <strong>di</strong>videndo l’<strong>in</strong>sieme <strong>in</strong> due parti:ð2ñparte: Quei me<strong>di</strong>a che sono ere<strong>di</strong>tati da database già esistenti che hanno giài loro <strong>in</strong><strong>di</strong>ci e le loro procedure <strong>di</strong> <strong>in</strong>terrogazione; <strong>in</strong> questo caso sfruttiamoil co<strong>di</strong>ce esistente <strong>in</strong>corporandolo all’<strong>in</strong>terno del MM<strong>DBMS</strong> adottandol’approccio <strong>in</strong><strong>di</strong>pendente.


¤ñ1.2 Database <strong>di</strong> immag<strong>in</strong>i IDB. 11parte: Quei me<strong>di</strong>a non ere<strong>di</strong>tati che non hanno <strong>in</strong><strong>di</strong>ci già esistenti ed algoritmiper manipolarli; <strong>in</strong> questo caso utilizziamo l’approccio uniforme creando ununico <strong>in</strong><strong>di</strong>ce per il gruppo tollerando una leggera per<strong>di</strong>ta <strong>di</strong> <strong>in</strong>formazionecomunque non critica per l’applicazione.Per completare il sistema è necessario fornire il co<strong>di</strong>ce per eseguire i jo<strong>in</strong> tra levarie sorgenti utilizzando gli <strong>in</strong><strong>di</strong>ci esistenti e quelli creati. Questo approcciosfrutta al massimo il lavoro già sviluppato m<strong>in</strong>imizzando gli sforzi ad<strong>di</strong>zionali per<strong>in</strong>tegrare gli elementi specifici della particolare applicazione.1.2 Database <strong>di</strong> immag<strong>in</strong>i IDB.I database <strong>di</strong> immag<strong>in</strong>i IDB sono estensioni dei tra<strong>di</strong>zionali DB <strong>in</strong> grado <strong>di</strong>archiviare, mo<strong>di</strong>ficare e recuperare <strong>in</strong>formazioni visuali.Nei database tra<strong>di</strong>zionali le unità <strong>di</strong> base delle <strong>in</strong>formazioni, cioè gli attributi,hanno valori ben def<strong>in</strong>iti, nelle immag<strong>in</strong>i <strong>in</strong>vece l’<strong>in</strong>formazione <strong>di</strong> base è memorizzatanei pixel che rappresentano il valore <strong>di</strong> misurazioni <strong>di</strong> proprietà sensoriali<strong>in</strong> una regione dello spazio.Possiamo rappresentare un’immag<strong>in</strong>e, <strong>in</strong><strong>di</strong>pendentemente dal particolare formato<strong>di</strong> memorizzazione (gif, jpeg, tiff, tga, ecc 1121 ), attraverso una matrice bi<strong>di</strong>mensionale<strong>di</strong> elementi che mantiene le <strong>in</strong>formazioni sul valore dei s<strong>in</strong>goli pixel.I pixel contengono le <strong>in</strong>formazioni sul colore <strong>di</strong> ogni punto dell’immag<strong>in</strong>e.Siccome esistono <strong>di</strong>versi spazi per la rappresentazione del colore (ve<strong>di</strong> Capitolo2) la struttura dati impiegata per la memorizzazione del pixel <strong>di</strong>pende dallospazio utilizzato, <strong>in</strong> particolare sia lo spazio RGB che quello HSV utilizzano trevalori <strong>in</strong>teri per la rappresentazioni del colore, mentre nelle immag<strong>in</strong>i a toni <strong>di</strong>grigio basta un solo valore <strong>in</strong>tero.Sebbene il valore del pixel abbia un chiaro significato quantitativo è ambiguala modalità con cui va a formare gli oggetti.Da ciò si deduce quanto sia <strong>di</strong>stante la conoscenza del valore dei pixel dalladeterm<strong>in</strong>azione del contenuto dell’immag<strong>in</strong>e.Una def<strong>in</strong>izione <strong>in</strong>formale descrive il contenuto <strong>di</strong> un’immag<strong>in</strong>e come l’<strong>in</strong>sieme<strong>di</strong> tutti gli oggetti che vengono considerati “<strong>in</strong>teressanti” secondo il punto<strong>di</strong> vista dell’applicazione.Per ottenere una rappresentazione più significativa del contenuto dell’immag<strong>in</strong>e,che non sia il valore del pixel, associamo ad ogni oggetto all’<strong>in</strong>ternodell’immag<strong>in</strong>e un <strong>in</strong>sieme <strong>di</strong> proprietà o “feature” del seguente tipo:Descrittore <strong>di</strong> forma: descrive la forma e la posizione della regione0all’<strong>in</strong>terno della quale è localizzato l’oggetto dell’immag<strong>in</strong>e.


12 I Database Multime<strong>di</strong>aliUn esempio <strong>di</strong> questi tipi <strong>di</strong> descrittore possono essere gli MBB (M<strong>in</strong>imumBoun<strong>di</strong>ng Box) che rappresentano un rettangolo m<strong>in</strong>imo che contiene laregione ed è orientato secondo gli assi dell’immag<strong>in</strong>e;Descrittore <strong>di</strong> proprietà: descrive una caratteristica <strong>di</strong> un pixel o <strong>di</strong> un0gruppo <strong>di</strong> pixel dell’immag<strong>in</strong>e.Esempi <strong>di</strong> proprietà <strong>di</strong> questo tipo sono l’istogramma dei colori o lacaratterizzazione delle tessiture.Siccome il calcolo delle proprietà richiede un notevole sforzo computazionalequeste devono essere calcolate una volta per tutte ed archiviate all’<strong>in</strong>terno <strong>di</strong> unDatabase.I primi IDB, al f<strong>in</strong>e <strong>di</strong> razionalizzare l’occupazione <strong>di</strong> memoria, sud<strong>di</strong>vidonol’immag<strong>in</strong>e <strong>in</strong> celle <strong>di</strong> <strong>di</strong>mensione fissa <strong>in</strong> modo che le proprietà vengano calcolatesolo a livello <strong>di</strong> cella. Come caso estremo è possibile def<strong>in</strong>ire un’unica cellacalcolando proprietà valide solo per l’<strong>in</strong>tera immag<strong>in</strong>e.Nei sistemi più moderni, la sud<strong>di</strong>visione <strong>in</strong> celle non è più statica, ma le proprietàvengono def<strong>in</strong>ite a livello <strong>di</strong> regioni estratte dall’immag<strong>in</strong>e tramite algoritmi<strong>di</strong> estrazione delle regioni (Ve<strong>di</strong> Capitolo 4).Un descrittore <strong>di</strong> forma può essere def<strong>in</strong>ito da un rettangolo, un poligono odun <strong>in</strong>sieme <strong>di</strong> rettangoli.Un descrittore <strong>di</strong> proprietà è una coppia <strong>di</strong> valori del tipo (PropName,PropValue).La griglia viene def<strong>in</strong>ita specificando due costanti <strong>in</strong>tere M,N cherappresentano la granularità dell’<strong>analisi</strong>:l’immag<strong>in</strong>e viene <strong>di</strong>visa <strong>in</strong> gruppi <strong>di</strong> M x N pixel dalla funzione %‘òNóÂôï ,ì ìHõ. òNógö÷ïUn Database <strong>di</strong> immag<strong>in</strong>i IDB viene def<strong>in</strong>ito dalla terna (GI, Prop, Rec) dove:1. GI è un <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i con griglia nella forma (Immag<strong>in</strong>e, M, N);2. Prop è un <strong>in</strong>sieme <strong>di</strong> proprietà <strong>di</strong> cella o <strong>di</strong> regione;3. Rec è una relazione che associa ad ogni immag<strong>in</strong>e un <strong>in</strong>sieme <strong>di</strong> oggettisotto forma <strong>di</strong> regioni rettangolari.Le implementazioni correnti dei <strong>DBMS</strong> che supportano la gestione delleimmag<strong>in</strong>i si basano sulla tecnologia ad oggetti.Si assume che ogni immag<strong>in</strong>e sia un oggetto nel senso dei database orientati adoggetti. Per la classe degli oggetti immag<strong>in</strong>e vengono def<strong>in</strong>iti i seguenti meto<strong>di</strong>.0Meto<strong>di</strong> per l’e<strong>di</strong>t<strong>in</strong>g delle immag<strong>in</strong>i:permettono <strong>di</strong> aprire e visualizzare le immag<strong>in</strong>i <strong>in</strong> formati <strong>di</strong>versi, eseguireoperazioni <strong>di</strong> rotazione, <strong>in</strong>gran<strong>di</strong>mento, <strong>in</strong>versione e mo<strong>di</strong>fica <strong>di</strong> colori.


1.2 Database <strong>di</strong> immag<strong>in</strong>i IDB. 13Meto<strong>di</strong> per l’estrazione <strong>di</strong> feature:0si applicano alle immag<strong>in</strong>i e permettono <strong>di</strong> estrarre <strong>in</strong>formazioni sulle caratteristichevisuali come il colore, la tessiture e le forme (Ve<strong>di</strong> Capitolo2).Ad esempio, per il colore si estrae l’istogramma dei colori all’<strong>in</strong>terno <strong>di</strong>un determ<strong>in</strong>ato spazio dei colori; per la tessitura si estraggono una serie <strong>di</strong>proprietà caratteristiche come la rugosità e la <strong>di</strong>rezionalità e il contrasto, perle forme si impiegano descrittori <strong>di</strong> forma e momenti <strong>in</strong>varianti.Meto<strong>di</strong> <strong>di</strong> estrazioni delle regioni:0questi meto<strong>di</strong> permettono, fissati dei criteri <strong>di</strong> omogeneità, <strong>di</strong> raggruppare ipixel dell’immag<strong>in</strong>e <strong>in</strong> regioni <strong>in</strong> base a questi criteri (Ve<strong>di</strong> Capitolo 4).Gli IDB, Figura 1.4,caratteristiche:per essere considerati tali presentano le seguenti1. Possono essere comparate le immag<strong>in</strong>i nella loro <strong>in</strong>terezza oppure le regioniestratte tramite algoritmi <strong>di</strong> segmentazione.2. Data un’immag<strong>in</strong>e (regione) gli IDB vi associano una serie <strong>di</strong> proprietàsalienti che devono essere <strong>in</strong> grado <strong>di</strong> <strong>di</strong>scrim<strong>in</strong>are fra immag<strong>in</strong>i rilevantie non rilevanti: non è necessario che estraggano tutte le immag<strong>in</strong>i “<strong>in</strong>teressanti”,ma che scart<strong>in</strong>o quelle meno importanti <strong>in</strong> modo da alleviare icompiti dell’utente; <strong>in</strong>oltre la loro estrazione deve risultare computazionalmentepoco onerosa. Esempi <strong>di</strong> queste feature possono essere: il colore,la tessitura e la forma. Le N feature estratte vengono memorizzate <strong>in</strong> unvettore con N campi all‘<strong>in</strong>terno del database.3. Nel Database viene creato un <strong>in</strong><strong>di</strong>ce N-<strong>di</strong>mensionale, cosicché ogni immag<strong>in</strong>e(regione) rappresenta un punto øù nello spazio N-<strong>di</strong>mensionale. Questo<strong>in</strong><strong>di</strong>ce può essere un’estensione multi<strong>di</strong>mensionale <strong>di</strong> un R-tree o <strong>di</strong> unPo<strong>in</strong>t QuadTree.4. Quando l’utente <strong>in</strong>voca l’esecuzione <strong>di</strong> una query nella forma: “trova tuttele immag<strong>in</strong>i simili all’immag<strong>in</strong>e d’esempio” il sistema recupera tutti vettoriøù e le relative immag<strong>in</strong>i ú la cui <strong>di</strong>stanza dal vettore øû è <strong>in</strong>feriore allasoglia fissata.


!"¥¥#%$'&()¡#14 I Database Multime<strong>di</strong>aliPRQ)ST£Q)S[]\#^%_"à^cb)dUNV"WXZYüdýrþ0ÿ¡ £¢¥¤§¦©Ëþ© Eþ¡*+",.- /¥02143'576#-§,.-7180+:9;- 5§0?A@B@DCFE.GIH'G7JLKNMFE.G O!H'GFigura 1.4: Architettura generale <strong>di</strong> un DB <strong>di</strong> immag<strong>in</strong>i.1.3 Query sul contenuto visuale delle immag<strong>in</strong>i.Le query basate sul contenuto visuale (Content Based Visual Query, CBVQ) fornisconouno strumento potente ed <strong>in</strong>novativo <strong>in</strong> grado <strong>di</strong> recuperare immag<strong>in</strong>i efilmati all’<strong>in</strong>terno <strong>di</strong> un database multime<strong>di</strong>ale. Le CBVQ permettono, <strong>in</strong> mancanza<strong>di</strong> <strong>in</strong>formazioni note a priori su ciò che è rappresentato all’<strong>in</strong>terno dell’immag<strong>in</strong>e,<strong>di</strong> specificare una serie <strong>di</strong> proprietà che si vuole risult<strong>in</strong>o verificate dairisultati della query.Gli stu<strong>di</strong> più recenti sulle CBVQ hanno evidenziato il fatto che le proprietà chemeglio si adattano a descrivere il contenuto delle immag<strong>in</strong>i sono quelle sul colore,sulla tessitura, sulla forma e sul movimento se si tratta <strong>di</strong> sequenze <strong>di</strong> immag<strong>in</strong>i <strong>in</strong>movimento.I sistemi a cui si applicano le query visuali archiviano <strong>in</strong>formazioni visu-


1.3 Query sul contenuto visuale delle immag<strong>in</strong>i. 15ali, immag<strong>in</strong>i e filmati, che non appartengono a nessun dom<strong>in</strong>io applicativoparticolare.Il fatto <strong>di</strong> non porre nessun tipo <strong>di</strong> filtro implica che non possano essereimpiegati i classici algoritmi <strong>di</strong> “pattern recognition”, che si applicano a dom<strong>in</strong>iapplicativi dove le categorie <strong>di</strong> soggetti sono <strong>di</strong> un solo tipo.Sviluppare sistemi che permettano <strong>di</strong> analizzare, archiviare e recuperare elementivisuali è una necessità pressante a causa della cont<strong>in</strong>ua crescita del volumedei dati che viene prodotto e <strong>di</strong>stribuito nelle forme più svariate. Ogni giornonuove forme <strong>di</strong> me<strong>di</strong>a visuali come trasmissioni televisive, fotografie, <strong>di</strong>segnie animazioni sono rese accessibili <strong>in</strong> forma <strong>di</strong>gitale ad una vasta comunità <strong>di</strong>utilizzatori.Ad esempio sono milioni le immag<strong>in</strong>i ed i filmati, rappresentanti i più <strong>di</strong>sparatisoggetti, che <strong>in</strong> maniera estremamente volatile vengono pubblicate sulWEB oppure su CD-ROM multime<strong>di</strong>ali.Queste tecniche sono comunque applicabili, con leggere mo<strong>di</strong>fiche, a particolaridom<strong>in</strong>i applicativi come immag<strong>in</strong>i acquisite da satelliti, immag<strong>in</strong>i me<strong>di</strong>che,ambientali e geografiche.In questo stu<strong>di</strong>o supponiamo che le immag<strong>in</strong>i da ricercare siano memorizzate<strong>in</strong> forma <strong>di</strong>gitale all’<strong>in</strong>terno <strong>di</strong> un Database e che gli utenti del sistema per laricerca ed il recupero, collegati ad una rete, locale, <strong>in</strong>tranet o Internet, eseguanoquery per recuperare le immag<strong>in</strong>i con le caratteristiche desiderate.Nell’implementazione più semplice possibile <strong>di</strong> un <strong>DBMS</strong> <strong>di</strong> immag<strong>in</strong>i annotazionie commenti testuali vengono associati <strong>in</strong> maniera manuale da chi archivial’immag<strong>in</strong>e.Esempi <strong>di</strong> annotazioni testuali o parole chiave possono <strong>in</strong>cludere la descrizionedei soggetti pr<strong>in</strong>cipali contenuti all’<strong>in</strong>terno dell’immag<strong>in</strong>e, il nome dell’autore,la data e altre <strong>in</strong>formazioni. Questi sistemi, che si appoggiano ad un DB<strong>di</strong> tipo relazionale o ad oggetti, presentano <strong>di</strong>versi problemi:le descrizioni delle immag<strong>in</strong>i rappresentano <strong>in</strong>terpretazioni personali <strong>di</strong> chile <strong>in</strong>serisce, possono essere <strong>in</strong>complete oppure errate e ciò porta ad una scarsacapacità <strong>di</strong> recuperare le immag<strong>in</strong>i basando le query solo sul confronto <strong>di</strong> str<strong>in</strong>ghetestuali.Le descrizioni devono essere <strong>in</strong>serite manualmente e se l’archivio è moltovasto questa attività risulta molto <strong>di</strong>spen<strong>di</strong>osa <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo e <strong>di</strong> risorseumane.Per migliorare questa situazione i sistemi CBVQ fanno uso <strong>di</strong> query visualiche si basano sul confronto <strong>di</strong> feature visuali. Le feature visuali come il colore, latessitura o le forme sono calcolate per ogni immag<strong>in</strong>e del database, memorizzateall’<strong>in</strong>terno dello stesso ed organizzate tramite <strong>in</strong><strong>di</strong>ci multi<strong>di</strong>mensionali per un piùfacile recupero.Il sistema <strong>di</strong> CBVQ fornisce all’utente una serie <strong>di</strong> strumenti visuali tramite i


16 I Database Multime<strong>di</strong>aliquali def<strong>in</strong>ire i criteri che le immag<strong>in</strong>i devono sod<strong>di</strong>sfare per far parte dei risultatidella query.La def<strong>in</strong>izione dei criteri avviene attraverso un’<strong>in</strong>terfaccia grafica che consente<strong>di</strong> specificare le l<strong>in</strong>ee guida sui colori o le forme da ricercare o <strong>di</strong> immettere iriferimenti ad immag<strong>in</strong>i <strong>di</strong> esempio da usare come term<strong>in</strong>i <strong>di</strong> paragone allo scopo<strong>di</strong> recuperare tutte le immag<strong>in</strong>i simili agli esempi forniti.Il concetto <strong>di</strong> similitu<strong>di</strong>ne tra immag<strong>in</strong>i viene <strong>in</strong>trodotto def<strong>in</strong>endo delle metrichecioè delle funzioni <strong>di</strong> <strong>di</strong>stanza che confrontano le feature estratte dall’immag<strong>in</strong>ed’esempio con quelle memorizzate all’<strong>in</strong>terno del database: più la<strong>di</strong>stanza è alta più le immag<strong>in</strong>i sono <strong>di</strong>verse e viceversa.Le CBVQ possono recuperare le K, numero <strong>in</strong>tero def<strong>in</strong>ito dall’utente, immag<strong>in</strong>ipiù simili cioè con i punteggi più alti oppure recuperare tutte le immag<strong>in</strong>ila cui <strong>di</strong>stanza da quella d’esempio risulta m<strong>in</strong>ore <strong>di</strong> un valore sempre def<strong>in</strong>itodall’utente.I sistemi commerciali più famosi che mettono a <strong>di</strong>sposizione strumenti <strong>di</strong>CBVQ sono:QBIC [?] della IBM, il PhotoBook [?, ?] del MIT, Chabot dell’università <strong>di</strong>Berkeley [?] e Virage 1 .QBIC elabora feature sul colore sulla tessitura e sulla forma mentrePhotoBook lavora sulle tessiture, sulle forme e sul riconoscimento <strong>di</strong> volti.Un’ulteriore evoluzione delle CBVQ sono le query sul contenuto delle regioni(Content Based Region Query CBRQ) che prendono <strong>in</strong> considerazione le regionidell’immag<strong>in</strong>e con caratteristiche comuni.La def<strong>in</strong>izione <strong>di</strong> feature globale può risultare riduttiva poiché si perdonole particolarità dell’immag<strong>in</strong>e. Ad esempio due immag<strong>in</strong>i totalmente <strong>di</strong>versepossono avere la stessa <strong>di</strong>stribuzione dei colori cioè lo stesso istogramma.Alle immag<strong>in</strong>i vengono applicati algoritmi <strong>di</strong> estrazione <strong>di</strong> regioni chepartizionano i pixel dell’immag<strong>in</strong>e <strong>in</strong> gruppi omogenei rispetto ad una certaproprietà.Il partizionamento genera una serie <strong>di</strong> regioni <strong>di</strong>sgiunte la cui unione rappresental’<strong>in</strong>tera immag<strong>in</strong>e con la proprietà che ogni pixel della regione ha valoridella proprietà simili.Nelle CBRQ non sono le feature globali che vengono confrontate, ma quelleestratte per ogni regione.Una CBRQ può essere scomposta <strong>in</strong> una serie <strong>di</strong> CBVQ, una per ogni regionepresente all’<strong>in</strong>terno dell’immag<strong>in</strong>e d’esempio:ogni regione viene confrontata, nella stessa maniera <strong>in</strong> cui prima venivanoconfrontate le immag<strong>in</strong>i <strong>in</strong>tere, con le regioni estratte dalle immag<strong>in</strong>i memorizzateall’<strong>in</strong>terno del database, i punteggi ottenuti vengono poi valutati da una funzione1 Reperibile all’<strong>in</strong><strong>di</strong>rizzo Internet http://www.virage.com


ì©1.4 Efficacia ed Efficienza. 17che restituisce una misura globale della <strong>di</strong>stanza. Sistemi commerciali che implementanole CBRQ sono il Visualseek [?] e il Webseek [?] della Università dellaColumbia e W<strong>in</strong>dsurf dell’Università <strong>di</strong> Bologna [?]Un’ulteriore evoluzione delle possibilità <strong>di</strong> query consente <strong>di</strong> prendere <strong>in</strong>considerazione le <strong>in</strong>formazioni sulla <strong>di</strong>sposizione spaziale delle regioni estrattesecondo i criteri precedenti.Siccome l’elaborazione delle <strong>di</strong>sposizioni spaziali è computazionalmentemolto complessa le <strong>in</strong>formazioni spaziali vengono valutate solo <strong>in</strong> un secondotempo.In particolare prima vengono applicate la CBRQ sulle regioni co<strong>in</strong>volte nellaquery:vengono considerate solo le immag<strong>in</strong>i che contengono le regioni co<strong>in</strong>voltenella query <strong>in</strong><strong>di</strong>pendentemente della posizione, poi su questo risultato <strong>in</strong>terme<strong>di</strong>ovengono applicate le <strong>analisi</strong> sulle <strong>di</strong>sposizioni spaziali scartando le immag<strong>in</strong>i conregioni <strong>in</strong> posizione <strong>di</strong>versa da quella specificata.Possiamo <strong>di</strong>st<strong>in</strong>guere tra due tipi <strong>di</strong> query sulle <strong>di</strong>sposizioni spaziali assolutee relative:le prime richiedono che le regioni delle immag<strong>in</strong>i appartenenti ai risultati sianonella stessa identica posizione delle regioni nell’immag<strong>in</strong>e d’esempio, le seconde<strong>in</strong>vece sono meno v<strong>in</strong>colate e richiedono soltanto che siano rispettate le mutue<strong>di</strong>sposizioni delle regioni, <strong>in</strong><strong>di</strong>pendentemente dalla loro effettiva posizione.Un sistema che implementa tutte queste possibilità <strong>di</strong> query è il sistema SaFesviluppato dalla Università della Columbia.1.4 Efficacia ed Efficienza.I giu<strong>di</strong>zi ed i confronti <strong>in</strong> merito alla bontà <strong>di</strong> un sistema CBVQ vengono espressiconsiderando i parametri <strong>di</strong> Efficacia (Recall) e <strong>di</strong> Efficienza (Precision) che valutanole modalità con cui le immag<strong>in</strong>i vengono estratte da una query visuale sulDatabase.Supponiamo che I sia un <strong>in</strong>sieme f<strong>in</strong>ito <strong>di</strong> immag<strong>in</strong>i, che Alg sia un algoritmoche accetta come <strong>in</strong>gresso una def<strong>in</strong>izione <strong>di</strong> una query visuale e ritorna <strong>in</strong>uscita un sotto<strong>in</strong>sieme dell’<strong>in</strong>sieme delle immag<strong>in</strong>i ©. úSupponiamo pure <strong>di</strong> poter def<strong>in</strong>ire un pre<strong>di</strong>cato <strong>di</strong> rilevanza egf;hú­immag<strong>in</strong>i del Database, rispetto alla query , che estrae l’<strong>in</strong>sieme <strong>di</strong> tutte e solele immag<strong>in</strong>i da ritenersi valide ai f<strong>in</strong>i della determ<strong>in</strong>azione del risultato.Il pre<strong>di</strong>cato consiste nel def<strong>in</strong>ire l’<strong>in</strong>sieme delle immag<strong>in</strong>i che un utente imparzialeselezionerebbe manualmente come risultato ottimo per una data query©[?]. i Sia l’<strong>in</strong>sieme delle immag<strong>in</strong>i ritenute rilevanti j e l’<strong>in</strong>sieme <strong>di</strong> quelle cheï , sulle


klmnìì-q ‚ ‘Œ ’o#D› #¥ì“pr18 I Database Multime<strong>di</strong>alisut;v%wxyt%z){}|7{~€ƒ…„†ˆ‡‰ Š‹ŒŽFigura 1.5: Rappresentazione <strong>in</strong>siemistica delle relazioni a, b, c e d.vengono recuperate dalla query basata sul contenuto, allora possiamo def<strong>in</strong>ire iseguenti raggruppamenti dell’<strong>in</strong>sieme ú :1. a= Elementi recuperati e rilevanti (detection);2. b= Recuperati ma non rilevanti (Falso positivo);3. c= Non recuperato ma rilevante (Falso negativo);4. d= Non recuperato e non rilevante.In particolare esprimendo queste def<strong>in</strong>izioni attraverso il l<strong>in</strong>guaggio degli <strong>in</strong>siemi1.5 si ottiene che:# œ›³- iž # ò- úŸ iD 8j ï (1.1)#-”iD•Rj—–³-˜jšPer motivi <strong>di</strong> praticità le <strong>analisi</strong> delle prestazioni <strong>di</strong> un motore <strong>di</strong> ricerca vengonovalutate su un “Test Set” rappresentativo <strong>di</strong> immag<strong>in</strong>i <strong>di</strong> <strong>di</strong>mensioni notevolmentem<strong>in</strong>ori rispetto alla ú popolazione dell’<strong>in</strong>tero Database.L’efficacia <strong>di</strong> un i¡h£¢ algoritmo , rispetto ad un dato pre<strong>di</strong>cato <strong>di</strong> rilevanza Reled ad un <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i <strong>di</strong> prova (Test Set), viene misurata determ<strong>in</strong>ando ilrapporto tra il numero <strong>di</strong> immag<strong>in</strong>i recuperate dall’algoritmo <strong>di</strong> ricerca che sonoeffettivamente valide e la globalità delle immag<strong>in</strong>i valide:Efficacia (Recall) -›?#¤YòiD•Rj*ï(1.2)L’efficienza <strong>di</strong> un algoritmo <strong>di</strong> ricerca i¥h£¢ , rispetto ad un dato pre<strong>di</strong>cato <strong>di</strong> rilevanzaegf;h ed ad un <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i <strong>di</strong> prova (Test Set) viene misurata determ<strong>in</strong>andoil rapporto tra il numero <strong>di</strong> immag<strong>in</strong>i recuperate dall’algoritmo <strong>di</strong> ricerca›?#¤Yòi ï


ìì-#D– #¥1.4 Efficacia ed Efficienza. 19che sono effettivamente valide e l’<strong>in</strong>sieme delle immag<strong>in</strong>i recuperate:Efficienza (Precision) -›?#¤YòiD•¦j ï(1.3)›A#¡¤Yòj ïIn altre parole l’Efficacia risponde alla domanda “Quante immag<strong>in</strong>i che dovevanoessere i¥h£¢ recuperate dall’algoritmo vengono effettivamente recuperate?”, mentrel’Efficienza risponde alla domanda “Quante immag<strong>in</strong>i recuperate da Alg sonocorrette?”.Un sistema ideale per valori <strong>di</strong> Efficacia ed Efficienza normalizzatiðcªsull’<strong>in</strong>tervallodovrebbe rispondere alla con<strong>di</strong>zione <strong>di</strong> Efficacia=Efficienza=1; <strong>in</strong>§©¨ realtà non è possibile ottimizzare entrambe le grandezze e si rende necessariotrovare un compromesso accettabile tra la precisione del sistema e la quantità <strong>di</strong>immag<strong>in</strong>i restituite all’utente <strong>in</strong> risposta ad una data query [?].


20 I Database Multime<strong>di</strong>ali


Capitolo 2Caratteristiche (feature) <strong>di</strong>immag<strong>in</strong>iLo scopo dell’estrazione delle feature consiste nella determ<strong>in</strong>azione degli attribut<strong>in</strong>ecessari a caratterizzare il contenuto visuale dell’immag<strong>in</strong>e.In particolare le uniche <strong>in</strong>formazioni che si ottengono senza ulteriorielaborazioni delle immag<strong>in</strong>i consistono nel colore dei pixel.Sono qu<strong>in</strong><strong>di</strong> necessarie procedure <strong>in</strong> grado <strong>di</strong> estrarre proprietà <strong>di</strong> più altolivello <strong>in</strong> modo da ottenere una migliore caratterizzazione del contenuto dell’immag<strong>in</strong>e.Le feature possono essere calcolate a livello <strong>di</strong> immag<strong>in</strong>e o <strong>di</strong>regione.Nel primo caso si ottiene una descrizione molto compatta, ma poco accuratadato che immag<strong>in</strong>i anche molto <strong>di</strong>verse posso presentare le medesime featurepoiché si perdono le <strong>in</strong>formazioni sulla localizzazione nello spazio. Invece nelsecondo caso, a fronte <strong>di</strong> una maggiore occupazione <strong>di</strong> memoria, si ha una rappresentazionedelle feature a livello locale che mantiene le <strong>in</strong>formazione sulla loroposizione.È stato <strong>di</strong>mostrato che il contenuto visuale <strong>di</strong> un’immag<strong>in</strong>e è adeguatamentedescritto da una terna <strong>di</strong> feature che rappresentano le caratteristiche dell’immag<strong>in</strong>eriguardanti il colore, la tessitura e la forma.La scelta delle tipologie <strong>di</strong> feature da estrarre <strong>in</strong>fluenza le <strong>in</strong>terrogazioni effettuabilisulla base <strong>di</strong> dati che memorizza le immag<strong>in</strong>i poiché i risultati dellaquery sono determ<strong>in</strong>ati confrontando le feature memorizzate con quelle estrattedall’immag<strong>in</strong>e <strong>di</strong> query.Descriviamo nei prossimi paragrafi una serie <strong>di</strong> metodologie impiegate perl’estrazione delle feature a partire dalle immag<strong>in</strong>i non ancora elaborate.


22 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>i2.1 Feature <strong>di</strong> Colore.ì ¬« ï La ra<strong>di</strong>azione elettromagnetica nell’<strong>in</strong>tervallo della luce visibile ( compresotra 380nm e 780nm) viene percepita dall’occhio umano come colore o ¬ lucecolorata.È stato verificato sperimentalmente che il colore è percepito, all’<strong>in</strong>terno dell’occhio,da tre recettori <strong>in</strong><strong>di</strong>pendenti che hanno picchi <strong>di</strong> risposta <strong>in</strong> corrispondenzadelle lunghezze d’onda associate ai colori rosso (Red), verde (Green) e blu(Blue). Una generica emissione lum<strong>in</strong>osa può essere rappresentata da una sommaopportunamente pesata delle tre componenti precedenti.Il processo <strong>di</strong> percezione dei colori è un proce<strong>di</strong>mento complesso per cui isistemi automatici analizzano il colore a livello <strong>di</strong> pixel ignorando il colore <strong>di</strong>quelli a<strong>di</strong>acenti al pixel analizzato.Lo spazio rappresentato dai valori RGB è anche quello utilizzato all’<strong>in</strong>ternodei più comuni formati <strong>di</strong> memorizzazione delle immag<strong>in</strong>i dove, a ciascun canale,è associato lo spazio <strong>di</strong> memoria <strong>di</strong> un byte, che permette <strong>di</strong> rappresentare più <strong>di</strong>un milione <strong>di</strong> colori <strong>di</strong>fferenti come comb<strong>in</strong>azione dei 256õ ªvalori assegnabili a<strong>di</strong>n questo spazio è necessarioogni canale. Rappresentare ogni ú­§ %'immag<strong>in</strong>eai f<strong>in</strong>i della visualizzazione, mentre ai f<strong>in</strong>i dell’estrazione delle feature basta unospazio <strong>di</strong> <strong>di</strong>mensione m<strong>in</strong>ore, per cui lo spazio <strong>in</strong>iziale viene trasformato dalla¦¨§ funzione <strong>in</strong> uno spazio più adeguato e quantizzato, dalla funzione § , <strong>in</strong> unnumero m<strong>in</strong>ore <strong>di</strong> valori. Le proprietà che lo spazio trasformato e quantizzatodeve verificare per essere adeguato alle operazioni <strong>di</strong> estrazione delle feature sono©le seguenti:1. Uniformità: le misure <strong>di</strong> <strong>di</strong>stanza tra colori sono strettamente legate allaloro similitu<strong>di</strong>ne ottica.Come sappiamo <strong>in</strong>fatti la similarità dei colori delle immag<strong>in</strong>i vengono calcolate<strong>in</strong> base a funzioni <strong>di</strong> <strong>di</strong>stanza per cui la trasformazione che porta alnuovo spazio dei colori deve essere tale da rendere semplice il calcolo dellasimilitu<strong>di</strong>ne. Un modo per ottenere ciò è far si che la <strong>di</strong>stanza tra due color<strong>in</strong>on sia funzione della loro posizione assoluta, ma solo <strong>di</strong> quella relativa.2. Completezza: lo spazio dei colori deve contenere tutti i colori percettivamente<strong>di</strong>st<strong>in</strong>ti. Devono essere rappresentati tutti i colori che visivamenterisultano <strong>di</strong>versi.3. Compattezza: ogni colore nello spazio deve essere percettivamente <strong>di</strong>st<strong>in</strong>todagli altri colori. Il nuovo spazio, risultante dalla trasformazione e dallaquantizzazione, non deve essere ridondante <strong>in</strong> modo da ridurre la complessitàdella rappresentazione delle feature sui colori ed il calcolo delle <strong>di</strong>s-


°Lo spazio <strong>di</strong> colore OPP. 23tanze. Queste due con<strong>di</strong>zioni fanno si che il nuovo spazio contenga solo icolori necessari e sufficienti all’adeguata rappresentazione delle feature.4. Naturalezza: lo spazio dei colori deve fornire una naturale sud<strong>di</strong>visione deicolori nei tre pr<strong>in</strong>cipali attributi lum<strong>in</strong>osità, t<strong>in</strong>ta e saturazione:Lum<strong>in</strong>osità: attributo che rappresenta la sensazione fisica associata0alla percezione <strong>di</strong> una maggiore o m<strong>in</strong>ore quantità <strong>di</strong> luce.T<strong>in</strong>ta: attributo che rappresenta la similitu<strong>di</strong>ne cromatica del colore0dato con uno o due dei quattro colori pr<strong>in</strong>cipali: rosso, verde, giallo eblu.Saturazione: attributo che rappresenta la sensazione fisica associata0alla quantità <strong>di</strong> t<strong>in</strong>ta presente all’<strong>in</strong>terno <strong>di</strong> un dato colore. La saturazionepermette <strong>di</strong> esprimere un giu<strong>di</strong>zio sul grado <strong>in</strong> cui una luce colorata<strong>di</strong>fferisce da una non colorata <strong>in</strong><strong>di</strong>pendentemente dalle rispettivelum<strong>in</strong>osità.Lo spazio RGB sod<strong>di</strong>sfa solamente la proprietà <strong>di</strong> completezza, mentre nonvalgono quelle <strong>di</strong> uniformità, compattezza e naturalezza.Def<strong>in</strong>iamo una serie <strong>di</strong> trasformazioni che permettono <strong>di</strong> ottenere a partireda un ®¯ § punto <strong>in</strong> un nuovo spazio che cerca <strong>di</strong>sod<strong>di</strong>sfare il maggior numero <strong>di</strong> proprietà tra quelle precedentemente elencate.ó


-ÐÎÎÎÎÎÎÑðÑðìììììììììììa partire da ® óV§j-¸ž\ó0ïì24 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>i2.1.2 Lo spazio <strong>di</strong> colore <strong>di</strong> Munsell.Un’altra trasformazione è quella che permette <strong>di</strong> ottenere lo spazio <strong>di</strong> colore <strong>di</strong>Munsell.Munsell ha realizzato una raccolta <strong>di</strong> 1200 piastr<strong>in</strong>e colorate ad ognuna dellequali ha assegnato un valore <strong>di</strong> lum<strong>in</strong>osità (Hue), saturazione (Saturation) e t<strong>in</strong>ta(Chroma). Le varie piastr<strong>in</strong>e sono <strong>di</strong>sposte <strong>in</strong> modo che la <strong>di</strong>stanze tra due coloria<strong>di</strong>acenti sia sempre la stessa e unitaria.Lo spazio <strong>di</strong> colore <strong>di</strong> Munsell (HSC) è sicuramente compatto, completo enaturale, ma non è uniforme. Il problema con questo spazio è che Munsell non hadef<strong>in</strong>ito quali equazioni per la trasformazione o quantizzazione sono necessarieper ottenere il suo spazio partendo da quello RGB.Tramite la MTM (Trasformata Matematica su Munsell) viene def<strong>in</strong>ita una proceduranon l<strong>in</strong>eare e non <strong>in</strong>vertibile che permette <strong>di</strong> approssimare lo spazio <strong>di</strong>Munsell (HSC) a partire da quello RGB [?].Ad esempio QBIC [?] <strong>in</strong> un primo momento quantizza lo spazio RGB a 4096colori, poi ogni colore è trasformato tramite la MTM nello spazio <strong>di</strong> Munsell cheviene poi ulteriormente ridotto determ<strong>in</strong>ando i 64 o 256 colori più rappresentativiattraverso un adeguato algoritmo <strong>di</strong> cluster<strong>in</strong>g.2.1.3 Lo spazio <strong>di</strong> colore HSV.Un’ulteriore trasformazione permette <strong>di</strong> passare allo spazio HSV che co<strong>di</strong>fica icolori tramite i valori <strong>di</strong> t<strong>in</strong>ta (Hue), saturazione (Saturation) e lum<strong>in</strong>osità (Value).Anche questa trasformazione è non l<strong>in</strong>eare, ma è anche facilmente <strong>in</strong>vertibile.Lo spazio HSV è naturale ed approssimativamente uniforme. Tramite un’adeguataquantizzazione risulta anche compatto e completo. La ¦ø§ trasformazione chepermette <strong>di</strong> ottenere ® ¯ ì·§þ-il vettoredalle seguenti equazioni:Trasformazione da RGB a HSV:¤JA¢ – ï è def<strong>in</strong>itaÇÆ È7É ¸v-¾½¿À.ÁˆÂcÃÅħƽ(2.2)¤JA¢ – ïó-¹Nº¼»–ZÊ -½¿€ÈÇÆ È7É ½¿À.ÁˆÂcÃÅħƤ¼Ê -½¿ÄÇÆ È7É ½¿À.ÁˆÂËÃÅħƢÊÂ-½¿ÇÇ%Æ È7É ½¿À.ÁˆÂcÃÅħÆÎÎÎÎÎÎÍÏB¢ÊÖ¸;fÒ¤I-¹Nº¼»– ïfÒ¢Ø× - ¹]ÓÕÔ¤JA¢¹]ÓÕÔ¤


ïííðÿïííðîëíí ¦êìá ï\ï ï132 465! "$#&%(') *,+.-%(/0'+ 798;: A@ BDCFEGEIH J9KML N9OFPRQ S9TFUVURW XDYZ [9\?]V^ _9`?aGaAb cedgfih j k © ©¨ïííðIstogramma dei colori. 25Trasformazione <strong>in</strong>versa da HSV a RGB:á -Ì ©â¤µãä­ òÌ ìåÈÓ- óçæïì ð(2.4)ì\ì ðì ðì ð´¸Qïå Å-óèæݸXï£æ á ï å+Å- óçæ¸ÒæñAò.ó…ê¦ô£õ£ó…ê¦öñAò­óŸê ÿ­õóŸê¦úñò óÛê ü'õó…꣢é"êìëííî¤ÒêÙëííîøùñò óÛê ô'õó…ê ÿ÷óÛêàö ÷yýþñò÷¥øùñAò.ó…êûúõ£ó…êàü÷ øùñAò­óŸê¥¢'õóŸê¦ö÷FýþñAò.ó…ê÷yýþñAò­óŸêàüóÛêàú(2.5)Lo spazio HSV può essere agevolmente rappresentato da un cil<strong>in</strong>dro dove la quotasull’asse verticale che attraversa le due basi rappresenta la lum<strong>in</strong>osità (Value) cioèla quantità <strong>di</strong> bianco o nero presente nel colore. La <strong>di</strong>stanza dall’asse verticale rappresentala saturazione (Saturation) cioè la quantità <strong>di</strong> colore presente. L’angolo<strong>di</strong> rotazione rispetto ad un dato piano che giace sull’asse verticale rappresenta lat<strong>in</strong>ta (Hue) dove i tre colori pr<strong>in</strong>cipali R,G,B <strong>di</strong>stano tra <strong>di</strong> loro <strong>di</strong> 120.Lo spazio HSV è impiegato <strong>in</strong> VisualSEEk [?] con una quantizzazione © §a 166 colori ottenuti assegnando alla t<strong>in</strong>ta 18 possibili valori, mentre alla saturazionee alla lum<strong>in</strong>osità vengono assegnati solamente 3 valori. QuestaðÌquantiz-possibili tonalità <strong>di</strong> colore a cui¤vengono aggiunte anche 4 tonalità <strong>di</strong> grigio per un totale <strong>di</strong> 166 elementi.zazione permette <strong>di</strong> ottenere ð¨§æI/2æI/ -÷¡ ñAò.ó…꣢÷¡ ñAò­óŸêàô÷¡ ñò2.1.4 Istogramma dei colori.Le feature sul colore più conosciuta ed impiegata da quasi tutti i sistemi è l’istogrammadei colori che consiste <strong>in</strong> un vettore <strong>di</strong> K <strong>in</strong>teri, dove K è il numero<strong>di</strong> colori ottenuti dopo la trasformazione e la quantizzazione dello spazio <strong>in</strong>iziale(Figura 2.1).Figura 2.1: Schema a blocchi dei passi <strong>di</strong> trasformazione ¦¨§ e quantizzazione © §necessari all’estrazione dell’istogramma dei colori.k


ìðªïª-lm¿ª-v¨¨©§ìªì26 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iL’istogramma dell’immag<strong>in</strong>e viene calcolato contando le occorrenze <strong>di</strong> ognunodei K colori contenuti all’<strong>in</strong>terno dell’immag<strong>in</strong>e. Data un’immag<strong>in</strong>eõ ªnellospazio RGB ú!§ %'applichiamo la trasformazione ¦¨§ e la quantizzazione © §ottenendo uno spazio a K colori, allora l’m-esimo elemento dell’istogrammaè determ<strong>in</strong>ato nella maniera seguente:)§§ ¨ 2111 ®ú!§ !xwª(2.6),ìnùporq lts¿nuorq v ð§%§ˆßï\ï½-”߸f¦¨§#€h£Þ#¤< ßàf©ÞRUn’ulteriore elaborazione dell’istogramma dei colori permette <strong>di</strong> ottenere unanuova feature ancora più compatta detta Color Set. Il Color Set è implementatoattraverso un vettore <strong>di</strong> K elementi b<strong>in</strong>ari, per cui è molto più compatto, dovead ogni elemento viene associato il valore 1 se il corrispondente elemento nell’istogrammacontiene più dal sistema, e 0 <strong>in</strong> casocontrario.cony&z <strong>di</strong>y&z{§}§©ßð(2.7)¸;f³§}§©ßelementi,fissato#h£Þ#¤V·ßàf!ÞRI Color set vengono impiegati <strong>in</strong>sieme ad algoritmi <strong>di</strong> estrazione delle regioniall’<strong>in</strong>terno <strong>di</strong> VisualSEEk [?]. Infatti i Color set vengono utilizzati per rappresentareil colore predom<strong>in</strong>ante delle regioni scartando tutti quelli che non sonoadeguatamente rappresentati.¢|y&zSpazi <strong>di</strong> coloreProprietà RGB OPP Munsell HSVUniformità NO NO NO SÌCompattezza NO NO SÌ SÌCompletezza SÌ SÌ SÌ SÌNaturalezza NO NO SÌ SÌTrasformazione N/A LINEARE NON LINEARE NON LINEARETabella 2.1: Confronto delle caratteristiche peculiari dei <strong>di</strong>versi spazi <strong>di</strong> coloredescritti.2.2 Feature <strong>di</strong> tessitura.Con il term<strong>in</strong>e tessitura (texture) si def<strong>in</strong>iscono quei raggruppamenti <strong>di</strong> pixelche con la loro <strong>di</strong>sposizione spaziale o per il loro motivo uniforme non sonosufficientemente rappresentati dal solo attributo colore.


Caratterizzazione <strong>di</strong>retta. 27Le tessiture possono consistere nella <strong>di</strong>sposizione perio<strong>di</strong>ca o casuale <strong>di</strong> elementifondamentali, ma possono anche non presentare alcuna strutturazione.Modellare analiticamente una tessitura è uno dei compiti più <strong>di</strong>fficili della visioneartificiale.Le tessiture sono uno degli elementi più importanti nella def<strong>in</strong>izione <strong>di</strong> unascena, <strong>in</strong> particolare forniscono <strong>in</strong><strong>di</strong>zi sulla profon<strong>di</strong>tà della scena oppure sull’orientamentonello spazio delle superfici; <strong>in</strong>oltre vengono efficacemente impiegate,nelle immag<strong>in</strong>i da satellite, per riconoscere la natura della superficie terrestre. Èqu<strong>in</strong><strong>di</strong> possibile <strong>di</strong>st<strong>in</strong>guere monti, pianure, tipi <strong>di</strong> raccolti e agglomerati urbani.I sistemi <strong>di</strong> visualizzazione grafica ottengono risultati <strong>di</strong> elevato realismoquando sulle superfici tri<strong>di</strong>mensionali vengono proiettate le rispettive texture. Inf<strong>in</strong>ele tessiture descrivono il contenuto <strong>di</strong> immag<strong>in</strong>i reali come nuvole, foglie,mattoni e tessuti. Un ulteriore problema consiste nel riconoscere le tessiture<strong>in</strong><strong>di</strong>pendentemente dalle <strong>di</strong>storsioni prospettiche e dalle variazioni <strong>di</strong> lum<strong>in</strong>osità.2.2.1 Caratterizzazione <strong>di</strong>retta.Uno dei primi approcci nel riconoscimento delle tessiture implementato nel sistemaQBIC consiste nell’estrarre una serie <strong>di</strong> parametri calcolati sul canale <strong>di</strong>lum<strong>in</strong>osità dello spazio <strong>di</strong> colore dell’immag<strong>in</strong>e: <strong>in</strong> particolare il sistema estraeuna versione mo<strong>di</strong>ficata <strong>di</strong> alcuni dei parametri <strong>in</strong>trodotti da Tamura <strong>in</strong> [?] comerugosità (Coarseness), contrasto (Contrast) e <strong>di</strong>rezionalità (Directionality).La rugosità misura la scala della tessitura ed è facilmente determ<strong>in</strong>ata0attraverso una serie <strong>di</strong> f<strong>in</strong>estre mobili <strong>di</strong> <strong>di</strong>verse <strong>di</strong>mensioni.Il contrasto determ<strong>in</strong>a le variazioni <strong>di</strong> lum<strong>in</strong>osità dell’immag<strong>in</strong>e ed è0calcolato attraverso la varianza dell’istogramma a toni <strong>di</strong> grigio.La <strong>di</strong>rezionalità determ<strong>in</strong>a l’esistenza <strong>di</strong> una <strong>di</strong>rezione preferenziale oppure0l’eventuale omogeneità ed è derivata dall’<strong>analisi</strong> della <strong>di</strong>stribuzione della<strong>di</strong>rezione del gra<strong>di</strong>ente dell’immag<strong>in</strong>e <strong>in</strong> una serie <strong>di</strong> punti equamente<strong>di</strong>stribuiti.2.2.2 La trasformata Wavelet.Una recente evoluzione nell’<strong>analisi</strong> delle tessiture <strong>in</strong>troduce una trasformazionedello spazio dei punti dell’immag<strong>in</strong>e che porta <strong>in</strong> un nuovo spazio dove la determ<strong>in</strong>azionedelle proprietà salienti è più evidente. Questa trasformazione prende ilnome <strong>di</strong> trasformata Wavelet.Attraverso la trasformata Wavelet proprietà <strong>in</strong> apparenza <strong>di</strong>verse come il colore,la tessitura e la forma possono essere efficacemente caratterizzate <strong>in</strong> maniera


°ì« ï½-~}ììì# …ì28 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iomogenea. Questo approccio fa si che non debbano essere def<strong>in</strong>ite procedure <strong>di</strong>verseper l’esecuzione <strong>di</strong> query sulle feature estratte, procedure che presentanometriche <strong>di</strong> confronto <strong>di</strong>verse, prestazioni <strong>di</strong>verse nel recupero delle immag<strong>in</strong>i e<strong>di</strong>n particolare impe<strong>di</strong>scono la def<strong>in</strong>izione <strong>di</strong> query che specificano nei criteri <strong>di</strong> recuperocontemporaneamente sia <strong>in</strong>formazioni sul colore che sulla tessitura o sullaforma.La trasformata wawelet è una tecnica <strong>di</strong> <strong>analisi</strong> tempo/frequenza detta anche<strong>analisi</strong> multirisoluzione che trova applicazione <strong>in</strong> problemi <strong>di</strong> compressione,riconoscimento <strong>di</strong> bor<strong>di</strong> ed <strong>analisi</strong> <strong>di</strong> elementi <strong>di</strong> tessitura <strong>di</strong> immag<strong>in</strong>i. Lewawelet sono funzioni matematiche <strong>in</strong> grado <strong>di</strong> fornire una rappresentazione multirisoluzionedel segnale molto utile nell’<strong>analisi</strong> del contenuto dell’immag<strong>in</strong>e;sono <strong>in</strong>fatti <strong>in</strong> grado <strong>di</strong> decomporre il segnale <strong>in</strong> <strong>di</strong>verse componenti <strong>di</strong> frequenzae stu<strong>di</strong>are ogni componente con <strong>di</strong>versa risoluzione e scala.Forniscono <strong>in</strong>oltre robuste <strong>in</strong>formazioni relativamente all’<strong>in</strong>tensità lum<strong>in</strong>osa esono <strong>in</strong> grado <strong>di</strong> catturare efficientemente proprietà <strong>di</strong> tessitura e forma. L’ideaalla base delle wawelet è la stessa presente nella trasformata <strong>di</strong> Fourier, cioè approssimareattraverso la sovrapposizione <strong>di</strong> funzioni. Il problema pr<strong>in</strong>cipale legatoall’<strong>analisi</strong> <strong>di</strong> Fourier è che le funzioni base impiegate nell’approssimazione sonoseno e coseno che per la loro natura non sono locali, <strong>in</strong> quanto si estendono sututto l’asse reale e non sono pertanto <strong>in</strong> grado <strong>di</strong> approssimare dettagli f<strong>in</strong>i.L’<strong>in</strong>novazione portata dalle wawelet è tale per cui le funzioni approssimantisono contenute <strong>in</strong> un dom<strong>in</strong>io f<strong>in</strong>ito che le rende particolarmente idonee allarappresentazione <strong>di</strong> segnali contenenti forti <strong>di</strong>scont<strong>in</strong>uità.Esistono <strong>di</strong>versi tipi <strong>di</strong> WT (Wavelet Trasfomation); la pr<strong>in</strong>cipale <strong>di</strong>st<strong>in</strong>zioneriguarda:0Trasformata <strong>di</strong> Wavelet cont<strong>in</strong>ua (CWT)Trasformata <strong>di</strong> Wavelet <strong>di</strong>screta (DWT)0La DWT è particolarmente utile nel caso <strong>di</strong> <strong>analisi</strong>, computazione e compressione<strong>di</strong> immag<strong>in</strong>i.La CTW decompone un segnale « % ï 1D, , <strong>in</strong> un <strong>in</strong>sieme <strong>di</strong> funzioni Waveletbase:È ñ% ï ò&% (2.8)% ï€,ñ «È ÆTale base, che normalmente è completa e ortogonale, è ottenuta traslando e<strong>di</strong>latando una s<strong>in</strong>gola Wavelet”ì% ï “mother :% ï½ð‚#„ƒ%´–(2.9)ñÆ È


Ž0‘ Œ¨ðð¤’La trasformata Wavelet. 29La Wavelet”ì% ï “mother è localizzata sia nel dom<strong>in</strong>io spaziale che nel dom<strong>in</strong>iodelle frequenze e deve sod<strong>di</strong>sfare la con<strong>di</strong>zione <strong>di</strong> avere me<strong>di</strong>a nulla:% ï ò&% - ¨ (2.10)Un esempio <strong>di</strong> “mother Wavelet” è la funzione base <strong>di</strong> Harr (Figura 2.2) chedef<strong>in</strong>isce la trasformata <strong>di</strong> Harr ed è il più semplice ed antico esempio <strong>di</strong> Waveletortonormale a supporto compatto.La funzione base <strong>di</strong> Harr può essere espressa nella seguente formulazione:ì% ï½-ÍÏÐ} 쨇† %‰ˆðââ ð ðaltrimenti%‹ˆ ¤Š†(2.11)L’algoritmo <strong>di</strong> trasformazione adotta un proce<strong>di</strong>mento <strong>di</strong> scomposizione cheFigura 2.2: Funzione base <strong>di</strong> Harr.utilizza due sottobande <strong>in</strong> maniera iterativa.Dopo il primo passo <strong>di</strong> co<strong>di</strong>fica <strong>in</strong> sottobande (costituito da una fase <strong>di</strong> filtraggioed una fase <strong>di</strong> sottocampionamento), dal quale si ottengono ²$qe , la ²componente a bassa frequenza, ²$q, è nuovamente filtrata e sottocampionata; l’iterazionecont<strong>in</strong>ua mantenendo le componenti ad alta frequenza e co<strong>di</strong>ficando quellea bassa frequenza f<strong>in</strong>o ad ottenere un unico segnale a bassa frequenza.


®®#ìâ#òìì30 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iConsiderando un segnale <strong>di</strong> <strong>in</strong>put <strong>di</strong>screto % -ö.-lunghezzapassi:ï avente ¤•”il processo <strong>di</strong> trasformazione è compiuto attraverso i seguenti%“qT% 111 T%l¿qla loro som-qla loro <strong>di</strong>fferenza; si proceda allo stesso modo per tutte le restantiLivello 1: si consider<strong>in</strong>o i primi due punti %“q!% campione e # sianoma ò ecoppie <strong>di</strong> punti %­4ùP!%­4ùp–¨\ï . Da tali punti si otterranno i valori:ìù - —ì(2.12)%­4ùF%­4ù˜–¨\ï- —ì%­4ù©ùdove C è una costante <strong>di</strong> proporzionalità.%­4ù˜–¨\ïIù valori ö #¤Éï rappresentano la parte a bassa frequenza delsegnale (‘smooth’) mentre i valori ò ù costituiscono l’alta frequenza dellostesso.šˆ ¨†Livello 2: si consider<strong>in</strong>o i #ù valori (parte smooth del segnale) e su <strong>di</strong> essa siprocede come nel passo precedente; si ottengono allo stesso modo, i valori.â•ï, componente a bassa frequenza del segnale, e òùù¨›† œˆ ösi ripeta ricorsivamente il proce<strong>di</strong>mento f<strong>in</strong>o ad avere un unico segnale111smooth <strong>di</strong> lunghezza unitaria.La trasformata <strong>di</strong> %Harr del segnale orig<strong>in</strong>ale è data dall’<strong>in</strong>sieme dei valori <strong>di</strong>‘<strong>di</strong>fferenza’ ad ogni livello l più la ù componente ‘smooth’ dall’ultimo ù livello. £¢M¤ öPer chiarire meglio cosa succede consideriamo un segnale <strong>di</strong>screto % <strong>di</strong> <strong>di</strong>-campionato nell’<strong>in</strong>tervallo¥ÛÞ . Al primo passo <strong>di</strong> trasformazionela Wavelet spezza % <strong>in</strong> due sottovettori ® # ? ® ò ognuno <strong>di</strong> lunghezza N/2sull’<strong>in</strong>tervallo <strong>di</strong> campionamento ¤¥ÛÞ . Il vettore ® ò è mantenuto e rappresentala prima porzione della trasformata <strong>di</strong>ò9ž, il processo <strong>di</strong> sud<strong>di</strong>visione cont<strong>in</strong>ua su#9ž%producendoŸ -¡® òž ; la sud<strong>di</strong>visione cont<strong>in</strong>ua s<strong>in</strong>o all’L-esimo passo nel quale# ® #žò”consistono <strong>in</strong> un solo punto ed ® % il vettore può essere rimpiazzato #” ®dai vettori. Ad ogni passo la somma delle lunghezze <strong>di</strong> due sottoò ,òž111ø,ò”#”ïvettori ottenuti è pari alla lunghezza del vettore padre, così la ì somma degli L,ò”ï vettori più il punto f<strong>in</strong>ale è pari a N lunghezza del segnale,òž2111 ò #” ìmensione ö - ¤”. L’<strong>in</strong>sieme dei valori <strong>in</strong><strong>di</strong>cati con # è essenzialmente la me<strong>di</strong>a (averag<strong>in</strong>g) dei%dati del precedente livello (Figura 2.3). Nel dom<strong>in</strong>io delle frequenze ciò equivalead applicare un filtro passa basso (low-pass filter) alle <strong>in</strong>formazioni del precedentelivello. L’<strong>in</strong>sieme dei valori <strong>in</strong><strong>di</strong>cati ò con è la <strong>di</strong>fferenza dei dati del passoprecedente e la me<strong>di</strong>a dei dati al passo attuale. Nel dom<strong>in</strong>io delle frequenze questaoperazione equivale all’applicazione <strong>di</strong> un filtro passa-alto (high-pass filter) allivello precedente.


¦¨§ª©“«V¬®­ì¾Á¹ºì¿Âìµ(·V¸½À¯r°±M²³M´La trasformata Wavelet. 31Figura 2.3: Rappresentazione Filter Bank FB <strong>di</strong> una decomposizione Wavelet 1D.»¼L’operazione <strong>di</strong> trasformazione può essere vista come l’applicazione <strong>in</strong> cascata<strong>di</strong> una serie <strong>di</strong> moduli <strong>di</strong> Filter Bank (FB). Un Filter Bank è un <strong>in</strong>sieme <strong>di</strong>filtri passa banda che consente <strong>di</strong> decomporre il segnale <strong>in</strong> componenti <strong>di</strong> <strong>di</strong>versafrequenza. Il segnale <strong>di</strong> « % ï <strong>in</strong>put è fatto passare <strong>in</strong> parallelo attraverso tali filtrie le ¢Xù % ï funzioni ottenute <strong>in</strong> uscita da ogni s<strong>in</strong>golo blocco sono tali che la lorosommatoria permette <strong>di</strong> riottenere la « % ï funzione <strong>di</strong> <strong>in</strong>gresso.L’idea alla base della trasformata Wavelet è quella <strong>di</strong> sud<strong>di</strong>videre il pianodelle frequenze <strong>in</strong> un <strong>in</strong>sieme <strong>di</strong> <strong>in</strong>tervalli <strong>di</strong>sgiunti ed usare tali sud<strong>di</strong>visioniper def<strong>in</strong>ire una serie <strong>di</strong> funzioni passa-banda che permettano <strong>di</strong> esaltare lecomponenti <strong>di</strong> <strong>in</strong>teresse.La funzione <strong>di</strong> Harr ha il pr<strong>in</strong>cipale svantaggio <strong>di</strong> essere <strong>di</strong>scont<strong>in</strong>ua, ciò larende <strong>in</strong>adeguata all’approssimazione <strong>di</strong> funzioni smooth; una delle più popolaritrasformate Wavelet, nota come Wavelet <strong>di</strong> Daubechies è <strong>in</strong> grado <strong>di</strong> risolverequesti problemi.Le Wavelet <strong>di</strong> Daubechies forniscono importanti risultati nell’<strong>analisi</strong> e nellas<strong>in</strong>tesi <strong>di</strong> immag<strong>in</strong>i; tali trasformate <strong>in</strong>fatti sono simili ad una me<strong>di</strong>a pesata chemeglio preserva le <strong>in</strong>formazioni memorizzate nel segnale se si considera solo lacomponente a bassa frequenza.Le immag<strong>in</strong>i possono essere rappresentate come segnali 2D che vengonogestiti, <strong>in</strong> maniera analoga, attraverso la trasformata Wavelet bi<strong>di</strong>mensionale chene fornisce una rappresentazione <strong>in</strong> sottobande <strong>di</strong> frequenza.Nel caso 2D il dom<strong>in</strong>io temporale è rappresentato dalla locazione spaziale deipixel, mentre il dom<strong>in</strong>io delle frequenze è rappresentato dalla variazione <strong>di</strong> coloretra i punti. La costruzione <strong>di</strong> una base ortonormale per uno spazio bi<strong>di</strong>mensionaleprende come punto <strong>di</strong> partenza il caso mono<strong>di</strong>mensionale, per mezzo del quale


mono<strong>di</strong>mensionali:ÎùÄÃÆuÃÅùpÆÆuÆìÇdef<strong>in</strong>isceìì32 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iè possibile def<strong>in</strong>ire la funzione prototipo come il prodotto <strong>di</strong> due funzioni baseï (2.13)%­La famiglia <strong>di</strong> funzioni ottenute variando i e k nell’<strong>in</strong>sieme dei numeri relativiuna base <strong>in</strong>Ÿortonormaleï , nella quale le due variabili %ù sono<strong>di</strong>latate separatamente.Data un’immag<strong>in</strong>e avente <strong>di</strong>mensione (N x M), dove M ed N sono potenze <strong>di</strong>2, ogni passo <strong>di</strong> trasformazione decompone il segnale <strong>in</strong> quattro sotto-immag<strong>in</strong>i <strong>di</strong><strong>di</strong>mensioni (N/2 x M/2), ognuna delle quali rappresenta una parte del piano dellefrequenze. Ogni sotto-immag<strong>in</strong>e è ottenuta applicando i passi <strong>di</strong> trasformazione,sopra descritti, alle righe ed alle colonne dell’immag<strong>in</strong>e <strong>di</strong> <strong>in</strong>put.ìÉÈIn particolare <strong>in</strong><strong>di</strong>chiamo con:ïÈ-„ÎùÄÃÆuÃì \ï€ÎùpÆÆuÆì% T%­ %0LL: Low–Low nella <strong>di</strong>rezione orizzontale e verticale;0LH: Low nella <strong>di</strong>rezione verticale High nella <strong>di</strong>rezione orizzontale;0HL: High nella <strong>di</strong>rezione verticale Low nella <strong>di</strong>rezione orizzontale;HH: High–High nella <strong>di</strong>rezione orizzontale e0verticale.Dove Low e High stanno per l’applicazione <strong>di</strong> un filtro passa-basso cioè unasomma <strong>di</strong> elementi a<strong>di</strong>acenti e <strong>di</strong> un filtro passa-alto cioè una <strong>di</strong>fferenza <strong>di</strong> elementia<strong>di</strong>acenti rispettivamente e le <strong>di</strong>rezioni verticali ed orizzontali corrispondonoalla <strong>di</strong>rezione <strong>di</strong> righe e colonne su cui si considera l’a<strong>di</strong>acenza.Il successivo livello <strong>di</strong> trasformazione considera la sotto-immag<strong>in</strong>e formatadalla banda LL e la scompone allo stesso modo <strong>in</strong> ulteriori quatto bande ottenendoimmag<strong>in</strong>i <strong>di</strong> <strong>di</strong>mensione (N/4 x M/4).Il processo <strong>di</strong> trasformazione può essere eseguito per un numero massimo <strong>di</strong>livelli pari £¢M¤ ¹NÓ Ô öËôï ï .Sia le proprietà <strong>di</strong> colore che <strong>di</strong> tessitura <strong>in</strong> W<strong>in</strong>dsurf [?] possono essere caratterizzate<strong>in</strong> maniera efficace attraverso la trasformata Wavelet, come <strong>di</strong> seguitodescritto.La WT contiene <strong>in</strong>formazione relative ad ogni canale <strong>di</strong> colore: <strong>in</strong>fatti, dataun’immag<strong>in</strong>e <strong>in</strong> <strong>in</strong>put def<strong>in</strong>ita su <strong>di</strong> un particolare spazio <strong>di</strong> colore, il processo<strong>di</strong> trasformazione è tale per cui ogni canale trasformato risulta essere <strong>di</strong>viso <strong>in</strong>sottobande a frequenza <strong>di</strong>versa.aŸ †ÊSi consideri un’immag<strong>in</strong>e def<strong>in</strong>ita, ad esempio, sullo spazio HSV. Se si suppone<strong>di</strong> applicare la WT al livello 1 si otterranno quattro sottobande <strong>di</strong> frequenzaper ogni canale. In particolare si avrà una rappresentazione <strong>di</strong> ogni sottobanda(LL,LH,HL,HH) per ogni canale H, S e V.


ÌŸœŸŸË{Ÿ ÎÍYï del livello h§ìðììðIstogramma della tessitura. 33Se si suppone <strong>in</strong>oltre <strong>di</strong> trasformare f<strong>in</strong>o al secondo livello, allora la sottobandaLL del livello 1, <strong>di</strong> ogni canale, sarà ulteriormente sud<strong>di</strong>visa nelle quattro componenti<strong>di</strong> frequenza e così via (Figura 2.4). Qu<strong>in</strong><strong>di</strong> ogni coefficiente dell’immag<strong>in</strong>etrasformata altro non è che la rappresentazione <strong>di</strong> un particolare canale <strong>di</strong> coloree <strong>in</strong> una particolare banda <strong>di</strong> frequenza <strong>di</strong> un particolare punto dell’immag<strong>in</strong>e.In<strong>di</strong>chiamo il j-esimo coefficiente Wavelet sottobanda{dellaì{Ë<strong>di</strong> trasformata con il simbolo:ì ¯žÅÏuï (2.14)dove il coefficiente relativo al canale › ¤ÐÍYï .Le caratteristicheÆurappresentariguardanti le tessiture delle immag<strong>in</strong>i sono ottenute misurandol’energia dei coefficienti della Wavelet nelle <strong>di</strong>verse sottobande <strong>di</strong> frequenza.Questo tipo <strong>di</strong> approccio è lo stesso utilizzato da Smith [?] nellarappresentazione della tessitura ed è noto essere il metodo più robusto per larappresentazione delle feature <strong>di</strong> tessitura.L’idea <strong>di</strong> base <strong>di</strong> questo approccio è quella <strong>di</strong> poter rappresentare congiuntamente<strong>in</strong>formazioni <strong>di</strong> colore e <strong>di</strong> tessitura, per tale ragione si fornisce un approccioche utilizza una formulazione <strong>in</strong> grado <strong>di</strong> contenere <strong>in</strong>formazioni sia sull’energia<strong>di</strong> un punto def<strong>in</strong>ito su <strong>di</strong> un particolare canale <strong>di</strong> colore che proprietà ¯žÅÏ<strong>di</strong>correlazione fra punti relativi a canali non omonimi. Def<strong>in</strong>iamo qu<strong>in</strong><strong>di</strong> l’energia›J,ò ›J,òĘ̈ ¤ÐÍYï sui canali <strong>di</strong> un punto j <strong>di</strong> una sottobanda S <strong>di</strong> un dato livello<strong>di</strong> trasformata l come:u- ¯žÅÏqu u ¯žÅÏ ¯žÅÏ›Ę̈h†ŸïIn particolare per › - ò tale formulazione rappresenta l’energia del canale, per§gÑÆu- fžÅϧÆu¯žÅÏ ¯žÅÏ- ò , viceversa, si parla <strong>di</strong> energia <strong>di</strong> correlazione o cross-energy tra i canali c e›]×d.Def<strong>in</strong>iamo pertanto:ÑÆu(2.15)q!il vettore contenente le energie e le cross-energy sui <strong>di</strong>versi canali <strong>di</strong> colore.qxqÆufžÅÏfžÅÏqPÆufžÅÏ2.2.3 Istogramma della tessitura.PÆufžÅÏ…ÆufžÅÏPÆufžÅÏVisualSEEk [?] <strong>in</strong>vece va oltre la trasformata Wavelet <strong>in</strong>troducendo ulteriorielaborazioni che permettono <strong>di</strong> caratterizzare le tessiture <strong>in</strong> uno spazio a 9<strong>di</strong>mensioni.In particolare ogni immag<strong>in</strong>e è elaborata attraverso la trasformata Wavelet iteratatre volte sulla banda LL (Figura 2.5). Il passo seguente consiste nell’ap-u -ÓÒ;fžÅÏÆu;Ô(2.16)


í¨îGîAï ð¨ñòAó ôõõö ÷áøxùú é¨êVëìâáãäxå æ‡ç¨çèÞ‡ßáà Ý®Ì{q{1211 {0þØ ÙÛÚÎÜÕ Ö‡ÖÎ׿34 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iFigura 2.4: Disposizione delle sottobande <strong>di</strong> frequenza <strong>di</strong> un’immag<strong>in</strong>etrasformata attraverso la WT iterata f<strong>in</strong>o al terzo livello.plicazione del generatore <strong>di</strong> canali <strong>di</strong> tessitura TGC (Texture Channel Generator)che per ognuna delle nove sottobande ottenute attraverso la trasformata Waveletdeterm<strong>in</strong>a l’energia, esegue il sovracampionamento dei pixel portando ciascunasottobanda alle <strong>di</strong>mensioni dell’immag<strong>in</strong>e orig<strong>in</strong>ale ed <strong>in</strong>f<strong>in</strong>e esegue un filtraggioglobale.I valori delle energie sono sovracampionati alla loro <strong>di</strong>mensione orig<strong>in</strong>aria<strong>in</strong>serendo {üû.degli zeri. I punti mancanti sono re<strong>in</strong>seriti utilizzando i filtri <strong>di</strong> bloccoche eseguono una semplice replicazione dei pixel ottenendo i canali <strong>di</strong> tessituraAl term<strong>in</strong>e <strong>di</strong> questa operazione otteniamo un valore dell’energia per ognicanale <strong>di</strong> tessitura ottenendo una rappresentazione analoga a quella del colore.Mentre per caratterizzare il colore <strong>di</strong> un’immag<strong>in</strong>e, ad esempio nello spazioHSV, si utilizzano tre matrici <strong>di</strong> numeri <strong>in</strong>teri che memorizzano i tre canali H, Se V, per le tessiture ogni punto dell’immag<strong>in</strong>e è rappresentato da un vettore nellospazio a 9 <strong>di</strong>mensioni. Un punto <strong>di</strong> tessitura è del tipo:Dove{üûrappresenta l’energia del k-esimo canale ottenuto iterando tre volte laóFýtrasformataWavelet sulla sottobanda LL. La fase successiva, come nel caso delcolore, consiste nell’applicazione <strong>di</strong> un passo <strong>di</strong> trasformazione che permette <strong>di</strong>ÿÍ (2.17)


ý e98Istogramma della tessitura. 35¢¡¤£¦¥¨§©!"$#%'&(!)*,+-!./!01!2354Figura 2.5: Rappresentazione Filter Bank FB della decomposizione W avelet 2Dimplementata <strong>in</strong> VisualSEEkriorganizzare e raggruppare gli elementi per creare un <strong>in</strong>sieme <strong>di</strong> elementi <strong>di</strong>tessitura.Per ogni punto óFýla trasformazione ¦ýpermette <strong>di</strong> ottenere il punto trasformato¯ýsecondo l’equazione:In molti casi è auspicabile garantire l’<strong>in</strong>varianza delle feature estratte dalletessiture da mo<strong>di</strong>ficazioni come la rotazione e lo scal<strong>in</strong>g.È possibile def<strong>in</strong>ire le trasformazioni ýche permetto <strong>di</strong> ottenere l’<strong>in</strong>varianzadelle feature da rotazione e scal<strong>in</strong>g attraverso matrici b<strong>in</strong>arie <strong>di</strong> <strong>di</strong>mensioni(3 x 9) del tipo:¦Ï ¦m67ð ð ð® ¯ý-¦ýF®ó?ý (2.18)¨ ¨ ¨ ¨ ¨ð ð ð¨(2.19)ð ð ðý -¨ ¨ ¨¨ ¨ ¨¨ ¨ ¨ ¨ ¨ ¨¦m


ì§ ->=


2.3 Feature <strong>di</strong> forma. 37hjikmlprq}¢~;sgtvu wgxvy z¢{;|‘g’5“€‚ ƒ „…‡† ĝ‰!Š ‹gŒ5 Žg5EGFIHKJ¢LMJINǹ oY[ZO,P Q$RTS UWVXcedgf\^]`_¤]ba¥g¦;§˜¨š©”g•;–˜—š ›gœ;˜žšŸ g¡;¢˜£š¤Figura 2.6: Schema a blocchi delle operazioni necessarie all’estrazionedell’istogramma delle tessiture e dei relativi texture set.stesse funzioni <strong>di</strong> <strong>di</strong>stanza def<strong>in</strong>ite per il confronto dei color set.In particolare query che specificano sia regioni <strong>di</strong> colore che <strong>di</strong> tessiturapossono essere trattate dalla stessa procedura.2.3 Feature <strong>di</strong> forma.Dopo l’estrazione, automatica, semiautomatica o manuale, delle regioni all’<strong>in</strong>ternodelle immag<strong>in</strong>i si possono calcolare ulteriori feature che, <strong>in</strong> questo caso particolare,prendono il nome <strong>di</strong> descrittori. Questi descrittori possono co<strong>in</strong>volgere laforma, la <strong>di</strong>mensione, la posizione e l’orientamento delle regioni.Una proprietà auspicabile per i descrittori <strong>di</strong> forma “shape descriptor” èl’<strong>in</strong>varianza rispetto a traslazione, rotazione e scal<strong>in</strong>g:ciò significa che la proprietà, per un data regione, non deve variare o devevariare molto poco <strong>in</strong> funzione <strong>di</strong> rotazioni, traslazioni o variazioni <strong>di</strong> scala dellaregione considerata.Per i descrittori relativi alle <strong>di</strong>mensioni della regione si vuole l’<strong>in</strong>varianzarispetto a traslazione e rotazione, mentre ovviamente, non è possibile avere quellarispetto allo scal<strong>in</strong>g.2.3.1 Descrittori d’area e posizione.La posizione viene determ<strong>in</strong>ata univocamente dal baricentro che presenta ascissapari alla somma delle ascisse <strong>di</strong> tutti i punti della regione <strong>di</strong>visa per il numero<strong>di</strong> punti ed or<strong>di</strong>nata pari alla somma delle or<strong>di</strong>nate <strong>di</strong> tutti i punti della regionesempre <strong>di</strong>visa per il numero <strong>di</strong> punti. L’area <strong>di</strong> una regione viene determ<strong>in</strong>atacontando il numero <strong>di</strong> pixel che la def<strong>in</strong>iscono.Uno dei pr<strong>in</strong>cipali descrittori <strong>di</strong> forma <strong>in</strong>vece è la rettangolarità che misuraquanto la regione è simile ad un rettangolo. La rettangolarità si ottiene calcolando


¤È²³´ -²õ¬ÈÃnùwèÈwÈ°ìÈïÈ38 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iil rapporto tra l’area della regione e l’area del rettangolo m<strong>in</strong>imo che racchiude laregione stessa.La misura così def<strong>in</strong>ita non è <strong>in</strong>variante rispetto alla rotazione, per ottenerel’<strong>in</strong>varianza è necessario utilizzare un rettangolo m<strong>in</strong>imo orientato comel’oggetto: bisogna cioè conoscere l’orientamento dell’oggetto.2.3.2 Determ<strong>in</strong>azione dell’orientamento.Determ<strong>in</strong>iamo l’orientamento della regione attraverso l’identificazione del suoasse maggiore. Def<strong>in</strong>iamo asse maggiore della regione l’asse baricentrico rispettoal quale la regione ha il momento <strong>di</strong> <strong>in</strong>erzia m<strong>in</strong>ore. Una volta determ<strong>in</strong>ato l’assemaggiore l’orientamento viene espresso tramite l’angolo fra l’asse maggiore e ilverso positivo dell’asse orizzontale.Un primo metodo per la determ<strong>in</strong>azione dell’asse maggiore consiste nel calcolareil momento <strong>di</strong> <strong>in</strong>erzia dell’oggetto rispetto alle rette passanti per il baricentroed i punti del contorno. Tra tutte le rette possibili l’asse maggiore è quello chepresenta il momento m<strong>in</strong>ore.La generica retta passante jper il baricentro e per un punto delha equazione:xwÈcontorno—ì§xw§Tï#&% D– §«ª–³- w§ašwȨ con8›³-§ ›³-¥§wÈ#-Il momento <strong>di</strong> ú <strong>in</strong>erzia rispetto a questa retta vale:Èw§(2.23)¬(2.24)ú-ÆuÉ®­sòdove ò ¬ con si <strong>in</strong>tende la <strong>di</strong>stanza del ¯ punto dalla ¤ retta§ espressa come:8–€wg D› #ž©‚# D– (2.25)Questo è l’approccio più <strong>in</strong>tuitivo e basato sulla forza bruta che richiede unnotevole sforzo computazionale.Il metodo migliore per la determ<strong>in</strong>azione dell’asse maggiore consiste nel calcolareesplicitamente i soli momenti rispetto agli assi coor<strong>di</strong>nati <strong>di</strong> un sistema <strong>di</strong>riferimento baricentrico e valutare poi i momenti rispetto alle <strong>di</strong>rezioni associate aipunti del contorno a partire da tali grandezze, portando così ad un alleggerimento<strong>in</strong> term<strong>in</strong>i <strong>di</strong> complessità computazionale.Eseguiamo la traslazione degli assi del sistema nel baricentro:ò ¬ -±°(2.26)-¥


²³² ´ -µv´ · µ²¬-Come nel caso precedente ò calcoliamoì¬ùÆuÉ»­sìwèÃn¬ÃnïwÈùò¬ùò³µ²³ ïȬùìùÆuÉ®­sìw…Ãì â ïÈwÈ3. Per ogni punto del contorno si determ<strong>in</strong>a il versore che def<strong>in</strong>isce la retta ¤óµ1. Determ<strong>in</strong>azione del baricentro dell’oggetto;2. Si calcolano i ú½¼¾*zú`¼momentidel contorno considerato:¿ \ú½¼¾À¼¿ solo una volta <strong>in</strong><strong>di</strong>pendentemente dal puntoú½¼¾¨-¿ - ú½¼¾À¼nÆuÉ»­sìï(2.29)¿ - ú`¼n.§ :ÉÆ–ÃuÁÉÆ¿uÂÉÆ–ÃuÁ(2.30)ùšÂ¿uÂùšÂ¿uÂù ÁùšÂú`¼ ¿ §ú-§ ú`¼ ¿ ¤ á §eµ §Tú½¼¾M¼ ¿ õá4. Si sceglie come asse maggiore la retta ¤2.3.3 Determ<strong>in</strong>azione del MER.§ per la quale ú è m<strong>in</strong>imo.ÉÆ…Il passo successivo consiste nel determ<strong>in</strong>are le <strong>di</strong>mensioni del rettangolo m<strong>in</strong>imoorientato come la regione (M<strong>in</strong>imum Enclos<strong>in</strong>g Rectangle) (MER) che si determ<strong>in</strong>aconsiderando l’asse maggiore e m<strong>in</strong>ore della regione e congiungendo con coppie<strong>di</strong> rette parallele ai due assi i punti del contorno <strong>di</strong>sposti a <strong>di</strong>stanza massimarispetto ai due assi su lati opposti.


ì¤ìõ–žÃȯ Ó«ª ÆÍàÃrÈ Æ Ê –gàÃWÈ – Ê ›¢àÃWÈ È°ŸÈññññìõìËeìËÈ›žÃÈì½ññññììììññññÈ40 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iL’asse m<strong>in</strong>ore si ottiene tracciando la retta passante per il baricentro, maortogonale all’asse maggiore:(2.31)ȻĻŪ Æ Ê‚Ç 8– ÊD› Ê5È ¨ ›}ã`ÉOttenuti i due assi si devono determ<strong>in</strong>are i due punti del contorno a <strong>di</strong>stanza massimadall’asse maggiore su lati opposti ed i due punti del contorno situatia <strong>di</strong>stanza massima dall’asse m<strong>in</strong>ore su ì—ðÍÌ—ÏÎÉï ï lati opposti .La determ<strong>in</strong>azione del lato dove si localizza il punto rispetto all’asse si ottieneconsiderando la classica formula della <strong>di</strong>stanza <strong>di</strong> un punto da una ì—ÑÐretta,elim<strong>in</strong>ando però il modulo e considerando il segno del risultato.Il passo successivo consente <strong>di</strong> determ<strong>in</strong>are le rette passanti per punti—ðÍÌ—ÒÎ e parallele agli assi che delimitano il MER e i punti <strong>di</strong> <strong>in</strong>tersezione<strong>di</strong> queste ultime che <strong>in</strong><strong>di</strong>viduano i vertici del MER necessari per calcoloÌ—ÏÐ<strong>di</strong> lunghezza e larghezza ì ° Ì—. ïdeterm<strong>in</strong>iamo le rette del MERìŸï ÌwbÚïÌ—Æ Ê5È – – Ê5È ÊÆ › Ê[È Æu–uB–½ËÌw;Ó\ïDati—ÊÓle cui equazioni hanno coefficienti:ËÔÓÌ—ÖÕË×ÕÌwØÕ ïÌ—ÖÙË×ÙÌwØÙ ïÌ—«ÚËÛÚhÝÓ«ª ÆžÃÈÆKËÔÓ. 8–€w;Ó\ï(2.32)¤ÜªÆbí Ç D–zíD›Kí È ¨ ›}ã˜ÉÆ–hÞÕߪ ÆžÆTÈ Æ –žÆ«È – ›žÆTÈ ÆKË×Õ' 8–€wØÕ ïÆ Ê Ë×Ù' 8– ÊwØÙ,ïEd i vertici:¯ Õߪ ÆÍàÆ«È Æ Ê –gàÆTÈ – Ê ›¢àÆTÈ È ËCáâÓÈ ËCá¦ÕÈ ËCá¦ÙÈ ËCáÚãÃÈ»äÿ€ÈwæáâÓãÃñwæá¦Õ È»ãÃÄÝäÆ¿'ÄåãÃÈ»äÆÈ»ãÃÄÝäÿ'ÄåãÃÈ»äÃãÃñãÃÈ»äÆ¿€ÈãÆñ wæá¦ÙãÆÈ»äÿ€ÈÈ»ãÆÄÝäÿ'ÄåãÆÈ»äÃäÆ¿'ÄåãÆÈ È»ãÆÄãÆÈ»äÆ¿€È ãÆñäÆ ÈÈÈÈ wæáÚäÿ ãÃÄÝäà ÄåãÃñãÃñãÃÈ»äÿ€ÈÄåãÃñãÃÄÝäÆ äÆ¿ãÃñãÃÈ»äÆ¿€ÈÄåãÆñäÿ ãÆÄÝäÃãÆñãÆÈ»äÿ€ÈäÆ¿ ãÆÄ ÄåãÆñãÆÈ»äÆ¿€È ãÆñäÆ äÆÆ Ê ËÛÚ" 8– ÊwbÚKïA partire dal MER poi si possono ricavare le <strong>di</strong>mensioni dell’oggettoŸe ° :ò,áÃÆáÆ«Èèçá¢ê Èëç ò,áÃÆ2.3.4 Descrittori <strong>di</strong> forma.Õ½Æï½Ãé˽ÃìËê ï Õìw½Ãìw½Ãw½ÆïÕê,ï Õ w½(2.33)(2.34)Una volta determ<strong>in</strong>ate le <strong>di</strong>mensioni del rettangolo orientato come la regione siottiene la seguente def<strong>in</strong>izione <strong>di</strong> rettangolarità:i(2.35) Ÿ°


Ìii”ÍíûðÈ zíÌËÌwgï Èð¨vÓÓËMomenti <strong>in</strong>varianti. 41Un’ulteriore descrittore <strong>di</strong> forma è l’ellitticità che misura quanto la regione èsimile ad un’ellisse:dove(2.36)= ÈÈëi”vídove rappresenta l’area dell’ellisse orientata come l’oggetto avente assemaggiore adŸpari ed asse m<strong>in</strong>ore pari a . L’eccentricità <strong>in</strong>vece fornisceuna misura <strong>di</strong> quanto la regione è “allungata” ed è def<strong>in</strong>ita molto semplicementeattraverso il rapporto:°i”ví° (2.37)Ÿ2.3.5 Momenti <strong>in</strong>varianti.ÈUna rappresentazione alternativa della forma <strong>di</strong> una regione può avvenireimpiegando un <strong>in</strong>sieme più o meno esteso <strong>di</strong> momenti.I momenti vengono def<strong>in</strong>iti a partire da un’immag<strong>in</strong>e <strong>in</strong> cui sono messe <strong>in</strong>=sevidenza una serie <strong>di</strong> regioni estratte attraverso le elaborazioni <strong>di</strong> un algoritmo <strong>di</strong>segmentazione.Supponendo che tutte le regioni all’<strong>in</strong>terno dell’immag<strong>in</strong>e present<strong>in</strong>oun’etichetta, cioè un numero <strong>in</strong>tero <strong>di</strong>verso da 0, mentre lo 0 rappresenta lo sfondodal quale non si eseguono elaborazioni, supponiamo <strong>di</strong> def<strong>in</strong>ire una funzione:ïûìse Ëaltrimentiì(2.38)k-esima regione e 0 <strong>in</strong> caso contrario.Si def<strong>in</strong>isce momento mn-esimo della k-esima regione la grandezza:ÌwgïËeûche restituisce un valore pari ad 1 se il pixel <strong>di</strong> coor<strong>di</strong>nate ì ËÌwgï appartiene allalm¿ lts¿ Ëzwíïûì nuorq nùporqÌwgï (2.39)con ßil numero <strong>di</strong> righe e colonneñ ¨ e öûeÉdell’immag<strong>in</strong>e da elaborare.La ßž òÉ quantità è detta or<strong>di</strong>ne del momento. I momenti possono essere visticome una generalizzazione delle proprietà def<strong>in</strong>ite precedentemente.ö‹— rispettivamente


óóóóóólm¿ ô ÓqÈûûûlm¿ ô qIÓ Èô ÕxqÈÕxqÈ ôûlm¿lm¿ÓÓÓÓÓÓðûÅlts¿ lts¿lts¿üzû ÈÓÓÓÓÓÓöóóËÓËÌw!÷ ·Ìw'÷ · ËËËËʸ qxqý÷ÓöøÃMùù»ù Èøconá ÈÈËÈ÷ wÈÃÉ ßÖÎË42 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iIn particolare si possono evidenziare le seguenti analogie:Ìw'÷ È i (area)qxqÈôûlm¿lts¿ïûÍö(coor<strong>di</strong>nata i del baricentro)uorqïûKöõorq ô(coor<strong>di</strong>nata j del baricentro)øø ù»ù ÈùÃõorq ôlts¿ ËwïûKöuorquorqÕ ïûÍöwÈÈ>úu(Momento <strong>di</strong> <strong>in</strong>erzia asse j)Ìw!÷õorq ôuorq ËïûÍöÌw'÷ È>ú õ (Momento <strong>di</strong> <strong>in</strong>erzia asse i)Ìw'÷ È>ú õu<strong>di</strong> deviazione)(2.40)õorq ôõorq ôôSi può <strong>di</strong>mostrare che l’<strong>in</strong>sieme (<strong>in</strong>f<strong>in</strong>ito) dei momenti determ<strong>in</strong>a univocamentela forma della regione.È possibile qu<strong>in</strong><strong>di</strong> utilizzare un sotto<strong>in</strong>sieme <strong>di</strong> questi momenti per<strong>di</strong>scrim<strong>in</strong>are approssimativamente la forma delle regioni.Questi momenti non sono <strong>in</strong>varianti rispetto alla traslazione ed alla rotazione.õorqÈ possibile ottenere dei momenti <strong>in</strong>varianti rispetto alla traslazione, che vengonodetti momenti centrali, considerando un sistema <strong>di</strong> riferimento baricentrico.Effettuando la trasformazione nella nuova base si ottiene:qeÕ Èôûlm¿lts¿ wÕuorquorq ËÄwïûKö(Momentoltm¿û ïûÍöÌw!÷ (2.41)÷zöwèz^û Ènõorq lts¿Ë.éËI momenti centrali non sono ancora <strong>in</strong>varianti rispetto alla rotazione, si pensi,ad esempio, ai momenti <strong>di</strong> <strong>in</strong>erzia che sono m<strong>in</strong>imo e massimo quando l’assemaggiore co<strong>in</strong>cide con uno dei due assi <strong>di</strong> riferimento dell’immag<strong>in</strong>e.Per ottenere l’<strong>in</strong>varianza rispetto alla rotazione occorrerebbe un sistema <strong>di</strong>nuorqriferimento orientato secondo gli assi maggiore e m<strong>in</strong>ore dell’oggetto.Hu ha mostrato che a partire dai momenti centrali è possibile def<strong>in</strong>ire dellecomb<strong>in</strong>azioni dei momenti centrali che risultano <strong>in</strong>varianti rispetto a rotazione escal<strong>in</strong>g.Normalizziamo i momenti centrali:>þ (2.42)zû


¡ÈööüüöüööüüÃÐ Ùxq" Ùxq"ÐüüqeÕÕ üqeÕ¢÷üüüÕöÕüqeÙý÷ööüqeÙ:öÿÐüqeÙaü üqeÙ'üqeÙ'üüüÕ öüÐÕöüüüÕÕööüqeÙüüüÕÕ÷Momenti <strong>in</strong>varianti. 43Qu<strong>in</strong><strong>di</strong> a partire dai momenti centrali si def<strong>in</strong>iscono i momenti <strong>in</strong>varianti:Õxq'Ó ÈÕxq"ü Õ(2.43)Õ ÈÓeÓÙ ÈÓÝÕ½÷ÕIÓI÷öIöÚ ÈÓÝÕ¢÷ÕIÓ ÷ÙxqìÐÓÝÕý÷ÕIÓI÷Ùxq:ÓÝÕ¢÷÷AéÐÕIÓ ÷Hu <strong>di</strong>mostra l’<strong>in</strong>varianza degli õ rispetto a traslazione, rotazione e scal<strong>in</strong>g nelcaso cont<strong>in</strong>uo.Nell’applicazione pratica su immag<strong>in</strong>i <strong>di</strong>gitali queste grandezze si <strong>di</strong>mostranogeneralmente poco variabili per versioni mo<strong>di</strong>ficate della stessa forma [?].Questa è la caratterizzazione che QBIC estrae automaticamente da tutte leregioni evidenziate dall’utente <strong>in</strong> maniera semiautomatica [?].ÙxqÓÝÕ:ÕIÓI÷Ùxq:ÓÝÕ½÷ÕIÓÔ÷


44 Caratteristiche (feature) <strong>di</strong> immag<strong>in</strong>iRiassunto delle feature Estratte dai vari sistemiMotore Modalità <strong>di</strong> estrazione delle featureQBIC Feature sul Colore:Estrae un istogramma a K=64, 256 elementi ottenuti trasformandolo spazio RGB <strong>in</strong>iziale attraverso la MTM (TrasformazioneMatematica nello spazio dei colori <strong>di</strong> Munsell)successivamente raggruppati <strong>in</strong> gruppi <strong>di</strong> colori simili.Feature sulla Forma:Estrae area, circolarità, eccentricità, orientazione dell’assemaggiore ed una serie <strong>di</strong> momenti <strong>in</strong>varianti per un totale <strong>di</strong>20 elementi.Feature sulla Tessitura:Caratterizzazione attraverso rugosità, <strong>di</strong>rezionalità e lum<strong>in</strong>osità.W<strong>in</strong>dSurf Approccio Unificante:Per ogni immag<strong>in</strong>e vengono gestiti gli spazi <strong>di</strong> colore RGB,HSV e OPP. Viene impiegato un approccio unificato che estraeuna serie <strong>di</strong> feature che rappresentano <strong>in</strong> maniera omogeneale <strong>in</strong>formazioni sul colore e sulla tessitura per ogniregione estratta dall’algoritmo <strong>di</strong> segmentazione.In particolare si applica la trasformata Wavelet ai pixel dell’immag<strong>in</strong>ee per ogni regione estratta vengono memorizzatele seguenti feature: area della regione (1D), centrodella regione espresso attraverso i quattro coefficienti dellatrasformata dell’ultimo livello <strong>di</strong> trasformazione per tuttie tre i canali <strong>di</strong> colore (12D), i coefficienti delle matrici <strong>di</strong>covarianza calcolate per i punti della regione (24D) (totale37D).WebSeek Feature sul colore:Per ogni immag<strong>in</strong>e viene determ<strong>in</strong>ato l’istogramma deicolori a 166 elementi nello spazio HSV.VisualSEEk Feature sul colore:Color set b<strong>in</strong>ario derivato dall’istogramma dei colori a 166elementi nello spazio HSV per ogni regione determ<strong>in</strong>ataattraverso l’algoritmo <strong>di</strong> segmentazione.Feature sulla tessitura:Texture set b<strong>in</strong>ario derivato dall’istogramma della tessituraa 512 elementi ottenuto iterando tre volte la trasformataWavelet sulle energie dei s<strong>in</strong>goli pixel, applicando un passo<strong>di</strong> generazione dei canali <strong>di</strong> tessitura, trasformandoli equantizzandoli.Tabella 2.2: Raffronto delle feature estratte nei motori commerciali analizzati.


ÓÌCapitolo 3Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>iLe metriche <strong>di</strong> similitu<strong>di</strong>ne permettono <strong>di</strong> determ<strong>in</strong>are la somiglianza delle feature,estratte attraverso i meto<strong>di</strong> precedentemente illustrati, allo scopo <strong>di</strong> eseguirequery basate sul contenuto visuale delle immag<strong>in</strong>i.Le metriche <strong>di</strong> similitu<strong>di</strong>ne confrontano le feature appartenenti a due immag<strong>in</strong>i<strong>di</strong>verse e restituiscono un valore proporzionale alla loro somiglianza:<strong>in</strong> particolare due immag<strong>in</strong>i risulteranno molto simili se ottengono valorielevati <strong>di</strong> similitu<strong>di</strong>ne, mentre risulteranno poco simili se ottengono valori bassi.3.1 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra istogrammi.Le metriche determ<strong>in</strong>ano la similitu<strong>di</strong>ne tra immag<strong>in</strong>i attraverso funzioni che esprimonola <strong>di</strong>stanza tra feature, <strong>in</strong> particolare, più la <strong>di</strong>stanza tra due feature è altapiù le relative immag<strong>in</strong>i sono <strong>di</strong>verse e viceversa.3.1.1 Funzione <strong>di</strong> corrispondenza¢.Il legame tra similitu<strong>di</strong>ne e <strong>di</strong>stanza è dato dalla funzione <strong>di</strong> corrispondenza£,def<strong>in</strong>ita nel campo dei numeri reali positivi a valori nell’<strong>in</strong>tervallo¤¦¥Ìcompresi þ¨§,che sod<strong>di</strong>sfa le seguenti proprietà:· £öÇ ÓI÷«ñ£öÕ (3.1) La funzione <strong>di</strong> corrispondenza assegna alla similitu<strong>di</strong>ne un valore <strong>in</strong>versamenteproporzionale alla <strong>di</strong>stanza, pertanto risulterà massima nel caso <strong>di</strong> <strong>di</strong>stanza nulla.£ö¥K÷ È þ©Ç Õý÷ÇÓÇ ÕÇÇ3.1.2 Normalizzazione degli istogrammi.Le feature sul colore e sulla tessitura sono <strong>in</strong> genere def<strong>in</strong>ite attraverso gliistogrammi.


õ ÷ Èõõ.-÷ ÌÈ¥ õõ ÌÈ ôõ ÌþÌ46 Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>iGli istogrammi rappresentano la <strong>di</strong>stribuzione dei colori o degli elementi <strong>di</strong>tessitura all’<strong>in</strong>terno delle immag<strong>in</strong>i.Siccome gli istogrammi sono rappresentazioni <strong>di</strong> uno spazio <strong>di</strong>screto possonoessere memorizzati attraverso vettori M-<strong>di</strong>mensionali dove M rappresentail numero <strong>di</strong> colori attraverso i quali è co<strong>di</strong>ficata l’immag<strong>in</strong>e.Impiegando l’istogramma come feature, le metriche <strong>di</strong> <strong>di</strong>stanza si riduconoalla determ<strong>in</strong>azione della <strong>di</strong>stanza tra due vettori <strong>in</strong> uno spazio M-<strong>di</strong>mensionale.Un passo prelim<strong>in</strong>are nella determ<strong>in</strong>azione della <strong>di</strong>stanza tra due istogrammiconsiste nella normalizzazione <strong>di</strong> questi ultimi, operazione che permette<strong>di</strong> paragonarli <strong>in</strong><strong>di</strong>pendentemente dalle <strong>di</strong>mensioni dell’immag<strong>in</strong>e da cui sonoestratti.Introduciamo le seguenti classi <strong>di</strong> normalizzazione perÈ<strong>in</strong><strong>di</strong>chiamo l’istogramma e conl’istogramma normalizzato:Î dove conøÓ "!¤$#%§!&('*) 3.1.3 Classificazione delle pr<strong>in</strong>cipali metrichePossiamo def<strong>in</strong>ire lo spazio metrico[?], dove gli istogrammi sono i punti <strong>di</strong>tra.-÷questo spazio, se per la funzione <strong>di</strong>stanza,ö<strong>di</strong>e.-sono verificate le seguenti proprietà:due istogrammiõ+(3.2)÷õõ Ì(Identità)(Non Negativa)(Commutativa)Triangolare)(3.3),ö,ö(Diseguaglianza10÷La varie formulazioni per il calcolo della <strong>di</strong>stanza che analizzeremo <strong>in</strong> seguitopossono essere raggruppate <strong>in</strong> categorie <strong>in</strong> funzione <strong>di</strong> due caratteristichepeculiari:la complessità computazionale e la capacità nel determ<strong>in</strong>are la similitu<strong>di</strong>ne.In particolare per le metriche impiegate nel confronto degli istogrammi siconsiderano due categorie:,ö,ö.-Ì 10÷2/,ö .-÷435,ö .-Ì.-÷«ñ/¥6la prima categoria <strong>di</strong> <strong>di</strong>stanze <strong>di</strong> tipo l<strong>in</strong>eare prende il nome <strong>di</strong> “M<strong>in</strong>kowski–form Distance” a cui appartengono le metriche7«Ó ed7Õ ;6la seconda <strong>in</strong>vece è <strong>di</strong> tipo quadratico e prende il nome <strong>di</strong> ‘Quadratic–formDistance”.


CEDFHGÌÕ½÷ È(3.4)!>8¤?#%§A@:9¤$#%§!&(B =ÌÙ½÷ ÈÌÕÌÙ½÷ ÈþÌClassificazione delle pr<strong>in</strong>cipali metriche 47La prima categoria <strong>di</strong> funzioni <strong>di</strong> <strong>di</strong>stanza è più semplice sul piano computazionale,ma ha l’<strong>in</strong>conveniente <strong>di</strong> generare molti falsi negativi, nel senso chefornisce <strong>di</strong>stanze elevate anche per immag<strong>in</strong>i percettivamente molto simili.La forma più generale delle <strong>di</strong>stanze appartenenti alla prima categoria è deltipo:þ otteniamo la metrica <strong>in</strong>trodotta da Swa<strong>in</strong> e Ballard <strong>in</strong> [?] che prendePerÈil nome <strong>di</strong>stanza7«Ó <strong>di</strong> oppure <strong>di</strong> <strong>in</strong>tersezione <strong>di</strong> istogrammi e presuppone che gliistogrammi da confrontare siano normalizzati.Questa <strong>di</strong>stanza confronta le coppie <strong>di</strong> elementi nella stessa posizione all’<strong>in</strong>ternodell’istogramma, ecco perché piccoli cambiamenti <strong>di</strong> illum<strong>in</strong>azione possonoportare immag<strong>in</strong>i molto simili a notevole <strong>di</strong>stanza cioè si creano molti falsi negativi.Supponendo <strong>di</strong> or<strong>di</strong>nare i vari elementi dell’istogramma <strong>di</strong> Figura 3.1, <strong>in</strong>18Ì ,&ö:9÷ È


=¥ÌaOaK48 Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>iPerÈ Î <strong>in</strong>vece si ottiene la classica <strong>di</strong>stanza Euclidea od7Õ :7Õ:9÷ È18Ì öö18¤?#%§T@:9¤?#%§»÷ RøÓÕS PQQ(3.6)Per migliorare le prestazioni della <strong>di</strong>stanza def<strong>in</strong>ita da Swa<strong>in</strong> e Ballard, checonfronta gli elementi <strong>in</strong> posizioni omologhe, la classe <strong>di</strong> <strong>di</strong>stanze quadratiche,che è stata <strong>in</strong>trodotta da Niblack <strong>in</strong> [?], compara coppie <strong>di</strong> istogrammi confrontandoogni elemento del primo con tutti gli altri del secondo associando aciascun confronto un Æ peso õ-def<strong>in</strong>ito all’<strong>in</strong>terno della matrice <strong>di</strong> similitu<strong>di</strong>neU.La <strong>di</strong>stanza quadratica si esprime tramite la formula:18@ :9÷]\^Uö 18@ ö(3.7)DoveUè la matrice <strong>di</strong> similitu<strong>di</strong>ne che associa pesi <strong>di</strong>versi <strong>in</strong> base alla similitu<strong>di</strong>netra colori e che, nel caso dello spazio dei colori HSV, viene determ<strong>in</strong>ata nel19÷ ,>VTWYX[ZÈmodo seguente:ögfõiḧjk^l[õ@f-hmjOk^l-÷ ögfõnkporql5õ@f-k(osq*l-÷þ`acböedõ@d-÷Õut)Õ3 Õ3 þ_@(3.8)vAttraverso questa formulazione si ottiene Æ õ‚õ È þ e Æ õ-È ¥per colori che nellospazio HSV sono separati dalla massima <strong>di</strong>stanza possibile.Siccome sono co<strong>in</strong>volte operazioni tra matrici e vettori la determ<strong>in</strong>azione della<strong>di</strong>stanza quadratica risulta computazionalmente più complessa delle precedenti.La <strong>di</strong>stanza quadratica migliora la determ<strong>in</strong>azione della <strong>di</strong>stanza tra feature,però, se l’istogramma non presenta dei picchi ben def<strong>in</strong>iti, la similitu<strong>di</strong>ne vienesovrastimata producendo molti falsi positivi.Ad esempio nel <strong>di</strong>Ú caso ,¡e1w<strong>di</strong> Figura 3.2 l’or<strong>di</strong>namento delle relative<strong>di</strong>stanze quadratiche non corrisponde al naturale or<strong>di</strong>namento delle similitu<strong>di</strong>ni.Impiegando la <strong>di</strong>stanza quadratica precedentemente def<strong>in</strong>ita si ottiene semprerispetto agli istogrammi della Figura 3.2 la seguente catena <strong>di</strong> <strong>di</strong>sequazioni:Æ õ-È[?] per ilconfronto delle feature relative al colore.La generazione <strong>di</strong> falsi positivi è una situazione migliore, dal punto <strong>di</strong> vistadell’utente, rispetto a quella dei falsi negativi, <strong>in</strong>fatti mentre i primi possono essereelim<strong>in</strong>ati <strong>in</strong> fase <strong>di</strong> presentazione dei risultati attraverso l’ispezione manuale, isecon<strong>di</strong> precludono all’ispezione immag<strong>in</strong>i potenzialmente <strong>in</strong>teressanti.LN,>V|WYXpZöÚ L},>V|WmX[Zö¡Ì>w÷ ÈLa <strong>di</strong>stanza quadratica è esattamente quella impiegata da QBIC¥ÌyxÐOK{LÌ1w÷ È¥ÌyxOzK{L,>VTWYX[ZöÚÌ¡÷ È(3.9)


~€ƒ‚f9÷ È83f9÷ Èf9!(3.10)f9(3.11)(3.12)9@ÃÎf\893.2 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra Color Set. 49Figura 3.2: Rappresentazione <strong>di</strong> tre istogrammiÚÌ¡Ì1wa 27 elementi.†ˆ‡.‰‹ŠŒ‰YŽ‰Y‘“’3.2 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra Color Set.„ƒ…Le funzioni <strong>di</strong> <strong>di</strong>stanza, def<strong>in</strong>ite a partire dagli istogrammi dei colori, possonoessere ulteriormente semplificate quando vengono applicate ai Color Set,che sono rappresentati da un vettore b<strong>in</strong>ario derivato dall’istogramma tramitel’applicazione <strong>di</strong> una soglia”0.Nel caso delle metriche <strong>di</strong> tipo “M<strong>in</strong>kowski-form <strong>di</strong>stance” possiamo<strong>in</strong>trodurre la <strong>di</strong>stanza <strong>di</strong> Hamm<strong>in</strong>g def<strong>in</strong>ita tra due b<strong>in</strong>ary Setf8edf9come:Ä!È ô ff8Ì ,–•—Xöf8@ f9! ! f8!n˜!il numero <strong>di</strong> elementi conĤ$#%§conš–}›nœÌ(yžrappresentavalore logico 1.,>•ŸXequivale ad eseguire l’exlusive OR bit a bit tra i due Color Set.Dove!fNel caso della <strong>di</strong>stanza quadratica, l’<strong>in</strong>troduzione dei Color set permetteulteriori semplificazioni, <strong>in</strong>fatti def<strong>in</strong>endo:f9 9Èe sostituendo nella formula della <strong>di</strong>stanza quadratica si ottiene:8ÈUQuesta è esattamente la <strong>di</strong>stanza impiegata per calcolare la similitu<strong>di</strong>ne delleregioni estratte da VisualSEEk attraverso l’elaborazione dei Color Set [?].f8Ì ,>V|WYXpZö9Èf8 f\8Uf\9U


,ø¯®öÌÕ½÷ È ú©û =¤È ; ­¢¤È¡£¢þö±°õ Ó!¡¢)þöö̤÷(3.13)õ-(3.14)v¤!÷ (3.16)50 Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>i3.3 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra s<strong>in</strong>goli pixel.Questa categoria <strong>di</strong> funzioni <strong>di</strong> <strong>di</strong>stanza, def<strong>in</strong>ita <strong>in</strong> [?], rappresenta un approcciocompletamente <strong>di</strong>verso che consiste nell’ignorare completamente gli istogrammie le <strong>di</strong>stanze che operano a partire da essi, def<strong>in</strong>endo la <strong>di</strong>stanza <strong>di</strong>rettamente suipixel ed estraendo feature più semplici sulla <strong>di</strong>stribuzione statistica dei colori.Dalla teoria della probabilità sappiamo che una funzione <strong>di</strong> <strong>di</strong>stribuzione ècaratterizzata completamente attraverso i suoi momenti, ad esempio quelli centrali,così se <strong>in</strong>terpretiamo la <strong>di</strong>stribuzione dei colori <strong>di</strong> un’immag<strong>in</strong>e comeuna <strong>di</strong>stribuzione probabilistica allora feature rappresentative possono essere imomenti centrali.Supponiamo <strong>di</strong> memorizzare per ogni canale <strong>di</strong> colore i primi tre momenticentrali:il primo rappresenta il valore me<strong>di</strong>o, il secondo rappresenta la varianza ed ilterzo l’asimmetria (skewness) della <strong>di</strong>stribuzione <strong>di</strong> ciascun colore.Il tre momenti illustrati sono def<strong>in</strong>iti dalle seguenti formule dove K è l’<strong>in</strong><strong>di</strong>cedel canale <strong>di</strong> colore, i e j sono gli <strong>in</strong><strong>di</strong>ci <strong>di</strong> riga e colonna, R e C il numero <strong>di</strong> righee colonne per una data immag<strong>in</strong>e I:=-Óˆ«¢u¬¤f¢¤È=-Ó =õÓª© ¨ ¥§¦;þõ- @¡¢ «¢u¬¤¤÷ÕB)êÙB)(3.15)¨ =õÓª© ¥§¦=-ÓSupponiamo che ú Ó ed ú Õ siano le due <strong>di</strong>stribuzioni <strong>di</strong> colore delle immag<strong>in</strong>i su cuisi deve calcolare la similitu<strong>di</strong>ne, che <strong>di</strong>spongano entrambe <strong>di</strong> Cn canali <strong>di</strong> coloredove¡¢e ¤Ìf¢¤sono i momenti con ú Õže¦É È Ð numero <strong>di</strong> canalidelle immag<strong>in</strong>i, allora la <strong>di</strong>stanza è def<strong>in</strong>ita come:úN›úÓ¨ =õÓª© ¥§¦õ- @¡¢ «¢u¬¤¤Ì­¢ú ÓDove i coefficienti°õLM¥rappresentano opportuni pesi a cui l’utente può attribuitevalori <strong>di</strong>versi <strong>in</strong> funzione dell’importanza che vuole attribuire ai vari¤Ómomenti.¤!3°õ ¤!3°õ Õ!­¢) ¤ @­¢v Ù!f¢) ¤@f¢v @¡¢v ¤


3.3 Metriche <strong>di</strong> similitu<strong>di</strong>ne tra s<strong>in</strong>goli pixel. 51Siccome questa <strong>di</strong>stanza impiega un numero ristretto <strong>di</strong> momenti, essa nondef<strong>in</strong>isce uno spazio metrico.Come illustrano Stricker e Orengo <strong>in</strong> [?] questo approccio è migliore <strong>di</strong> quelliprecedentemente illustrati per il confronto degli istogrammi.Riassunto delle metriche <strong>di</strong> <strong>di</strong>stanza impiegateMotore Metrica <strong>di</strong> <strong>di</strong>stanza impiegataQBIC Colore: Distanza Quadratica;Tessitura: Distanza Euclidea pesata;Forma: Distanza Euclidea pesata.W<strong>in</strong>dSurf Confronto tra coefficienti della trasformataWavelet estratte dalle regioni: Distanza <strong>di</strong>BhattacharyyaWebSeek Colore: Distanza Quadratica.VisualSEEk Color Set e Texture Set: Distanza quadraticasemplificata su vettori b<strong>in</strong>ari.Tabella 3.1: Raffronto delle metriche <strong>di</strong> <strong>di</strong>stanza implementate nei motoricommerciali analizzati.


52 Similitu<strong>di</strong>ne <strong>di</strong> immag<strong>in</strong>i


ÇCapitolo 4Algoritmi per l’estrazione <strong>di</strong> regioniIl proce<strong>di</strong>mento per l’estrazione <strong>di</strong> regioni permette <strong>di</strong> ottenere <strong>in</strong>formazioni sullalocalizzazione delle feature all’<strong>in</strong>terno dell’immag<strong>in</strong>e.Quando le feature vengono confrontate a livello <strong>di</strong> <strong>in</strong>tera immag<strong>in</strong>e tutte le<strong>in</strong>formazioni sulla loro <strong>di</strong>stribuzione vengono perse degradando notevolmente leprestazioni nell’esecuzione delle query:ad esempio possono esistere immag<strong>in</strong>i con lo stesso istogramma, ma con una<strong>di</strong>stribuzione dei pixel totalmente <strong>di</strong>versa.Rappresentando le feature a livello <strong>di</strong> regione, che <strong>in</strong> genere vengono identificateattraverso il baricentro e l’estensione, si ottiene maggiore precisione nelrecupero delle immag<strong>in</strong>i.4.1 Classificazione degli algoritmi <strong>di</strong>segmentazione.Il processo tramite il quale i pixel vengono raggruppati a formare le regioni prendeil nome <strong>di</strong> segmentazione.Detta²öuna proprietà dell’immag<strong>in</strong>e def<strong>in</strong>ita sul pixel, ad esempio ilcolore, col term<strong>in</strong>e segmentazione si <strong>in</strong>tende il partizionamento dell’immag<strong>in</strong>eÌu³÷<strong>in</strong> un <strong>in</strong>sieme <strong>di</strong> regioni›¥ÓÌ‹´‹´‹´Ì¥¯µžomogenee rispetto ú prendeil nome <strong>di</strong> pre<strong>di</strong>cato <strong>di</strong> omogeneità. Il partizionamento <strong>di</strong> un’immag<strong>in</strong>e ú devea²Ì¥Õsod<strong>di</strong>sfare i v<strong>in</strong>coli:µseguentiÈ>ú õÓ¥õche¥õ|·¥¸-ÈE¹per(4.1)È5» ˺Questi richiedono che l’unione delle regioni sia l’<strong>in</strong>tera immag<strong>in</strong>e e che ognicoppia <strong>di</strong> regioni risulti <strong>di</strong>sgiunta.


54 Algoritmi per l’estrazione <strong>di</strong> regioniCome vedremo <strong>in</strong> seguito, per ottenere un confronto più robusto il primov<strong>in</strong>colo può essere rilassato.La segmentazione è un passo fondamentale per una migliore rappresentazionedel contenuto <strong>in</strong>formativo delle immag<strong>in</strong>i; ad esempio le regioni possono essereulteriormente analizzate per l’estrazione <strong>di</strong> nuove feature come la forma ola tessitura.La segmentazione può essere <strong>in</strong>terpretata come un processo <strong>di</strong> classificazionedove ciascun pixel viene assegnato ad una classe (regione) <strong>in</strong> funzione del valore<strong>di</strong>².Gli algoritmi <strong>di</strong> segmentazione devono sod<strong>di</strong>sfare i seguenti criteri perl’estrazione delle regioni:6Le regioni devono essere il più possibile omogenee rispetto al pre<strong>di</strong>cato²;6Le regioni non devono avere troppe lacune;6Regioni a<strong>di</strong>acenti devono essere caratterizzate da valori significativamente<strong>di</strong>versi <strong>di</strong>²;6I conf<strong>in</strong>i fra le regioni devono essere regolari e la loro localizzazionespaziale deve essere accurata.Gli algoritmi <strong>di</strong> segmentazione per sod<strong>di</strong>sfare i criteri precedenti, oltre a tenereconto del valore del pixel, devono considerare le relazioni <strong>di</strong> a<strong>di</strong>acenza tra gruppi<strong>di</strong> pixel, <strong>in</strong> particolare possiamo analizzare due tipologie <strong>di</strong> algoritmi:6Algoritmi Split and Merge (Divi<strong>di</strong> e Fon<strong>di</strong>);6Algoritmi <strong>di</strong> Region Grow<strong>in</strong>g (Crescita <strong>di</strong> regioni).Negli algoritmi <strong>di</strong> Split and Merge si parte dall’immag<strong>in</strong>e <strong>in</strong>tera e si determ<strong>in</strong>anole regioni attraverso ripetute sud<strong>di</strong>visioni dell’immag<strong>in</strong>e <strong>in</strong> blocchi, questivengono ulteriormente <strong>di</strong>visi o fusi con quelli vic<strong>in</strong>i f<strong>in</strong>o a quando non sonosod<strong>di</strong>sfatti tutti i criteri <strong>di</strong> omogeneità.Negli algoritmi <strong>di</strong> region grow<strong>in</strong>g <strong>in</strong>vece si parte da una serie <strong>di</strong> punti (semi)<strong>in</strong>terni all’immag<strong>in</strong>e e da questi semi “crescono” le regioni assegnando i rimanentipixel al rispettivo seme <strong>in</strong> funzione del criterio <strong>di</strong> omogeneità f<strong>in</strong>o a quando tutti ipixel sono stati assegnati.Entriamo ora ad analizzare nei particolari vari algoritmi appartenenti alle duecategorie sopracitate.


(4.2)²ö¥õÄÃ-÷2L}Á È» ÷¸¿NÁ4.2 Algoritmi <strong>di</strong> Split and Merge. 554.2 Algoritmi <strong>di</strong> Split and Merge.L’algoritmo <strong>di</strong> split and merge richiede che sia def<strong>in</strong>ito un pre<strong>di</strong>cato <strong>di</strong> omogeneitàsotto forma <strong>di</strong> funzione²ö¥õ ÷ , questa riceve <strong>in</strong> <strong>in</strong>gresso l’<strong>in</strong>sieme dei pixel dellaregione e restituisce un valore <strong>in</strong>tero corrispondente all’omogeneità della regione.L’algoritmo <strong>di</strong> split and merge, come <strong>in</strong><strong>di</strong>ca il nome, può essere sud<strong>di</strong>viso <strong>in</strong>due fasi:1. Split:questa fase si applica a partire dall’<strong>in</strong>tera immag<strong>in</strong>e, se è omogeneal’algoritmo può term<strong>in</strong>are poiché l’immag<strong>in</strong>e è già segmentata, cioècomposta da una sola regione.In caso contrario <strong>di</strong>vi<strong>di</strong>amo l’immag<strong>in</strong>e <strong>in</strong> due parti e ripetiamo questasud<strong>di</strong>visione <strong>in</strong> parti ricorsivamente f<strong>in</strong>o ad ottenere un set <strong>di</strong> regionį´‹´‹´âÌ¥ûžche verificano il pre<strong>di</strong>cato <strong>di</strong> omogeneità;Ì¥Õ2. Merge: <strong>in</strong> questa fase si esegue il proce<strong>di</strong>mento opposto: si›¥Óanalizzanotutte le possibili coppie <strong>di</strong> regioni a<strong>di</strong>acenti; se il pre<strong>di</strong>cato risulta verificatoper tutti i punti che appartengono ad entrambe le regioni allora si opera lafusione delle due <strong>in</strong> un unica regione.Ì¥Õ0žcon̨´‹´‹´âÌ¥Al term<strong>in</strong>e <strong>di</strong> questa fase si ottiene un set regioni›¥Ó<strong>di</strong>É ;Si ripetono i due passi precedenti f<strong>in</strong>o a che non ci sono più regioni da <strong>di</strong>videre oda fondere.Al term<strong>in</strong>e dell’algoritmo si ottiene un set <strong>di</strong> regioni per cui valgono leseguenti¼þ£¿ËÀ¿proprietà:˾½DoveÁè fissato all’<strong>in</strong>terno del sistema e determ<strong>in</strong>a la soglia <strong>di</strong> omogeneità.Ad esempio <strong>in</strong> [?] viene illustrato un sistema CBVQ che impiega per le estrazionedelle regioni delle immag<strong>in</strong>i memorizzate l’algoritmo <strong>di</strong> Split and Mergecon l’aggiunta <strong>di</strong> una soglia sul numero m<strong>in</strong>imo <strong>di</strong> pixel per regione.Se una regione contiene un numero <strong>di</strong> pixel <strong>in</strong>feriore alla soglia viene semplicementeignorata ed esclusa dalla partizione, <strong>in</strong> questo caso l’unione <strong>di</strong> tutte leregioni non equivale all’<strong>in</strong>tera immag<strong>in</strong>e.¼£Â˺ Ì»¿ËÌ»½ þ¿ÿ˼²ö¥õ4.3 Algoritmi <strong>di</strong> “Region Grow<strong>in</strong>g”.Come abbiamo già detto precedentemente gli algoritmi della categoria “RegionGrow<strong>in</strong>g” partono selezionando un <strong>in</strong>sieme <strong>di</strong> punti <strong>in</strong>iziali e ripetono <strong>in</strong> manieraiterativa l’aggregazione dei rimanenti punti a quelli <strong>in</strong>izialmente selezionati.


ÈüÆÈÕÈõÇÊÈÌÕô(4.3)Ì‹´‹´¨´â̤ž 56 Algoritmi per l’estrazione <strong>di</strong> regioni4.3.1 Algoritmo K–Means.Un algoritmo che appartiene alla categoria “Region Grow<strong>in</strong>g” è il K-Means chedef<strong>in</strong>isce un <strong>in</strong>sieme ü <strong>di</strong> ð centri <strong>di</strong> regione (cluster) a cui vengono associati glida partizionare appartenenti all’<strong>in</strong>siemeÆ:KŲ punti›Ç ÓÇ ÕÌ‹´‹´‹´âÌIl K–Means si prefigge l’obbiettivo <strong>di</strong> m<strong>in</strong>imizzare la seguente funzione chesostituisce il pre<strong>di</strong>cato <strong>di</strong> omogeneità:Ç^ÇŸÈž›Ó ÌÉÈ=õÓ= 0(4.4)Ç-Ìõ÷Õ,öÇ-Ì õ ÷ è la <strong>di</strong>stanza tra il punto Ç-ed il rispettivo centro della regione¦7che nel caso più generale è del tipo:Ë[Ìp©|ÍÏÎdove,öcon A <strong>di</strong> <strong>di</strong>mensione P x P con P <strong>di</strong>mensione vettore del Ç-.Allora l’algoritmo K-means può essere sud<strong>di</strong>viso nei seguenti passi:Ç-ÌõÑÐ÷ ,öÇ-@ õ÷\öö(4.5)1. Scelta <strong>in</strong>iziale dei ð centri dei cluster;Ç-@ õ÷2. Assegnazione punti dei Ç-al cluster¦7il cui centroõÑÐè più vic<strong>in</strong>o Ç-: aõüsi ha cheÇ-¦7õÑÐÓÒÇ-Ìõ÷ž(4.6)3. Calcolo dei nuovi centri dei cluster:Ç-ÌõÑÐ÷ ÈEÔorqõrÕÏÖÓ¬¤Ÿ×›Ø,ö ,ö(4.7)Ë[ÌÕ©|ÍÎÇ-÷ šÆÙÏÚö¦7õ4. Si ripetono i punti 2 e 3 f<strong>in</strong>o a quando l’algoritmo non converge cioè i clusternon cambiano più.L’assegnazione <strong>in</strong>iziale dei k centri è <strong>di</strong> fondamentale importanza <strong>in</strong> quanto unascelta scorretta può compromettere il processo <strong>di</strong> raggruppamento dei pixel.


,Õø«ÈîÕÅÕAlgoritmo K–Means. 57La situazione che si vuole evitare è che un’immag<strong>in</strong>e, che contiene al suo<strong>in</strong>terno almeno due regioni <strong>di</strong>st<strong>in</strong>te, non riesca ad essere sud<strong>di</strong>visa dall’algoritmoK–Means a causa <strong>di</strong> un errata scelta dei K centri.Per evitare questi problemi si sceglie un numero <strong>in</strong>iziale <strong>di</strong> “possibili centri”pari a tre volte il numero dei centri necessari. I “possibili centri” sono scelti <strong>in</strong>maniera casuale all’<strong>in</strong>terno dell’<strong>in</strong>sieme dei punti dell’immag<strong>in</strong>e.Il primo centro viene scelto <strong>in</strong> maniera casuale all’<strong>in</strong>terno <strong>di</strong> quelli possibili,il secondo viene scelto tra i rimanenti come quello a maggiore <strong>di</strong>stanza dal primo,il terzo con la massima <strong>di</strong>stanza dai primi due e così via f<strong>in</strong>o a quando tutti i Kcentri sono assegnati.Dopo aver scelto i centri <strong>in</strong>iziali questi vengono mo<strong>di</strong>ficati al f<strong>in</strong>e <strong>di</strong>determ<strong>in</strong>are la migliore partizione fra i punti.Il valore K, numero <strong>di</strong> cluster da estrarre, non viene fissato <strong>in</strong> maniera statica,ma <strong>in</strong> funzione della s<strong>in</strong>gola immag<strong>in</strong>e viene determ<strong>in</strong>ato il K ottimo all’<strong>in</strong>ternoø¯ÛˆÜ§,ðvalutando i risultati ottenuti con tutti i possibilidell’<strong>in</strong>tervallo¤ðvalori <strong>di</strong> K attraverso una funzione <strong>di</strong> vali<strong>di</strong>tà che ci offre un giu<strong>di</strong>zio sulla bontàø¢ÇÌdella segmentazione.La determ<strong>in</strong>azione della funzione <strong>di</strong> vali<strong>di</strong>tà necessita della def<strong>in</strong>izione delleulteriori funzioni <strong>di</strong> compattezza e separabilità:è detta deviazione del punto Ç-dal cluster a cui appartiene;Úõ-ÈÇ-Ìõ÷ (4.8) Úö­õÈ=öÚõ-÷(4.9)è la variazione ovvero la sommatoria dei quadrati delle deviazioni <strong>di</strong> ogni puntoper un certo Cluster;­È=õ­õÈ=õ=Ë[ÌÕ©|ÍÎöÚõ-÷(4.10)è la variazione totale, somma delle variazioni calcolate per ogni cluster.La compattezza della partizione è def<strong>in</strong>ita attraverso il rapporto tra variazionetotale e numero dei puntiK²:Ë[ÌÕ©|ÍÎLa separazione <strong>in</strong>vece equivale al quadrato della <strong>di</strong>stanza m<strong>in</strong>ima:fnÝÈû­õõÅ›Ø,öõ@ õeß È


îf58 Algoritmi per l’estrazione <strong>di</strong> regioniLa funzione <strong>di</strong> vali<strong>di</strong>tà si determ<strong>in</strong>a dal rapporto compattezza e separazione, m<strong>in</strong>imizzarela vali<strong>di</strong>tà è equivalente a massimizzare la funzione obbiettivo dell’eq.4.4 che permette <strong>di</strong> ottenere una buona clusterizzazione.L’algoritmo <strong>di</strong> cluster<strong>in</strong>g K–Means viene impiegato per l’estrazione delle regioniall’<strong>in</strong>terno del sistema W<strong>in</strong>dSurf [?] con l’aggiunta <strong>di</strong> una soglia che permette<strong>di</strong> elim<strong>in</strong>are le regioni con un numero <strong>di</strong> punti <strong>in</strong>feriore al 2% della globalitàdei punti.dÆ‘áÈ4.3.2 Retro proiezione dei Color Set.fiÝ«(4.13)Un altro sistema, che permette <strong>di</strong> estrarre le regioni dalle immag<strong>in</strong>i, impiega laRetro Proiezione dei Color Set sui pixel dell’immag<strong>in</strong>e.Il processo <strong>di</strong> estrazione delle regioni si ottiene attraverso i seguenti passi:1. Trasformazione, quantizzazione e filtraggio dei pixel dell’immag<strong>in</strong>e;2. Retro proiezione dei color set b<strong>in</strong>ari sui pixel dell’immag<strong>in</strong>e;3. Assegnamento delle etichette alle regioni ed applicazione delle soglie.In particolare il processo <strong>di</strong> retro proiezione restituisce un’immag<strong>in</strong>e b<strong>in</strong>aria,<strong>in</strong> cui i pixel assumono solo due possibili valori, <strong>in</strong> funzione del confronto tra le<strong>in</strong>formazioni contenute nel color set e quelle dell’immag<strong>in</strong>e da retro proiettare.Come sappiamo setfil colorĤ¨Ëâ§è un vettore b<strong>in</strong>ario che contiene tanti elementi,quanti sono i colori dello spazio trasformato e quantizzato e che memorizza lepreferenze per un sotto<strong>in</strong>sieme dei colori dell’immag<strong>in</strong>e.La retroproiezione valuta il colore k <strong>di</strong> ciascun pixel dell’immag<strong>in</strong>e <strong>di</strong> <strong>in</strong>gressoassegna al pixel nella stessa posizione nell’immag<strong>in</strong>e <strong>di</strong> uscitaÌu³§ad Ìu³§ilú¤Çvalore dell’elemento del color set che corrisponde allo stesso coloreã¤Çdell’immag<strong>in</strong>e d’<strong>in</strong>gresso.¼Èú¤Ëã¤Ë Ì»§È Ì»§åäĤ¨Ë⧠(4.14)Successivamente, l’immag<strong>in</strong>e b<strong>in</strong>aria viene filtrata <strong>in</strong> modo da elim<strong>in</strong>are i raggruppamentiisolati <strong>di</strong> pochi pixel o per unire due regioni molto vic<strong>in</strong>e che<strong>in</strong>cidentalmente risult<strong>in</strong>o separate.Dopo l’operazione <strong>di</strong> filtraggio si esegue l’etichettamento dell’immag<strong>in</strong>eche assegna a ciascuna regione estratta dalla retro proiezione lo stesso valoredell’etichetta.


fffĤ?#%§È þ*ä 7¤?#%§ñN”¨æ (4.16)Retro proiezione dei Color Set. 59Ogni regione per essere considerata valida deve essere compatibile con più <strong>di</strong>v<strong>in</strong>coli rappresentati da una serie <strong>di</strong> soglie; queste esprimono il valore m<strong>in</strong>imo checerte proprietà possono assumere.Se solo uno dei seguenti v<strong>in</strong>coli non è sod<strong>di</strong>sfatto per una data regione, questaviene scartata ponendo a 0 la rispettiva etichetta.Le tre soglie rappresentano:6”¨X: corrisponde alla <strong>di</strong>mensione della regione. In particolare per ogniregione si ottiene:=û7¤É^§ñN”mX(4.15)dove L[n] è l’istogramma locale della regione;6”¨æ:rappresenta il contributo dell’m-esimo colore del color set alla regione.In particolare per ogni regione si ottiene::rappresenta il contributo relativo dell’m-esimo colore del color set allaregione rispetto tutti gli altri colori del color set:6”ÄĤ$#%§È þçä 7¤$#%§ñN”Ä=û 7¤¨Éå§ (4.17)L’utilizzo comb<strong>in</strong>ato <strong>di</strong> queste tre soglie evita <strong>di</strong> sprecare spazio per lamemorizzazione <strong>di</strong> regioni non significative ai f<strong>in</strong>i della segmentazione.poiché la scelta del color set ottimale per l’estrazione delle regioni necessiterebbela retro proiezione <strong>di</strong> color set, dove# è il numero <strong>di</strong> colori <strong>in</strong>cui è quantizzato lo spazio, allora vengono <strong>in</strong>seriti altri v<strong>in</strong>coli che permettono <strong>di</strong>scartare a priori color set non adeguati.In particolare si <strong>in</strong>troducono due ulteriori soglieèeèÓ :Î6èrappresenta il fatto che se un elemento del color set che viene retroproiettato è ad 1 ci devono essere almenoèpixel con quel colorenell’immag<strong>in</strong>e(4.18)Ĥ?#%§Ècon H[m] è l’istogramma globale dei colori dell’immag<strong>in</strong>e I.¤$#%§ñ}è þ*ä


f7Wû|¤$#%§ñ}”˜Ó (4.19)(a) Dato l’istogramma dell’immag<strong>in</strong>e¤?#%§, seleziona gli#È(a) trova tuttiáÈ# dove60 Algoritmi per l’estrazione <strong>di</strong> regioni<strong>in</strong>vece tiene conto del fatto che il residuo dell’istogramma globale deve6è^Ócontenere per ogni colore <strong>in</strong>cluso nel color set almenoèÓpixel.Per residuo dell’istogramma globale si <strong>in</strong>tende quell’istogramma a cui vengonosottratti i pixel corrispondenti alle regioni già estratte nelle precedentiretro proiezioni.¤$#%§T@=û Ĥ?#%§È dove7WûA¤?#%§è l’istogrammaþ¤?#%§ñN”älocale della n-esima regione.La def<strong>in</strong>izione del residuo implica che i vari color set siano esplorati <strong>in</strong> maniera<strong>in</strong>crementale, cioè prima si verificano tutti i color set unitari che contengono alloro <strong>in</strong>terno un solo elemento ad 1, poi quelli con due elementi ad 1 e così via.L’algoritmo <strong>di</strong> iterazione dei color set si compone dei seguenti passi:1. Esplorazione dei color set unitari:(b) per ogni#costruisci il confcolor þ set ce ¥negli altri casi . Eseguiamo la retroproiezione <strong>di</strong>c[k] su I[x,y] ed otteniamo O[x,y]. Per ogni regione n calcoliamoĤ¼§Èl’istogrammaconfĤ¼§È locale7WûA¤?#%§.(c) Calcoliamo il residuo dell’istogramma globale.per¼È #¤?#%§ñN”2. Color set con due elementi:(b) per ogni coppia#eácostruisci il color̨¤?#%§ñ}”`Ó¼ÈsetëÄĤ¼§È #e¼ÈĤ¼§È peráeþ¥negli altri casi.Ìu³§ed Ì(³§.Eseguiamo la retro <strong>di</strong>fproiezioneĤ¼§su otteniamoã¤Çconfú¤ÇPer ogni regione n calcoliamo l’istogramma locale7Wû|¤$#%§.conf(c) Aggiorniamo il residuo dell’istogramma globale”˜Óáe#È dove¤¦áŒ§Êñé”̤$#%§ñê”T¥Â¨¤$ጧñ #3. Color set a tre o più elementi: ripetiamo i passi precedenti´‹´¨´Questo algoritmo <strong>di</strong> segmentazione è stato implementato nel sistema VisualSEEksviluppato <strong>in</strong> [?].


Retro proiezione dei Color Set. 61Riassunto delle capacità <strong>di</strong> segmentazioneMotore Modalità <strong>di</strong> estrazione delle regioniQBIC Semi automatica:attraverso l’<strong>in</strong>tervento dell’utente assistito dastrumenti <strong>di</strong> aiuto come “Flood Fill” e“Snakes”.Automatica:attraverso la scomposizione dell’immag<strong>in</strong>e <strong>in</strong>un set statico <strong>di</strong> regioni rettangolari predef<strong>in</strong>ite.W<strong>in</strong>dSurf Automatica:attraverso l’applicazione dell’algoritmo K-Means che raggruppa i pixel <strong>in</strong> funzionedei valori della trasformata Wavelet nellasottobanda LL dell’ultimo livello <strong>di</strong> trasformazioneutilizzando la <strong>di</strong>stanza Eucliudea o <strong>di</strong>Mahalanobis.WebSeek nessuna politica per l’estrazione delle regioni.VisualSEEk Automatica: attraverso l’applicazione dellaretro proiezione dei color Set e dei TextureSet ed elim<strong>in</strong>azione delle regioni non rilevantiattraverso il confronto con una serie <strong>di</strong> soglie.Tabella 4.1: Raffronto delle capacità <strong>di</strong> calcolo delle regioni e dei meto<strong>di</strong>impiegati per l’estrazione nei motori commerciali analizzati.


62 Algoritmi per l’estrazione <strong>di</strong> regioni


Capitolo 5In<strong>di</strong>ci Multi<strong>di</strong>mensionali perMM<strong>DBMS</strong>Attraverso l’<strong>in</strong>troduzione degli <strong>in</strong><strong>di</strong>ci si cercano <strong>di</strong> migliorare le prestazioni nelrecupero dei risultati delle <strong>in</strong>terrogazioni, quando le <strong>di</strong>mensioni della base <strong>di</strong>dati crescono <strong>in</strong> misura tale da non rendere più fattibile, <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo, lascansione sequenziale <strong>di</strong> tutti gli elementi memorizzati nel database.Attraverso l’implementazione degli <strong>in</strong><strong>di</strong>ci si cerca <strong>di</strong> organizzare i dati <strong>in</strong>maniera gerarchica, attraverso strutture ad albero, <strong>in</strong> modo da assegnare alla posizioneall’<strong>in</strong>terno dello stesso <strong>in</strong>formazioni sulle proprietà su cui si voglionoottimizzare le ricerche.In particolare, quando le proprietà appartengono ad uno spazio multi<strong>di</strong>mensionalesi parla <strong>di</strong> <strong>in</strong><strong>di</strong>ci multi<strong>di</strong>mensionali.5.1 k-d Tree.La struttura ad albero detta k-d Tree viene impiegata per memorizzare edorganizzare <strong>in</strong>siemi <strong>di</strong> punti <strong>in</strong> uno spazio k-<strong>di</strong>mensionale.Il k-d Tree appartiene alla categoria degli alberi b<strong>in</strong>ari, cioè con due sole <strong>di</strong>ramazioniper ogni nodo non bilanciate. Lo spazio da organizzare viene <strong>di</strong>visotramite una serie <strong>di</strong> iperpiani <strong>di</strong> <strong>di</strong>mensione .þ˜÷Gli iperpiani sono iso-orientati e le loro <strong>di</strong>rezioni si alternano tra le k <strong>di</strong>rezioni<strong>di</strong>sponibili.Ogni iperpiano deve contenere al massimo un solo punto che viene <strong>in</strong>seritonell’albero all’<strong>in</strong>terno <strong>di</strong> un nodo.Ogni nodo ha al più due figli per cui viene def<strong>in</strong>ita una regola per <strong>di</strong>scrim<strong>in</strong>aredurante le varie operazioni tra queste due alternative.ö¼@I punti che andranno a popolare l’albero nel bi<strong>di</strong>mensionale,¼È Î caso ,


¦¥se64 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>identificano il centro <strong>di</strong> regioni dell’immag<strong>in</strong>e, con proprietà <strong>di</strong> un certo <strong>in</strong>teresse,e verranno identificati dalle rispettive coor<strong>di</strong>nate cartesiane.La struttura dei no<strong>di</strong> <strong>di</strong> Figura 5.1 dell’albero è la seguente:Kdnode{Info:XVal:YVal:LL<strong>in</strong>k:RL<strong>in</strong>k:} ì±í‘îeï<strong>in</strong>formation;real;real;*Kdnode;*Kdnode;ð_ñ—òmóõôöŸ÷Yøþçÿ¡ £¢¥¤Figura 5.1: Struttura <strong>di</strong> un nodo <strong>di</strong> 2d Tree.ùúù2ûrüAýIl campo Info contiene tutte le proprietà del punto che l’utente <strong>in</strong>tende memorizzare.I campi XVal e YVal <strong>in</strong>vece rappresentano rispetto ad una data orig<strong>in</strong>e,unica per tutti i punti memorizzati, le coor<strong>di</strong>nate cartesiane del punto memorizzato.I campi LL<strong>in</strong>k e RL<strong>in</strong>k sono puntatori a strutture <strong>di</strong> tipo Kdnode ra<strong>di</strong>cirispettivamente dei sotto alberi <strong>di</strong> s<strong>in</strong>istra e <strong>di</strong> destra.Supponendo che T sia il puntatore alla ra<strong>di</strong>ce dell’albero e che N sia un nodoall’<strong>in</strong>terno dell’albero def<strong>in</strong>iamo il livello del nodo N come:dettoáÝ‹d‘ÝáöK÷N è la ra<strong>di</strong>ce T dell’alberose N è un figlio <strong>di</strong> P(5.1)È 7Ý‹d‘ÝáöK÷Un 2-d tree, che memorizza punti bi<strong>di</strong>mensionali, per essere considerato tale deveáÝ‹d‘Ýáö²Ï÷43>þsod<strong>di</strong>sfare le seguenti con<strong>di</strong>zioni:1. Se N è un nodo nell’albero <strong>di</strong> livello pari, allora ogni nodo M nel sottoalbero<strong>di</strong> s<strong>in</strong>istra puntato da N.LL<strong>in</strong>k sod<strong>di</strong>sfa la proprietà che óÆÄáed ogni nodo P nel sottoalbero <strong>di</strong> destra puntato da N.RL<strong>in</strong>k´Æüsod<strong>di</strong>sfa laK´Æüproprietà ÆÄá. ÆÄáñ/K´Æüche²´Æü2. Se N è un nodo nell’albero <strong>di</strong> livello <strong>di</strong>spari, allora ogni nodo M nelüsottoalbero<strong>di</strong> s<strong>in</strong>istra puntato da N.LL<strong>in</strong>k sod<strong>di</strong>sfa la proprietà che´¨§ óüÆÄáed ogni nodo P nel sottoalbero <strong>di</strong> destra puntato K´¨§üda N.RL<strong>in</strong>kche²´©§sod<strong>di</strong>sfa la proprietà ÆÄá.üÆÄáñ/K´¨§ÆÄ᣿ÆÄá"¿


Inserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d tree. 655.1.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d tree.La forma dell’albero <strong>di</strong>pende oltre che dai valori <strong>in</strong>seriti anche dall’or<strong>di</strong>ne <strong>in</strong> cuivengono <strong>in</strong>seriti.Inserire un nuovo elemento N all’<strong>in</strong>terno <strong>di</strong> un albero con ra<strong>di</strong>ce T avvieneseguendo le due regole precedentemente def<strong>in</strong>ite.Supponiamo che P sia il puntatore al nodo dell’albero esam<strong>in</strong>ato nell’<strong>in</strong>terazionecorrente. L’algoritmo <strong>di</strong> <strong>in</strong>serimento esplora <strong>in</strong> maniera ricorsiva i no<strong>di</strong>dell’albero già <strong>in</strong>seriti partendo dalla ra<strong>di</strong>ce e confrontando il punto da <strong>in</strong>serirecon quello memorizzato nel nodo.Al primo passo P assume il valore della ra<strong>di</strong>ce dell’albero, se N e P hanno lestesse coor<strong>di</strong>nate il nodo esiste già e l’<strong>in</strong>serimento è completato, <strong>in</strong> caso contrariospostiamo il puntatore P, eseguendo un confronto sui valori delle ascisse <strong>di</strong> N eP, al figlio <strong>di</strong> s<strong>in</strong>istra al nodo <strong>di</strong> destra seK´ÆÄáè´ÆÄá.Se il punto memorizzato nel nodo puntato da P e quello da <strong>in</strong>serire co<strong>in</strong>cidonoabbiamo term<strong>in</strong>ato perché il nodo esiste già, <strong>in</strong> caso contrario questa voltascegliamo il sotto albero da esam<strong>in</strong>are <strong>in</strong> base al confronto dei valori delle or<strong>di</strong>nate<strong>in</strong> particolare spostiamo P al figlio <strong>di</strong> s<strong>in</strong>istra seK´¨§Ä᧿õ²´©§seK´ÆÄá2¿²´ÆÄáod‘á.‘áE²´¨§Äáod alnodo <strong>di</strong> seK´¨§destraGeneralizzando il proce<strong>di</strong>mento, il puntatore al nuovo nodo da esam<strong>in</strong>areviene assegnato al figlio <strong>di</strong> s<strong>in</strong>istra o <strong>di</strong> destra <strong>in</strong> base al confronto con i valori delleascisse o delle or<strong>di</strong>nate <strong>in</strong> funzione del livello raggiunto all’<strong>in</strong>terno dell’albero.Se il livello è pari si confrontano le ascisse, viceversa se è <strong>di</strong>spari, siconfrontano le or<strong>di</strong>nate.Il nuovo nodo viene <strong>in</strong>serito nell’albero quando P punta a NULL, ciò significache si è raggiunta la f<strong>in</strong>e <strong>di</strong> un ramo dell’albero, allora creiamo un nuovo nodo<strong>in</strong>serendo i dati da memorizzare ed assegniamo al puntatore che prima era NULLil valore delle nuova locazione <strong>in</strong>serita e a questo punto l’algoritmo <strong>di</strong> <strong>in</strong>serimentopuò term<strong>in</strong>are.Regione CentroId(XVal,YVal)RegId 1 (24,36)RegId 2 (50,30)RegId 3 (47,48)RegId 4 (20,68)RegId 5 (6,40)Tabella 5.1: coor<strong>di</strong>nate del baricentro delle regioni da <strong>in</strong>serire nel 2-d Tree.Nella Tabella 5.1.1 e nella Figura 5.2 sono riportate una serie <strong>di</strong> regioni, estrat-


:=@?BAE¥ÝDC66 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>te da precedenti elaborazioni su un’ipotetica immag<strong>in</strong>e, con evidenziati i rispettivicentri, a cui è stata sovrapposta una griglia, con orig<strong>in</strong>e nell’angolo <strong>in</strong> bassoa s<strong>in</strong>istra, con celle <strong>di</strong> forma quadrata <strong>di</strong> un centimetro <strong>di</strong> lato. Supponiamo <strong>di</strong>-./0123456798%'&()*,+! "#$Figura 5.2: Disposizione delle ipotetiche regioni da <strong>in</strong>serire nell’<strong>in</strong><strong>di</strong>ce.selezionare una serie <strong>di</strong> regioni e <strong>di</strong> <strong>in</strong>serirle <strong>in</strong> successione nell’or<strong>di</strong>ne prestabilitoall’<strong>in</strong>terno dell’albero 2-d Tree assegnando al campo Info l’identificativo dellaregione ed ai campi XVal e YVal le coor<strong>di</strong>nate del centro.1. L’<strong>in</strong>serimento <strong>di</strong> RegId1 crea il primo ed unico nodo dell’albero con:ÚFE ,ÆÄáAHGJIe §dÄáAHKx.L’<strong>in</strong>serimento del nodo che memorizza RegId1 def<strong>in</strong>isce <strong>in</strong> maniera implicitauna regione contente l’<strong>in</strong>tera mappa. In generale ogni nodo N <strong>in</strong>seritodef<strong>in</strong>isce una nuova regione Reg(N) che contiene al suo <strong>in</strong>terno il punto <strong>di</strong>coor<strong>di</strong>nate LâK´ÆÄáMuK´¨§ÄáON .L’<strong>in</strong>serimento <strong>di</strong> un nuovo punto <strong>di</strong>vide <strong>in</strong> due, orizzontalmente se il livellodel nodo è <strong>di</strong>spari verticalmente se il nodo è pari, la regione relativa al nodo<strong>in</strong>serito.2. Quando <strong>in</strong>seriamo il nodo conK´:P;Q=@?RA ¥ÝDCeK´¨§‘áASK¥poiché ci troviamo su un livello <strong>di</strong>spari dobbiamo con-:ÚGconK´ÆÄáA a¥


¥ÝDC¥ÝDC¥ÝDCInserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d tree. 67frontare i valori delle ascisse dell’elemento contenuto nella ra<strong>di</strong>ce conquello da <strong>in</strong>serire:scegliamo il puntatore al sottoalbero <strong>di</strong> seK´ÆÄá¿ è´ÆÄás<strong>in</strong>istraoppure il puntatore al sottoalbero <strong>di</strong> destra nel cheK´ÆTÄáUcasoè´Æ‘á.Nel nostro esempio scegliamo il sottoalbero <strong>di</strong> destra poiché Regid2 risiedenella metà destra della regione <strong>in</strong><strong>di</strong>viduata da <strong>in</strong>fattiK´ÆÄáARegId1,è maggiore <strong>di</strong>è´ÆÄáAHGJI.a¥Mentre nel precedente <strong>in</strong>serimento la regione era stata <strong>di</strong>visa verticalmente,l’<strong>in</strong>serimento <strong>di</strong> RegId2 <strong>di</strong>vide orizzontalmente la regione posta a destradella l<strong>in</strong>ea verticale.3. Il terzo nodo da <strong>in</strong>serire contiene i dati relativi a RegId3 con posizioneI


;68 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Verifichiamo imme<strong>di</strong>atamente cheK´ÆÄáS¿Hè´Æ‘á,che ilpuntatore <strong>di</strong>s<strong>in</strong>istra è libero per cui il nuovo nodo viene <strong>in</strong>serito come figlio della ra<strong>di</strong>cee creando una nuova regione delimitata dall’ascissa <strong>di</strong> RegId1 che viene<strong>di</strong>visa orizzontalmente dall’or<strong>di</strong>nata <strong>di</strong> RegId5.Il risultato <strong>di</strong> questa serie <strong>di</strong> <strong>in</strong>serimenti e visibile nelle Figure 5.3 e 5.4 Come†ˆ‡ŒJtdufv!wixzy{d|f}!~i €kdlnmpoiqsr‰‹ŠŽdnp‘O’B“„!…bdcfe!gihj‚pƒFigura 5.3: Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nel 2-d Tree.possiamo notare nel peggiore dei casi il costo dell’<strong>in</strong>serimento dell’n-esimo nodopuò richiedere massimoãL N al confronti.5.1.2 Cancellazione <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d Tree.La parte più complessa nella gestione dei K-d Tree è sicuramente la cancellazione<strong>di</strong> un nodo.Consideriamo un 2-d Tree con T come ra<strong>di</strong>ce, supponiamo <strong>di</strong> voler cancellareun elemento nella Li”•M³N posizione .Il primo passo nella procedura <strong>di</strong> cancellazione consiste nel verificare la presenzadel nodo N da cancellare all’<strong>in</strong>terno dell’albero. Dopo aver identificato ilnodo con la cheK´ÆÄáAproprietà³se è una foglia, entrambi i” eK´¨§ÄáA


¼ýCancellazione <strong>di</strong> no<strong>di</strong> <strong>in</strong> un 2-d Tree. 69–>—˜›š œ¦§›¨ ©!ªÅ!ÆŸQ f¡›¢ £›¤º·»Ã›ÄÖ•Ö•×ÏØÚÙîZïÍðÏñÑòÒ•ÒÍÓÏÔÑÕéZêÍëÏìÚí«>¬­›® ¯p°½¾Ç‹ÈÛ•Û•ÜÞÝÑßóZôÍõÏöÑ÷±Q²f³›´ µ·¿›ÀÉÊà>àÍáÏâÚãøzù•úÏûÚüFigura 5.4: Grafico del 2-d Tree generato dall’<strong>in</strong>serimento delle 5 regioni.puntatori a NULL, l’elim<strong>in</strong>azione del nodo si effettua molto semplicemente elim<strong>in</strong>andoil nodo <strong>in</strong> questione, ponendo a NULL il puntatore nel nodo padre che nememorizza il riferimento e liberando la relativa memoria.Se il nodo da elim<strong>in</strong>are è un nodo <strong>in</strong>terno la cancellazione è più complessa:<strong>in</strong> questo caso almeno uno dei due sottoalberi puntati dai puntatori N.LL<strong>in</strong>k eN.RL<strong>in</strong>k che identifichiamo conè@þ eè&rispettivamente, è non vuoto.Il proce<strong>di</strong>mento <strong>di</strong> cancellazione implica la ricerca <strong>di</strong> un nodo R apparteneteadè@þ o aè&che possa sostituire N <strong>in</strong> modo da poterlo cancellare (ricorsivamente)senza per<strong>di</strong>te <strong>di</strong> dati dal sottoalbero <strong>in</strong> cui risiede.Per cui l’algoritmo <strong>di</strong> cancellazione applicato ad un nodo <strong>in</strong>terno può esserescomposto <strong>in</strong> tre passi:E®Passo: trovare un sostituto R <strong>in</strong>èÿ—L±è]þiM(è&N per il nodo N;G®Passo: sostituire i campi Info, XVal e YVal <strong>di</strong> R con quelli <strong>di</strong> N;K®Passo: cancellare ricorsivamente R da Ti.


K´7¾7_70 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Il passo critico <strong>in</strong> questo algoritmo è l’identificazione del nodo R che deve sod<strong>di</strong>sfarela con<strong>di</strong>zione <strong>di</strong> mantenere <strong>in</strong>alterate le relazioni posizionali tra i <strong>di</strong>versipunti.Le con<strong>di</strong>zioni che deve sod<strong>di</strong>sfare R per essere un valido sostituto sono:1. per ogni <strong>in</strong>è]þ nodo M deve essere verificato che ¡è è Äáse7Ý‹dˆÝáLeKN ´ÆÄ᯿ 7Ý‹dˆÝáLeKN¥´ÆÄásepari e che´¨§ ¥´©§<strong>di</strong>spari;2. per ogni nodo M <strong>in</strong>è&deve essere verificato che ¡´Æ‘ᥴÆÄáse¡pari e che ¡´¨§¥´¨§<strong>di</strong>spari;Äá ¿è èCiò implica che seè&non è vuoto ed il livello <strong>di</strong> N è pari, allora ciascun nodo <strong>in</strong>Äáse7Ý‹d‘ÝáLâKN 7Ý‹dˆÝáLeKNè&che ha il valore più piccolo possibile <strong>di</strong> XVal all’<strong>in</strong>terno <strong>di</strong>è&è un adeguatosostituto per N.Allo stesso modo seè&non è vuoto ma il livello <strong>di</strong> N e <strong>di</strong>spari, allora ciascunnodo <strong>in</strong>è&che ha il valore più piccolo possibile <strong>di</strong> YVal all’<strong>in</strong>terno <strong>di</strong>è&è unadeguato sostituto per N.Supponiamo, ad esempio, <strong>di</strong> voler cancellare il nodo T che contiene le<strong>in</strong>formazioni relative a RegId1 dall’albero <strong>di</strong> Figura 5.4.Valutiamo il sottoalbero <strong>di</strong> destra che contiene i no<strong>di</strong> RegId2, RegId3 e RegId4alla ricerca <strong>di</strong> un sostituto R del nodo da cancellare:poiché il livello della ra<strong>di</strong>ce è pari il nodo sostitutivo è quello che presentail valore m<strong>in</strong>ore <strong>di</strong> ascissa che nel nostro caso è RegId4. Sostituiamo qu<strong>in</strong><strong>di</strong> icampi Info, XVal e YVal del nodo ra<strong>di</strong>ce con quelli <strong>di</strong> RegId4 e poi cancelliamoquest’ultimo.In generale, la ricerca <strong>di</strong> un sostituto nel sottoalbero <strong>di</strong> s<strong>in</strong>istra è possibile solosotto certe con<strong>di</strong>zioni.Se il livello <strong>di</strong> N è pari un sostituto appropriato R è ogni nodo <strong>in</strong>è]þ tale cheR.XVal sia il maggiore <strong>di</strong> tutti gli altri <strong>in</strong>è@þ . Analogamente se il livello <strong>di</strong> N è<strong>di</strong>spari un sostituto appropriato R è ogni nodo <strong>in</strong>è@þ tale R.YVal sia il maggiore <strong>di</strong>tutti gli altri <strong>in</strong>è]þ .Il problema nella ricerca <strong>di</strong> un sostituto nel sottoalbero <strong>di</strong> s<strong>in</strong>istra sussiste nelfatto che può esistere più <strong>di</strong> un nodo con il valore massimo <strong>di</strong> XVal o YVal <strong>in</strong>è]þ eciò fa si che il secondo passo della procedura <strong>di</strong> cancellazione <strong>in</strong>vali<strong>di</strong> la secondaproprietà nella def<strong>in</strong>izione dei 2-d Tree.In generale, si preferisce ricercare il sostituto <strong>di</strong> N nel sottoalbero <strong>di</strong> destra, sequesto non è vuoto.Se il sottoalbero <strong>di</strong> destra è vuoto allora scegliamo R <strong>in</strong>è@þ con il più piccolovalore <strong>di</strong> XVal se il livello <strong>di</strong> N è pari od il più piccolo valore <strong>di</strong> YVal se il livello<strong>di</strong> N è <strong>di</strong>spari e mo<strong>di</strong>fichiamo il secondo passo nella maniera seguente:G®passo (mo<strong>di</strong>ficato): sostituire i campi Info, XVal e YVal <strong>di</strong> R con quelli <strong>di</strong>;¼eK´7¾7_ÄádN e porreK´¥7_K£¢¯7¾7.;¼A;¼A


§Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> 2-d Tree. 715.1.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> 2-d Tree.Una query su un <strong>in</strong>tervallo <strong>in</strong> un albero 2-d è una ricerca che permette <strong>di</strong> recuperaretutti i punti situati all’<strong>in</strong>terno <strong>di</strong> una circonferenza centrata nel L“Æ¥¤nM ¤Npuntoe <strong>di</strong> raggio.La risposta a questa query recupera tutti i punti <strong>in</strong>seriti nell’alberoche hanno <strong>di</strong>stanza dal centro m<strong>in</strong>ore del raggio.La struttura ad albero permette <strong>di</strong> recuperare questi punti <strong>in</strong> maniera <strong>in</strong>telligenteescludendo a priori tutti i sottoalberi nell’albero complessivo chedef<strong>in</strong>iscono regioni che non hanno <strong>in</strong>tersezione con il cerchio selezionato.Nell’elaborazione <strong>di</strong> una query su un <strong>in</strong>tervallo è necessario ricordare che ogn<strong>in</strong>odo N <strong>in</strong>serito all’<strong>in</strong>terno del 2-d Tree def<strong>in</strong>isce una regione.In particolare, per i punti dell’esempio precedente, si ottiene:1. Il nodo con etichetta RegId1 rappresenta la regione <strong>di</strong> tutti i punti deldom<strong>in</strong>io applicativo;2. Il nodo con etichetta RegId2 rappresenta la regione <strong>di</strong> tutti i L punti ”•M³Ntali;che ” GJI3. Il nodo con etichetta RegId3 rappresenta la regione <strong>di</strong> tutti i L punti ”•M³NtaliK¥;che ” e³GJI4. Il nodo con etichetta RegId4 rappresenta la regione <strong>di</strong> tutti i L punti ”•M³NtaliK¥;che G‹I¿”Å¿ I


²´7¾7_²´¥7_²´ÆTÄá seKA²´¥7_AA ²´Æ¡a:KK´Æ¡ A²´7¾7_²´¥7_A²´©§UÆ AÄá seKAK´¨§²´¥7_¡a:KA¡a:K²´Æ¡72 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>1. La ra<strong>di</strong>ce dell’albero ha rispettivamente XMIN e YMIN uguali all’estremo<strong>in</strong>feriore, XMAX e YMAX uguali all’estremo superiore, del dom<strong>in</strong>ioapplicativo;2. Se il generico nodo N ha P come padre conáÝ‹d‘ÝáLâ²Nallora:pari,3. Se il generico nodo N ha P come padre conáÝ‹d‘ÝáLâ²NA¡K´Æ¡a:KK´¨§UƲ´¨§ ¡U*Æallora:seK²´7¾7_²´ÆÄá seKA ;¼seK(5.2)UƲ´©§ ¡a:KK´Æ¡ UÆAK´¨§ ¡a:KAK´Æ¡a:KA<strong>di</strong>spari,A¡a:KA²´©§K´¨§¡K´¨§²´¨§UÆK´¨§ ¡UƲ´7¾7_A¡²´¨§U*ÆseK ‘áUÆ(5.3)AASupponiamo, ad esempio, <strong>di</strong> eseguire la seguente query:UÆ ²´Æ¡a:K K´Æ¡a:Krecuperare tutti i punti contenuti nel cerchio <strong>di</strong> centroI¥ÚN e raggioAEz,è facile verificare che la risposta a questa query ritorna i punti corrispondenti aRegId2, RegId3. L’algoritmo <strong>di</strong> ricerca analizza la query nella seguente maniera:La¥M1. La regione rappresentata da RegId1 è l’<strong>in</strong>tera mappa e la circonferenza ècompletamente contenuta <strong>in</strong> essa, ma il relativo punto non vi appartiene,per cui proseguiamo analizzando i suoi figli.2. La regione def<strong>in</strong>ita dal figlio <strong>di</strong> s<strong>in</strong>istra non <strong>in</strong>terseca la circonferenza percui lo esclu<strong>di</strong>amo <strong>in</strong>sieme a tutti i suoi eventuali figli.La regione def<strong>in</strong>ita dal figlio <strong>di</strong> destra, <strong>in</strong>vece <strong>in</strong>terseca il cerchio <strong>di</strong> ricercae <strong>in</strong> particolare il punto RegId2 che è contenuto al suo <strong>in</strong>terno lo <strong>in</strong>seriamonell’<strong>in</strong>sieme dei risultati, proseguiamo analizzando i figli <strong>di</strong> RegId2;3. RegId3 è il figlio destro <strong>di</strong> RegId2 e la sua regione <strong>in</strong>terseca il cerchio<strong>di</strong> ricerca, il punto è contenuto al suo <strong>in</strong>terno per cui lo riportiamo comerisultato.4. L’ultimo punto è quello relativo a RegId4 la cui regione <strong>in</strong>terseca il punto,ma non lo contiene per cui lo esclu<strong>di</strong>amo dal risultato.Il costo <strong>di</strong> una query su <strong>in</strong> <strong>in</strong>tervallo <strong>di</strong> valori <strong>in</strong> un generico k-d tree presenta unacomplessità <strong>di</strong>ãL¼;§¦©¨)N dell’or<strong>di</strong>ne .A;¼ ;¼AseK;¼G`; N che si specializza per¼AXG<strong>in</strong>ãL


k-d tree per¼5.1.4 k-d tree per CEDGF_GA3. Per ogni nodo M nel sottalbero <strong>di</strong> destra del nodo N deve essere verificatoche ¡ ´Äá[¤_§ŸLA73465:9;"#$%&(')*+,-/.!798?@BA2301Figura 5.5: Schema <strong>di</strong> query su un <strong>in</strong>tervallo <strong>di</strong> valori.Generalizzando l’algoritmo <strong>di</strong> per¼<strong>in</strong>serimento i campi XVal e YValvengono sostituiti da un vettore Val[] <strong>di</strong> k elementi dello stesso tipo.Un albero k-d tree per essere considerato valido deve sod<strong>di</strong>sfare per ogni nodoN le seguenti tre proprietà:LG1. Def<strong>in</strong>iamomod¼;2. Per ogni nodo M nel sottalbero <strong>di</strong> s<strong>in</strong>istra del nodo N deve essereáÝ‹d‘ÝáLâKNverificato´Äá[¤_§Ÿ¿K´Äá[¤_§;che ¡Tutti gli algoritmi visti nel caso per¼AHGprecedente si generalizzano <strong>in</strong> manieraanaloga caso¼LGal .In per¼AE particolare si ottengono i classici alberi b<strong>in</strong>ari.Gli svantaggi pr<strong>in</strong>cipali dell’impiego <strong>di</strong> un k-d tree sono la <strong>di</strong>pendenzadall’or<strong>di</strong>ne <strong>di</strong> <strong>in</strong>serimento e la <strong>di</strong>spersione dei punti all’<strong>in</strong>terno della struttura [?].Una soluzione consiste nell’utilizzare una variante del k-d tree detta adaptivek-d tree che che utilizza serie <strong>di</strong> iperpiani che non necessariamente contengonoK´Äáp¤_§.


74 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>punti da memorizzare, ma che <strong>di</strong>vidono la globalità dei punti <strong>in</strong> due sotto<strong>in</strong>siemicon uguale car<strong>di</strong>nalità. Il proce<strong>di</strong>mento <strong>di</strong> sud<strong>di</strong>visione viene iterato f<strong>in</strong>o adottenere sotto<strong>in</strong>siemi con un solo elemento.In questo caso non è più necessario alternare le k <strong>di</strong>rezioni degli iperpiani,<strong>in</strong>fatti ogni nodo <strong>in</strong>terno dell’albero contiene le <strong>in</strong>formazioni sulla <strong>di</strong>rezione e laposizione del relativo iperpiano.I punti veri e propri vengono memorizzati al livello <strong>di</strong> foglie. Purtroppo questastruttura non è molto <strong>di</strong>namica ed è <strong>di</strong> <strong>di</strong>fficile aggiornamento.Un’ulteriore variante BSP tree elim<strong>in</strong>a rispetto alla precedente l’isorientamentodegli iperpiani, fissa una soglia sotto la quale arrestare il processo <strong>di</strong>sud<strong>di</strong>visione dei sottospazi e memorizza più <strong>di</strong> un punto <strong>in</strong> ogni nodo foglia [?, ?].5.2 Po<strong>in</strong>t QuadTree.I po<strong>in</strong>t QuadTree come i 2-d tree vengono impiegati per memorizzare punti bi<strong>di</strong>mensionali,al contrario però nei QuadTree ogni punto <strong>di</strong>vide la regione che locontiene <strong>in</strong> quattro parti.In un 2-d tree ogni nodo N <strong>in</strong>serito <strong>di</strong>vide la regione che lo contiene <strong>in</strong> due partitramite una l<strong>in</strong>ea passante per LâK´ÆTÄáMuK´¨§ÄáON il punto <strong>in</strong> <strong>di</strong>rezione verticalese è pari o orizzontale se è <strong>di</strong>spari.Nel caso dei QuadTree Figura 5.6 le quatto parti <strong>in</strong> cui viene <strong>di</strong>visa la regione,dalle due l<strong>in</strong>ee passanti per il puntoiláÝ‹d‘ÝáLeKNÄáN, vengono denom<strong>in</strong>ateiláÝ‹d‘ÝáLâKNLâK´ÆÄáMyK´©§NO (Nord Ovest), SO (Sud Ovest), NE (Nord Est) e SE (Sud Est), ad ognuno <strong>di</strong>questi quadranti corrisponde un puntatore ad un nodo figlio.Nei po<strong>in</strong>t QuadTree al contrario dei 2-d tree ogni nodo N può avere f<strong>in</strong>o aquattro figli.La def<strong>in</strong>izione del nodo è la seguente:QuadTreeNode {Info: Information;XVal: real;YVal: real;NO, SO, NE, SE: *QuadTreeNode;}5.2.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> po<strong>in</strong>t QuadTree.Illustriamo come vengono <strong>in</strong>seriti, <strong>in</strong> un po<strong>in</strong>t QuadTree con ra<strong>di</strong>ce puntata da T,i punti della Tabella 5.1.1:


_;_;M_;_;MInserimento e ricerca <strong>di</strong> no<strong>di</strong> <strong>in</strong> po<strong>in</strong>t QuadTree. 75HJILKMNPOQSRUT/V§WSXY[Z \^] _a` bcFigura 5.6: Struttura <strong>di</strong> un nodo <strong>di</strong> Po<strong>in</strong>t QuadTree.1. Inizialmente l’albero è vuoto e l’<strong>in</strong>serimento del punto RegId1 avviene nelnodo ra<strong>di</strong>ce: il dom<strong>in</strong>io applicativo viene <strong>di</strong>viso <strong>in</strong> quatto parti da due retteortogonali passanti per il L puntoKxN .G‹I2. L’<strong>in</strong>serimento del secondo punto RegId2, che rispetto a Regid1 è situatonel quadrante <strong>di</strong> SUD EST, implica la creazione <strong>di</strong> un nuovo nodo contenenteRegId2 il cui riferimento viene memorizzato nel puntatore SE delnodo RegId1.3. Il nodo contenente le <strong>in</strong>formazioni su RegId3 si trova nel quadrante <strong>di</strong>NORD EST rispetto a RegId1 e poiché il puntatore a questa regione è liberocreiamo un nuovo nodo e memorizziamo il suo riferimento nel puntatoreNE del nodo contenente RegId1.4. Quando <strong>in</strong>seriamo il punto corrispondente a RegId4 notiamo che si trova,come il precedente, nel quadrante si NORD EST rispetto a RegId1 e qu<strong>in</strong><strong>di</strong>si trova <strong>in</strong> un quadrante già occupato da un altro punto. Rispetto a quest’ultimoRegId4 si trova nel quadrante <strong>di</strong> NORD OVEST per cui creiamo unnuovo figlio del nodo RegId3, memorizzando il suo riferimento nel puntatoreNO e creiamo una nuova sud<strong>di</strong>visione <strong>in</strong> quatto parti dell’area a NORDOVEST <strong>di</strong> RegId3.5. L’ultimo punto da <strong>in</strong>serire, rappresentato RegId5, è localizzato rispetto aRegId1 nel quadrante <strong>di</strong> NORD OVEST che ha il rispettivo puntatore libero.Allora memorizziamo il riferimento a RegId5 nel puntatore NO <strong>di</strong> RegId1ed eseguiamo la sud<strong>di</strong>visione <strong>in</strong> quattro nuove parti della regione <strong>di</strong> NORDOVEST.I risultati <strong>di</strong> questo <strong>in</strong>serimento sono visibili nelle Figure 5.7 e 5.8 Ogni nodoN <strong>in</strong>serito nel Po<strong>in</strong>t QuadTree rappresenta, come nel caso dei 2-d tree, una regioneche viene def<strong>in</strong>ita tramite costantiÆ¡le quattro cheMpÆ¡Ñ”esprimono i seguenti v<strong>in</strong>coli sui punti Li”•M³N appartenenti alla regione: ”M³ ¿§§ ¡§ ¡Ñ”•Mdef<strong>in</strong>izione del nodo.Æ¡M”õ¿ Æ¡Ú”•M³§ ¡¡Ñ” e che andremo a <strong>in</strong>serire nella


ž1. Se il nodo N è la ra<strong>di</strong>ce dell’albero puntato da T alloraÆ¡¡Ÿ_;e § ¡_;76 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>jŽ‹Œ–—vxwhyjzl{n|‰SŠofphqjrlsut‘’j“}x~hj€©ƒ‚˜xhšj›©œ‡jˆdfehgjilknm„†…”†•Figura 5.7: Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nel Po<strong>in</strong>t QuadTree.I valori delle quatto costanti <strong>in</strong>trodotte vengono assegnati al momentodell’<strong>in</strong>serimento del nodo N secondo i seguenti criteri:assumono il valore m<strong>in</strong>imo del applicativo,Æ¡dom<strong>in</strong>oassumono il valore superiore del dom<strong>in</strong>io applicativo.Ñ” e § ¡ Ú”2. Se P e il padre <strong>di</strong> N, allora la Tabella 5.2.1 descrive come vengono def<strong>in</strong>iti,<strong>in</strong> funzione del nodo padre, i valori delle quattro costanti per il rispettivofiglio.Come si può notare sia nel caso dei 2-d tree che nei po<strong>in</strong>t QuadTree con n no<strong>di</strong>il tempo <strong>di</strong> <strong>in</strong>serimento/ricerca nel caso peggiore è <strong>di</strong>ãL;@EN dell’or<strong>di</strong>ne anchese, il più delle volte, i QuadTree sono più compatti dei relativi 2-d Tree.5.2.2 Cancellazione nei Po<strong>in</strong>t QuadTree.Quando cancelliamo un nodo N non foglia da un po<strong>in</strong>t QuadTree con ra<strong>di</strong>ce Tdobbiamo per prima cosa cercare, come nel caso dei 2-d tree, un sostituto delnodo da cancellare.


Î_;_;¦__ ;;NMCancellazione nei Po<strong>in</strong>t QuadTree. 77¢¤£¥§¦©¨SªÇ§ÈѧÒÛÝÜæèçñ!òû9üº¤»¼§½¿¾†À׆ز´³µ¯©·¹¸Ì†ÍÕÖ«¤¬­¯®©°¯±ÉËÊÓ§ÔâÝãíèî÷øàÝáëèìõ!öÞÝßéèêó!ôý9þ¢¡£ÿ¡Á¤ÂçĩůÆϧÐÙ¹Ú¤¡¥äÝåïèðù!úFigura 5.8: Grafico del QuadTree generato dall’<strong>in</strong>serimento delle 5 regioni.Caso N.XM<strong>in</strong> N.XMax N.YM<strong>in</strong> N.YMaxN=P.NO P.XM<strong>in</strong> P.XM<strong>in</strong>+w/2 P.YM<strong>in</strong>+h/2 P.YMaxN=P.SO P.XM<strong>in</strong> P.XM<strong>in</strong>+w/2 P.YM<strong>in</strong> P.YM<strong>in</strong>+h/2N=P.NE P.XM<strong>in</strong>+w/2 P.XMax P.YM<strong>in</strong>+h/2 P.YMaxN=P.SE P.XM<strong>in</strong>+w/2 P.XMax P.YM<strong>in</strong> P.YM<strong>in</strong>+h/2Le²´Æ¡Lâ²´¨§ ¡Ú”@Æ¡N elAÑ”@§ ¡§ ¡Tabella costantiÆ¡5.2: Assegnamento dallefiglio <strong>in</strong> funzione dei valori del nodo padre <strong>in</strong> un Po<strong>in</strong>t QuadTree.M(Æ¡Ñ”•M§ ¡Ñ” al nodoCon°ANel caso dei no<strong>di</strong> foglia la cancellazione è banale: basta porre a NULL ilpuntatore nel nodo padre che lo memorizza e liberare la memoria assegnata alnodo.La cancellazione <strong>di</strong> un nodo <strong>in</strong>terno è un proce<strong>di</strong>mento complesso che non èsempre possibile senza effettuare una parziale organizzazione dei no<strong>di</strong> già <strong>in</strong>seriti.La determ<strong>in</strong>azione <strong>di</strong> un nodo sostituto R avviene all’<strong>in</strong>terno <strong>di</strong> uno dei quattropossibili sottoalberi del nodo da cancellare N <strong>in</strong> modo che siano verificatecontemporaneamente le seguenti proprietà:1. Ogni altro nodo¥¨ nel sottoalbero N.NO è a NORD OVEST <strong>di</strong> R;2. Ogni altro nodo¥¨§nel sottoalbero N.NE è a NORD EST <strong>di</strong> R;3. Ogni altro nodo¥¨©nel sottoalbero N.SO è a SUD OVEST <strong>di</strong> R;4. Ogni altro nodo¥nel sottoalbero N.SE è a SUD EST <strong>di</strong> R.


78 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Come abbiamo accennato precedentemente non è sempre possibile, per tutti i possibil<strong>in</strong>o<strong>di</strong> <strong>in</strong>terni N da cancellare, trovare un nodo sostituto R che sod<strong>di</strong>sfi tutte equatto le proprietà.Qu<strong>in</strong><strong>di</strong>, nel peggiore dei casi, la cancellazione <strong>di</strong> un nodo può comportareil re<strong>in</strong>serimento <strong>di</strong> tutti quei no<strong>di</strong> che impe<strong>di</strong>scono il verificarsi delle quattrocon<strong>di</strong>zioni precedenti.5.2.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> Po<strong>in</strong>t QuadTree.Le query sugli <strong>in</strong>tervalli <strong>di</strong> valori vengono trattate esattamente nella stessa manieradelle rispettive sui 2-d tree. L’<strong>in</strong>tervallo <strong>di</strong> ricerca viene rappresentato da unacirconferenza con centro§šDN e raggio.Una query su un <strong>in</strong>tervallo permette <strong>di</strong> recuperare tutti i punti contenuti all’<strong>in</strong>ternodella circonferenza. Poiché ogni nodo nel po<strong>in</strong>t QuadTree rappresentaL±ÆcšMuna regione, l’algoritmo <strong>di</strong> ricerca scarta i sottoalberi rispetto ai quali la relativaregione non ha <strong>in</strong>tersezioni con il cerchio <strong>di</strong> ricerca.Il processo <strong>di</strong> query <strong>in</strong>izia esam<strong>in</strong>ando il nodo ra<strong>di</strong>ce T, se la regione associataalla ra<strong>di</strong>ce, cioè l’<strong>in</strong>tero dom<strong>in</strong>io applicativo, ha un <strong>in</strong>tersezione con l’<strong>in</strong>tervallo<strong>di</strong> ricerca si valuta se anche il nodo è <strong>in</strong>terno all’<strong>in</strong>tervallo e <strong>in</strong> caso affermativo si<strong>in</strong>clude il punto nei risultati della ricerca.Il passo successivo determ<strong>in</strong>ato dall’esistenza <strong>di</strong> <strong>in</strong>tersezione, <strong>in</strong><strong>di</strong>pendentementedall’appartenenza del punto al risultato della query, è l’esame dei quattosottoalberi puntati da NO, NE, SO, SE. Se non esiste <strong>in</strong>tersezione con la regioneassociata al nodo tutto il sottoalbero che si sviluppa dal nodo viene scartatoperché sicuramente non contiene punti <strong>in</strong>teressanti, <strong>in</strong> caso contrario si valutal’appartenenza del punto alla regione.L’algoritmo <strong>di</strong> ricerca term<strong>in</strong>a quando non ci sono più no<strong>di</strong> da esam<strong>in</strong>are.[?, ?]5.3 MX QuadTree.In tutte le strutture precedentemente analizzate la “forma” dell’albero <strong>di</strong>pendedall’or<strong>di</strong>ne <strong>in</strong> cui i vari oggetti vengono <strong>in</strong>seriti.In particolare l’or<strong>di</strong>ne <strong>in</strong>fluisce sull’altezza f<strong>in</strong>ale dell’albero che è anche lagrandezza che determ<strong>in</strong>a la complessità, <strong>in</strong> term<strong>in</strong>i <strong>di</strong> operazioni elementari, delleoperazioni <strong>di</strong> <strong>in</strong>serimento e ricerca <strong>di</strong> un generico valore.Sia nei 2-d tree che nei po<strong>in</strong>t QuadTree ogni nodo rappresenta una regione chenei primi viene <strong>di</strong>visa <strong>in</strong> due nei secon<strong>di</strong> <strong>in</strong> quattro sottoregioni dall’<strong>in</strong>serimento <strong>di</strong>un nuovi elementi. Queste sud<strong>di</strong>visioni sono irregolari dato che <strong>di</strong>pendono dallaLeK´ÆÄáMyK´¨§‘áON posizione dello specifico punto all’<strong>in</strong>terno della regione.


_;_K;N_;_;M_;MInserimento e ricerca <strong>di</strong> no<strong>di</strong> un MX QuadTree. 79Al contrario, lo scopo pr<strong>in</strong>cipale del MX QuadTree è quello <strong>di</strong> assicurareche la “forma” dell’albero risulti <strong>in</strong><strong>di</strong>pendente dal numero e dall’or<strong>di</strong>ne dei no<strong>di</strong><strong>in</strong>seriti, con il più il vantaggio <strong>di</strong> semplificare gli algoritmi <strong>di</strong> ricerca e <strong>di</strong>cancellazione.Gli MX QuadTree implicano la def<strong>in</strong>izione <strong>di</strong> una griglia quadrata <strong>di</strong> G¤elementi<strong>di</strong> lato dove K è una costante, fissa per l’applicazione, che riflette la granularitàcon cui vogliamo stu<strong>di</strong>are gli elementi che andranno a popolare la nostraapplicazione.I no<strong>di</strong> del MX QuadTree hanno la stessa struttura dei no<strong>di</strong> del po<strong>in</strong>t QuadTreeampliati con la def<strong>in</strong>izione delle costantiÆ¡quattro M(Æ¡ § ¡ § ¡Ñ”Ñ”•Mche i figli derivano <strong>in</strong> maniera analoga dai valori del loro genitore secondo laTabella 5.3. In questo caso ogni volta che viene <strong>in</strong>serito un nuovo punto laCaso N.XM<strong>in</strong> N.XMax N.YM<strong>in</strong> N.YMaxN=P.NO P.XM<strong>in</strong> P.XM<strong>in</strong>+w/2 P.YM<strong>in</strong>+w/2 P.YMax+wN=P.SO P.XM<strong>in</strong> P.XM<strong>in</strong>+w/2 P.YM<strong>in</strong> P.YM<strong>in</strong>+w/2N=P.NE P.XM<strong>in</strong>+w/2 P.XMax+w P.YM<strong>in</strong>+w/2 P.YMax+wN=P.SE P.XM<strong>in</strong>+w/2 P.XMax+w P.YM<strong>in</strong> P.YM<strong>in</strong>+w/2LeK´Æ¡Ñ”€@K´Æ¡Con°A§ ¡Tabella costantiÆ¡5.3: Assegnamento dallefiglio <strong>in</strong> funzione dei valori del nodo padre <strong>in</strong> un MX quadTree.M(Æ¡Ñ”•M§ ¡Ñ” al nodoregione che lo contiene viene <strong>di</strong>visa esattamente nel mezzo.5.3.1 Inserimento e ricerca <strong>di</strong> no<strong>di</strong> un MX QuadTree.Illustriamo come vengono <strong>in</strong>seriti, <strong>in</strong> un MX QuadTree con ra<strong>di</strong>ce puntata da T, ipunti dell’esempio precedente 5.3.1:Regione cetroid(XVal,YVal) Xeff YeffRegId 1 (24,36) 2 4RegId 2 (50,30) 5 3RegId 3 (47,48) 5 5RegId 4 (30,68) 4 7RegId 5 (06,40) 0 4Tabella 5.4: Coor<strong>di</strong>nate del baricentro delle regioni calcolate per AaKPer memorizzare questi valori Afissiamo . Il valore <strong>di</strong> K ci permette<strong>di</strong> determ<strong>in</strong>are i valori delle ascisse e delle or<strong>di</strong>nate effettive secondo le seguenti.


E617!8#9;:=1?!@#A;BDCNALHGMFGMIK80 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>formule:L=Q=M=@=TGG N (5.4),Proce<strong>di</strong>amo con l’<strong>in</strong>serimento dei punti della Tabella 5.3.1 che <strong>in</strong><strong>di</strong>viduano le/10!2#3%4'5()!*#+%,.-! #"%$'&Figura 5.9: Schema <strong>di</strong> sud<strong>di</strong>visione del piano dell’immag<strong>in</strong>e determitatodall’<strong>in</strong>serimento delle 5 regioni nell MX QuadTree.celle <strong>di</strong> Figura 5.9 nella griglia 8 x 8.1. L’<strong>in</strong>serimento del punto relativo a RegId1 con L N coor<strong>di</strong>nate causa lacreazione dei seguenti no<strong>di</strong>: il nodo ra<strong>di</strong>ce che rappresenta l’<strong>in</strong>tera regionead il nodo rappresentante il quadrante <strong>di</strong> SUD OVEST <strong>di</strong> <strong>di</strong>mensione 4x4che contiene il punto. All’<strong>in</strong>terno <strong>di</strong> questa sottoregione il punto si trovanel quadrante <strong>di</strong> NORD EST <strong>di</strong> <strong>di</strong>mensione 2x2 e nel quadrante <strong>di</strong> NORDOVEST <strong>di</strong> <strong>di</strong>mensione 1x1.Creiamo il nodo ra<strong>di</strong>ce ed un percorso <strong>di</strong> due no<strong>di</strong> ai livelli 1 e 2 ememorizziamo il punto nel nodo foglia al livello 3.2. L’<strong>in</strong>serimento del punto relativo a RegId2 con LJIM N coor<strong>di</strong>nate causa lacreazione/attraversamento dei seguenti no<strong>di</strong>: il nodo ra<strong>di</strong>ce rappresenta l’<strong>in</strong>teraregione ed il nodo rappresentante il quadrante <strong>di</strong> SUD EST <strong>di</strong> <strong>di</strong>mensione4x4 che contiene il punto. All’<strong>in</strong>terno <strong>di</strong> questa sottoregione il punto


IMIVInserimento e ricerca <strong>di</strong> no<strong>di</strong> un MX QuadTree. 81si trova nel quadrante <strong>di</strong> NORD OVEST <strong>di</strong> <strong>di</strong>mensione 2x2 e nel quadrante<strong>di</strong> NORD EST <strong>di</strong> <strong>di</strong>mensione 1x1.Partendo dal nodo ra<strong>di</strong>ce creiamo un percorso <strong>di</strong> due no<strong>di</strong> ai livelli 1 e 2 ememorizziamo il punto nel nodo foglia al livello 3.3. L’<strong>in</strong>serimento del punto relativo a RegId3 con coor<strong>di</strong>nate L!IPMKIÑN causa lacreazione/attraversamento dei seguenti no<strong>di</strong>: Il nodo ra<strong>di</strong>ce che rappresental’<strong>in</strong>tera regione ed il nodo rappresentante il quadrante <strong>di</strong> NORD EST <strong>di</strong><strong>di</strong>mensione 4x4 che contiene il punto. All’<strong>in</strong>terno <strong>di</strong> questa sottoregioneil punto si trova nel quadrante <strong>di</strong> SUD OVEST <strong>di</strong> <strong>di</strong>mensione 2x2 e nelquadrante <strong>di</strong> SUD OVEST <strong>di</strong> <strong>di</strong>mensione 1x1.Partendo dal nodo ra<strong>di</strong>ce creiamo un percorso <strong>di</strong> due no<strong>di</strong> ai livelli 1 e 2 ememorizziamo il punto nel nodo foglia al livello 3.4. L’<strong>in</strong>serimento del punto relativo a RegId4 con L N coor<strong>di</strong>nate causa lacreazione/attraversamento dei seguenti no<strong>di</strong>: Il nodo ra<strong>di</strong>ce che rappresental’<strong>in</strong>tera regione ed il nodo rappresentante il quadrante <strong>di</strong> NORD OVEST<strong>di</strong> <strong>di</strong>mensione 4x4 che contiene il punto. All’<strong>in</strong>terno <strong>di</strong> questa sottoregioneil punto si trova nel quadrante <strong>di</strong> NORD EST <strong>di</strong> <strong>di</strong>mensione 2x2 enel quadrante <strong>di</strong> SUD EST <strong>di</strong> <strong>di</strong>mensione 1x1.Partendo dal nodo ra<strong>di</strong>ce creiamo un percorso <strong>di</strong> due no<strong>di</strong> ai livelli 1 e 2 ememorizziamo il punto nel nodo foglia al livello 3.5. L’<strong>in</strong>serimento del punto relativo a RegId5 con LJLM N coor<strong>di</strong>nate causa lacreazione/attraversamento dei seguenti no<strong>di</strong>: Il nodo ra<strong>di</strong>ce che rappresental’<strong>in</strong>tera regione ad il nodo rappresentante il quadrante <strong>di</strong> SUD OVEST <strong>di</strong><strong>di</strong>mensione 4x4 che contiene il punto.All’<strong>in</strong>terno <strong>di</strong> questa sottoregione il punto si trova nel quadrante <strong>di</strong> NORDOVEST <strong>di</strong> <strong>di</strong>mensione 2x2 e nel quadrante <strong>di</strong> NORD OVEST <strong>di</strong> <strong>di</strong>mensione1x1.Partendo dal nodo ra<strong>di</strong>ce creiamo un percorso <strong>di</strong> due no<strong>di</strong> ai livelli 1 e 2 ememorizziamo il punto nel nodo foglia al livello 3.Come si può notare <strong>in</strong> Figura 5.10 questa struttura ha <strong>di</strong>mensioni molto maggioririspetto alle precedenti, ma presenta <strong>di</strong>versi vantaggi sotto l’aspetto della gestionedei dati. Siccome i no<strong>di</strong> contenenti le <strong>in</strong>formazioni risiedono sempre al livellodelle foglie il percorso per raggiungerle richiede sempre lo stesso numero <strong>di</strong>attraversamenti pari a K. L’utilizzo <strong>di</strong> una struttura <strong>in</strong><strong>di</strong>pendente dall’or<strong>di</strong>ne <strong>di</strong> <strong>in</strong>serimentodei no<strong>di</strong> implica “forme” più regolari riducendo le variazioni dei tempi


nrlpkojmqsã82 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>ìîí,.-KMLMNPOQ!šP›qœÃ¤Ä ÅqÆ5.6TMU3.4RMS/.0 1.2 NMO PQõîöóîôïîðñîò^_P`a«!¬­q®Ó¤Ô ÕqÖZ[P\]§¤¨ ©qªÏ!ÐÑÒRSPTU!ž Ÿq¡ ¢¤£ ¥q¦ Ç¤È ÉqÊ Ë!ÌÍqÎ VWPXY 7.89.: ;.< VWXMY ZM[¨¡©()G.HfMg¡*+I.JhMifgPhijkPlm ‘’P“” •–P—˜¯¤° ±q² ³!´µq ·!¸¹º »!¼½¾ ¿¤À ÁqÂ×!ØÙÚ Û¤Ü ÝqÞߤà áqâ ä¤å æqçbcPdeè¤é êqëùîú÷îøûîü„J…q†s‡ˆŠ‰wJxqysz{}|n!oqpsrtvu~!€s‚}ƒ‹!ŒsŽs¢¡£¤¡¥ ¦¡§! "#$%=.>?.@A.BC.D\]^M_`abc ÿ¡&'E.FdeýîþFigura 5.10: Grafico del MX QuadTree generato dall’<strong>in</strong>serimento dei centri delle5 regioni.<strong>di</strong> recupero. Inoltre l’impiego degli MX QuadTree permette <strong>di</strong> risolvere i problemi<strong>di</strong> cancellazione illustrati precedentemente nel caso dei po<strong>in</strong>t QuadTree dovesi richiedeva il re<strong>in</strong>serimento <strong>di</strong> alcuni no<strong>di</strong>.La complessità computazionale nell’<strong>in</strong>serimento o nella ricerca <strong>di</strong> un no<strong>di</strong> èdell’or<strong>di</strong>ne <strong>di</strong> t L TN .5.3.2 Cancellazione negli MX QuadTree.La cancellazione <strong>di</strong> un nodo P <strong>in</strong> un MX QuadTree è un’operazione sempliceperché tutti i no<strong>di</strong> sono memorizzati nelle foglie.Se N è un nodo <strong>in</strong>terno all’MX QuadTree con ra<strong>di</strong>ce T allora la regione,che implicitamente rappresenta questo nodo, deve contenere almeno un puntoeffettivamente memorizzato <strong>in</strong> una foglia nel sottoalbero del nodo N.Se vogliamo cancellare il punto <strong>di</strong> coor<strong>di</strong>nate L ”•Mvu N nell’albero puntato daT dobbiamo mantenere la proprietà precedente. Quando an<strong>di</strong>amo a cancellareun nodo prima <strong>di</strong> tutto verifichiamo la sua presenza all’<strong>in</strong>terno dell’albero, poicancelliamo il riferimento nel nodo padre del nodo P e liberiamo la relativamemoria.Il passo successivo consiste nel verificare che nel nodo padre <strong>di</strong> P ci sia almenoun puntatore non vuoto, <strong>in</strong> caso contrario anche il nodo padre non è più necessarioe può essere elim<strong>in</strong>ato.La verifica sui no<strong>di</strong> <strong>in</strong>terni procede a ritroso collassando tutti i no<strong>di</strong> nel camm<strong>in</strong>odal nodo P al nodo ra<strong>di</strong>ce T. Ad esempio, la cancellazione del nodo relativoa RegId1 implica che anche il nodo padre venga elim<strong>in</strong>ato perché rimane vuoto.


Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> MX QuadTree. 835.3.3 Query su <strong>in</strong>tervalli <strong>di</strong> valori <strong>in</strong> MX QuadTree.Le query sugli <strong>in</strong>tervalli <strong>di</strong> valori negli MX QuadTree sono eseguite nella stessamaniera dei Po<strong>in</strong>t QuadTree con due piccole <strong>di</strong>fferenze.La prima è che il contenuto <strong>di</strong> XM<strong>in</strong>, XMax, YM<strong>in</strong>, YMax è <strong>di</strong>verso. Laseconda riguarda il fatto che essendo i punti memorizzati nelle foglie il controllosull’appartenenza del punto alla circonferenza <strong>di</strong> ricerca deve essere effettuatosolo <strong>in</strong> corrispondenza delle foglie.Le query sugli <strong>in</strong>tervalli negli MX QuadTree risultano molto efficienti <strong>in</strong> particolarela complessità computazionale è dell’or<strong>di</strong>ne <strong>di</strong> t LxwXG N dove N è ilnumero dei punti nel risultato della query [?].5.4 R-Tree.Gli R-tree sono una struttura dati che, tra le varie applicazioni, può essere impiegataper memorizzare regioni rettangolari <strong>di</strong> un’immag<strong>in</strong>e all’<strong>in</strong>terno delle qualisono def<strong>in</strong>ite un <strong>in</strong>sieme <strong>di</strong> proprietà.Questi rettangoli vengono derivati determ<strong>in</strong>ando per ogni regione <strong>di</strong> formaarbitraria, ottenuta tramite precedenti elaborazioni dell’immag<strong>in</strong>e, l’MBB(M<strong>in</strong>imum Boun<strong>di</strong>ng Box) il rettangolo m<strong>in</strong>imo che la contiene.Gli R-tree sono particolarmente adatti a memorizzare grosse quantità <strong>di</strong> dati su<strong>di</strong>sco <strong>in</strong>fatti, essendo gli accessi a questa risorsa più lenti degli accessi <strong>in</strong> memoria,gli R-tree permettono <strong>di</strong> ottimizzare il numero delle letture da questa risorsa. OgniR-Tree ha associato un or<strong>di</strong>ne che è un <strong>in</strong>tero K.Ogni nodo può memorizzare al massimo K regioni rettangolari, ma ne devecontenere almeno K/2 con eccezione della ra<strong>di</strong>ce. Ciò significa che ogni nodo<strong>in</strong>terno, con l’eccezione della ra<strong>di</strong>ce, deve essere almeno mezzo pieno.Solitamente K viene scelto <strong>in</strong> modo che un nodo risieda su una sola pag<strong>in</strong>a <strong>in</strong>modo da poter essere recuperato con un solo accesso al <strong>di</strong>sco. Memorizzare <strong>in</strong> ogn<strong>in</strong>odo almeno K/2 regioni rettangolari implica che l’altezza <strong>di</strong> un R-tree, anche<strong>in</strong> presenza <strong>di</strong> molte regioni, si mantenga contenuta <strong>di</strong>m<strong>in</strong>uendo ulteriormente ilnumero <strong>di</strong> accessi al <strong>di</strong>sco necessari alle operazioni <strong>di</strong> ricerca.L’altezza <strong>di</strong> un R-tree contente N no<strong>di</strong> è al y{z}|~ € ƒ‚Gy„€ E massimo poichéci sono almeno K/2 ramificazioni per ogni nodo.La struttura <strong>di</strong> un R-tree è del tipo:RtreeNode{Info1, Info2, ... , InfoK: Information;Ret1, Ret2, ... , RetK: rettangolo;P1, P2, ... , PK: *RtreeNode;}


Žœ84 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Ogni nodo contiene K elementi che memorizzano una regione rettangolare il campoInfoK contiene l’identificativo della regione, con limiti def<strong>in</strong>iti dal rettangoloRetK e che contiene al suo <strong>in</strong>terno i no<strong>di</strong> del sottoalbero puntato da PK.Possiamo considerare l’R-tree, percorrendolo dai livelli più alti ai più bassi,come una gerarchia <strong>di</strong> regioni rettangolari <strong>in</strong>cluse una all’<strong>in</strong>terno dell’altra.Gli elementi memorizzati <strong>in</strong> nodo <strong>in</strong>terno N rappresentano regioni rettangolarifittizie o <strong>di</strong> raggruppamento N.RetK che contengono al loro <strong>in</strong>terno tutte le regionidel sottoalbero con ra<strong>di</strong>ce N.PK. All’<strong>in</strong>terno dei no<strong>di</strong> foglia <strong>in</strong>vece, risiedono elementiche memorizzano gli MBB <strong>di</strong> una regione reale ed un riferimento ad ulterioriproprietà. In Figura 5.11 sono rappresentate una serie <strong>di</strong> regioni rettangolari es-´µ…‡†ž‡Ÿ¡­ ®”–•¢¤£¥£ˆŠ‰‹ Œ— ˜¯±° ²“³›šª¬«‘“’·¸¹›º¦¤§©¨Figura 5.11: Schema delle regioni e dei relativi raggruppamenti da <strong>in</strong>serire nell’R-Tree.tratte da precedenti elaborazioni dell’immag<strong>in</strong>e. In particolare, sono evidenziati <strong>in</strong>colore nero gli MBB delle regioni <strong>in</strong> rosso e verde i rettangoli <strong>di</strong> raggruppamento<strong>di</strong> primo e secondo livello.L’R-tree ottenuto <strong>in</strong>serendo <strong>in</strong> successione le precedenti regioni rettangolariè rappresentato <strong>in</strong> Figura 5.12. Ogni rettangolo può essere memorizzato <strong>in</strong> mo<strong>di</strong><strong>di</strong>versi, ad esempio tramite una coppia <strong>di</strong> punti oppure tramite un punto, unalunghezza e una larghezza.In particolare, un R-tree può memorizzare anche <strong>in</strong>siemi <strong>di</strong> punti sotto forma<strong>di</strong> rettangoli con lunghezza e larghezza nulla.


îRicerche ed aggiornamenti <strong>di</strong> R-tree. 85»½¼Ò½Ó¿ Ë½Ì ÔÖÕ ßÊà æ½ç¾ÅÇÆÈÊÉÍÏÎÐÏÑ×ÂØÙØÚÜÛÝÊÞáÏâãåäèÜéêÇëíìÀÂÁÄÃFigura 5.12: Grafico del R-Tree generato dall’<strong>in</strong>serimento delle regioni delloschema precedente.5.4.1 Ricerche ed aggiornamenti <strong>di</strong> R-tree.L’algoritmo <strong>di</strong> ricerca percorre l’albero dalla ra<strong>di</strong>ce alle foglie <strong>in</strong> maniera similead un B-tree.Siccome i rettangoli <strong>di</strong> raggruppamento possono essere parzialmente sovrapposti,le ricerche <strong>in</strong> un R-tree, <strong>in</strong>vece <strong>di</strong> seguire un unico percorso dalla ra<strong>di</strong>cealla foglia da recuperare, devono percorrere <strong>in</strong> successioni serie <strong>di</strong> percorsi e ciòimplica l’accesso ad un numero maggiore <strong>di</strong> no<strong>di</strong> rispetto, ad esempio, al casodella ricerca <strong>in</strong> un QuadTree.Supponiamo <strong>di</strong> avere un R-tree con T come ra<strong>di</strong>ce, l’algoritmo <strong>di</strong> ricerca permette<strong>di</strong> recuperare tutti le regioni N.RetK che sono sovrapposte, <strong>in</strong>teramente oparzialmente, alla regione S utilizzata per la ricerca. L’algoritmo <strong>di</strong> ricerca si<strong>di</strong>vide <strong>in</strong> due passi:1. Ricerca nel sottoalbero. Se T non è una foglia controlla ogni figlio E delnodo per determ<strong>in</strong>are quando E.ret è contenuto all’<strong>in</strong>terno <strong>di</strong> S.In caso affermativo riesegui l’algoritmo <strong>di</strong> ricerca sul sottoalbero aventera<strong>di</strong>ce E.P.2. Ricerca nelle foglie. Se T è una foglia controlla ogni figlio E perdeterm<strong>in</strong>are se E.ret è contenuto <strong>in</strong> S. Se è così <strong>in</strong>cludo E nella rispostaL’algoritmo <strong>di</strong> <strong>in</strong>serimento aggiunge i nuovi elementi al livello delle foglie; i no<strong>di</strong>pieni vengono <strong>di</strong>visi <strong>in</strong> due pieni solo a metà e questo processo può propagasiverso l’alto f<strong>in</strong>o alla ra<strong>di</strong>ce.L’algoritmo <strong>di</strong> <strong>in</strong>serimento si <strong>di</strong>vide <strong>in</strong> quatto passi:1. Trova spazio per il nuovo elemento. Invoca ScegliFoglia per selezionareun nodo foglia L dove <strong>in</strong>serire E.


86 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>2. Aggiungi un elemento al nodo foglia. Se <strong>in</strong> L c’è spazio per un nuovonodo <strong>in</strong>seriscilo, <strong>in</strong> caso contrario <strong>in</strong>voca Divi<strong>di</strong>Nodo per ottenere L ed LLcontenenti E più gli elementi precedenti.3. Propaga i cambiamenti verso l’alto. Invoca AdattaAlbero su L e passaanche LL se c’è stata una <strong>di</strong>visione.4. Crescita verso l’alto. Se la propagazione delle <strong>di</strong>visioni dei no<strong>di</strong> versol’alto co<strong>in</strong>volge anche la ra<strong>di</strong>ce crea una nuova ra<strong>di</strong>ce con due figli chederivano dalla <strong>di</strong>visione <strong>di</strong> quella vecchia.L’algoritmo ScegliFoglia percorre l’albero partendo dalla ra<strong>di</strong>ce e sceglie le ramificazioniche richiedono il m<strong>in</strong>or allargamento del relativo rettangolo f<strong>in</strong>o araggiungere un nodo foglia <strong>in</strong> cui <strong>in</strong>serire il nuovo nodo:1. Inizializzazione. Assegna ad N il valore della ra<strong>di</strong>ce.2. Se N è una foglia, restituisci N.3. Scegli il sottoalbero. Se N non è una foglia assegna ad F il valore del puntatoreal nodo che memorizza il rettangolo F.ret che richiede, per <strong>in</strong>cludereE.ret, l’espansione m<strong>in</strong>ore. Nel caso <strong>di</strong> possibilità multiple scegli quella conarea m<strong>in</strong>ore.4. Discesa f<strong>in</strong>o alla foglia. Assegna ad N il valore del figlio puntato da F.P eriparti dal punto 2.L’algoritmo AdattaAlbero sale da una foglia L f<strong>in</strong>o alla ra<strong>di</strong>ce adattando se necessario,i rettangoli <strong>di</strong> raggruppamento e propagando le <strong>di</strong>visioni dei no<strong>di</strong> senecessario:1. Inizializza. Setta N=L se L era stato <strong>di</strong>viso setta NN=LL per il secondonodo.2. Controlla se fatto. Se N è la ra<strong>di</strong>ce term<strong>in</strong>a.3. Adatta i rettangoli <strong>di</strong> raggruppamento nel nodo padre. Def<strong>in</strong>iamo P ilnodo padre <strong>di</strong> N e En l’elemento nel nodo padre che contiene il riferimentoal nodo figlio. Adatta En.Reg <strong>in</strong> modo da contenere tutti i rettangoli nelnodo N.4. Propaga le <strong>di</strong>visioni verso l’alto. Se N e il compagno <strong>di</strong>viso NN esistonocrea una nuovo elemento Enn la cui regione Enn.Reg contiene tutti i rettangoli<strong>in</strong> NN e con Enn.P che punta ad NN. Aggiungi se c’è posto Enn <strong>in</strong> P, <strong>in</strong>caso contrario <strong>in</strong>voca <strong>di</strong> nuovo Divi<strong>di</strong>Nodo per produrre P e PP contenentiEnn e tutti gli altri elementi <strong>di</strong> P.


Ricerche ed aggiornamenti <strong>di</strong> R-tree. 87Quando gli algoritmi precedenti decidono <strong>di</strong> <strong>in</strong>serire un nuovo nodo e il riferimentoa quest’ultimo non trova posto nel rispettivo padre poiché tutti e K i puntatorisono impegnati è necessario eseguire la <strong>di</strong>visione del nodo tramite l’algoritmoDivi<strong>di</strong>Nodo.Questo algoritmo ri<strong>di</strong>stribuisce i K+1 no<strong>di</strong> tra il nodo pieno ed un nuovo nodo,la ri<strong>di</strong>stribuzione deve avvenire <strong>in</strong> maniera tale che sia molto improbabile il fattoche entrambi i no<strong>di</strong> vengano esam<strong>in</strong>ati nelle successive ricerche.Siccome la decisione sull’effettuare o no l’esplorazione <strong>di</strong> un nodo <strong>di</strong>pendedal fatto che il suo rettangolo sia sovrapposto a quello <strong>di</strong> ricerca allora la ri<strong>di</strong>stribuzionedei no<strong>di</strong> deve essere tale da m<strong>in</strong>imizzare l’area totale dei due rettangoliottenuti dalla <strong>di</strong>visione dei no<strong>di</strong> nei due gruppi.Presentiamo ora <strong>di</strong>verse versioni dell’algoritmo <strong>di</strong> <strong>di</strong>visione del nodo con<strong>di</strong>verse complessità computazionali:le versioni più pesanti ottimizzano meglio la <strong>di</strong>visione del nodo rispetto allepiù leggere. La prima versione, detta esaustiva, è la via più <strong>di</strong>retta per trovarela <strong>di</strong>visione del nodo <strong>di</strong> area m<strong>in</strong>ima e consiste nel generare tutti i possibiliraggruppamenti per scegliere quello <strong>di</strong> area m<strong>in</strong>ore.In questo caso il numero <strong>di</strong> possibilità è ï ð ¨approssimativamente e poichéun valore ragionevole per K è 50, allora il numero <strong>di</strong> possibili <strong>di</strong>visioni è moltoelevato.Vengono qu<strong>in</strong><strong>di</strong> implementate versioni <strong>di</strong>verse dell’algoritmo <strong>di</strong> <strong>di</strong>visione <strong>di</strong>costo rispettivamente quadratico e l<strong>in</strong>eare <strong>in</strong> K. Questo algoritmo tenta <strong>di</strong> mantenerel’area totale piccola, anche se non è detto che determ<strong>in</strong>i l’area più piccolapossibile.L’algoritmo a costo quadratico seleziona due dei (K+1) elementi che andranno<strong>in</strong>seriti uno nel primo e uno nel secondo nodo, scegliendo la coppia che se fosse<strong>in</strong>serita nello stesso gruppo consumerebbe più spazio, cioè quelli per cui l’areadel rettangolo che contiene entrambe gli elementi meno la somma delle aree deidue elementi viene massimizzata.Gli elementi rimanenti vengono assegnati ai due gruppi uno alla volta. Adogni passo l’espansione dell’area necessaria ad <strong>in</strong>serire l’elemento correntementeesam<strong>in</strong>ato viene valutata per entrambi i raggruppamenti e l’elemento viene<strong>in</strong>serito nel gruppo che richiede l’espansione m<strong>in</strong>ore.L’algoritmo Divi<strong>di</strong>Nodo con complessità quadratica è costituito dai seguentipassi:1. Selezione il primo elemento <strong>di</strong> ogni gruppo. Applica l’algoritmo SelezionaSemeper scegliere i due elementi che <strong>di</strong>ventano i primi dei duegruppi. Assegna i due elementi a ciascun gruppo.2. Controlla se fatto. Se tutti gli elementi sono stati assegnati al rispettivo


88 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>nodo term<strong>in</strong>a, altrimenti se i rimanenti servono a raggiungere la capacitàm<strong>in</strong>ima del nodo (K/2) allora assegnali tutti a lui e term<strong>in</strong>a.3. Selezione il successivo elemento. Applica l’algoritmo SelezionaSuccessivoper selezionare il successivo elemento da assegnare da aggiungerlo alnodo il cui rettangolo <strong>di</strong> raggruppamento deve essere espanso <strong>di</strong> meno percontenerlo.Se tutti e due i no<strong>di</strong> devono essere allargati della stessa quantità selezionaquello con area totale m<strong>in</strong>ore oppure quello con meno elementi. Ritorna alpunto 2.L’algoritmo SelezionaSeme seleziona due elementi che <strong>di</strong>ventano i primi elementidei due no<strong>di</strong> frutto della <strong>di</strong>visione del nodo pieno:1. Calcola l’<strong>in</strong>efficienza provocata dall’<strong>in</strong>serimento <strong>di</strong> due elementi nellostesso gruppo. Per ogni coppia <strong>di</strong> elementi E1 ed E2 crea il rettangolo Rche contiene E1.reg e E2.reg. ñ Calcola õ ÿ ù“€òôóöõ¡óÊ÷íø¤ù“€úóûõ¡óÊ÷íüþýï õ ÿ ù . óöõ¡óÊ÷íü2. Scelta della coppia migliore. Scegli la coppia con D maggiore.L’algoritmo SelezionaSuccessivo <strong>di</strong>vide i rimanti elementi nei due no<strong>di</strong>.1. Determ<strong>in</strong>a il costo provocato dall’<strong>in</strong>serimento <strong>di</strong> un elemento <strong>in</strong> un nodo.Per ogni elemento E non ancora <strong>in</strong>serito calcola D1 che rappresental’<strong>in</strong>cremento d’area del rettangolo <strong>di</strong> raggruppamento necessario per <strong>in</strong>serirel’elemento E nel primo gruppo e D2 che rappresenta l’<strong>in</strong>crementoper l’<strong>in</strong>serimento nel secondo gruppo.2. Seleziona l’elemento migliore. Seleziona l’elemento con la massima<strong>di</strong>fferenza tra D1 e D2.L’algoritmo con complessità l<strong>in</strong>eare <strong>in</strong> K è identico al precedente, ma usa unaversione <strong>di</strong>fferente per SelezionaSeme, mentre SelezioneSuccessivo sceglie unoqualunque tra gli elementi rimanti.L’algoritmo SelezionaSeme <strong>di</strong> complessità l<strong>in</strong>eare rispetto alla capacità K delnodo seleziona i primi due elementi che vengono <strong>in</strong>seriti uno nel primo e l’altronel secondo nodo.1. Trova i rettangoli estremi lungo le due <strong>di</strong>mensioni. Lungo le due <strong>di</strong>mensionitrova gli elementi che hanno il più alto lato <strong>in</strong>feriore e il più basso latosuperiore. Registra la <strong>di</strong>stanza tra i due.


Cancellazione <strong>di</strong> elementi <strong>in</strong> un R-tree. 892. Aggiusta la forma del raggruppamento rettangolare. Normalizza la <strong>di</strong>stanza<strong>di</strong>videndola per l’<strong>in</strong>tera larghezza dell’<strong>in</strong>sieme delle regioni lungo lacorrispondente <strong>di</strong>mensione.3. Seleziona la coppia estrema. Seleziona la coppia con il valore più alto <strong>di</strong><strong>di</strong>stanza normalizzata lungo le due <strong>di</strong>mensioni.5.4.2 Cancellazione <strong>di</strong> elementi <strong>in</strong> un R-tree.La cancellazione <strong>in</strong> un R-tree sarebbe semplice poiché l’elemento da cancellarerisiede <strong>in</strong> un nodo foglia, ma l’esistenza del v<strong>in</strong>colo sul contenuto m<strong>in</strong>imo <strong>di</strong> unnodo, che deve contenere almeno K/2 elementi, implica che debba essere effettuatoun ulteriore controllo sul fatto che il nodo non si svuoti al <strong>di</strong> sotto del m<strong>in</strong>imoconsentito.L’algoritmo Cancella rimuove l’elemento E dall’R-tree:1. Trova il nodo contenente il record da cancellare. Invoca la funzioneTrovaFoglia per localizzare il nodo foglia L contenente l’elemento E.Term<strong>in</strong>a se l’elemento non esiste.2. Cancella il record. Rimuovi E da L3. Propaga le mo<strong>di</strong>fiche. Invoca CondensaNo<strong>di</strong> passando il nodo foglia L.4. Albero m<strong>in</strong>imo. Se il nodo ra<strong>di</strong>ce ha un solo figlio, dopo che l’albero èstato elaborato, il figlio <strong>di</strong>venta la nuova ra<strong>di</strong>ce.Algoritmo TrovaFoglia è analolgo all’algoritmo <strong>di</strong> ricerca precedentementeillustrato.L’algoritmo CondensaNo<strong>di</strong> riceve il riferimento L del nodo foglia contenentel’elemento E appena cancellato, se il nodo <strong>in</strong> questione ha meno <strong>di</strong> K/2 elementianche quest’ultimo deve essere elim<strong>in</strong>ato e gli elementi rimanenti ri<strong>di</strong>stribuiti.La cancellazione <strong>di</strong> no<strong>di</strong> semivuoti si propaga verso l’alto, se necessario.Adatta tutti i rettangoli <strong>di</strong> raggruppamento sul camm<strong>in</strong>o dal nodo elim<strong>in</strong>ato allara<strong>di</strong>ce rendendoli i più piccoli possibili.1. Inizializzazione. Assegna N=L. Def<strong>in</strong>isci Q come un set <strong>di</strong> no<strong>di</strong> dove<strong>in</strong>serire tutti quei no<strong>di</strong> da elim<strong>in</strong>are o che devono essere vuotati.2. Trova l’elemento padre. Se N è la ra<strong>di</strong>ce salta al punto 6. In caso contrarioassegna a P il valore del nodo padre <strong>di</strong> N e a En l’elemento che punta ad N<strong>in</strong> P.


€€€90 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>3. Elim<strong>in</strong>a i no<strong>di</strong> semivuoti. Se N ha meno <strong>di</strong> K/2 no<strong>di</strong> cancella En da P eaggiungi N al set Q.4. Sistema il rettangolo <strong>di</strong> raggruppamento. Se N non viene elim<strong>in</strong>atoaggiusta En.reg per <strong>in</strong>cludere, nel m<strong>in</strong>ore spazio possibile, gli elementirimanenti <strong>in</strong> N.5. Sali <strong>di</strong> un livello nell’albero. Assegna N=P e ritorna al punto 2.6. Re<strong>in</strong>serisci gli elementi orfani. Re<strong>in</strong>serisci tutti gli elementi presenti nelset Q. Gli elementi superstiti dai no<strong>di</strong> foglia elim<strong>in</strong>ati sono re<strong>in</strong>seriti tramitel’algoritmo <strong>di</strong> <strong>in</strong>serimento già illustrato.5.4.3 Aggiornamenti ad altre operazioni.L’operazione <strong>di</strong> aggiornamento <strong>di</strong> un nodo, che implica la variazione delle <strong>di</strong>mensionidel rettangolo che def<strong>in</strong>isce la regione, necessita la cancellazione, la mo<strong>di</strong>ficae il re<strong>in</strong>serimento del nodo.Altri tipi <strong>di</strong> operazioni <strong>di</strong> ricerca come quelle che permettono <strong>di</strong> recuperaretutti gli elementi completamente <strong>in</strong>clusi nel rettangolo <strong>di</strong> ricerca oppure quelli <strong>in</strong>cui è contenuto il rettangolo <strong>di</strong> ricerca sono facilmente implementabili con piccolevariazioni degli algoritmi precedenti [?].5.4.4 Evoluzioni degli R-tree.Per ridurre i problemi legati alla possibile sovrapposizione <strong>di</strong> regioni viene <strong>in</strong>trodottauna variante degli R-tree che prende il nome <strong>di</strong> ø¡adottano il clipp<strong>in</strong>g durante l’<strong>in</strong>serimento delle regioni cioè viene elim<strong>in</strong>atala sovrapposizione dei rettangoli <strong>di</strong> raggruppamento che risiedono nello stessolivello dell’albero.Gli oggetti che <strong>in</strong>tersecano più <strong>di</strong> un <strong>in</strong>tervallo rettangolare vengonomemorizzati <strong>in</strong> più <strong>di</strong> una pag<strong>in</strong>a.Adottando questa politica, il recupero delle regioni che <strong>in</strong>tersecano l’<strong>in</strong>tervallo<strong>di</strong> ricerca viene velocizzato poiché il numero <strong>di</strong> percorsi da esplorare vienerichiede¢õîridotto. L’<strong>in</strong>serimento <strong>di</strong> nuovi elementi all’<strong>in</strong>terno <strong>di</strong> un ø¡¢õî . Gli ø¡¢õî<strong>di</strong> percorre più volte il percorso dalla ra<strong>di</strong>ce ai no<strong>di</strong> foglia <strong>in</strong> funzione del numero<strong>di</strong> <strong>in</strong>tersezioni che questa ha con i vari raggruppamenti presenti all’<strong>in</strong>ternodell’<strong>in</strong><strong>di</strong>ce.Durante l’attraversamento dell’albero la regione viene <strong>di</strong>visa <strong>in</strong> n frammentiche vengono <strong>in</strong>seriti nei vari no<strong>di</strong> foglia <strong>in</strong> funzione della loro posizione.


La¥La¥L’areaL’utilizzo¥ ¥€Evoluzioni degli R-tree. 91Per ogni frammento <strong>in</strong>serito, il relativo nodo deve essere espanso quel tantoper contenerlo e per ogni espansione bisogna evitare tutte le possibili sovrapposizione.In alcuni casi non è possibile espandere alcun rettangolo <strong>di</strong> raggruppamento,per contenere il nuovo nodo, senza causare sovrapposizioni. Si creaqu<strong>in</strong><strong>di</strong> una situazione <strong>di</strong> stallo dove alcuni raggruppamenti devono essere sciolti ei relativi elementi re<strong>in</strong>seriti.ø Negli¢õî <strong>in</strong> caso <strong>di</strong> <strong>di</strong>visione <strong>di</strong> un nodo le <strong>di</strong>visioni successive sipropagano non solo verso l’alto come negli R-tree, ma anche verso il basso epossono portare ad ulteriori frammentazioni dei raggruppamenti.Nelle cancellazioni <strong>di</strong> no<strong>di</strong> per prima cosa, bisogna localizzare tutti i framment<strong>in</strong>ei vari no<strong>di</strong> elim<strong>in</strong>arli e verificare per ogni nodo le con<strong>di</strong>zioni sulla capacitàm<strong>in</strong>ima <strong>in</strong> modo da condensare quelli che non la sod<strong>di</strong>sfano, ri<strong>di</strong>stribuendo gli¡elementi rimanenti.sono una ulteriore variante degli R-tree che rimuovono una¢õîGli ø¤£¤€Gli ø¤£›€serie <strong>di</strong> <strong>di</strong>fetti <strong>in</strong><strong>di</strong>viduati da un attento stu<strong>di</strong>o del comportamento degli R-treesotto <strong>di</strong>verse <strong>di</strong>stribuzioni <strong>di</strong> dati. In particolare, questi stu<strong>di</strong> confermano che lafase <strong>di</strong> <strong>in</strong>serimento è quella più critica sotto il profilo delle prestazioni tra tutte lepossibili operazioni.adattono una politica detta <strong>di</strong> re<strong>in</strong>serimento forzato: se un el-¢õîemento deve essere <strong>in</strong>serito <strong>in</strong> un nodo che è già pieno il nodo non viene <strong>di</strong>viso,ma si rimuovono p elementi dal nodo e si re<strong>in</strong>seriscono all’<strong>in</strong>terno dell’albero.Al parametro p <strong>in</strong> genere viene assegnato un valore pari al 30 % della capacitàK del nodo.Gli¢õî tengono <strong>in</strong> conto i seguenti obbiettivi <strong>di</strong> gestione degliø¤£<strong>in</strong>serimenti:sovrapposizione tra i <strong>di</strong>versi rettangoli <strong>di</strong> raggruppamento deve esserem<strong>in</strong>imizzata. Più bassa è la sovrapposizione m<strong>in</strong>ore è la probabilità che sidebbano seguire percorsi multipli.€lunghezza dei marg<strong>in</strong>i deve essere m<strong>in</strong>imizzata. Dove il marg<strong>in</strong>e è lasomma delle lunghezze dei bor<strong>di</strong> del rettangolo. Assumendo un area fissal’oggetto con il marg<strong>in</strong>e m<strong>in</strong>ore è il quadrato. M<strong>in</strong>imizzare il marg<strong>in</strong>e<strong>in</strong>vece dell’area implica che le regioni assumano una forma vic<strong>in</strong>a alquadrato.coperta dai no<strong>di</strong> <strong>in</strong>terni deve essere m<strong>in</strong>imizzatadell’area <strong>di</strong> immagazz<strong>in</strong>amento deve essere massimizzata.In conclusione, gli¢õî <strong>di</strong>fferiscono dagli R-tree per gli algoritmi <strong>di</strong> <strong>in</strong>serimento,mentre quelli <strong>di</strong> cancellazione e ricerca rimangono sostanzialmenteimmutati [?, ?].ø¤£€


92 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>5.5 In<strong>di</strong>ci multi<strong>di</strong>mensionali e memorizzazionedelle feature.Nelle pag<strong>in</strong>e precedenti abbiamo illustrato una serie <strong>di</strong> strutture dati <strong>in</strong> grado <strong>di</strong>agevolare la ricerca ed il recupero <strong>di</strong> dati multi<strong>di</strong>mensionali. In particolare strutturecome R-tree, R*-tree, Po<strong>in</strong>t QuadTreee, ecc sono impiegate all’<strong>in</strong>terno<strong>di</strong> molti sistemi <strong>di</strong> CBVQ per velocizzare e razionalizzare il recupero dei risultatidelle <strong>in</strong>terrogazioni.Se vogliamo implementare un <strong>in</strong><strong>di</strong>ce basato, ad esempio, su un R-tree, perogni tipologia <strong>di</strong> feature estratta dal sistema sulle immag<strong>in</strong>i memorizzate neldatabase, debbono essere sod<strong>di</strong>sfatti i seguenti v<strong>in</strong>coli:1. La “<strong>di</strong>stanza” tra due elementi memorizzati deve corrispondere alla <strong>di</strong>stanzaEuclidea dei punti appartenenti allo spazio delle feature che lirappresentano;2. La <strong>di</strong>mensionalità dello spazio delle feature deve mantenersi ragionevolmentebassa.Molti <strong>in</strong><strong>di</strong>ci multi <strong>di</strong>mensionali degenerano <strong>in</strong> maniera esponenziale al cresceredella <strong>di</strong>mensione dello spazio delle feature.In particolare per i Po<strong>in</strong>t QuadTree la complessità è proporzionale all’iperpianoche delimita la regione <strong>di</strong> query e l’iperpiano cresce esponenzialmente conl’aumentare della <strong>di</strong>mensionalità.Verifiche pratiche <strong>di</strong>mostrano che i sistemibasati sugli R-tree gestiscono senza problemi spazi f<strong>in</strong>o a 20 <strong>di</strong>mensioni.In particolare la variante ø¤£ö€¢õî impiegata <strong>in</strong> QBIC ottimizza efficacementei tempi <strong>di</strong> recupero. Ve<strong>di</strong>amo qu<strong>in</strong><strong>di</strong> le caratteristiche e le tipologie <strong>di</strong> featureestratte dalle immag<strong>in</strong>i da QBIC e le operazioni adottate per far si che le featuresod<strong>di</strong>sf<strong>in</strong>o la coppia <strong>di</strong> v<strong>in</strong>coli precedentemente def<strong>in</strong>iti. QBIC estrae tre tipi <strong>di</strong>feature:quelle sul colore, quelle sulla forma e quelle sulle tessiture. Le feature sulcolore impiegano un istogramma a K-elementi.Concettualmente K può essere molto grande se si vogliono rappresentare tuttele possibili comb<strong>in</strong>azioni <strong>di</strong> tre canali <strong>di</strong> colori.In pratica però tutti i sistemi per ridurre il valore <strong>di</strong> K raggruppano <strong>in</strong>siemei colori simili e scelgono un s<strong>in</strong>golo colore come rappresentativo dell’<strong>in</strong>teroraggruppamento.In questo modo otteniamo un istogramma con K=256 o K=64 colori rappresentativi<strong>di</strong> altrettanti gruppi. Ogni elemento dell’istogramma qu<strong>in</strong><strong>di</strong> rappresentala percentuale <strong>di</strong> pixel che sono più simili ad un dato colore.


ñ÷ ñ ñ ù#" u ù5.5 In<strong>di</strong>ci multi<strong>di</strong>mensionali e memorizzazione delle feature. 93La similitu<strong>di</strong>ne tra due istogrammi viene poi valutata attraverso la <strong>di</strong>stanzaquadratica:§u ù ò ¦¨§©÷dove la matrice A con elementi ódef<strong>in</strong>isce la similitu<strong>di</strong>ne tra i colori i e j.Come si può notare facilmente, la <strong>di</strong>stanza Euclidea è un caso particolare della<strong>di</strong>stanza quadratica con A che <strong>di</strong>venta la matrice identità.La <strong>di</strong>fferenza tra le due <strong>di</strong>stanze consiste nel fatto che la <strong>di</strong>stanza quadraticaconfronta ogni colore con tutti gli altri, mentre <strong>in</strong> quella Euclidea si considera soloquello <strong>in</strong> posizione omologa, qu<strong>in</strong><strong>di</strong> la seconda è molto più semplice da calcolaredella prima.Qu<strong>in</strong><strong>di</strong> le feature sul colore non verificano entrambi i v<strong>in</strong>coli precedentementedef<strong>in</strong>iti <strong>in</strong> particolare la <strong>di</strong>mensionalità dello spazio del colore è troppoalta (K=64,256) e la <strong>di</strong>stanza tra feature non è Euclidea.Le feature sulla forma sono composte da un <strong>in</strong>sieme <strong>di</strong> venti coefficientiche rappresentano attributi caratteristici della forma come l’area, la circolarità,l’eccentricità, l’orientazione dell’asse maggiore ed un <strong>in</strong>sieme <strong>di</strong> momenti<strong>in</strong>varianti.La <strong>di</strong>stanza tra due vettori <strong>di</strong> coefficienti viene calcolata attraverso la <strong>di</strong>stanzaEuclidea pesata, dove a ciascun elemento della matrice <strong>di</strong>agonale A è associatoun coefficiente particolare.In questo caso solamente il v<strong>in</strong>colo sulla <strong>di</strong>mensione dello spazio delle featurenon è rispettato.Le feature sulle tessiture sono una terna <strong>di</strong> attributi che rappresentano rugosità,contrasto e <strong>di</strong>rezionalità, la funzione <strong>di</strong> <strong>di</strong>stanza è la <strong>di</strong>stanza Euclidea pesata e <strong>in</strong>questo caso entrambi i v<strong>in</strong>coli sono verificati.Illustriamo una serie <strong>di</strong> soluzioni per entrambi i problemi creati dall’<strong>in</strong>troduzionedella coppia <strong>di</strong> v<strong>in</strong>coli sopracitati.L’idea pr<strong>in</strong>cipale che sta <strong>di</strong>etro ad entrambe le soluzioni consiste nell’impiegareun approccio basato sul concetto <strong>di</strong> “signature”: si tratta <strong>di</strong> creare un filtroche può <strong>in</strong>trodurre falsi positivi, ma che non <strong>in</strong>troduce falsi negativi, cioè comerisultato della query si ottengono più immag<strong>in</strong>i <strong>di</strong> quelle strettamente necessarie,ma non si perde nessuna delle immag<strong>in</strong>i realmente importanti.La soluzione a questi problemi permette <strong>di</strong> mappare le feature nello spazio € ÷ €÷ <strong>in</strong> uno spazio ottenuto attraverso la trasformazione u ù (5.5) ÷ ù dove èpossibile def<strong>in</strong>ire una ñ÷! ù <strong>di</strong>stanza che sottostima la ñ <strong>di</strong>stanza spazio ; cioè:def<strong>in</strong>ita sulloòù÷÷ ù (5.6)


ññ ¦¨§©/.10ñ325494 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Una trasformazione che verifica questa proprietà, quando si utilizza la <strong>di</strong>stanzaEuclidea, è, ad esempio, la proiezione <strong>di</strong> punti tri<strong>di</strong>mensionali sul piano xytroncando la coor<strong>di</strong>nata z.La ragione per cui si vuole che l’equazione precedente è sia verificata è l’<strong>in</strong>tenzione<strong>di</strong> garantire che una query su un <strong>in</strong>tervallo non perda nessun dei possibilirisultati.Ad esempio, la query “recupera tutti i vettori feature <strong>di</strong> con <strong>di</strong>stanza m<strong>in</strong>oreda un query% vettore <strong>di</strong> ”, restituisce tutti gli elementi ñ tali che$, <strong>in</strong>vece operando nello spazio a m<strong>in</strong>ore <strong>di</strong>mensionalità si recuperano tutti gli<strong>di</strong>$ ÷poiché è verificata la <strong>di</strong>sequazione ñ ÷% ù&"÷ si conclude che .Illustriamo due <strong>di</strong>verse forme della trasformazione.Illustriamo la prima applicandola alle feature sul colore dove si determ<strong>in</strong>a unestremo <strong>in</strong>feriore per la <strong>di</strong>stanza quadratica (Quadratic Distance Boun<strong>di</strong>ng), mentreper la seconda utilizziamo funzioni che preservano la <strong>di</strong>stanza che sfruttano latrasformata Karhunen Loeve (KL). % ù*"+$ -,Quadratic Distance Boun<strong>di</strong>ng determ<strong>in</strong>a una nuova metrica <strong>di</strong> <strong>di</strong>stanza, moltopiù semplice <strong>di</strong> quella quadratica, derivata dalla determ<strong>in</strong>azione del valore me<strong>di</strong>o<strong>di</strong> ciascun canale appartenete allo spazio <strong>di</strong> colore.KL mappa vettori ad n elementi <strong>in</strong> vettori, sempre ad n elementi con il vantaggioperò che dopo la trasformazione abbiamo la maggior parte delle “<strong>in</strong>formazioni”concentrate nei primi per cui possiamo semplicemente azzerare un certo numero<strong>di</strong> elementi a partire dalla f<strong>in</strong>e del vettore ottenendo uno spazio a <strong>di</strong>mensioneridotta.La chiave per il recupero efficiente <strong>di</strong> immag<strong>in</strong>i attraverso gli istogrammipassa <strong>in</strong>fatti attraverso la def<strong>in</strong>izione <strong>di</strong> una nuova <strong>di</strong>stanza <strong>di</strong> tipo Euclideo piùsemplice da calcolare <strong>in</strong> grado <strong>di</strong> approssimare la <strong>di</strong>stanza quadratica.attraverso tali che ñ ÷ e ù'"($Per ottenere ciò determ<strong>in</strong>iamo l’estremo <strong>in</strong>feriore ñ <strong>di</strong>multiplo della <strong>di</strong>stanza me<strong>di</strong>a cioè:¦¨§© ù)"un(5.7)Come è ovvio la <strong>di</strong>stanza me<strong>di</strong>a è molto più semplice da calcolare ed <strong>in</strong> particolareagevola l’impiego <strong>di</strong> <strong>in</strong><strong>di</strong>ci multi<strong>di</strong>mensionali.Ciò permette <strong>di</strong> utilizzare come filtro attraverso il quale ottenere unsotto<strong>in</strong>sieme rilevante <strong>di</strong> immag<strong>in</strong>i sul quale applicare ñ la selezionaresolo gli elementi veramente importanti.Infatti se vogliamo recuperare gli elementi con ññ3254quello chedobbiamo fare è selezionare i vettori per i quali è verificata la <strong>di</strong>sequazione¦¨§©6¦¨§©6"7$ tuttoper$,facendo ciò siamo sicuri <strong>di</strong> recuperare gli stessi elementi dellaprecedente più qualche falso positivo da elim<strong>in</strong>are attraverso l’applicazione della¦¨§©. ñ" 0ñ3254


=AB=9 ÷ECÊù5.5 In<strong>di</strong>ci multi<strong>di</strong>mensionali e memorizzazione delle feature. 95elab-La prestazione globale ne risulta notevolmente migliorata ñ poichéora un numero molto ridotto <strong>di</strong> elementi ed <strong>in</strong>oltre è possibile implementare un<strong>in</strong><strong>di</strong>ce <strong>di</strong> <strong>di</strong>mensioni contenute.La <strong>di</strong>stanza me<strong>di</strong>a viene def<strong>in</strong>ita su uno spazio <strong>di</strong> <strong>di</strong>mensioni molto ridotteformato solamente da tre elementi ottenuti calcolando la me<strong>di</strong>a degli elementiappartenenti ai tre canali <strong>di</strong> colore, attraverso i quali è def<strong>in</strong>ito lo spazio <strong>di</strong> colore¦8§©delle immag<strong>in</strong>i.Supponiamo <strong>di</strong> trovarci, ad esempio, nello spazio RGB dove ogni puntodell’immag<strong>in</strong>e è def<strong>in</strong>ito da una terna <strong>di</strong> numeri tipicamente compresi tra 0 e 255.Il colore me<strong>di</strong>o dell’immag<strong>in</strong>e è determ<strong>in</strong>ato dalla terna:254ù = 254= > ? > >AB=; ÷ECÊùò >@? >ø5254 òu ùŠòu ù÷u ù (5.9)Dimostriamo ora per quali valori <strong>di</strong> k la <strong>di</strong>sequazione tra ñ€ € ÷ ¦¨§G© ñF254÷risulta ñ3254everificata.Premettiamo le seguenti def<strong>in</strong>izioni:matrice <strong>di</strong> K x K elementi ,che contiene <strong>in</strong>formazioni su ognuno dei Kcolori che rappresentano l’istogramma. In particolare il generico elementoI* siottiene dalla formula:HI*“ò ù (5.10)Analogamente def<strong>in</strong>iamoH(K-1) x (K-1) attraverso la matrice W nella seguentemaniera::; Mù÷íø#:9 :; ÷íøJ:9 wStessa cosa per la matrice <strong>di</strong> similitu<strong>di</strong>neottenendo.I €MI òKI*L–€MI* I (5.11)TEOREMA 1 ñ Datipossiamo <strong>di</strong>re che:¦¨§©6ñF254,Hpositiva e semidef<strong>in</strong>itaematrice e.KP=ñON ¦¨§G© ñON254 (5.12)


òTù ù!Nw €S ó{÷ ]B=÷a ^`_PH÷Ê€TùB_¡=÷a ó{÷ €S ù!N:b ]\96 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>doveP=è il più piccolo degli autovalori dell’espressione:òQuesto risultato ci assicura, come precedentemente illustrato, <strong>di</strong> poter migliorareEQ le prestazioni nell’esecuzione delle query eseguendo un filtraggio preventivo, applicandola funzione <strong>di</strong> <strong>di</strong>stanza ñF254sui colori me<strong>di</strong>, computazionalmente pocoonerosa. Successivamente, sul sotto<strong>in</strong>sieme ridotto <strong>di</strong> immag<strong>in</strong>i <strong>in</strong> uscita dallafunzione <strong>di</strong> filtro, si applica la ñ <strong>di</strong>stanza ¦8§©,sull’istogramma completo, <strong>in</strong>modo da ottenere come risultato solamente le immag<strong>in</strong>i più “simili”.La seconda modalità <strong>di</strong> riduzione della <strong>di</strong>mensione delle feature non <strong>in</strong>troduceuna nuova def<strong>in</strong>izione <strong>di</strong> <strong>di</strong>stanza e qu<strong>in</strong><strong>di</strong> è applicabile solamente nel caso <strong>in</strong> cuila <strong>di</strong>stanza sia già <strong>di</strong> tipo Euclideo.Utilizzando la notazione per le operazioni tra matrici la <strong>di</strong>stanza può essererappresentata dalla formula:RQ (5.13)Dove e(5.14)Tùuna coppia <strong>di</strong> vettori <strong>di</strong> <strong>di</strong>mensione N con N=20che rappresentano le feature sulla forma delle regioni calcolate rispettivamentesull’immag<strong>in</strong>e da confrontare e sull’immag<strong>in</strong>e <strong>di</strong> query.Se entrambi i vettori sono trasformati attraverso una trasformazioneortonormale A, la <strong>di</strong>stanza tra i due vettori viene preservata.sonoT €S Tù÷ €S ÷Ciò può essere facilmente <strong>di</strong>mostrato dato che vale la proprietà che qu<strong>in</strong><strong>di</strong> la <strong>di</strong>stanza può essere calcolata secondo la seguente formula:òVUTù òTù ù TùŠò TMùN(5.15)Illustriamo un metodo che sottostima la <strong>di</strong>stanza tra due feature utilizzando unospazio a m<strong>in</strong>ore <strong>di</strong>mensionalità.La riduzione dello spazio è ottenuta semplicemente selezionando unsotto<strong>in</strong>sieme dell’<strong>in</strong>sieme delle feature trasformate.Se l’i-esima feature trasformata ed ói-esima riga della matrice<strong>di</strong> trasformazione A, si ottiene la riduzione <strong>di</strong>mensionale assegnando ad óó÷ €Tù ò ? € ÷€ ÷ Tù Tù÷ €W ÷ €S÷ €÷rappresentawil vettore nullo per tutte le righe con <strong>in</strong><strong>di</strong>ceXcompreso nell’<strong>in</strong>tervallo ,dove n ed m sono rispettivamente il numero <strong>di</strong> feature estratte prima e dopo lariduzione <strong>di</strong> <strong>di</strong>mensionalità.ý


Trasformazioni¥Trasformazioni¥cò]B=÷Ï€ TùN\Tù ùN]\Tù ùNed5.5 In<strong>di</strong>ci multi<strong>di</strong>mensionali e memorizzazione delle feature. 97Eseguendo un semplice arrangiamento <strong>di</strong> questa equazione possiamo vedereche l’errore <strong>in</strong>trodotto, calcolando la <strong>di</strong>stanza su un sotto<strong>in</strong>sieme delle featuretrasformate, è dato da:Da questa equazione si può concludere che la <strong>di</strong>stanza calcolata sulla troncatu-B_¡=÷:ra delle feature trasformate sottostima sempre la <strong>di</strong>stanza sulle featurepoichécorig<strong>in</strong>ali,L , qu<strong>in</strong><strong>di</strong> non si perde nessun potenziale risultato valido.Le trasformazioni possibili appartengono a due gran<strong>di</strong> famiglie:d_ ]B=÷a € €W €Só{÷òó{÷L (5.17)“data <strong>di</strong>pendenti”, come la trasformazione <strong>di</strong> Karhunen Loeve,che necessita <strong>di</strong> un campione <strong>di</strong> dati per eseguire un’<strong>analisi</strong> statisticaper la determ<strong>in</strong>azione della matrice <strong>di</strong> trasformazione A.“data <strong>in</strong><strong>di</strong>pendenti”, come le trasformazioni Coseno Discreto(DCT), Harr o Fourier, dove la matrice A è determ<strong>in</strong>ata apriori.Le trasformazioni “data <strong>di</strong>pendenti” possono essere personalizzate per unospecifico <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i così da raggiungere prestazioni migliori.Lo svantaggio è dovuto al fatto che l’<strong>in</strong>sieme delle immag<strong>in</strong>i deve esserestatico (ad esempio CD-ROM) <strong>in</strong> modo da evitare complesse riorganizzazion<strong>in</strong>ecessarie per riadattare la matrice <strong>di</strong> trasformazione A al nuovo <strong>in</strong>sieme <strong>di</strong>immag<strong>in</strong>i.Un ulteriore problema è dovuto alla scelta del campione utilizzato per la determ<strong>in</strong>azionedella matrice <strong>di</strong> trasformazione A che deve essere rappresentativodell’<strong>in</strong>tero database.Al contrario delle precedenti, le trasformazioni “data <strong>in</strong><strong>di</strong>pendenti” non presentanoproblemi <strong>di</strong> riorganizzazione al variare della popolazione del database,ma ottengono anche prestazioni peggiori. [?, ?]


98 In<strong>di</strong>ci Multi<strong>di</strong>mensionali per MM<strong>DBMS</strong>Riassunto delle capacità <strong>di</strong> <strong>in</strong><strong>di</strong>cizzazioneMotore Struttura ad <strong>in</strong><strong>di</strong>ce implementataø¤£¬€f±õî QBICsu tutte e tre le tipologie <strong>di</strong> featureestratte (colore, tessitura e forma) <strong>in</strong>siemea tecniche <strong>di</strong> riduzione <strong>di</strong>mensionale.W<strong>in</strong>dSurf Nessun tipo <strong>di</strong> <strong>in</strong><strong>di</strong>ce implementato: le featureestratte vengono memorizzate sequenzialmente.WebSeek nessuna politica <strong>di</strong> <strong>in</strong><strong>di</strong>cizzazioneVisualSEEk viene implementato un R-Tree che memorizzail rettangolo che contiene la regione (MBR) eun po<strong>in</strong>t QuadTree che memorizza le coor<strong>di</strong>natedel centro della regione.Tabella 5.5: Raffronto delle tipologie <strong>di</strong> <strong>in</strong><strong>di</strong>ci multi<strong>di</strong>mensionali implementat<strong>in</strong>ei motori commerciali analizzati.


Capitolo 6Stato dell’arte dei MM<strong>DBMS</strong>Le moderne tecnologie permettono <strong>di</strong> acquisire, manipolare, trasmettere earchiviare con facilità gran<strong>di</strong> quantità <strong>di</strong> immag<strong>in</strong>i e filmati <strong>in</strong> Database Multime<strong>di</strong>ali,tuttavia i sistemi <strong>in</strong> grado <strong>di</strong> ritrovare agevolmente queste <strong>in</strong>formazionisono ancora limitati.Gli strumenti della generazione precedente si basavano, per l’esecuzionedelle query, sulle descrizioni testuali che accompagnavano ogni immag<strong>in</strong>e e chevenivano annotate manualmente da chi le <strong>in</strong>seriva nel database.Queste descrizioni sono però sempre soggettive, quasi mai sono esaustivedel contenuto dell’immag<strong>in</strong>e e comunque, l’annotazione manuale <strong>di</strong>ventaimpensabile quando il numero <strong>di</strong> immag<strong>in</strong>i da gestire aumenta <strong>in</strong> manieraesponenziale.Se potessimo realizzare un programma <strong>in</strong> grado <strong>di</strong> estrarre, <strong>in</strong> maniera automatica,frasi semanticamente rilevanti da un’immag<strong>in</strong>e, il problema della ricercae del recupero <strong>di</strong> queste ultime potrebbe essere svolto dai classici motori <strong>di</strong> ricercatestuali.La possibilità <strong>di</strong> realizzare questi algoritmi, per un <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i senzanessuna restrizione sui soggetti contenuti, però va oltre le possibilità fornite dalleattuali conoscenze nel campo del riconoscimento delle immag<strong>in</strong>i.Il processo tramite il quale la mente umana elabora le caratteristiche fisiche <strong>di</strong>un’immag<strong>in</strong>e, identifica gli oggetti presenti <strong>in</strong> essa e associa descrizioni semantichenon si adatta alle capacità elaborative dei sistemi o<strong>di</strong>erni. Ciò che <strong>in</strong>vece siadatta molto bene alle caratteristiche dei computer o<strong>di</strong>erni è la capacità <strong>di</strong> eseguiremisure quantificabili, altamente ripetitive e <strong>di</strong> archiviarle <strong>in</strong> una memoria a lungoterm<strong>in</strong>e.


L’utilizzo¥La¥Colore¥Istogramma¥Disposizione:¥Tessitura:¥Testo:¥Def<strong>in</strong>ita¥100 Stato dell’arte dei MM<strong>DBMS</strong>6.1 QBIC.Query By Image Content (QBIC) [?] sono una serie <strong>di</strong> nuovi strumenti software,sviluppati presso i laboratori della IBM, che permettono l’espressione e l’esecuzione<strong>di</strong> query, basate sul contenuto non semantico, <strong>di</strong> una serie <strong>di</strong> immag<strong>in</strong>i efilmati memorizzati <strong>in</strong> un database.Le proprietà car<strong>di</strong>ne <strong>di</strong> QBIC che lo caratterizzano maggiormente rispetto aisistemi <strong>di</strong> precedenti generazioni sono:del contenuto non semantico delle immag<strong>in</strong>i e dei filmati, come icolori, le tessiture e le forme, per la risoluzione delle query;possibilità <strong>di</strong> esprimere, con l’ausilio <strong>di</strong> strumenti <strong>di</strong> tipo grafico, unavasta gamma <strong>di</strong> query tramite schizzi a mano libera o attraverso la selezione<strong>di</strong> parti <strong>di</strong> immag<strong>in</strong>iQBIC fornisce una serie <strong>di</strong> funzioni per l’estrazione <strong>di</strong> proprietà quantificabili(feature) e le relative misure <strong>di</strong> similitu<strong>di</strong>ne (<strong>di</strong>stance measure) tramite le qualiesegue le query def<strong>in</strong>ite dall’utente.Le feature attualmente implementate sono:me<strong>di</strong>o: viene estratto il valore me<strong>di</strong>o per le tre componenti÷íø del colore <strong>di</strong> ciascun pixel dell’immag<strong>in</strong>e e la similitu<strong>di</strong>ne vienecalcolata su questi tre valori;:93:;ùdei colori: viene calcolata la <strong>di</strong>stribuzione dei colori <strong>in</strong> unospazio a 256 valori predeterm<strong>in</strong>ati, la similitu<strong>di</strong>ne viene calcolata su questa<strong>di</strong>stribuzione;l’immag<strong>in</strong>e viene sud<strong>di</strong>visa <strong>in</strong> un set predeterm<strong>in</strong>ato <strong>di</strong> regionie per ognuna <strong>di</strong> queste viene estratto il colore dom<strong>in</strong>ante qu<strong>in</strong><strong>di</strong> lasimilitu<strong>di</strong>ne viene calcolata per ogni regione, così la misura è sensibile alla<strong>di</strong>sposizione dei colori;vengono estratte <strong>in</strong>formazioni sulle tessiture presenti nell’immag<strong>in</strong>e,la similitu<strong>di</strong>ne è determ<strong>in</strong>ata sulla base <strong>di</strong> <strong>di</strong>versi attributi come<strong>di</strong>rezionalità, rugosità e contrasto;è possibile associare manualmente a ciascuna immag<strong>in</strong>e una descrizionetestuale tramite la quale selezionare per le successive elaborazionisolo una determ<strong>in</strong>ata categoria <strong>di</strong> immag<strong>in</strong>i;dall’utente: Qualunque altra feature e metrica <strong>di</strong> confrontogenerata dall’utente


Query¥Query¥¥Multi-feature:¥Multi-pass:6.1 QBIC. 101QBIC estrae le feature che vengono memorizzate <strong>in</strong> tabelle contenute <strong>in</strong> undatabase.Può <strong>in</strong>terfacciarsi con i database relazionali più <strong>di</strong>ffusi come Oracle o Db2oppure con le utility dbm <strong>di</strong> UNIX che forniscono funzioni simili a quelle <strong>di</strong> uncomune database.In particolare <strong>in</strong> quest’ultimo caso basta creare una <strong>di</strong>rectory col nome ugualeal nome del database che si vuole aprire e porre <strong>in</strong> questa <strong>di</strong>rectory set <strong>di</strong> featurecon estensione uguale al nome del catalogo <strong>in</strong> cui vogliamo <strong>in</strong>serirle. Il processo<strong>di</strong> <strong>in</strong>terrogazione del database può essere scomposto <strong>in</strong> due fasi:la prima composta da operazioni prelim<strong>in</strong>ari che consistono nell’elaborazione<strong>di</strong> tutte le immag<strong>in</strong>i presenti nel database per l’estrazione <strong>di</strong> tutte le feature def<strong>in</strong>ite,nella creazione <strong>di</strong> una serie <strong>di</strong> <strong>in</strong><strong>di</strong>ci per ogni feature che si vuole consideraree nella generazione dei thumbernail; versioni rimpicciolite e <strong>di</strong> <strong>di</strong>mensionipredeterm<strong>in</strong>ate delle immag<strong>in</strong>i orig<strong>in</strong>arie da impiegare per la visualizzazione deirisultati della query.Questa serie <strong>di</strong> operazioni prende il nome <strong>di</strong> “database population” e deveessere eseguita ogni volta che si crea un nuovo catalogo <strong>di</strong> immag<strong>in</strong>i.Gli <strong>in</strong><strong>di</strong>ci creati <strong>in</strong> questa fase e memorizzati all’<strong>in</strong>terno del database, vengonoimpiegati nella seconda fase detta “database query” per recuperare le immag<strong>in</strong>iche rispetto ad una data metrica <strong>di</strong> similitu<strong>di</strong>ne presentano le feature più simili aquelle estratte dai campioni forniti <strong>in</strong> vari mo<strong>di</strong> dall’utente.QBIC implementa una vasta gamma <strong>di</strong> possibilità <strong>di</strong> query <strong>in</strong> particolare unaprima classificazione <strong>di</strong>st<strong>in</strong>gue tra:semplici: co<strong>in</strong>volgono un solo tipo <strong>di</strong> feature, ad esempio cercaretutte le immag<strong>in</strong>i nel database che hanno un istogramma dei colori simile aquello dell’immag<strong>in</strong>e fornita dall’utente;complesse: co<strong>in</strong>volgono più tipi <strong>di</strong> feature con pesi variabili che nedeterm<strong>in</strong>ano la relativa importanza e che vengono sud<strong>di</strong>vise <strong>in</strong> due ulterioricategorie:<strong>in</strong> cui vengono recuperate le immag<strong>in</strong>i che più sod<strong>di</strong>sfanocontemporaneamente tutte le feature specificate, ad esempio cercare tuttele immag<strong>in</strong>i che hanno una <strong>di</strong>stribuzione dei colori e una tessitura simile aquella dell’immag<strong>in</strong>e fornita dall’utente;<strong>in</strong> cui vengono specificati più feature <strong>di</strong> ricerca che sono applicate<strong>in</strong> sequenza <strong>in</strong> modo che al risultato ottenuto <strong>in</strong> base al confrontocon la prima feature venga applicato un rior<strong>di</strong>namento <strong>in</strong> funzione delle altre.Ad esempio cercare tutte le immag<strong>in</strong>i che hanno una <strong>di</strong>stribuzione dei


Ó102 Stato dell’arte dei MM<strong>DBMS</strong>«­¬F®£¯¬V®ghihejlklm.nm>m_a`>b>ced,f`†)‡¥ˆ‡‰pqrstuvtw'x'y%tz


¥“Query¥“Query¥“QueryFase 1: “Database Population”. 103colori simile e rior<strong>di</strong>nare il risultato <strong>in</strong> funzione della presenza <strong>di</strong> una datatessitura.Oltre ad implementare <strong>di</strong>verse modalità <strong>di</strong> query QBIC fornisce pure <strong>di</strong>versimeto<strong>di</strong> per specificare l’immag<strong>in</strong>e o parti <strong>di</strong> essa da utilizzare come term<strong>in</strong>i <strong>di</strong>paragone:by example”: l’utente specifica il nome <strong>di</strong> un’immag<strong>in</strong>e <strong>in</strong>terna alcatalogo che si sta esam<strong>in</strong>ando, <strong>di</strong> cui sono già <strong>di</strong>sponibili le feature, comeimmag<strong>in</strong>e <strong>di</strong> paragone con cui confrontare tutte le altre presenti nel databaseestraendo quelle più simili;by image”: l’utente specifica il nome <strong>di</strong> un’immag<strong>in</strong>e esterna, dacui non sono state ancora estratte le feature, come immag<strong>in</strong>e <strong>di</strong> paragonecon cui confrontare tutte le altre presenti nel database.Prima <strong>di</strong> eseguire la ricerca si estraggono le feature co<strong>in</strong>volte nella querydall’immag<strong>in</strong>e esterna non ancora elaborata e poi si esegue il confronto conle feature presenti nel database estraendo quelle più simili;by picker”: si dà la possibilità <strong>di</strong>retta all’utente <strong>di</strong> <strong>di</strong>segnare unaserie <strong>di</strong> regioni rettangolari con un dato colore dom<strong>in</strong>ante e <strong>di</strong> eseguire unaricerca sulla presenza, nelle immag<strong>in</strong>i catalogate, <strong>di</strong> quella <strong>di</strong>stribuzionespaziale.Non è necessario def<strong>in</strong>ire tutte le regioni presenti, ma solo quelle che consideriamopiù rilevanti, le parti non colorate sono semplicemente ignorate.La parziale limitazione, data dal poter specificare solo rettangoli, permette<strong>di</strong> co<strong>di</strong>ficare la query sotto forma <strong>di</strong> str<strong>in</strong>ga <strong>di</strong> testo contenente la <strong>di</strong>mensionedell’area <strong>di</strong> <strong>di</strong>segno e una serie <strong>di</strong> rettangoli <strong>di</strong> un dato colore concerte <strong>di</strong>mensioni contenuti all’<strong>in</strong>terno dell’area <strong>di</strong> <strong>di</strong>segno.Questa possibilità risulta molto utile <strong>in</strong> ambiente client-server dove ilclient trasmette questo semplice messaggio al server che così ricostruisceil <strong>di</strong>segno della query orig<strong>in</strong>ale estrae le feature e le compara con quellememorizzate all’<strong>in</strong>terno del suo database.6.1.1 Fase 1: “Database Population”.Gli elementi che costituiscono il dom<strong>in</strong>io dell’applicazione e che sono trattat<strong>in</strong>ella fase <strong>di</strong> popolazione consistono essenzialmente <strong>in</strong> immag<strong>in</strong>i statiche e filmati.Per le immag<strong>in</strong>i statiche <strong>in</strong> particolare si parla <strong>di</strong> scene, immag<strong>in</strong>i complete, e<strong>di</strong> oggetti che possono essere contenuti all’<strong>in</strong>terno della scena. Per ogni oggetto


¥“Flood¥“Snakes”:104 Stato dell’arte dei MM<strong>DBMS</strong>identificato vengono estratte le relative feature (feature extraction) che vengonoimmagazz<strong>in</strong>ate assieme a quelle estratte dalle scene.L’identificazione degli oggetti all’<strong>in</strong>terno della scena (object identification)avviene <strong>in</strong> maniera semi automatica cioè con l’<strong>in</strong>tervento dell’utente che si avvale<strong>di</strong> strumenti software che ne facilitano l’estrazione.Due <strong>di</strong> questi strumenti per la separazione degli oggetti dallo sfondo sono:fill”: permette <strong>di</strong> separare gli oggetti dalla scena quando questi hannouna <strong>di</strong>namica dei colori sufficientemente <strong>di</strong>versa da quella dello sfondo<strong>in</strong> modo da poter determ<strong>in</strong>are <strong>in</strong> maniera semi automatica una sogliaadeguata.Questa soglia viene determ<strong>in</strong>ata <strong>in</strong> maniera <strong>in</strong>terattiva selezionando, tramiteil puntatore del mouse, una serie <strong>di</strong> punti e specificando se questiappartengono all’oggetto o allo sfondo.permette all’utente <strong>di</strong> separare gli oggetti dallo sfondo<strong>di</strong>segnando manualmente una spezzata vic<strong>in</strong>o al contorno dell’oggettoche automaticamente viene adattata via software al contorno eseguendola massimizzazione dell’<strong>in</strong>tensità del gra<strong>di</strong>ente dell’immag<strong>in</strong>e lungo laspezzata.Per i filmati <strong>in</strong>vece l’operazione <strong>di</strong> <strong>in</strong>serimento nel database delle feature è piùcomplessa poiché queste vengono estratte solo per le immag<strong>in</strong>i statiche.I filmati qu<strong>in</strong><strong>di</strong> vengono <strong>di</strong>visi <strong>in</strong> spezzoni (shots) e per ogni spezzone vieneestratto un fotogramma rappresentativo (R–frame) dell’azione che si svolge nellospezzone.Una serie <strong>di</strong> fotogrammi cont<strong>in</strong>ui possono essere raggruppati nello stessospezzone se: riguardano la stessa scena, co<strong>in</strong>volgono una s<strong>in</strong>gola operazione dellatelecamera, contengono oggetti od eventi <strong>di</strong>st<strong>in</strong>ti e persistenti.Dopo aver determ<strong>in</strong>ato i vari spezzoni per ognuno <strong>di</strong> essi si associa un R-frameche è un’immag<strong>in</strong>e statica e viene elaborata al pari delle altre immag<strong>in</strong>i vere eproprie. La determ<strong>in</strong>azione del fotogramma rappresentativo può essere il primo,l’ultimo o quello centrale dello spezzone, oppure nel caso <strong>di</strong> lunghe panoramichedove non è possibile determ<strong>in</strong>are un R–frame rappresentativo dell’<strong>in</strong>tero spezzonesi può def<strong>in</strong>ire una fusione <strong>di</strong> più fotogrammi <strong>in</strong> un unica immag<strong>in</strong>e dove sonosovrapposti tutti gli oggetti co<strong>in</strong>volti.6.1.2 Fase 2: “Database Query”.Durante la query i criteri <strong>di</strong> ricerca immessi dall’utente con l’aiuto <strong>di</strong> un’<strong>in</strong>terfacciagrafica (query <strong>in</strong>terface) sono elaborati per estrarne le feature che vengono


Implementazione. 105comparate, tramite funzioni <strong>di</strong> similitu<strong>di</strong>ne (match eng<strong>in</strong>e), con quelle contenutenel database. Successivamente gli N risultati migliori, sotto forma <strong>di</strong> thumbernail,vengono visualizzati sullo schermo.Il metodo più semplice per def<strong>in</strong>ire i criteri <strong>di</strong> ricerca può essere quello <strong>di</strong>fornire un’immag<strong>in</strong>e <strong>di</strong> prova e recuperare quelle più simili, oppure può avvenire<strong>in</strong> maniera semplificata attraverso strumenti <strong>di</strong> tipo grafico:tramite dei cursori si specificano le <strong>in</strong>cidenze dei tre colori pr<strong>in</strong>cipali dell’immag<strong>in</strong>eper la feature del colore me<strong>di</strong>o, oppure, per quella sull’istogramma, si<strong>di</strong>segnano una serie <strong>di</strong> barre <strong>di</strong> colori <strong>di</strong>versi e con <strong>di</strong>mensioni proporzionali allepercentuali <strong>di</strong> colore che compongono il relativo istogramma.Per la tessitura è possibile selezionare tramite il mouse tra una serie <strong>di</strong> possibilicampioni. Query più complesse permettono all’utente <strong>di</strong> <strong>di</strong>segnare una serie<strong>di</strong> regioni <strong>di</strong> un dato colore <strong>in</strong> modo da legare le zone <strong>di</strong> colore alla loro posizione,oppure permettono <strong>di</strong> tracciare l<strong>in</strong>ee a mano libera per def<strong>in</strong>ire le formeed i contorni degli oggetti da ricercare.Gli utenti <strong>in</strong>teragiscono con la (query <strong>in</strong>terface) che genera un <strong>in</strong>put per la(match eng<strong>in</strong>e), questa <strong>in</strong>teragisce anche col modulo <strong>di</strong> (filter<strong>in</strong>g/<strong>in</strong>dex<strong>in</strong>g) chepermette <strong>di</strong> velocizzare le ricerche nel database.L’utilizzo <strong>di</strong> sistemi <strong>di</strong> filtraggio e <strong>di</strong> <strong>in</strong><strong>di</strong>cizzazione permette <strong>di</strong> ridurre ildeca<strong>di</strong>mento delle prestazioni quando le <strong>di</strong>mensioni del database aumentano.L’uso <strong>di</strong> funzioni veloci <strong>di</strong> filtraggio permette <strong>di</strong> effettuare una prima scrematuradei dati <strong>in</strong> modo da passare alla match eng<strong>in</strong>e, potenzialmente più lenta,solamente una parte dei dati senza per<strong>di</strong>te <strong>di</strong> accuratezza nel recupero dei risultati.6.1.3 Implementazione.QBIC gestisce tre categorie pr<strong>in</strong>cipali <strong>di</strong> feature: sul colore, sulle tessitura e sulleforme che sono state trattate <strong>in</strong> dettaglio nel capitolo 2.Le feature sul colore impiegate <strong>in</strong> QBIC sono calcolate sul valore me<strong>di</strong>o nello÷ø spazio ù e <strong>in</strong> quello ÷‘ 0’”“ ù e sull’istogramma dei colori a 256 elementiimpiegando una metrica quadratica per il calcolo della <strong>di</strong>stanza (Paragrafo 2.1).Per la tessitura si impiega una versione mo<strong>di</strong>ficata dell’algoritmo <strong>di</strong> Tamura[?] che prende <strong>in</strong> considerazione tre parametri: rugosità, contrasto e <strong>di</strong>rezionalitàche rappresentano rispettivamente scala, vivacità e presenza <strong>di</strong> una <strong>di</strong>rezionepr<strong>in</strong>cipale (Paragrafo 2.2).:93:;Per le forme si considerano i seguenti parametri: circolarità, eccentricità, orientamentodell’asse maggiore e un set <strong>di</strong> momenti algebrici <strong>in</strong>varianti (Paragrafo2.3).QBIC sfrutta anche la trasformata KL (Paragrafo 5.5) per ridurre le<strong>di</strong>mensioni delle feature ed <strong>in</strong><strong>di</strong>cizzarle tramite un R-tree (Paragrafo 5.4).


106 Stato dell’arte dei MM<strong>DBMS</strong>6.2 W<strong>in</strong>dSurf.Analizziamo ora il sistema W<strong>in</strong>dSurf (Wavelet-based INDex<strong>in</strong>g of Images Us<strong>in</strong>gRegion Fragmentation) per il recupero <strong>di</strong> immag<strong>in</strong>i basato sul contenuto [?].W<strong>in</strong>dsurf si occupa dei problemi relativi all’estrazione e all’<strong>in</strong><strong>di</strong>cizzazionedelle feature caratteristiche dell’immag<strong>in</strong>e e si occupa del recupero delle immag<strong>in</strong>iappartenenti ad un certo Database che rispondono alle richieste postedall’utente.W<strong>in</strong>dsurf impiega un nuovo modello <strong>di</strong> similitu<strong>di</strong>ne nel quale ogni immag<strong>in</strong>eè prima decomposta <strong>in</strong> regioni sulla base <strong>di</strong> <strong>in</strong>formazioni su colore e tessiturarappresentate nel dom<strong>in</strong>io delle frequenze, mentre la similitu<strong>di</strong>ne complessiva tracoppie <strong>di</strong> immag<strong>in</strong>i è raggiunta attraverso la somme <strong>di</strong> quelle delle regioni che lecompongono.Ogni regione viene rappresentata attraverso un <strong>in</strong>sieme <strong>di</strong> attributi che sono<strong>in</strong> grado <strong>di</strong> caratterizzarle <strong>in</strong> maniera univoca; tali attributi prendono il nome <strong>di</strong>feature <strong>di</strong> similarità.Le feature vengono confrontate attraverso opportune funzioni <strong>di</strong> <strong>di</strong>stanza chemisurano la similitu<strong>di</strong>ne tra le regioni a cui esse appartengono.Il sistema <strong>di</strong> organizzazione <strong>di</strong> gruppi <strong>di</strong> immag<strong>in</strong>i avviene attraverso ladef<strong>in</strong>izione delle collezioni. Ogni collezione, <strong>in</strong><strong>di</strong>viduata per mezzo <strong>di</strong> un nome,rappresenta un <strong>in</strong>sieme <strong>di</strong> percorsi (path) che possono <strong>in</strong><strong>di</strong>care <strong>di</strong>rectory su <strong>di</strong>sco,su CD-ROM, <strong>in</strong><strong>di</strong>rizzi URL o comunque immag<strong>in</strong>i memorizzate <strong>in</strong> posizioni<strong>di</strong>verse del file-system.La collezione è gestita attraverso una struttura tabellare:ogni voce della tabella contiene <strong>in</strong>formazioni relative alla collezione stessa edè <strong>in</strong> grado <strong>di</strong> caratterizzarla <strong>in</strong> modo univoco; tali <strong>in</strong>formazioni sono il nome dellacollezione, lo spazio <strong>di</strong> colore utilizzato, il tipo e il livello <strong>di</strong> trasformata Wavelete la metrica utilizzata per il cluster<strong>in</strong>g.Ad ogni voce della tabella delle collezioni è associata una tabella delle immag<strong>in</strong>i<strong>in</strong> essa contenute; ogni elemento <strong>di</strong> tale tabella <strong>in</strong><strong>di</strong>ca sia il camm<strong>in</strong>o daseguire per poter recuperare l’immag<strong>in</strong>e che la <strong>di</strong>mensione della sottobanda a bassafrequenza utilizzata durante il processo <strong>di</strong> cluster<strong>in</strong>g. Il sistema si propone <strong>di</strong>svolgere due operazioni pr<strong>in</strong>cipali.1. Estrazione delle regioni e delle relative feature: questa operazione consente<strong>di</strong> <strong>in</strong><strong>di</strong>cizzare tutte le immag<strong>in</strong>i che appartengono ad una data collezione.Aff<strong>in</strong>ché l’elaborazione possa avvenire, l’utente deve specificare il nomecon cui <strong>in</strong>tende identificare la collezione oppure la collezione che vuoleaprire, nel caso <strong>in</strong> cui questa sia già stata elaborata.Dopo l’immissione del nome con cui identificare la collezione, è possibilespecificare una serie <strong>di</strong> parametri rilevanti per l’estrazione <strong>di</strong> regioni e per il


£¢¥¤ ü§ýÂýÄþWÿ¡¥§©¨¥¤ ¦vxw¥y/zJ{%|8{zNz0y|8{>€{JzN{‚Nƒ } {‚w ~}¡~RTS£UBV¡WJVYX3SJZSB\^]B_'`a [#"%$'&)(+*-,-,/.0* !3"%$ 465'785:97@?12"!$'ˆ!‰¥Š¡‹JŒ-ŽŠY‹‹>€‹J‘N‹‚’N“¥ŠY‹‚‰¥Ž”x‘0•D–B—/‘0AAbdc:ej-jDkGjHiJfLl¥cc/nNn0cpoPc-k:q>r3g@c m6.2 W<strong>in</strong>dSurf. 107ôöõ®÷¥÷¥øùaú¥õ¦û#ú?B;DCE=>785GFH?JILK¥;;/MNMJ;©OP;-5:=>Q37@;åÔælçaè”éLê5æ)ëÄçÑìçíîçÑï¨ðWñ


108 Stato dell’arte dei MM<strong>DBMS</strong>anche all’immag<strong>in</strong>e <strong>di</strong> query.In entrambe le fasi si fa uso <strong>di</strong> un’<strong>in</strong>terfaccia grafica attraverso la quale l’utentespecifica quale delle due operazioni deve essere eseguita e quali sono i parametr<strong>in</strong>ecessari all’esecuzione dell’operazione.I risultati della query vengono presentate all’utente attraverso un’ulteriore<strong>in</strong>terfaccia grafica dove le immag<strong>in</strong>i sono visualizzate <strong>in</strong> versione m<strong>in</strong>iaturizzata.6.2.1 Estrazione delle feature.L’architettura globale <strong>di</strong> W<strong>in</strong>dsurf, che si occupa dell’estrazione delle featuredelle regioni, è composta da tre moduli. Ogni modulo esegue una serie <strong>di</strong> elaborazioniche trasformano le immag<strong>in</strong>i <strong>di</strong> <strong>in</strong>gresso <strong>in</strong> una rappresentazione f<strong>in</strong>alesotto forma <strong>di</strong> feature le quali ne co<strong>di</strong>ficano le caratteristiche peculiari.I tre moduli sono:DWT: l’immag<strong>in</strong>e d’<strong>in</strong>gresso è analizzata nel dom<strong>in</strong>io tempo/frequenza.Estrazione delle regioni: dall’immag<strong>in</strong>e trasformata vengono estratte una serie<strong>di</strong> regioni omogenee rispetto ad un dato pre<strong>di</strong>cato.Estrazione delle feature: dalle regioni così ottenute vengono calcolate ememorizzate una serie <strong>di</strong> feature caratteristiche.Al primo passo l’immag<strong>in</strong>e è elaborata attraverso la trasformata Wavelet, descrittanel Paragrafo 2.2, e il risultato <strong>di</strong> questa elaborazione restituisce i coefficienti dellatrasformata per ciascun canale <strong>di</strong> colore, oppure le energie e le cross–energy deicoefficienti della trasformata. In particolar modo le energie e le cross–energyforniscono <strong>in</strong>formazioni sia sui s<strong>in</strong>goli canali, che sulla correlazione tra coppie <strong>di</strong>canali <strong>di</strong>st<strong>in</strong>ti.La scelta <strong>di</strong> una particolare grandezza come risultato dell’applicazione dellatrasformata <strong>in</strong>fluenza la realizzazione del passo successivo <strong>di</strong> estrazione delle regioni,<strong>in</strong> particolare l’algoritmo <strong>di</strong> cluster<strong>in</strong>g K–Means (Paragrafo 4.3.1) il qualesi prefigge <strong>di</strong> m<strong>in</strong>imizzare la <strong>di</strong>stanza tra tutti i punti elaborati ed una serie <strong>di</strong> puntiche giocano il ruolo <strong>di</strong> centri delle regioni.La scelta dei valori su cui applicare la clusterizzazione <strong>in</strong>fluenza anche lascelta della funzione per la determ<strong>in</strong>azione della <strong>di</strong>stanza tra i punti delle regioni.Prima <strong>di</strong> effettuare una scelta sul tipo <strong>di</strong> coefficiente da utilizzare, è necessariodecidere quali sottobande, risultato della WT, devono essere elaborate nellaclusterizzazione.In particolare per un dato livello possiamo utilizzare: solo le alte frequenza‘ ’˜›šGœ ‘ œæ ‘ ‘ž , solo le basse frequenze oppure sia le alte che’Ÿ˜ šGœ¡œ,


ñ ÷@¨ùEstrazione delle feature. 109le basse ed anche una comb<strong>in</strong>azione più complessa <strong>di</strong> sottobande <strong>di</strong> frequenzaappartenenti a livelli <strong>di</strong> trasformazione <strong>di</strong>versi.A fronte <strong>di</strong> <strong>analisi</strong> sperimentali si è verificato che <strong>in</strong> W<strong>in</strong>dsurf i risultatimigliori sul recupero <strong>di</strong> immag<strong>in</strong>i si ottengono considerando per la clusterizzazionesolamente le basse frequenze dell’ultimo livello <strong>di</strong> trasformazione.ò£¢¤¦¥ (6.1)§Se si utilizzano le energie dei coefficienti della trasformata si lavora <strong>in</strong> uno spazioa 6 <strong>di</strong>mensioni e la <strong>di</strong>stanza che si utilizza e quella Euclidea.Come sappiamo dal capitolo sulle metriche, la <strong>di</strong>stanza Euclidea è una<strong>di</strong>stanza <strong>di</strong> tipo l<strong>in</strong>eare dove la matrice A è la matrice identità: ò÷ª© ¨Mù÷ª© ¨Mù (6.2)Se si suppone, ad esempio, <strong>di</strong> essere <strong>in</strong> un caso bi<strong>di</strong>mensionale questa formulazioneci consente <strong>di</strong> <strong>di</strong>re che i punti aventi ñ <strong>di</strong>stanzasono contenuti nel <strong>di</strong>sco <strong>di</strong> raggio ø÷@¨ù*"dal centrocentrato <strong>in</strong> ¨ed appartengono ad un unicocluster.Se utilizziamo per il cluster<strong>in</strong>g le energie, i centri ¨sono punti nello spazio6D. I dati <strong>di</strong> <strong>in</strong>put sono normalizzati prima <strong>di</strong> essere utilizzati dall’algoritmo <strong>di</strong>cluster<strong>in</strong>g.La normalizzazione viene effettuata sulla base del primo e secondo momento:¨ø«­¬ ²%³D´µ ²>6· ò¯®^°­± «N =²%³D´¹¸ºµ ðh»½¼´¹¾£¿ ²(6.3) >P· ò¯®^°­±che rappresentano la me<strong>di</strong>a e la varianza dei punti.Pertanto i dati <strong>di</strong> <strong>in</strong>put sono normalizzati utilizzando la seguente formula:ò >PÀ!Á_«L¬=ª©Â (6.4)«NNel caso <strong>di</strong> immag<strong>in</strong>i uniformi, poiché non esiste variabilità dei dati, il secondomomento è nullo ed i coefficienti normalizzati vengono posti pari a zero.Il secondo approccio utilizzato considera i soli coefficienti della trasformataWavelet, ovvero ogni punto à <strong>in</strong> <strong>in</strong>gresso all’algoritmo K–Means è def<strong>in</strong>ito nellospazio 3D come:òÄ¢¤Å¥ §(6.5)Le proprietà <strong>di</strong> correlazione fra punti <strong>in</strong> questo caso sono ottenute utilizzando nelK–Means la metrica <strong>di</strong> Mahalanobis che è sempre <strong>di</strong> tipo quadratico ed utilizza I


ÏýÊÌËàâá@¨>ãN ÛY ¤¦¥áª©òýÊÌËY¤¦¥áª© ¨Nã (6.9)110 Stato dell’arte dei MM<strong>DBMS</strong>come matrice A, l’<strong>in</strong>versa della matrice <strong>di</strong> covarianza, def<strong>in</strong>ita sui coefficient<strong>in</strong>ella quale le componenti omologhe rappresentano le energie e le component<strong>in</strong>on omologhe le correlazioni.Def<strong>in</strong>ita la me<strong>di</strong>a dei coefficienti del canale Æ , con Æ ˜žšGÇ¢ý)È, pari a:>P·§ ɧconcon la notazione:ÊÌˤÅÍnumero <strong>di</strong> punti appartenenti alla sottobanda ; <strong>in</strong><strong>di</strong>chiamo nel seguito’]B=IɹΠ(6.6)la matrice <strong>di</strong> covarianza calcolata sulla sottobanda ’ del livello Ù <strong>di</strong> trasformataWavelet i cui coefficienti sono def<strong>in</strong>iti come:§ òÑÐ¥ÆÓÒ:Ô ¤Å¥ § É+ΡՒ֘ךGœ¡œñ8œ ‘ ¤Å¥ ‘ œñ ‘ ‘žªØÌÙ" œ©Ú(6.7)>P·(6.8)ɹÎI ¤¦Í § § © Χ ɧ Yܤť Æ8ÝޘךGÇ¢ý)È § ɹÎpÛ ÆÒ:ÔL¤¦¥¤ÅÍSi ha che per Æ Û Ýl’elemento ÆÓÒ:Ô ¤Å¥ §]B=IÆÜß Û Ý ÆÒ:Ô ¤¦¥ § ɹΠper <strong>in</strong><strong>di</strong>ca la correlazione fra il canale c e d: i canali possono <strong>in</strong>fattiessere positivamente o negativamente correlati. Tale matrice è simmetrica poichéla correlazione tra c e il canale d è uguale alla correlazione tra d e c.Sulla base della precedente def<strong>in</strong>izione riformuliamo la def<strong>in</strong>izione della <strong>di</strong>stanzaquadratica adsostituendo la matrice <strong>di</strong> covarianza ottenendo la <strong>di</strong>stanza<strong>di</strong> Mahalanobis:É¹Î É rappresenta l’energia del c-esimo canale,Ïdove ¤¦¥ § æ con si <strong>in</strong><strong>di</strong>ca l’<strong>in</strong>versa della matrice <strong>di</strong> covarianza delle<strong>in</strong>formazioni utilizzate per il cluster<strong>in</strong>g.Dalla stessa def<strong>in</strong>izione della matrice <strong>di</strong> covarianza si ha che i coefficientiäsono <strong>in</strong> grado <strong>di</strong> fornire <strong>in</strong>formazioni sulla forma dei cluster; pertanto questo tipo<strong>di</strong> approccio consente <strong>di</strong> <strong>in</strong><strong>di</strong>viduare cluster con forma iperelissoidale. L’<strong>in</strong>versadella matrice fornisce la normalizzazione dei dati.ç=Si può notare come i due approcci risult<strong>in</strong>o omogenei, <strong>in</strong>fatti entrambiutilizzano <strong>in</strong>formazioni <strong>di</strong> correlazione:<strong>in</strong> un caso, <strong>in</strong>terne alle feature stesse, nell’altro <strong>in</strong><strong>di</strong>rettamente per mezzo dellamatrice <strong>di</strong> covarianza; <strong>in</strong>oltre <strong>in</strong> entrambi i casi si ha la normalizzazione esplicitaod implicita dei dati.¤¦¥ §DæHç=¨Jãåä Ï


]É®B¬ NÆÓÒ:Ô ¤Å¥ í/í É¹Î É ÛN ]É®B¬PÉEstrazione delle feature. 111Durante la clusterizzazione bisogna porre <strong>in</strong> evidenza il fatto che non sempreè possibile mettere <strong>in</strong> evidenza regioni e qu<strong>in</strong><strong>di</strong> si otterrebbero risultati nonsignificativi.In questo caso si parla <strong>di</strong> immag<strong>in</strong>i non clusterizzabili, cioè formate da ununico pattern, ossia percettivamente omogenee. Il parametro sulla base del qualesi valuta se procedere o meno con la clusterizzazione è dato dalla traccia dellamatrice <strong>di</strong> covarianza calcolata sui punti della sottobanda LL utilizzata per ilcluster<strong>in</strong>g.La traccia è calcolata come la somma degli elementi della <strong>di</strong>agonale pr<strong>in</strong>cipaleche è anche pari alla somma degli autovaloriPÉdella matrice:fBè¡éëê ìì Û(6.10)Dalla def<strong>in</strong>izione stessa della matrice <strong>di</strong> covarianza si deduce come i suoicoefficienti siano <strong>in</strong> grado <strong>di</strong> fornire <strong>in</strong>formazioni sulla variabilità dei dati.Infatti la matrice <strong>di</strong> covarianza può essere rappresentata come un iperelissoidei cui assi pr<strong>in</strong>cipali sono dati dagli autovettori <strong>di</strong> Ï ¤Å¥ í/í , mentre gli autovalori nedeterm<strong>in</strong>ano la lunghezza.Una scarsa variabilità fra i coefficienti fa pensare alla presenza <strong>di</strong> un patternomogeneo, un’alta variabilità <strong>in</strong><strong>di</strong>ca la presenza <strong>di</strong> oggetti <strong>di</strong>somogenei gli uni congli altri. Qu<strong>in</strong><strong>di</strong> se la traccia ha un valore basso l’immag<strong>in</strong>e può essere consideratacome un pattern unico e non viene sud<strong>di</strong>visa <strong>in</strong> regioni, se ha un valore alto siprocede con l’algoritmo <strong>di</strong> cluster<strong>in</strong>g.Il valore <strong>di</strong> soglia 1 con il quale è confrontata la traccia è stato ottenutostimando l’omogeneità <strong>di</strong> un <strong>in</strong>sieme <strong>di</strong> immag<strong>in</strong>i campione.Ogni regione ottenuta attraverso il K–Means deve essere identificata utilizzandoun <strong>in</strong>sieme <strong>di</strong> attributi che siano <strong>in</strong> grado <strong>di</strong> caratterizzarla <strong>in</strong> maniera univoca;tali attributi sono detti feature <strong>di</strong> similitu<strong>di</strong>ne e saranno utilizzati durante ilprocesso <strong>di</strong> ricerca per il recupero <strong>di</strong> immag<strong>in</strong>i percettivamente simili.W<strong>in</strong>dsurf utilizza come feature <strong>di</strong> similarità un <strong>in</strong>sieme <strong>di</strong> <strong>in</strong>formazioni chedef<strong>in</strong>iscono uno spazio 37D così costituito:DIMENSIONE: la <strong>di</strong>mensione rappresenta il numero <strong>di</strong> punti che compongonola regione.CENTRI: ogni regione è <strong>in</strong><strong>di</strong>viduata per mezzo del centro <strong>di</strong> gravità rappresentatodal centro del cluster; poiché l’<strong>in</strong>formazione a nostra <strong>di</strong>sposizione èsud<strong>di</strong>visa <strong>in</strong> bande <strong>di</strong> frequenza, ogni regione viene <strong>in</strong><strong>di</strong>viduata utilizzandole <strong>in</strong>formazioni <strong>di</strong> ogni sottobanda del livello utilizzato per il cluster<strong>in</strong>g.1 In W<strong>in</strong>dsurf pari a îEïð nello spazio HSV


üò e¦èò ô¦ãÛÝÝ ú© ú©á¨á0üôû ãò ãú© ú©á0üãá¥ã112 Stato dell’arte dei MM<strong>DBMS</strong>Perciò <strong>in</strong><strong>di</strong>chiamo i centri della regione Ri con la notazione:“uñhò Ûdove § ò è un punto nello spazio 3D e ogni componente <strong>di</strong> ¨centro rispetto ad ogni canale <strong>di</strong> colore. Pertanto ¨rappresenta il vettoredei centri delle quattro sottobande co<strong>in</strong>volte. (Complessivamente 12D 4bande <strong>di</strong> “#ñLò 3 canali <strong>di</strong> colore)frequenzaøí/í óô ¨íHõ óöô ¨õ6í ó÷ô ¨õTõ ó ã (6.11)§ ò è il valore delFEATURE: le feature “vere e proprie” sono i coefficienti delle matrici <strong>di</strong> covarianzacalcolate sui punti che costituiscono la regione; analogamente a quantovisto per i centri, le matrici <strong>di</strong> covarianza sono calcolate su ogni sottobanda<strong>di</strong> frequenza.Siccome la matrice <strong>di</strong> covarianza può essere vista come una matrice a blocchi,considerando solo i blocchi sulla <strong>di</strong>agonale pr<strong>in</strong>cipale che sono simmetrici,l’<strong>in</strong>sieme dei coefficienti relativi alle quattro sottobande <strong>di</strong> frequenzacostituisce un vettore 24D (4 bande <strong>di</strong> frequenzaø 6 elementi della matricesimmetrica <strong>di</strong> covarianza <strong>di</strong> <strong>di</strong>mensione 3 x 3).In<strong>di</strong>chiamo qu<strong>in</strong><strong>di</strong>ñLòcon l’<strong>in</strong>sieme delle quattro matrici <strong>di</strong> covarianza relativealla Ï regione e § ñLò per riferirsi alla matrice <strong>di</strong> una specifica sottobanda .’ Ï ù©ú6.2.2 Esecuzione delle query.La seconda attività svolta dal sistema è l’esecuzione delle query che permettono<strong>di</strong> recuperare le K immag<strong>in</strong>i più á0ü:ý simili üÿþ ad una fornita come esempio.La similitu<strong>di</strong>ne tra immag<strong>in</strong>i viene determ<strong>in</strong>ata <strong>in</strong> á¦ýbase alla similitu<strong>di</strong>ne dellerispettiveü£ã regioni, def<strong>in</strong>iamo l’immag<strong>in</strong>e <strong>di</strong> ûquery con¤regioniô¦¨§ãuna generica immag<strong>in</strong>e Ûappartenente ô¦þôad un certocatalogo con evidenziate© regioni.La similitu<strong>di</strong>ne tra due generiche regioni appartenenti a due immag<strong>in</strong>i <strong>di</strong>versedef<strong>in</strong>ita attraverso la seguente funzione:ô¡áJüú¦á0ü¢ ¢ ô¢ e¥ ¢ ¢ú©Ûòòá%àò ô¦ãEã (6.12)Il coefficienteòviene detto coefficiente <strong>di</strong> similarità <strong>in</strong> <strong>di</strong>mensione relativae prende <strong>in</strong> esame la <strong>di</strong>mensione relativa delle regioni rispetto a quella delleimmag<strong>in</strong>i a cui appartengono:á(6.13)òÛÝÝ


ààÈ è"!#$3è&%²þÕ´§àòÛ§Ý ÕÝ ú© ò ô¦ãáJü-/.áãT© òò ãÝú© ú©á0üãÕÈàýáEsecuzione delle query. 113ø ã <strong>in</strong><strong>di</strong>ca il numero <strong>di</strong> punti,cioè l’area, al livello <strong>di</strong> trasformazione con-dovesiderato per l’immag<strong>in</strong>e o la regione specificata come argomento. Tale coefficientefavorisce il match fra le regioni più gran<strong>di</strong> <strong>in</strong><strong>di</strong>viduate all’<strong>in</strong>terno delle immag<strong>in</strong>i.ÝIl coefficienteòesprime la similarità rispetto la <strong>di</strong>mensione assoluta,ú©cioèáconfronta le regioni <strong>in</strong> funzione del numero dei punti che le compongono:áJü(6.14)Il valore <strong>di</strong>òsarà perciò tanto maggiore quanto più le regioni sono formate daun numero simile <strong>di</strong> punti.L’ultima parte della formula per la determ<strong>in</strong>azione della similitu<strong>di</strong>ne tra regionidef<strong>in</strong>isce la <strong>di</strong>stanza tra le feature della regione. W<strong>in</strong>dsurf utilizza la <strong>di</strong>stanza<strong>di</strong> Bhattacharyya che viene usata per confrontare cluster <strong>di</strong> forma elissoidale:á0üãÝÏ('#Õ“)²(6.15)ã¨4ÕÏ*)² Õ ¿“'#©Ï*)²“'#©+,´¿“)² ã¨021Ï('#3çdove la notazione Õ ø Õ <strong>in</strong><strong>di</strong>ca il determ<strong>in</strong>ante della matrice <strong>in</strong> esame.Questa <strong>di</strong>stanza confronta <strong>di</strong>rettamente i vettori dei centri e le matrici <strong>di</strong>covarianza delle regioni <strong>di</strong> query e <strong>di</strong> target. La funzione migliora leprestazioni della <strong>di</strong>stanza quadratica <strong>di</strong> Mahalanobis <strong>in</strong>fatti, a meno <strong>di</strong> un fattore <strong>di</strong>scala, il secondo term<strong>in</strong>e <strong>di</strong> <strong>di</strong>st è la <strong>di</strong>stanza <strong>di</strong> Mahalanobis calcolata utilizzando“ Ïla matrice <strong>di</strong> covarianza me<strong>di</strong>a delle due regioni.Questa equazione è la somma <strong>di</strong> due componenti, la prima si basa unicamentesulle matrici <strong>di</strong> covarianza, la seconda <strong>in</strong>clude anche la <strong>di</strong>fferenza fra i centri.Questi due term<strong>in</strong>i contengono, rispettivamente, <strong>in</strong>formazioni sulla forma delleregioni e sulla posizione dei centri.ú¦Questa formulazione migliora le prestazioni della metrica <strong>di</strong> Mahalanobispoiché il primo term<strong>in</strong>e consente <strong>di</strong> non annullare il valore della <strong>di</strong>stanza perquelle regioni che hanno i centri co<strong>in</strong>cidenti.Siccome ogni regione contiene <strong>in</strong>formazioni relative alle <strong>di</strong>verse sottobande<strong>di</strong> frequenza, la metrica è <strong>in</strong> realtà meglio espressa come somma pesatacalcolata sulle <strong>di</strong>verse sottobande <strong>di</strong> frequenza.ú¦ú¦þ ÛáJü5ý:9¢Òø Ý ú¦þcon’ ˜×šGœ¡œ ô œ ‘ ô ‘ œ ô ‘ ‘ž (6.16)ÛLa prende il nome <strong>di</strong> funzione <strong>di</strong> corrispondenza che traduce le<strong>di</strong>stanze <strong>in</strong> similarità (Paragrafo 3.1) ed <strong>in</strong> questo caso è una funzione <strong>di</strong> tipoesponenziale.6§87funzioneú¦þ


üô’á%àáüÛô㦘ú¦á0ü ÛDC>EGF;IHKJý ÛÎMLMLMLNΧONšáEá0àòô¦ãEã òBRSQQüá%àÛú¦áJüüò ô¦¸ûÛ114 Stato dell’arte dei MM<strong>DBMS</strong>Il passo successivo consiste nella determ<strong>in</strong>azione della similitu<strong>di</strong>ne globale<strong>di</strong> due immag<strong>in</strong>i a partire dai valore delle similitu<strong>di</strong>ni delle rispettive regioni.W<strong>in</strong>dsurf determ<strong>in</strong>a la similitu<strong>di</strong>ne globale rispettando i seguenti criteri:1. Unaòregione non può essere simile contemporaneamente a due regioni<strong>di</strong>st<strong>in</strong>te¦ô¦;;2. Due regioni <strong>di</strong>st<strong>in</strong>te¦ò.üôü;non possono essere simili ad una stessa regionePer sod<strong>di</strong>sfare questi requisiti si def<strong>in</strong>iscono una á0ü:ýcoppia üÿþ<strong>di</strong> á¦ý funzioni.In particolare la funzione


6.3 WebSeek. 1156.3 WebSeek.Webseek è un motore <strong>di</strong> ricerca, sviluppato presso la Columbia University, chefornisce strumenti per la ricerca <strong>di</strong> immag<strong>in</strong>i e filmati sulla rete.La chiave della versatilità <strong>di</strong> questo nuovo sistema risiede pr<strong>in</strong>cipalmente nellasua doppia natura, che fonde al suo <strong>in</strong>terno sia l’elaborazione <strong>di</strong> <strong>in</strong>formazionitestuali che l’<strong>analisi</strong> dei contenuti per catalogare e recuperare sia immag<strong>in</strong>i chefilmati.Questo sistema <strong>in</strong>teragisce con la rete collezionando <strong>in</strong>formazioni multime<strong>di</strong>alitramite agenti automatici, ne estrae le feature nei dom<strong>in</strong>i testuali e visuali, lecataloga <strong>in</strong> un database e crea una serie <strong>di</strong> <strong>in</strong><strong>di</strong>ci per velocizzare ed ottimizzare lericerche secondo criteri def<strong>in</strong>iti <strong>in</strong> maniera <strong>in</strong>terattiva dall’utente.6.3.1 Popolazione del Database.La popolazione del database è condotta tramite una serie <strong>di</strong> agenti autonomi detti“spider”. Questi agenti viaggiano all’<strong>in</strong>terno della rete navigando attraverso i collegamentiipertestuali passando da un documento HTML all’altro recuperando ecatalogando all’<strong>in</strong>terno del proprio database tutti i filmati e le immag<strong>in</strong>i <strong>in</strong>contrate.Il particolare il processo sopra del<strong>in</strong>eato viene realizzato da tre agentiautonomi <strong>di</strong>versi, ognuno con compiti particolari:Spider 1: assembla liste <strong>di</strong> pag<strong>in</strong>e Web possibili can<strong>di</strong>date a contenere immag<strong>in</strong>i,filmati o collegamenti ad esse (Figura 6.3);Spider 2: estrae gli URL delle immag<strong>in</strong>i e dei filmati contenute nelle pag<strong>in</strong>e Webrecuperate dello spider 1 (Figura 6.3);Spider 3: recupera ed analizza, tramite gli URL estratti dallo spider 2, immag<strong>in</strong>ie filmati(Figura 6.4).Il processo <strong>di</strong> recupero prende il via da una serie <strong>di</strong> URL <strong>di</strong> partenza nonancora esplorati che sono passati all’<strong>in</strong>gresso dello spider 1. Questo esegue unaprima navigazione sulla rete scaricando le pag<strong>in</strong>e attraverso il protocollo HTTP epassando le pag<strong>in</strong>e recuperate <strong>in</strong> formato HTML allo spider 2.Lo spider 2 per prima cosa estrae gli URL <strong>di</strong> nuove pag<strong>in</strong>e, <strong>in</strong>contrati durantel’esplorazione, e li <strong>in</strong>serisce nella lista degli <strong>in</strong><strong>di</strong>rizzi ancora da esplorare,poi esam<strong>in</strong>ando gli URL li converte, se necessario, <strong>in</strong> <strong>in</strong><strong>di</strong>rizzi assoluti e assegnaciascun URL ad una delle seguenti categorie HTML, immag<strong>in</strong>i o filmati, <strong>in</strong> baseall’estensione co<strong>di</strong>ficata secondo lo standard MIME e li passa allo spider 3. Lospider 3 si occupa <strong>di</strong> scaricare le immag<strong>in</strong>i e filmati dalla rete utilizzando gli <strong>in</strong><strong>di</strong>rizziforniti dallo spider 2 e <strong>di</strong> memorizzarle localmente nel database. Dopo che


ywz|{~}€hz‚Gƒ uwvYvOxþïÿ¡ ÿ£¢¡¤¥¢ÿlnm[opj¢bqcfrits ^(_a`cbd:e"fhg&ikjŒ†Žp¢‘ĉ‰r…t’ „†…k‡Gĉ‰Š‹‰òó³w´–µ·~ķ¹[º¼» w¡£¢2¤¥c¦§›¨K©¥&(')+* $¥,116 Stato dell’arte dei MM<strong>DBMS</strong> ! #"¡$¥ %"½¿¾‹ÀKÁâ¾ÄÅÀ:ÆÈÇÉkʼ˂¢¾ÌÍp΢ÏÐcÑrÒtÓtÔÈÕ¢ÏÅÖÅÎ¢Ï “w”–•˜—>›šGœ‚Ÿž€ª¬«–­2®°Ȳ±²­¦¨§¡©×ÙØpÚ¡Û‹ÜKÝÞ|Û‹Úäæå:ç‚èrékê ß°àhááÚ¡Û‹Ú¢âÃã"Ü ê¡ìîíïèð‹èñåKñê ôöõ÷ øwù£úüûký|ûFigura 6.3: Architettura degli Spider 1 e 2 del motore <strong>di</strong> ricerca WebSeek.ëil contenuto visuale è stato scaricato, <strong>di</strong>verse importanti operazioni sono eseguitesu <strong>di</strong> esso:Determ<strong>in</strong>azione del contenuto semantico delle immag<strong>in</strong>e e dei filmati-tramite l’<strong>analisi</strong> <strong>di</strong> parametri testuali;per le ricerche basate sul contenuto non semantico;-Estrazione e memorizzazione delle feature visuali che verranno impiegateEstrazione e memorizzazione <strong>di</strong> altri attributi come le <strong>di</strong>mensioni per le-immag<strong>in</strong>i o il numero <strong>di</strong> fotogrammi per i filmati;Generazioni <strong>di</strong> versioni altamente m<strong>in</strong>iaturizzate degli elementi orig<strong>in</strong>ari-per una più rapida visualizzazione dei risultati delle query.Per le immag<strong>in</strong>i la m<strong>in</strong>iaturizzazione avviene spazialmente sotto campionando edapplicando formati <strong>di</strong> memorizzazione compressa dei dati come jpg o gif.Per i video <strong>in</strong>vece la m<strong>in</strong>iaturizzazione avviene sia spazialmente con lemodalità precedenti che temporalmente catturando un fotogramma ogni secondoed elim<strong>in</strong>ando eventuali duplicati tra fotogrammi a<strong>di</strong>acenti, rianimando il tutto,partendo dai fotogrammi superstiti, sotto forma <strong>di</strong> GIF animata.


Estrazioni delle feature testuali. 117ß«à%á;â}ã4á;â äÆåDæ¡ç;ã4èj‘U’8“L”N•(–¡—%˜>VW¡X4Y>Z#[LXN\(]Z#^>_`bacadXfe]g^>_f›A› œ8U‘6’}—ž%“L”|ŸcŸd” šj¡U¢8£L¤N¥(¦¡§%¨>©«ª¬¢A¢8£U¦g­¯®¾À¿ÁbÂcÂdÃ(ÄÆÅ+ÇÈÅ°}±³²µ´²µ·¸ £¹®²»º ¦£¼>§½Õ×Ö«ØÙbÚcÚdÛfÜÝgÞxÝ€jU‚8ƒL„N…(†¡‡%ˆ>‰Œd†gˆx†DŠ Ž Š1‰‹ƒFGAH4I>J%KLHNM(O¡J%P>QR1Q(SUT=J./10¥2436587924/;:=2!?¡?A@B1@C0¥0


118 Stato dell’arte dei MM<strong>DBMS</strong>I term<strong>in</strong>i significativi sono estratti tramite particolari funzioni dagli URL, daltesto del l<strong>in</strong>k o dal tag alt. Una funzione spezza la str<strong>in</strong>ga, estraendo una serie <strong>di</strong>term<strong>in</strong>i¥;, ogni volta che si <strong>in</strong>contra un carattere non alfabetico.Tutti i term<strong>in</strong>i¥;estratti vengono <strong>in</strong>seriti <strong>in</strong> una tabella associando a ciascuno<strong>di</strong> essi un contatore é;che tiene traccia del numero <strong>di</strong> occorrenze. La lista vieneor<strong>di</strong>nata <strong>in</strong> maniera crescente rispetto al contatore <strong>in</strong> modo da <strong>in</strong>contrare i term<strong>in</strong>ipiù significativi all’<strong>in</strong>izio dell’<strong>analisi</strong> che da questo punto <strong>in</strong> poi procede <strong>in</strong>maniera manuale.L’utente seleziona i term<strong>in</strong>i manualmente creando una tabella <strong>di</strong> term<strong>in</strong>i chiave;con le seguenti caratteristiche:¥jênon devono essere term<strong>in</strong>i generici, ad esempio immag<strong>in</strong>e, icona, o grafica-sono term<strong>in</strong>i non rappresentativi;non devono essere term<strong>in</strong>i che caus<strong>in</strong>o casi <strong>di</strong> omonimia <strong>in</strong> modo-chel’assegnazione delle immag<strong>in</strong>i alle classi <strong>di</strong> soggetti non crei ambiguità adesempio il term<strong>in</strong>e “rock” può <strong>in</strong><strong>di</strong>care una certa roccia oppure un cantante.valido¥ êOgni term<strong>in</strong>e;viene <strong>in</strong>serito <strong>in</strong> una tabella detta <strong>di</strong>zionario dei term<strong>in</strong>ichiave che associa ad ogni term<strong>in</strong>e chiave un soggettiëíì classe <strong>di</strong> all’<strong>in</strong>terno dellagerarchia dei soggetti.Una soggettiëíì classe <strong>di</strong> è un raggruppamento <strong>di</strong> immag<strong>in</strong>i e filmati che hannolo stesso contenuto semantico. Una tassonomia <strong>di</strong> soggetti è l’organizzazione<strong>in</strong> una gerarchia is–a <strong>di</strong> tutte le classi <strong>di</strong> soggetti.L’<strong>in</strong>sieme <strong>di</strong> soggetti che popolano il mondo viene <strong>di</strong>viso <strong>in</strong> una serie <strong>di</strong>categorie <strong>di</strong> primo livello ad esempio animali, arte, astronomia, <strong>in</strong>trattenimento,ecc Ogni volta che un nuovo term<strong>in</strong>e chiave viene <strong>in</strong>serito nel relativo<strong>di</strong>zionario, una nuova sottoclasse viene creata <strong>in</strong> maniera manuale nella tassonomiae la corrispondenza tra soggetto e term<strong>in</strong>e chiave è registrata nel <strong>di</strong>zionario.Per ogni nuova immag<strong>in</strong>e o filmato recuperato una serie <strong>di</strong> <strong>in</strong>formazioni sono<strong>in</strong>serite <strong>in</strong> un una serie <strong>di</strong> tabelle (chiavi primarie <strong>in</strong> maiuscolo):¢ ¢<strong>Immag<strong>in</strong>i</strong> (IMID, url, nome, formato, altezza,larghezza, N#fotogrammi, data, testo);Tipi (IMID,TIPO);Soggetti (IMID,SOGGETTO); Testo(IMID,TERM);Feature (IMID,istogramma);Dove TIPO, SOGGETTO e istogramma sono tipi <strong>di</strong> dato complessi def<strong>in</strong>iti come:TIPO <strong>in</strong>SOGGETTOISTOGRAMMA[foto a colori, grafica a colori, video, immag<strong>in</strong>ebianco e nero, immag<strong>in</strong>e a toni <strong>di</strong> grigio];classe <strong>di</strong> soggetti <strong>in</strong>clusa dalla tassonomia;istogramma nello spazio HSV<strong>di</strong>scretizzato a 166 valori.


Estrazione delle feature visuali. 1196.3.3 Estrazione delle feature visuali.Webseek [?, ?] fornisce strumenti per le ricerche basate sul contenuto per immag<strong>in</strong>ie filmati che permettono <strong>di</strong> estrarre gli istogrammi della <strong>di</strong>stribuzione deicolori.L’istogramma risulta essere la feature più generale possibile rendendo cosìle ricerche <strong>in</strong><strong>di</strong>pendenti dal dom<strong>in</strong>io applicativo. L’istogramma implementato <strong>in</strong>Webseek è una versione <strong>di</strong>scretizzata a 166 elementi dello spazio HSV (Paragrafo2.1).Gli istogrammi vengono calcolati e memorizzati all’<strong>in</strong>terno del database peressere recuperati e confrontati <strong>in</strong> fase <strong>di</strong> query. La funzione <strong>di</strong> <strong>di</strong>stanza, che permette<strong>di</strong> calcolare <strong>in</strong> maniera automatica la similitu<strong>di</strong>ne tra due immag<strong>in</strong>i, è laclassica <strong>di</strong>stanza quadratica normalizzata (Paragrafo 3.1).Il calcolo dell’istogramma viene anche impiegato per la determ<strong>in</strong>azione deltipo <strong>di</strong> immag<strong>in</strong>e sfruttando l’<strong>analisi</strong> <strong>di</strong>scrim<strong>in</strong>ante <strong>di</strong> Fisher.Recentemente oltre al calcolo dell’istogramma è stato <strong>in</strong>serito un collegamentoad un altro motore ricerca basato sul contenuto, VisualSEEK sviluppato semprepresso la Columbia University, <strong>in</strong> grado <strong>di</strong> estrarre feature sulla <strong>di</strong>stribuzionespaziale <strong>di</strong> zone <strong>di</strong> colore uniforme.6.3.4 Esecuzione delle Query.Per ricercare immag<strong>in</strong>i e filmati con caratteristiche particolari l’utente puòesprimere query con cui recuperare tutte le immag<strong>in</strong>i con determ<strong>in</strong>atecaratteristiche.Se la query co<strong>in</strong>volge solo campi testuali può essere espressa tramite il classicol<strong>in</strong>guaggio SQL, mentre se vengono co<strong>in</strong>volte feature visuali è necessario specificareimmag<strong>in</strong>i <strong>di</strong> riferimento o mo<strong>di</strong>ficare un istogramma, partendo da quello <strong>di</strong>un’immag<strong>in</strong>e simile aumentando o <strong>di</strong>m<strong>in</strong>uendo le occorrenze dei colori, ed applicandometriche <strong>di</strong> similitu<strong>di</strong>ne per recuperare immag<strong>in</strong>i con una <strong>di</strong>stribuzioni deicolori simile.Dopo aver ricevuto una serie <strong>di</strong> risultati come risposta ad una certa query, l’utentepuò operare delle manipolazioni aggiungendo e rimuovendo degli elementi<strong>in</strong>teragendo con i risultati <strong>di</strong> altre query.Questi meccanismi permettono <strong>di</strong> esprimere query più raff<strong>in</strong>ate <strong>in</strong> modo daestrarre solo le immag<strong>in</strong>i rilevanti per una data ricerca. In particolare è possibileeseguire operazioni sui risultati <strong>di</strong> due query totalmente <strong>in</strong><strong>di</strong>pendenti per ottenerequery complesse.Si consider<strong>in</strong>o le seguenti query:A=Query(Soggetto="natura")C=Query(term="tramonto")


120 Stato dell’arte dei MM<strong>DBMS</strong>è possibile applicare ai risultati <strong>di</strong> A e C le seguenti operazioni:Unione B = Query (Soggetto = ”natura” or term = ”tramonto”);Intersezione B = Query (Soggetto = ”natura” and term = ”tramonto”);Sottrazione B = Query (Soggetto = ”natura” and not term = ”tramonto”);Sostituzione B = A = Query (Soggetto = ”natura”);Mantenimento B = C = Query(term = ”tramonto”);L’utente può ulteriormente elaborare il risultato <strong>di</strong> B applicando un rior<strong>di</strong>namento<strong>in</strong> funzione della similitu<strong>di</strong>ne con una feature visuale, oppure decidere <strong>di</strong> esam<strong>in</strong>arel’<strong>in</strong>tero database <strong>in</strong> funzione della similitu<strong>di</strong>ne con una data feature visuale[?].I risultati delle query vengono visualizzati 15 per volta, or<strong>di</strong>nando secondo lamaggiore similitu<strong>di</strong>ne, le m<strong>in</strong>iature generate <strong>in</strong> fase <strong>di</strong> popolazione del databaseoppure <strong>in</strong> maniera semplificata visualizzando solamente i nomi dei file.Un ulteriore strumento per perfezionare i risultati delle ricerche permette all’utente<strong>di</strong> esprimere un giu<strong>di</strong>zio sulla rilevanza o non rilevanza su ogni immag<strong>in</strong>eriportata nel risultato della query, oppure può chiedere <strong>di</strong> recuperare tutte leimmag<strong>in</strong>i più simili ad una <strong>di</strong> quelle nel risultato dell’ultima query effettuata.Questo strumento prende il nome <strong>di</strong> “Relevance Feedback” e viene implementatoattraverso l’<strong>in</strong>terfaccia utente specificando per ogni immag<strong>in</strong>e rilevanza,<strong>in</strong><strong>di</strong>fferenza e non rilevanza ai f<strong>in</strong>i dei risultati della query.Il nuovo istogramma è def<strong>in</strong>ito dal precedente sommando gli istogrammidef<strong>in</strong>iti come rilevanti e sottraendo quelli def<strong>in</strong>iti come non rilevanti e trascurandoquelli def<strong>in</strong>iti <strong>in</strong><strong>di</strong>fferenti.6.4 VisualSEEK.VisualSEEK è l’implementazione <strong>di</strong> un motore <strong>di</strong> ricerca per immag<strong>in</strong>i e filmatibasato sul contenuto che fornisce all’utente una suite <strong>di</strong> strumenti grafici moltoevoluti per formulare query su vasti database multime<strong>di</strong>ali.L’utente <strong>di</strong>aloga con il server che contiene il database tramite un <strong>in</strong>terfaccia visualesul client specificando, tramite gli strumenti forniti, le caratteristiche salientidelle immag<strong>in</strong>i da ricercare. Il server ritorna le immag<strong>in</strong>i che più somigliano allacaratteristiche specificate dall’utente.Inizialmente VisualSEEK implementa le feature necessarie per recuperare leimmag<strong>in</strong>i <strong>in</strong> base al colore ed alla <strong>di</strong>stribuzione spaziale <strong>di</strong> regioni <strong>di</strong> colore.


Implementazione Software. 121L’<strong>in</strong>terfaccia fornisce pure gli strumenti per associare altre proprietà delle regioni<strong>di</strong> colore come la tessitura e il movimento, ma le ricerche su questi tipi <strong>di</strong>feature non sono ancora state implementate.Mentre gli strumenti precedenti erano implementati <strong>in</strong> HTML e avevanoun’<strong>in</strong>terfaccia con funzionalità limitate, che permetteva solamente la ricerca suun colore specificato dall’utente, VisualSEEK <strong>in</strong>vece è realizzato <strong>in</strong> Java e fornisceuna <strong>in</strong>terfaccia evoluta per esprimere query complesse su più caratteristichepeculiari delle immag<strong>in</strong>i, <strong>in</strong>oltre le prestazioni e l’accuratezza dei risultati sononotevolmente migliori dei precedenti sistemi.L’obbiettivo pr<strong>in</strong>cipale <strong>di</strong> VisualSEEK è quello <strong>di</strong> creare uno strumento per laricerca <strong>di</strong> immag<strong>in</strong>i e filmati che sia facile da utilizzare e che fornisca potenza eflessibilità nell’espressione delle query.Il sistema sfrutta per il recupero delle immag<strong>in</strong>i i dati estratti tramite algoritmi<strong>di</strong> elaborazione automatica dell’immag<strong>in</strong>e e non impiega parole chiave odescrizioni testuali immessi manualmente dell’utente.6.4.1 Implementazione Software.VisualSeek [?] implementa <strong>di</strong>versi obbiettivi su cui si è focalizzata la ricerca:estrazione automatica <strong>di</strong> regioni localizzate con le relative feature;-rappresentazione efficiente delle feature;-conservazione delle proprietà spaziali;-<strong>in</strong><strong>di</strong>cizzazione e recupero veloce <strong>di</strong> immag<strong>in</strong>i e filmati.-Le feature estratte da VisualSeek per ogni immag<strong>in</strong>e <strong>in</strong>clusa nel database localecomprendono il colore, la tessitura e la <strong>di</strong>stribuzione spaziale. Visualseekfornisce un’alternativa agli istogrammi <strong>di</strong> colore def<strong>in</strong>endo i “color set” per larappresentazione del colore <strong>di</strong> regioni all’<strong>in</strong>terno <strong>di</strong> immag<strong>in</strong>i (Paragrafo 2.1).L’istogramma dei colori è ottenuto <strong>di</strong>scretizzando lo spazio dei colori dell’immag<strong>in</strong>ee contando quanti pixel per ciascun colore sono presenti nell’immag<strong>in</strong>e.La def<strong>in</strong>izione dei “color set” implica l’applicazione <strong>di</strong> una serie <strong>di</strong> operazioniprelim<strong>in</strong>ari per mo<strong>di</strong>ficare ed ottimizzare la <strong>di</strong>namica dell’immag<strong>in</strong>e orig<strong>in</strong>aria.Il primo passo consiste <strong>in</strong> un passaggio dallo spazio RGB, dove ciascun pixel èco<strong>di</strong>ficato tramite la terna <strong>di</strong> colori rosso, verde e blu, ad un nuovo spazio def<strong>in</strong>itodalla terna HSV dove ciascun pixel è co<strong>di</strong>ficato <strong>in</strong> base a tre valori che co<strong>di</strong>ficanorispettivamente la t<strong>in</strong>ta (Hue), la lum<strong>in</strong>osità (value) e la saturazione (Saturation).Questo spazio viene impiegato per la maggiore uniformità rispetto allo spazioRGB. La trasformazione tra i due spazi è non l<strong>in</strong>eare, ma facilmente <strong>in</strong>vertibile.


;122 Stato dell’arte dei MM<strong>DBMS</strong>Il passo successivo consiste nella quantizzazione che <strong>di</strong>scretizza i valori dellospazio tri<strong>di</strong>mensionale HSV ed associa ad ogni punto nello spazio dell’immag<strong>in</strong>eun elemento all’<strong>in</strong>terno <strong>di</strong> un vettore <strong>di</strong> quantizzazione. Qu<strong>in</strong><strong>di</strong>, <strong>in</strong>crementandoil valore della corrispondente locazione all’<strong>in</strong>terno <strong>di</strong> un vettore <strong>di</strong> M elementi,l’istogramma viene determ<strong>in</strong>ato automaticamente.Dopo la quantizzazione viene def<strong>in</strong>ito uno spazio b<strong>in</strong>ario M <strong>di</strong>mensionaledove a ciascun asse corrisponde un colore, un generico vettore <strong>in</strong> questo spazioconsta <strong>di</strong> M elementi che possono assumere solo due valori 0 o 1 e def<strong>in</strong>isceun ”color set” che è una selezione <strong>di</strong> un certo numero <strong>di</strong> colori dello spazio<strong>di</strong>scretizzato.Ogni colore nel “color set” deve essere visivamente <strong>di</strong>st<strong>in</strong>guibile dagli altri-il “color set” deve <strong>in</strong>cludere tutti i colori <strong>di</strong>st<strong>in</strong>guibili.-EFG>H@IBJ K5LMONQPRTS U5VWYX@ZB[ \5](*),+-£.-£. 0)120.435) 67 /ü%ý»þÿ¡£¢La quantizzazione adottata sod<strong>di</strong>sfa le con<strong>di</strong>zioni sopracitate <strong>di</strong>videndo lo spaziodelle t<strong>in</strong>te <strong>in</strong> 18 possibili <strong>in</strong>tervalli e quelli della saturazione e della lum<strong>in</strong>osità<strong>in</strong> tre <strong>in</strong>tervalli ciascuno, questa quantizzazione permette <strong>di</strong> ottenere 18x3x3=162colori a cui devono essere aggiunte anche 4 tonalità <strong>di</strong> grigio per cui M=166.La retro proiezione (back projection) dei “color set” opera a valle delle operazioni<strong>di</strong> trasformazione e <strong>di</strong>scretizzazione dello spazio dei colori dell’immag<strong>in</strong>ee <strong>di</strong> un’operazione <strong>di</strong> filtraggio, tramite un filtro me<strong>di</strong>ano. Qu<strong>in</strong><strong>di</strong> è il primopasso per l’estrazione <strong>di</strong> regioni colore all’<strong>in</strong>terno dell’immag<strong>in</strong>e (Figura 6.5).Operazioni analoghe si compiono per la caratterizzazione delle tessiture estraenî#ïñðóò§©¨ ! 8:9¤¦¥úû ô%õ»öµ÷µø=ù"$#%'&=@?BA C5DFigura 6.5: Passi necessari all’estrazione delle feature sul colore e sulla Tessitura<strong>in</strong> VisualSEEk.do, con un proce<strong>di</strong>mento simile al precedente, i “texture set” come descritto nelParagrafo 2.2.L’estrazione delle regioni avviene iterando il meccanismo <strong>di</strong> retro proiezionecon tutti i possibili “color set” e “Texture set”, ed è stata illustrata nel Paragrafo4.3 riguardante le tipologie <strong>di</strong> algoritmi per l’estrazione <strong>di</strong> regioni.


^)gji6ý p)Y_©a` (6.20)Implementazione Software. 123Per ogni regione valida viene calcolato il rettangolo m<strong>in</strong>imo che le contiene(MBR), il centro della regione, l’area <strong>in</strong> pixel e il “color set” sotto forma <strong>di</strong> vettoria 166 elementi.Tutti questi dati vengono memorizzati <strong>in</strong> una tabella delle regioni che comechiavi contiene un identificatore dell’immag<strong>in</strong>e e un identificatore della regione,poiché più regioni possono essere estratte per ciascuna immag<strong>in</strong>e. Il passo successivoconsiste nel def<strong>in</strong>ire le strategie <strong>di</strong> query che comprendono la creazione <strong>di</strong><strong>in</strong><strong>di</strong>ci e la def<strong>in</strong>izione <strong>di</strong> funzioni <strong>di</strong> <strong>di</strong>stanza.Per le query sulle regioni <strong>di</strong> colore la prima cosa da def<strong>in</strong>ire è la similitu<strong>di</strong>ne tradue colori nello spazio HSV, che implica la def<strong>in</strong>izione <strong>di</strong> una matrice A simmetricacontenente i coefficienti <strong>di</strong> similitu<strong>di</strong>ne per ogni coppia <strong>di</strong> colori (Paragrafo3.1). La def<strong>in</strong>izione <strong>di</strong> una misura per la <strong>di</strong>stanza tra due generici “color set” èalla base del recupero <strong>di</strong> regioni aventi colore simile.Data la relativa similitu<strong>di</strong>ne tra istogrammi e “color set” viene impiegata unaversione mo<strong>di</strong>ficata della <strong>di</strong>stanza quadratica tra istogrammi <strong>di</strong> colori (Paragrafo3.2)Le operazioni <strong>di</strong> query possono essere notevolmente accelerate calcolandopreventivamente ^)e ù)Y_©a` per© bdcfe tutta la serie BôZ g h<strong>di</strong> per ogniimmag<strong>in</strong>e <strong>in</strong>serita nel database e per ogni regione estratta attraverso la retroproiezione.Viene def<strong>in</strong>ita una nuova tabella contenente questi valori avente come chiavil’identificativo dell’immag<strong>in</strong>e e della regione, <strong>in</strong><strong>di</strong>ci secondari sono creati suiparametri calcolati ^)e ù)Y_©a` per facilitare le ricerche su <strong>in</strong>tervalli, <strong>in</strong> particolarei classici alberi b<strong>in</strong>ari.L’immag<strong>in</strong>e più simile a quella def<strong>in</strong>ita nella query è quella che all’<strong>in</strong>terno alôô¢ ¢ ¢ catalogo presenta il m<strong>in</strong>imo valore della <strong>di</strong>fferenza:Per recuperare una serie <strong>di</strong> immag<strong>in</strong>i basta fissare una soglia qLì <strong>di</strong> massima<strong>di</strong>stanza e recuperare tutte le immag<strong>in</strong>i che rendono verificata la <strong>di</strong>sequazionek2l!Ym§on7qzì . ú¦tsCome si può notare dalle formule precedenti il calcolo della <strong>di</strong>stanza tra dueimmag<strong>in</strong>i può essere vista come una serie <strong>di</strong> query sugli <strong>in</strong>tervalli (range query)all’<strong>in</strong>terno degli <strong>in</strong><strong>di</strong>ci creati e qu<strong>in</strong><strong>di</strong> viene eseguita <strong>in</strong> maniera molto efficiente.Per eseguire query sulla <strong>di</strong>sposizione delle regioni <strong>di</strong> colore vengonoconsiderati i seguenti parametri:-Distanza euclidea tra i centri delle due regioni. Spesso durante una querynon <strong>in</strong>teressa l’esatta posizione spaziale, ma un certo range <strong>di</strong> posizioni chesi ottiene <strong>di</strong>segnando come MBR della query un rettangolo più grosso <strong>di</strong>


124 Stato dell’arte dei MM<strong>DBMS</strong>quello m<strong>in</strong>imo e fissando una <strong>di</strong>stanza nulla se entrambe le regioni, puravendo centri non sovrapposti, si trovano comunque all’<strong>in</strong>terno dello stessorettangolo;Differenza tra le aree delle due regioni <strong>in</strong> valore assoluto;-Estensione spaziale degli MBR. Si utilizza la stessa formula della <strong>di</strong>stanza-euclidea sostituendo alle ascisse le larghezze e alle or<strong>di</strong>nate le lunghezze.Per facilitare il recupero delle immag<strong>in</strong>i <strong>in</strong> base alla <strong>di</strong>sposizione spaziale vengonocreati degli <strong>in</strong><strong>di</strong>ci su grandezze multi<strong>di</strong>mensionali come i punti bi<strong>di</strong>mensionaliche identificano i centri delle regioni e i rettangoli che identificano gliMBR.Per i primi viene creato un <strong>in</strong><strong>di</strong>ce basato su un albero Quad-Tree per i secon<strong>di</strong>un albero R-Tree (Paragrafi 5.2 e 5.4).Qu<strong>in</strong><strong>di</strong> una query su una s<strong>in</strong>gola regione, su tutte le feature considerate, calcolala <strong>di</strong>stanza globale delle <strong>di</strong>verse immag<strong>in</strong>i eseguendo la sommatoria, secondopesi stabiliti dall’utente, delle <strong>di</strong>verse <strong>di</strong>stanze calcolate per ogni feature def<strong>in</strong>ita.Per una query su più regioni, ogni regione def<strong>in</strong>ita viene elaborata s<strong>in</strong>golarmentee il risultato f<strong>in</strong>ale viene calcolato come l’<strong>in</strong>tersezione dei risultati dellequery delle s<strong>in</strong>gole regioni.Inoltre i risultati possono essere or<strong>di</strong>nati <strong>in</strong> funzione della <strong>di</strong>sposizione relativadelle varie regioni.6.4.2 Interfaccia Utente.L’<strong>in</strong>terfaccia utente <strong>di</strong> Visualseek è sud<strong>di</strong>visa <strong>in</strong> una serie <strong>di</strong> zone ciascuna confunzioni ben <strong>di</strong>st<strong>in</strong>te [?].Lo scopo pr<strong>in</strong>cipale <strong>di</strong> questa <strong>in</strong>terfaccia è la composizione delle query visuali.Questa composizione co<strong>in</strong>volge la selezione <strong>di</strong> colori e tessitura e l’assegnamento<strong>di</strong> proprietà spaziali come la forma, la posizione, le <strong>di</strong>mensioni e il movimento.L’unità elementare <strong>di</strong> query impiegata <strong>in</strong> Visualseek prende il nome <strong>di</strong> POD(Po<strong>in</strong>t Of Denotation) che corrisponde ad una regione all’<strong>in</strong>terno dell’immag<strong>in</strong>econ qualche proprietà visuale degna <strong>di</strong> nota.Il POD non deve essere identificato con una zona della stessa forma all’<strong>in</strong>ternodell’immag<strong>in</strong>e oppure con una regione prodotta da un algoritmo <strong>di</strong> segmentazione,ma <strong>in</strong><strong>di</strong>ca solamente una zona che può possedere una serie <strong>di</strong> proprietàcome il colore, la texture o la forma.Per ogni query è possibile immettere f<strong>in</strong>o a tre POD <strong>di</strong>st<strong>in</strong>ti. In altre parole l’utentepuò <strong>in</strong><strong>di</strong>care f<strong>in</strong>o a tre regioni all’<strong>in</strong>terno dell’immag<strong>in</strong>e, con le loro proprietàvisuali, per ottenere le immag<strong>in</strong>i più simili a quelle desiderate.


Interfaccia Utente. 125I POD, con tutte le proprietà def<strong>in</strong>ite dall’utente, vengono posizionati all’<strong>in</strong>terno<strong>di</strong> una griglia bi<strong>di</strong>mensionale detta pannello <strong>di</strong> posizionamento (LayoutGrid).All’<strong>in</strong>terno del pannello <strong>di</strong> posizionamento oltre all’<strong>in</strong>serimento <strong>di</strong> nuovi POD èpossibile attivare, ri<strong>di</strong>mensionare, e riposizionare quelli già def<strong>in</strong>iti.Ogni POD è delimitato da un rettangolo; se durante la query una genericaregione all’<strong>in</strong>terno dell’immag<strong>in</strong>e cade all’<strong>in</strong>terno del rettangolo, questa e il PODsono considerate spazialmente co<strong>in</strong>cidenti.A fianco <strong>di</strong> questa griglia si trova il pannello delle proprietà (Propriety Panel)che <strong>in</strong><strong>di</strong>ca per ogni POD quali proprietà def<strong>in</strong>ite sono attivate. Il pannellopossiede una serie <strong>di</strong> pulsanti, uno per ogni proprietà, organizzati su tre colonne,una per ogni POD; se un pulsante è attivato la corrispondente proprietà è presa <strong>in</strong>considerazione nella query per il POD selezionato.Le proprietà attivabili all’<strong>in</strong>terno del pannello delle proprietà sono sette eriguardano il colore, la tessitura, la forma, il movimento, il testo, lo spazio e lavisibilità. Le prime quatto specificano se la corrispondente proprietà debba essereconsiderata nella query, mentre text 2 abilita le str<strong>in</strong>ghe <strong>di</strong> testo associate ai POD,lo spazio <strong>in</strong><strong>di</strong>ca l’attivazione del rettangolo che circonda il POD come conf<strong>in</strong>edello stesso, la visibilità <strong>in</strong>clude o esclude il POD dalla query.Sotto al pannello <strong>di</strong> posizionamento è presente la zona dei bottoni (ButtonArea) <strong>in</strong> questa zona è possibile selezionare <strong>di</strong>verse modalità <strong>di</strong> ricerca, lanciarela query e resettare tutti i parametri immessi nell’<strong>in</strong>terfaccia. In particolare sipossono specificare le strategie <strong>di</strong> recupero, per ognuno dei tre POD, sia rispettoal colore che all’estensione nello spazio.Le strategie def<strong>in</strong>ite sono “exact”, “best match” e “none”.Per la <strong>di</strong>sposizione spaziale specificando “exact” vengono recuperate tutte leimmag<strong>in</strong>i che contengono POD simili nella stessa posizione.Con ”best match” <strong>in</strong>vece viene assegnato un punteggio <strong>in</strong> funzione delle caratteristiche<strong>di</strong> ogni POD specificato nella query, il punteggio è dato dalla sommadelle funzioni <strong>di</strong>stanza per ogni POD def<strong>in</strong>ito. La funzione <strong>di</strong>stanza associa ilvalore 0 se il POD co<strong>in</strong>cide esattamente con quello dell’immag<strong>in</strong>e da recuperare,il valore 1 se il POD è solo parzialmente sovrapposto a quello dell’immag<strong>in</strong>e e<strong>di</strong>l valore 2 se il POD è <strong>di</strong>sgiunto da quello dell’immag<strong>in</strong>e. Le immag<strong>in</strong>i vengonoor<strong>di</strong>nate e visualizzate come risultato della query secondo valori crescentidel punteggio.Con “none” <strong>in</strong>vece le <strong>in</strong>formazioni sulle <strong>di</strong>sposizioni spaziali vengonosemplicemente ignorate.Per il colore “exact” recupera immag<strong>in</strong>i che contengono zone dello stessocolore dei POD def<strong>in</strong>iti dall’utente. Con “best match” vengono ritornate sia2 Al momento non ancora implementa


126 Stato dell’arte dei MM<strong>DBMS</strong>quelle ritornate con “exact” che quelle contenenti colori simili secondo le metricheclassiche sulle similitu<strong>di</strong>ni dei colori.Con “none” le <strong>in</strong>formazioni sul colore vengono semplicemente ignorate.Nella parte <strong>in</strong>feriore della schermata dell’<strong>in</strong>terfaccia utente <strong>di</strong> Visualseek sono<strong>di</strong>sponibili una serie <strong>di</strong> strumenti per specificare le proprietà dei POD:-Il primo è la pila dei colori (ColorWell): una serie <strong>di</strong> ruote colorate sovrapposteche vengono visualizzate <strong>in</strong> successione agendo su due frecce che permettono<strong>di</strong> far scorrere verso l’alto o verso il basso, rispetto alla posizionecorrente, tutta la serie <strong>di</strong> ruote dei colori.La pila dei colori è una rappresentazione <strong>di</strong>scretizzata dello spazio dei coloriHSV (Hue, Saturation, Value) e permette <strong>di</strong> def<strong>in</strong>ire il colore da associareal POD attivo nella griglia <strong>di</strong> posizionamento.-Il secondo è il selettore delle tessiture (TextureSpread) contiene riproduzioni<strong>in</strong> formato ridotto <strong>di</strong> una serie <strong>di</strong> tessiture <strong>di</strong> esempio e permette<strong>di</strong> associarne una al POD attivo semplicemente con un doppio click sullatexture selezionata.-Il terzo strumento (ShapeSketcher) permette <strong>di</strong> <strong>di</strong>segnare una formaarbitraria da associare ad uno dei tre possibili POD def<strong>in</strong>ibili.L’ultimo (MotionPad) permette <strong>di</strong> <strong>di</strong>segnare una l<strong>in</strong>ea retta che rappresenta-il movimento del POD all’<strong>in</strong>terno <strong>di</strong> un filmato.Dopo aver espresso le proprietà che i risultati devono verificare non resta che premereil pulsante che manda <strong>in</strong> esecuzione la query ed attendere la visualizzazionedei risultati sotto forma <strong>di</strong> versioni m<strong>in</strong>iaturizzate delle immag<strong>in</strong>i orig<strong>in</strong>arie.6.5 Metaseek.Quando siamo <strong>in</strong>teressati nella ricerca <strong>di</strong> immag<strong>in</strong>i o filmati con particolari caratteristichevisuali si rende necessario <strong>in</strong>terrogare un motore <strong>di</strong> ricerca basato sulcontenuto.Questi sistemi <strong>di</strong> solito forniscono meto<strong>di</strong> per recuperare immag<strong>in</strong>i <strong>di</strong>gitaliutilizzando esempi oppure schizzi manuali. Per raggiungere lo scopo desideratoquesti sistemi estraggono da ogni immag<strong>in</strong>e archiviata una serie <strong>di</strong> feature tipo:il colore, la tessitura o la forma <strong>in</strong> congiunzione con descrizioni testuali.Lo scopo <strong>di</strong> queste operazioni è co<strong>di</strong>ficare <strong>in</strong> qualche maniera il contenutovisuale dell’immag<strong>in</strong>e. Attualmente la proliferazione dei motori <strong>di</strong> ricerca ha sostituitoil problema del recupero delle immag<strong>in</strong>i con quello <strong>di</strong> scegliere il giusto


Architettura <strong>in</strong>terna. 127motore <strong>di</strong> ricerca, conoscendone pregi e <strong>di</strong>fetti, e <strong>di</strong> come impiegarlo per condurre<strong>in</strong> porto le nostre ricerche.Nasce qu<strong>in</strong><strong>di</strong> l’esigenza <strong>di</strong> <strong>in</strong>tegrare sotto una sola <strong>in</strong>terfaccia motori <strong>di</strong> ricercacon caratteristiche, funzioni e particolarità <strong>di</strong>verse.I motori <strong>di</strong> meta–ricerca sono punti <strong>di</strong> accesso che <strong>in</strong> maniera trasparente colleganol’utente a <strong>di</strong>versi motori <strong>di</strong> ricerca mettendoli <strong>in</strong> competizione tra loro alloscopo <strong>di</strong> estrarre il meglio da ognuno <strong>di</strong> essi.Metaseek [?] è un motore <strong>di</strong> meta–ricerca, cioè un sistema utilizzato per ilrecupero <strong>di</strong> immag<strong>in</strong>i e filmati, basato sull’<strong>analisi</strong> <strong>di</strong> feature visuali, che è statoprogettato per selezionare ed <strong>in</strong>terfacciare motori <strong>di</strong> ricerca con caratteristiche<strong>di</strong>verse presenti <strong>in</strong> rete.Per ogni query Metaseek seleziona ed <strong>in</strong>terroga <strong>di</strong>versi motori <strong>di</strong> ricercasoppesando i successi e gli <strong>in</strong>successi che si sono verificati <strong>in</strong> con<strong>di</strong>zioni <strong>di</strong> ricercasimili. Il sistema tiene traccia e aggiorna costantemente le prestazioni dei varisistemi <strong>in</strong>tegrando i giu<strong>di</strong>zi degli utenti riguardo i risultati ottenuti.6.5.1 Architettura <strong>in</strong>terna.La struttura <strong>in</strong>terna <strong>di</strong> Metaseek è costituita da tre parti fondamentali (Figura 6.6):Il traduttore delle query: (query translator), traduce la query immessa dall’utentenel l<strong>in</strong>guaggio standard <strong>di</strong> metaseek <strong>in</strong> una serie <strong>di</strong> script compatibilicon ogni motore <strong>di</strong> ricerca def<strong>in</strong>ito all’<strong>in</strong>terno del sistema;Il <strong>di</strong>stributore delle query (query <strong>di</strong>spatcher), seleziona tra i motori <strong>di</strong> ricercadef<strong>in</strong>iti quelli più adatti all’esecuzione della query;L’<strong>in</strong>terfaccia <strong>di</strong> visualizzazione: (<strong>di</strong>splay <strong>in</strong>terface), fonde i risultati provenientidai vari motori <strong>di</strong> ricerca, rimuovendo i duplicati e visualizza i risultati <strong>in</strong>maniera uniforme.Dopo aver ricevuto un’<strong>in</strong>terrogazione, il <strong>di</strong>stributore delle query seleziona i motori<strong>di</strong> ricerca da <strong>in</strong>terrogare consultando il database delle prestazioni (performancedatabase) che risiede localmente a Metaseek.Questo database contiene i punteggi sulle prestazioni <strong>in</strong> relazione ai successie agli <strong>in</strong>successi <strong>di</strong> query passate per ogni modalità <strong>di</strong> ricerca (search option).Poi il traduttore delle query traduce le query <strong>in</strong> adeguati script conformialle <strong>in</strong>terfacce dei vari motori <strong>di</strong> ricerca supportati ed <strong>in</strong>f<strong>in</strong>e l’<strong>in</strong>terfaccia <strong>di</strong>visualizzazione fonde, or<strong>di</strong>na e presenta i risultati all’utente.Metaseek valuta la qualità dei risultati per ogni modalità <strong>di</strong> ricerca prendendo<strong>in</strong> considerazione i giu<strong>di</strong>zi espressi dell’utente. Queste <strong>in</strong>formazioni vengonoimpiegate per mo<strong>di</strong>ficare i valori contenuti nel database delle prestazioni.


128 Stato dell’arte dei MM<strong>DBMS</strong>Il criterio fondamentale impiegato nella progettazione <strong>di</strong> Metaseek è l’efficienteimpiego delle risorse della rete, ciò implica che solo i motori che <strong>in</strong> passatohanno dato, <strong>in</strong> simili con<strong>di</strong>zioni, i risultati migliori vengono <strong>in</strong>terrogati e le immag<strong>in</strong>ivengono scaricate dai database remoti dove risiedono solo quando sonoeffettivamente necessarie.Metaseek correntemente supporta quattro motori <strong>di</strong> ricerca accessibililiberamente <strong>in</strong> rete:VisualSEEK;-Webseek;-QBIC;-Virage.-ognuno con le sue caratteristiche <strong>in</strong><strong>di</strong>viduali e con le sue limitazioni.VisualSEEK, QBIC e Virage forniscono meto<strong>di</strong> per il recupero <strong>di</strong> immag<strong>in</strong>i<strong>di</strong>gitali sulla base <strong>di</strong> feature visuali. QBIC e VisualSEEK supportano ricerche personalizzatepermettendo l’immissione <strong>di</strong> schizzi o immag<strong>in</strong>i esterne. Virage implementacirca le stesse feature <strong>di</strong> QBIC, ma <strong>in</strong> più permette <strong>di</strong> assegnare un pesoproporzionale all’importanza per ognuna delle feature def<strong>in</strong>ite. QBIC fornisce lapossibilità <strong>di</strong> recuperare le immag<strong>in</strong>i <strong>in</strong> base a parole chiave.Webseek d’altro canto è un motore <strong>di</strong> ricerca che, <strong>in</strong> maniera semi automatica,cataloga immag<strong>in</strong>i e filmati dalla rete, e supporta sia ricerche basate sul contenutofornendo, feature sul colore, che ricerche basate su campi testuali 3 .Nella versione corrente <strong>di</strong> Metaseek l’<strong>in</strong>terfaccia utente permette <strong>di</strong> visualizzareimmag<strong>in</strong>i casuali e <strong>di</strong> ricercarne <strong>di</strong> simili, esprimendo query basate sulcontenuto oppure su parole chiave, da ognuno dei database supportati.Le query vengono def<strong>in</strong>ite specificando un’immag<strong>in</strong>e d’esempio, oppure immettendoun <strong>in</strong><strong>di</strong>rizzo URL che localizza un’immag<strong>in</strong>e esterna. Dopo aver selezionatol’immag<strong>in</strong>e d’esempio le sue feature vengono estratte e confrontatecon quelle dei database esterni che Metaseek ritiene adeguati per recuperare leimmag<strong>in</strong>i più simili a quella d’esempio.Le feature calcolate sono l’istogramma dei colori e la tessitura e possono esserericercate una alla volta o <strong>in</strong>sieme. Il blocco <strong>di</strong> <strong>di</strong>stribuzione delle query è<strong>in</strong> grado <strong>di</strong> determ<strong>in</strong>are quali motori <strong>di</strong> ricerca siano o no <strong>in</strong> grado <strong>di</strong> portare aterm<strong>in</strong>e le query con le opzioni <strong>di</strong> ricerca def<strong>in</strong>ite, per cui Metaseek può mandare<strong>in</strong> esecuzione più opzioni <strong>di</strong> ricerca sullo stesso motore e su più motori solamenteattivando il rispettivo traduttore.3 In Metaseek Webseek viene <strong>in</strong>terrogato solo per le ricerche su parole chiave


Architettura <strong>in</strong>terna. 129L’utente può def<strong>in</strong>ire il numero <strong>di</strong> opzioni <strong>di</strong> ricerca che possono essere mandate<strong>in</strong> esecuzione <strong>in</strong> parallelo <strong>in</strong> modo da adattarsi alla banda <strong>di</strong>sponibile così danon sovraccaricare il collegamento. È possibile specificare un tempo massimo perl’esecuzione <strong>di</strong> ciascuna opzione <strong>di</strong> ricerca <strong>in</strong> modo da evitare situazioni <strong>di</strong> stallodel sistema nel caso che qualcuno dei motori <strong>in</strong>terrogati non sia attivo al momentodella query.È possibile specificare anche una str<strong>in</strong>ga <strong>di</strong> testo <strong>in</strong> modo da selezionare solo leimmag<strong>in</strong>i che contengono i term<strong>in</strong>i specificati su cui operare le successive <strong>analisi</strong>sul contenuto. Dopo aver def<strong>in</strong>ito <strong>in</strong> tutti i suoi aspetti la query il sistema la passaal <strong>di</strong>stributore che seleziona i motori <strong>di</strong> ricerca e le opzioni <strong>di</strong> query da <strong>in</strong>terrogareavvalendosi per la loro esecuzione del traduttore.Le decisioni vengono prese <strong>in</strong> base alle caratteristiche dei vari motori ed alleprestazioni calcolate mantenendo memoria delle query passate.Ad esempio QBIC, Virage e VisualSEEK supportano la scelta <strong>di</strong> immag<strong>in</strong>icasuali, QBIC e Webseek supportano le query con parole chiave, eccuvuvuPer le query sul contenuto la procedura per la selezione del motore <strong>di</strong> ricerca sibasa sull’<strong>analisi</strong> del database delle prestazioni. Questo database contiene i risultati<strong>di</strong> come si è comportato un generico motore <strong>di</strong> ricerca per una generica opzione<strong>di</strong> query per tutte le query passate.Un’opzione <strong>di</strong> query è una data metodologia <strong>di</strong> ricerca su un dato motore,ad esempio <strong>in</strong>terrogare VisualSEEK sulle tessitura. Un’immag<strong>in</strong>e d’esempio eun <strong>in</strong>sieme <strong>di</strong> feature def<strong>in</strong>iscono una query visuale; dopo aver ricevuto queste<strong>in</strong>formazioni Metaseek cerca nel database delle prestazioni l’immag<strong>in</strong>e d’esempiofornita e se questa esiste legge i dati sulle prestazioni passate e <strong>in</strong>via la query aimotori con i punteggi più alti.Se una data immag<strong>in</strong>e non è presente nel database delle prestazioni il sistemanon compie scelte casuali, ma si cerca <strong>di</strong> legare le query nuove a quelle passate <strong>di</strong>cui si possiedono già una serie <strong>di</strong> <strong>in</strong>formazioni.Poiché le immag<strong>in</strong>i impiegate nelle query vengono <strong>in</strong>serite nel database delleprestazioni e dato che viene applicato un raggruppamento <strong>in</strong> categorie (cluster<strong>in</strong>g)<strong>in</strong> base alla similitu<strong>di</strong>ne delle varie feature, allora Metaseek elabora l’immag<strong>in</strong>ed’esempio, non ancora presente nel Database delle prestazioni estraendone le feature,poi determ<strong>in</strong>a le categorie con caratteristiche simili e visualizza un’immag<strong>in</strong>erappresentativa <strong>di</strong> ogni categoria <strong>in</strong> modo che l’utente possa scegliere quella piùsimile da cui prelevare i punteggi sulle prestazioni.Dopo <strong>di</strong> che la nuova immag<strong>in</strong>e viene <strong>in</strong>serita nel database delle prestazionicon i dati derivati da quelli dell’immag<strong>in</strong>e rappresentativa della categoria chel’utente ha selezionato come più rilevante per i suoi scopi.L’approccio utilizzato per gestire le categorie è il K-means per le suecaratteristiche <strong>di</strong> semplicità e ridotto calcolo computazionale.


130 Stato dell’arte dei MM<strong>DBMS</strong>L’algoritmo viene eseguito ogni 10 nuove immag<strong>in</strong>i <strong>in</strong>serite nel database delleprestazioni. Per la feature sul colore viene estratto l’istogramma dei colori, per latessitura <strong>in</strong>vece viene utilizzato l’algoritmo <strong>di</strong> Tamura (Paragrafo 2.1) e la <strong>di</strong>stanzatra due generiche feature è la classica <strong>di</strong>stanza Euclidea (Paragrafo 3.1).Il database delle prestazioni che contiene i valori delle feature e i punteggisulle performance per ogni immag<strong>in</strong>e impiegata per def<strong>in</strong>ire la query è realizzato<strong>in</strong> maniera gerarchica.Al primo livello si trovano le categorie semantiche (semantic categorization)che corrispondono alle categorie selezionabili <strong>in</strong> fase <strong>di</strong> query (animali, arte,trasporti, ecc.).Al secondo livello vi sono i raggruppamenti per feature (feature group<strong>in</strong>g) checomprendono tre categorie: colore, tessitura e tessitura&colore. Al terzo livelloci sono le categorie generate dall’algoritmo K–Means (cluster<strong>in</strong>g class) che raggruppaimmag<strong>in</strong>i con valori <strong>di</strong> feature simili. All’ultimo livello ci sono i dati sulleimmag<strong>in</strong>i (image query).Per ogni immag<strong>in</strong>e viene creata una tabella che contiene i seguenti dati:L’URL dell’immag<strong>in</strong>e;-Una serie <strong>di</strong> punteggi <strong>di</strong> performance:-QBIC percentuali <strong>di</strong> coloreQBIC <strong>di</strong>sposizione dei coloriQBIC textureVisualSEEK percentuali <strong>di</strong> coloreVisualSEEK <strong>di</strong>sposizione dei coloriVisualSEEK textureVirage ColoreVirage ComposizioneVirage textureVettore delle feature sul colore (n-upla 166 numeri reali);-Vettore delle feature sulla tessitura (tripla <strong>di</strong> numeri reali).-I punteggi sono numeri <strong>in</strong>teri con segno:numeri positivi equivalgono a buone prestazioni, numeri negativi cattiveprestazioni, un valore NA <strong>in</strong><strong>di</strong>ca un’opzione <strong>di</strong> query non <strong>di</strong>sponibile per un datomotore.Il database delle prestazioni viene aggiornato <strong>di</strong>namicamente chiedendo agliutenti <strong>di</strong> esprimere le loro preferenze sui risultati ottenuti.Le varie prestazioni per un’immag<strong>in</strong>e vengono aggiornate ogni volta che l’utenteutilizza un’immag<strong>in</strong>e come esempio per una query. Se un’immag<strong>in</strong>e recuperatada un dato motore <strong>di</strong> ricerca viene visitata dall’utente sul sito dove


Architettura <strong>in</strong>terna. 131risiede il punteggio nel database delle performance per l’immag<strong>in</strong>e d’esempioviene <strong>in</strong>crementato <strong>di</strong> un’unità per il rispettivo motore.Se l’utente esprime il suo gra<strong>di</strong>mento per un’immag<strong>in</strong>e recuperata il punteggiodel motore che l’ha recuperata viene ulteriormente <strong>in</strong>crementato <strong>di</strong> un’unità, senon la gra<strong>di</strong>sce il punteggio viene decrementato <strong>di</strong> un’unità.Il problema fondamentale nella gestione del database delle prestazioni non ètanto l’aggiornamento dei dati quanto l’avviamento cioè la determ<strong>in</strong>azione deivalore <strong>in</strong>iziali da assegnare alle prestazioni nel database.Una soluzione consiste nell’eseguire un periodo <strong>di</strong> prova, prima che il sistema<strong>di</strong>venti totalmente operativo, <strong>in</strong> cui viene generato un set <strong>in</strong>iziale <strong>di</strong> valori perle prestazioni. Metaseek svolge questo periodo <strong>di</strong> avviamento con la costantepresenza dell’utente che <strong>in</strong>via una serie <strong>di</strong> immag<strong>in</strong>i d’esempio ai vari motori.L’utente seleziona 40 immag<strong>in</strong>i per ogni categoria semantica def<strong>in</strong>ita per essereusate come test <strong>di</strong> avviamento. Ogni immag<strong>in</strong>e <strong>in</strong> questi set viene posta contutte le opzioni <strong>di</strong> ricerca possibili su tutti i motori <strong>di</strong> ricerca e i relativi risultativengono scaricati per ulteriori elaborazioni.Per ogni immag<strong>in</strong>e nel risultato della query che presenta una <strong>di</strong>stanza rispettoa quella d’esempio m<strong>in</strong>ore <strong>di</strong> una data soglia viene <strong>in</strong>crementato <strong>di</strong> un’unità ilpunteggio del relativo motore <strong>di</strong> ricerca che l’ha recuperata e viene decrementatoper tutte le immag<strong>in</strong>i la cui <strong>di</strong>stanza e maggiore della soglia.La soglia viene determ<strong>in</strong>ata manualmente valutando la rilevanza dei risultatidelle query. Quando la fase <strong>di</strong> test è term<strong>in</strong>ata l’algoritmo <strong>di</strong> classificazione èapplicato alle immag<strong>in</strong>i <strong>di</strong> prova sia sul colore, che sulle tessitura, che su entrambi.Il passo f<strong>in</strong>ale nell’esecuzione della query consiste nella visualizzazione deirisultati <strong>in</strong> cui Metaseek presenta all’utente la fusione dei migliori risultati deis<strong>in</strong>goli motori elim<strong>in</strong>ando gli eventuali doppioni.La strategia <strong>di</strong> visualizzazione <strong>di</strong>pende dal tipo <strong>di</strong> query effettuata. Nel caso<strong>di</strong> query su parole chiave i risultati provenienti dai vari motori vengono semplicementemescolati, mentre nel caso <strong>di</strong> query basate sul contenuto la visualizzazionidei risultati è più complessa.Metaseek alterna i risultati delle query provenienti dai vari motori tenendoconto del peso che questi presentano all’<strong>in</strong>terno del database delle prestazioni, percui il numero <strong>di</strong> immag<strong>in</strong>i visualizzate sarà proporzionale al punteggio assegnatoal motore per quella query specifica [?].


Žy£|‘2’‘ ” • ’ ‘ •5– “$”ž£¡|2¢ ˜š›5œ|Ÿžž!¢f¡$¦$›§ £ ¡ ¤¨££¥¤—wyxz£x|{2}{ € } { €5‚ ~$ƒ¼£½|¸2¾ ·š¸¹º|»Ÿ¼¼!¾ ¸¸½$Á$¹Â ¿ ½ À¨¿¿³À£"#%$&'§(*)+,)!-.+/$'012+3(2„y…†£…|‡2ˆ‡ Š ‹ ˆ ‡ ‹5Œ ‰$Š®£¯|ª2° ©šª«¬|­Ÿ®®!° ªª¯$´$«µ ± ¯ ²¨±±³²;=?@£>ACB/D§E3


Capitolo 7L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.QBIC, oltre a fornire una serie <strong>di</strong> programmi pronti all’uso per la gestione deiDatabase <strong>di</strong> <strong>Immag<strong>in</strong>i</strong> e l’esecuzione delle <strong>in</strong>terrogazioni basate sul contenuto(CBVQ), fornisce anche una serie <strong>di</strong> strumenti <strong>di</strong> sviluppo che permettono all’utente<strong>di</strong> <strong>in</strong>tegrare le funzionalità <strong>di</strong> recupero e gestione all’<strong>in</strong>terno dei propriprogrammi.In particolare vengono, forniti una serie <strong>di</strong> strumenti a <strong>di</strong>versi gra<strong>di</strong> <strong>di</strong> complessità,sviluppati <strong>in</strong> l<strong>in</strong>guaggio C++ [?], che permettono all’utente <strong>di</strong> utilizzaregli oggetti e le classi all’<strong>in</strong>terno dei propri programmi.Utilizzando un approccio TOP-DOWN, al livello <strong>di</strong> maggiore complessità,si localizzano i programmi eseguibili a l<strong>in</strong>ea <strong>di</strong> comando <strong>in</strong> ambiente MsDosQbMkDbs, QbQBE, QbMkThumb, QbDumpDb che implementano le operazionipiù complesse come la creazione dei cataloghi e le <strong>in</strong>terrogazioni. Questiprogrammi vengono utilizzati assieme ad un Browser Internet, ad alcune appletJava, ed al l<strong>in</strong>guaggio HTML per realizzare la Demo, fornita da IBM, che illustrale potenzialità <strong>di</strong> QBIC.Ad un più basso livello <strong>in</strong>vece, vengono fornite le librerie <strong>di</strong> classe C++ chedef<strong>in</strong>iscono la struttura degli oggetti ed il loro comportamento e che possonoessere facilmente <strong>in</strong>tegrate nei programmi sviluppati degli utenti.A livello <strong>di</strong> librerie <strong>di</strong> classe possiamo <strong>di</strong>st<strong>in</strong>guere: la classe QbicWrap-Class che fornisce una serie <strong>di</strong> meto<strong>di</strong> che comb<strong>in</strong>ano sotto<strong>in</strong>siemi <strong>di</strong> classi <strong>di</strong>basso livello per compiere una serie <strong>di</strong> operazioni complesse, ma più frequentied una gerarchia <strong>di</strong> classi <strong>di</strong> basso livello per eseguire compiti particolari epersonalizzazioni.I programmi qu<strong>in</strong><strong>di</strong> conterranno per le operazioni <strong>di</strong> rout<strong>in</strong>e semplici chiamateai meto<strong>di</strong> della classe QbicWrapClass, mentre per le operazioni particolari especifiche del programma comb<strong>in</strong>azioni più complesse dei meto<strong>di</strong> <strong>di</strong> basso livello.


134 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.7.1 I programmi eseguibili a l<strong>in</strong>ea <strong>di</strong> comando.QBIC fornisce un <strong>in</strong>sieme <strong>di</strong> programmi che realizzano le funzionalità <strong>di</strong>creazione dei cataloghi, <strong>in</strong>terrogazione della base <strong>di</strong> dati, generazione delle m<strong>in</strong>iaturedelle immag<strong>in</strong>i e visualizzazione delle feature utilizzando per il passaggio deiparametri un’<strong>in</strong>terfaccia a l<strong>in</strong>ea <strong>di</strong> comando.I programmi forniti sono i seguenti:QbMkDbs per la creazione dei cataloghi;QbQBE per l’<strong>in</strong>terrogazione dei cataloghi <strong>di</strong> QBIC;QbMkThumb per la generazione delle m<strong>in</strong>iature delle immag<strong>in</strong>i orig<strong>in</strong>ali;QbDumpDb per la visualizzazione del contenuto delle feature che popolano ilcatalogo.Tutti questi programmi utilizzano il <strong>DBMS</strong> dbm <strong>di</strong> UNIX che fissa le seguenticonvenzioni:1. Connettere il Database significa creare una <strong>di</strong>rectory con lo stesso nome delDatabase;2. Creare un catalogo consiste nel generare un gruppo <strong>di</strong> file nella <strong>di</strong>rectorydel punto 1. con l’estensione uguale al nome del catalogo.Tutti i programmi si aspettano sempre una serie <strong>di</strong> parametri <strong>di</strong> <strong>in</strong>gresso, se quest<strong>in</strong>on sono presenti oppure sono errati viene visualizzato un riepilogo della s<strong>in</strong>tassidei coman<strong>di</strong> così da poter determ<strong>in</strong>are quella più corretta allo scopo prefissato.Illustriamo i parametri pr<strong>in</strong>cipali utilizzati dai vari programmi rimandandoal riepilogo <strong>in</strong> l<strong>in</strong>ea per maggiori dettagli.QbMkDbs oltre a creare un catalogo, operazione che consiste nel calcolare lefeature che descrivono il contenuto delle immag<strong>in</strong>i ed aggiungerle alle rispettivetabelle, fornisce funzioni per l’aggiornamento, l’<strong>in</strong>serimento e la cancellazione <strong>di</strong>ulteriori immag<strong>in</strong>i nel Database. I parametri <strong>di</strong>sponibili sono:


7.1 I programmi eseguibili a l<strong>in</strong>ea <strong>di</strong> comando. 135-d [Nome del Database] nome del Db che contiene il catalogo all’<strong>in</strong>ternodel quale <strong>in</strong>serire le feature delle immag<strong>in</strong>i.-c [Nome del Catalogo] nome del catalogo all’<strong>in</strong>terno del quale <strong>in</strong>serirele feature delle immag<strong>in</strong>i.-f [Nome della feature] nome della feature da estrarre e da <strong>in</strong>serire nelcatalogo, possono essere più <strong>di</strong> una.-i, -u, -Udef<strong>in</strong>iscono la modalità <strong>di</strong> aggiornamento deidati precedentemente <strong>in</strong>serti (-i=Incrementaleaggiunge le feature mancanti ad un dato oggetto,-u aggiorna tutte le feature anche quelle esistenti,-U aggiorna tutte le feature anche se idati non esistono).-l[Nome File]permette <strong>di</strong> specificare un file contenete unalista <strong>di</strong> immag<strong>in</strong>i da elaborare (una per riga).QbQBE viene impiegato per <strong>in</strong>terrogare il Database <strong>di</strong> QBIC e per ottenere altre<strong>in</strong>formazioni sul suo comportamento. Può essere utilizzato per <strong>in</strong>terrogare ildatabase e recuperare le immag<strong>in</strong>i più simili ad una contenuta esternamente o<strong>di</strong>nternamente al Db ed identificata dal nome del file o dalla chiave rispettivamente.Oltre a queste <strong>in</strong>formazioni permette <strong>di</strong> visualizzare le feature <strong>di</strong>sponibili nellaversione corrente del programma e nel catalogo aperto. I parametri pr<strong>in</strong>cipalisono:-d[..] -c[..]come nel caso precedente.-f [Nome della feature] come nel caso precedente più una serie <strong>di</strong>parametri separati dai due punti che specificanocon W=numero reale tra 0 e 1 il pesodella feature <strong>in</strong> una query Multifeature e conO=0,1 il tipo <strong>di</strong> or<strong>di</strong>namento <strong>in</strong> una query <strong>di</strong>tipo Multipass.-i[Chiave], -r[Nome File] specificano l’immag<strong>in</strong>e da usare come esempionell’<strong>in</strong>terrogazione nel primo caso <strong>in</strong>ternaal Db ed identificata dalla relativa chiave e nelsecondo esterna al db ed identificata dal nomedel file.-l e -L visualizza l’elenco delle feature contenute nelcatalogo e quelle complessivamente <strong>di</strong>sponibilirispettivamente.QbMkThumb estrae la m<strong>in</strong>iatura <strong>di</strong> un’immag<strong>in</strong>e e richiede due nomi <strong>di</strong>file il primo è il nome dell’immag<strong>in</strong>e <strong>di</strong> <strong>in</strong>gresso, il secondo il nome dell’immag<strong>in</strong>ed’uscita. Inoltre possono essere <strong>in</strong>clusi i seguenti parametri:


II136 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.-l [Nome File] come nel caso <strong>di</strong> QbMkDBS specifica una lista <strong>di</strong> immag<strong>in</strong>ida “m<strong>in</strong>iaturizzare”.-o[Nome Directory] specifica una <strong>di</strong>rectory <strong>di</strong>versa da quella <strong>di</strong> Default per lam<strong>in</strong>iatura.-s[Suffisso] cambia il suffisso delle m<strong>in</strong>iature.-t genera m<strong>in</strong>iature <strong>in</strong> “True Color”.QbDumpDb visualizza il contenuto delle tipologie <strong>di</strong> feature specificate, perun dato catalogo e per un dato Db, sullo schermo <strong>in</strong> modalità ASCII.I parametri utilizzabili (-d, -c, -f) con lo stesso significato <strong>di</strong> quelli <strong>in</strong>QbMkDbs o QbMkQBE.7.2 La classe <strong>di</strong> alto livello QbWrapClass.La classe QbWrapClass <strong>di</strong> alto livello, s<strong>in</strong>gola, che non appartiene alla gerarchiadelle classi <strong>di</strong> basso livello fornisce una serie <strong>di</strong> meto<strong>di</strong> che permettonol’esecuzione <strong>di</strong> operazioni per la popolazione e l’<strong>in</strong>terrogazione del Database <strong>di</strong>QBIC.Questa classe permette <strong>di</strong> eseguire <strong>in</strong> maniera semplificata operazioni complesseche richiederebbero l’utilizzo <strong>di</strong> molti meto<strong>di</strong> appartenenti alla gerarchia <strong>di</strong>classi <strong>di</strong> più basso livello.In particolare questa classe contiene anche una serie <strong>di</strong> meto<strong>di</strong> che fornisconole stesse funzionalità e la stessa l’<strong>in</strong>terfaccia dei programmi a l<strong>in</strong>ea <strong>di</strong> comandoprecedentemente descritti. I meto<strong>di</strong> della classe possono essere raggruppati nelleseguenti categorie:Meto<strong>di</strong> sulle feature:1. Meto<strong>di</strong> per il calcolo delle feature: GetFeatureDataImage,GetFeatureDataKey, GetFeatureDataPicker, GetFeatureDataStr<strong>in</strong>g;Permettono <strong>di</strong> calcolare le feature delle immag<strong>in</strong>i identificate <strong>in</strong>maniere <strong>di</strong>verse.2. Gestione dei parametri delle feature: GetParameters, GetParameterForFeature;permettono <strong>di</strong> visualizzare i parametri impostati per le feature;3. Gestioni delle feature nei cataloghi: InsertFeature, DeleteFeaure,ListAllFeature, ListCatFeature;permettono <strong>di</strong> <strong>in</strong>serire, elim<strong>in</strong>are ed elencare le categorie <strong>di</strong> featureutilizzate nell’<strong>in</strong>terrogazione e nella popolazione del Database.Meto<strong>di</strong> per l’<strong>in</strong>terrogazione dei cataloghi del Database:


III7.2 La classe <strong>di</strong> alto livello QbWrapClass. 1371. Def<strong>in</strong>izione degli <strong>in</strong>put della query: QbicWrapQueryImage,QbicWrapQueryKey, QbicWrapQueryPicker, QbicWrapQueryStr<strong>in</strong>g.Permettono <strong>di</strong> def<strong>in</strong>ire l’immag<strong>in</strong>e d’esempio necessaria per l’esecuzionedell’<strong>in</strong>terrogazione.2. Def<strong>in</strong>izione degli output della query: QbicWrapSetReturnedKeys;Permette <strong>di</strong> def<strong>in</strong>ire il numero <strong>di</strong> immag<strong>in</strong>i contenute nel risultato dellaquery.3. Esecuzione della Query: QbicWrapQueryDB, QbicWrapRandom-QueryDB;Permettono <strong>di</strong> eseguire una query, con i parametri specificati attraversoi meto<strong>di</strong> precedenti, oppure <strong>di</strong> ottenere un <strong>in</strong>sieme casuale <strong>di</strong> risultati.Meto<strong>di</strong> per la popolazione dei cataloghi del Database:1. Gestione delle immag<strong>in</strong>i nei cataloghi: QbicWrapInsertImage,QbicWrapInsertSubImage, QbicWrapDeleteImage, QbicWrapDelete-SubImag;Permettono <strong>di</strong> <strong>in</strong>serire od elim<strong>in</strong>are, immag<strong>in</strong>i o oggetti estrattidall’immag<strong>in</strong>e <strong>in</strong> maniera semiautomatica, per la gestione dellapopolazione del catalogo.2. Gestione delle parole chiave associate alle immag<strong>in</strong>i nel catalogo:QbicWrapGetKeyWord, QbicWrapSetKeyWord.Permettono <strong>di</strong> leggere e scrivere all’<strong>in</strong>terno del catalogo le parolechiave associate alle immag<strong>in</strong>i.Meto<strong>di</strong> per la gestione delle m<strong>in</strong>iature delle immag<strong>in</strong>i:1. Gestione dei parametri associati all’estrazione delle m<strong>in</strong>iature:QbicWrapSetPad, QbicWrapSetThumb24ColorMethod,QbicWrapThumbXY;Permettono <strong>di</strong> gestire le opzioni riguardanti la generazione delleversioni m<strong>in</strong>iaturizzate delle immag<strong>in</strong>i.2. Estrazione delle m<strong>in</strong>ature: QbicWrapThum.Permette <strong>di</strong> estrarre la m<strong>in</strong>iatura dall’immag<strong>in</strong>e orig<strong>in</strong>ale.Meto<strong>di</strong> per l’implementazione dei programmi a l<strong>in</strong>ea <strong>di</strong> comando:1. Def<strong>in</strong>izione della modalita <strong>di</strong> visualizzazione: SetScreenPr<strong>in</strong>t.Permette <strong>di</strong> visualizzare i risultati dei programmi a l<strong>in</strong>ea <strong>di</strong> comandosullo schermo.


138 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.2. Esecuzione dei programmi a l<strong>in</strong>ea <strong>di</strong> comando: QbicWrapDBS,QbicWrapQBE, QbicWrapDumpDB, QbicWrapThm;Permettono <strong>di</strong> implementare le funzioni degli equivalenti programmia l<strong>in</strong>ea <strong>di</strong> comando.Approfon<strong>di</strong>amo il comportamento dei meto<strong>di</strong> <strong>in</strong>trodotti descrivendone nei particolarila funzione svolta illustrando i parametri <strong>di</strong> <strong>in</strong>gresso/uscita necessari al lorofunzionamento. Tutti i meto<strong>di</strong> della classe QbicWrapClass che alla loro <strong>in</strong>vocazionerestituiscono un numero <strong>in</strong>tero, ritornano zero <strong>in</strong> caso <strong>di</strong> successo e menouno <strong>in</strong> caso d’errore.Meto<strong>di</strong> per il calcolo delle feature.<strong>in</strong>t GetFeatureDataImage(char *imgName, char*maskName, QbStr<strong>in</strong>gClass *str);Estrae le feature dell’immag<strong>in</strong>e esterna al Database identificata dal nome delfile memorizzato nella locazione <strong>di</strong> memoria puntata da *imgName.<strong>in</strong>t GetFeatureDataKey(char *imgKey, QbStr<strong>in</strong>gClass*str);Estrae le feature dell’immag<strong>in</strong>e contenuta nel Database identificata dal nomedella chiave memorizzato nella locazione <strong>di</strong> memoria puntata da *keyName.<strong>in</strong>t GetFeatureDataPicker(char *imgName, char*maskName, QbStr<strong>in</strong>gClass *str);Con picker si <strong>in</strong>tende un’immag<strong>in</strong>e <strong>di</strong>segnata dall’utente contenente una serie<strong>di</strong> forme <strong>di</strong> colore uniforme. In questo caso vengono considerate per l’estrazionedelle feature solamente le parti effettivamente <strong>di</strong>segnate <strong>in</strong> modo che l’utente possaspecificare solo i particolari <strong>in</strong>teressanti senza dover necessariamente <strong>di</strong>segnaretutta l’immag<strong>in</strong>e.Il Picker è memorizzato nel file esterno avente nome memorizzato nellalocazione <strong>di</strong> memoria puntata da *imgName.<strong>in</strong>t GetFeatureDataStr<strong>in</strong>g(char *strDes,QbStr<strong>in</strong>gClass *str);strae le feature dell’immag<strong>in</strong>e contenuta nel Database identificata da una serie<strong>di</strong> parole chiave memorizzate nella locazione <strong>di</strong> memoria puntata da *keyName.Altri parametri comuni a tutti i meto<strong>di</strong>:*maskname: punta ad una locazione <strong>di</strong> memoria che memorizza il nome<strong>di</strong> un file contenente la maschera, Cioè una matrice b<strong>in</strong>aria della stessa <strong>di</strong>mensionedell’immag<strong>in</strong>e dove gli elementi a valore nullo <strong>in</strong><strong>di</strong>cano la parte <strong>di</strong> immag<strong>in</strong>eda ignorare, mentre la parte della maschera con valori <strong>di</strong>versi da zero(non necessariamente ad uno) rappresenta un oggetto su cui vengono calcolate lefeature.*str: puntatore ad un oggetto <strong>di</strong> tipo QbStr<strong>in</strong>gClass, estensione del tipo


7.2 La classe <strong>di</strong> alto livello QbWrapClass. 139base str<strong>in</strong>ga, che contiene i valori delle feature estratte dal metodo dall’immag<strong>in</strong>eo dall’oggetto delimitato dalla maschera.Meto<strong>di</strong> per la gestione dei parametri delle feature:<strong>in</strong>t GetParameters(QbStr<strong>in</strong>gClass *str);Estrae i parametri caratteristici delle feature implementate per l’oggetto sucui il metodo viene <strong>in</strong>vocato. Il metodo restituisce i parametri delle feature allalocazione puntata da str.QbParameterClass *GetParameterForFeature(char*featureName);Analogamente al precedente vengono estratti i parametri dalla feature connome memorizzato all’<strong>in</strong><strong>di</strong>rizzo puntato da *featureName. I parametri dell’oggettosu cui è <strong>in</strong>vocato il metodo vengono restituiti <strong>in</strong> un oggetto appartenete allaclasse QbParameterClass.Gestione delle feature nei cataloghi:<strong>in</strong>t InsertFeature(char *featureName);<strong>in</strong>t DeleteFeaure(char *featureName);permettono <strong>di</strong> <strong>in</strong>serire/elim<strong>in</strong>are la feature, con nome puntato da *feature-Name, dall’oggetto su cui è <strong>in</strong>vocato il metodo, ai f<strong>in</strong>i dell’esecuzione delle<strong>in</strong>terrogazioni o per la popolazione del Database.char *ListAllFeature(void);char *ListCatFeature(void);restituiscono un puntatore ad una locazione <strong>di</strong> memoria contenete una lista<strong>di</strong> tutte le feature <strong>di</strong>sponibili nella versione <strong>di</strong> QBIC utilizzata, e tutte le feature<strong>in</strong>serite nel catalogo con la funzione precedente rispettivamente.Def<strong>in</strong>izione degli <strong>in</strong>put della query:<strong>in</strong>t QbicWrapQueryImage(char *imgName, char*maskName);assegna le specifiche <strong>di</strong> un’<strong>in</strong>terrogazione utilizzando un’immag<strong>in</strong>e esternaal Database il cui nome è memorizzato alla locazione <strong>di</strong> memoria puntata daimgName e da ed una maschera opzionale. In questo caso, prima <strong>di</strong> eseguirel’<strong>in</strong>terrogazione bisogna estrarre le relative feature.<strong>in</strong>t QbicWrapQueryKey(char *keyName);assegna le specifiche <strong>di</strong> un’<strong>in</strong>terrogazione utilizzando un’immag<strong>in</strong>e già contenutadel Database identificata dalla chiave memorizzata nella locazione <strong>di</strong>memoria puntata da *keyName. In questo caso le feture sono già state estratte,bisogna solo recuperarle dal Db.<strong>in</strong>t QbicWrapQueryPicker(char *keyName, char*maskName);assegna le specifiche <strong>di</strong> un’<strong>in</strong>terrogazione utilizzando un Picker contenuto <strong>in</strong>un file esterno al Database il cui nome è memorizzato alla locazione <strong>di</strong> memoriapuntata da imgName e da ed una maschera opzionale.


140 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.<strong>in</strong>t QbicWrapQueryStr<strong>in</strong>g(char *str);assegna le specifiche <strong>di</strong> un’<strong>in</strong>terrogazione utilizzando la descrizione <strong>di</strong> unPicker sotto forma <strong>di</strong> str<strong>in</strong>ga <strong>di</strong> testo memorizzata nella locazione <strong>di</strong> memoriapuntata da *str.Meto<strong>di</strong> per la def<strong>in</strong>izione degli output della query:<strong>in</strong>t QbicWrapSetReturnedKeys(<strong>in</strong>t nhits);permette <strong>di</strong> def<strong>in</strong>ire il numero <strong>di</strong> immag<strong>in</strong>i, pari ad nhits, contenute nelrisultato della query.Meto<strong>di</strong> per esecuzione della Query:<strong>in</strong>t QbicWrapQueryDB(QbStr<strong>in</strong>gClass *str);esegue l’<strong>in</strong>terrogazione con i parametri impostati tramite i meto<strong>di</strong>precedentemente illustrati.<strong>in</strong>t QbicWrapRandomQueryDB(QbStr<strong>in</strong>gClass *str,QbBoolean bool);Esegue l’<strong>in</strong>terrogazione recuperando un set <strong>di</strong> immag<strong>in</strong>i del Database <strong>in</strong>maniera casuale. Il parametro bool permette <strong>di</strong> <strong>in</strong><strong>di</strong>care se si vogliono ottenere,nelle successive <strong>in</strong>vocazioni del metodo, set <strong>di</strong> immag<strong>in</strong>i sempre <strong>di</strong>versi daiprecedenti, il valore <strong>di</strong> default <strong>di</strong> bool è TRUE.I risultati, per entrambe le modalità <strong>di</strong> <strong>in</strong>terrogazione, sotto forma <strong>di</strong> str<strong>in</strong>ga <strong>di</strong>caratteri sono memorizzate alla locazione <strong>di</strong> memoria puntata da *str.Meto<strong>di</strong> per la gestione delle immag<strong>in</strong>i nei cataloghi:<strong>in</strong>t QbicWrapInsertImage(char *imgName);<strong>in</strong>t QbicWrapDeleteImage(char *imgName);permettono <strong>di</strong> <strong>in</strong>serire/elim<strong>in</strong>are le feature <strong>di</strong> un’immag<strong>in</strong>e il cui nome è contenutonella locazione <strong>di</strong> memoria puntata da *imgName, def<strong>in</strong>ite con i meto<strong>di</strong>precedenti(InsertFeature), dal catalogo associato all’oggetto su cui è <strong>in</strong>vocato ilmetodo.<strong>in</strong>t QbicWrapInsertSubImage(char *imgNames);<strong>in</strong>t QbicWrapDeleteSubImag(char *imgNames);Analoghi alla coppia precedente solo che permettono <strong>di</strong> <strong>in</strong>serire/elim<strong>in</strong>are lefeature associate una serie <strong>di</strong> oggetti derivati da una serie <strong>di</strong> maschere appartenentiad un’immag<strong>in</strong>e “padre”. *ImgNames è un puntatore ad una str<strong>in</strong>ga <strong>di</strong> caratteriche contiene l’immag<strong>in</strong>e padre e delle maschere contenenti gli oggetti nelformato:Immag<strong>in</strong>ePadre ( Maschera1, Maschera2, ..., MascheraN)Gestione delle parole chiave associate alle immag<strong>in</strong>i nel catalogo:char *QbicWrapGetKeyWord(void);void QbicWrapSetKeyWord(char *kw);permettono rispettivamente <strong>di</strong> leggere/scrivere le parole chiave associate alleimmag<strong>in</strong>i e memorizzate all’<strong>in</strong>terno del Database. I parametri dei due meto<strong>di</strong>


7.2 La classe <strong>di</strong> alto livello QbWrapClass. 141rappresentano gli <strong>in</strong><strong>di</strong>rizzi <strong>di</strong> str<strong>in</strong>ghe <strong>di</strong> caratteri che contengono parole chiaveseparate da spazi.Meto<strong>di</strong> per la gestione dei parametri associati all’estrazione dellem<strong>in</strong>iature.Void QbicWrapSetPad(QbBoolean pad);Setta <strong>in</strong> funzione della variabile boolean pad il riempimento delle zone lateralidella m<strong>in</strong>iatura se l’immag<strong>in</strong>e da cui deriva non ha un rapporto tra le <strong>di</strong>mensionidel J%KLJ tipovoid QbicWrapSetThumb24ColorMetod(QbBoolean Bool);Permette <strong>di</strong> generare le m<strong>in</strong>iature <strong>in</strong> “True Color” <strong>in</strong> funzione della variabileboolean bool.Void QbicWrapThumbXY(<strong>in</strong>t width, <strong>in</strong>t height);Setta le <strong>di</strong>mensioni della m<strong>in</strong>iatura, dove width e height rappresentano il numero<strong>di</strong> pixel nelle <strong>di</strong>rezioni delle ascisse e delle or<strong>di</strong>nate rispettivamente. Ilvalore <strong>di</strong> default J4eeHMNJ4ee è .Meto<strong>di</strong> per la creazione delle m<strong>in</strong>iature.Int QbicWrapThumb(char *<strong>in</strong>Image, char *outImage);I due parametri rappresentano rispettivamente i puntatori alle locazioni <strong>di</strong>memoria contenenti il nome del file dell’immag<strong>in</strong>e orig<strong>in</strong>ale e della relativam<strong>in</strong>iatura.Meto<strong>di</strong> per l’esecuzione dei programmi a l<strong>in</strong>ea <strong>di</strong> comando:<strong>in</strong>t QbicWrapDBS(<strong>in</strong>t argc, char **argv,QbStr<strong>in</strong>gClass *str=NULL);<strong>in</strong>t QbicWrapQBE(<strong>in</strong>t argc, char **argv,QbStr<strong>in</strong>gClass *str=NULL);<strong>in</strong>t QbicWrapDumpDB(<strong>in</strong>t argc, char **argv,QbStr<strong>in</strong>gClass *str=NULL);<strong>in</strong>t QbicWrapThm(<strong>in</strong>t argc, char **argv,QbStr<strong>in</strong>gClass *str=NULL);Questi meto<strong>di</strong> implementano le stesse funzioni dei rispettivi programmi MS-DOS <strong>in</strong> particolare utilizzano per la def<strong>in</strong>izione dei parametri la stessa modalità al<strong>in</strong>ea <strong>di</strong> comando.I parametri <strong>di</strong> <strong>in</strong>gresso sono gli stessi della funzione ma<strong>in</strong>(<strong>in</strong>t argc, char**argv) basta qu<strong>in</strong><strong>di</strong> <strong>in</strong>cludere all’<strong>in</strong>terno della funzione ma<strong>in</strong> una chiamata aquesto metodo su un oggetto della classe QbicWrapClass e leggere al term<strong>in</strong>edell’esecuzione i risultati nella str<strong>in</strong>ga puntata da str.Tramite il metodovoid SetScreenPr<strong>in</strong>t(<strong>in</strong>t sp);è possibile specificare la visualizzazione sullo OPRQ J schermo oppure no. OSPTQVU


mn¨opqpqrstpuvo>uu?oz{{| wyẍẍ |6z |‚6|}l~t€142 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.7.3 Gerarchia <strong>di</strong> classi <strong>di</strong> basso livello.Al livello più basso QBIC fornisce una serie <strong>di</strong> classi C++ astratte ed alcune totalmenteimplementate per permettere operazioni come: la connessione ad unDatabase, la gestione dei cataloghi, il calcolo delle feature e così via.Le classi astratte <strong>in</strong> C++ sono classi che utilizzano funzioni virtuali pure perdef<strong>in</strong>ire l’<strong>in</strong>terfaccia dei meto<strong>di</strong> costr<strong>in</strong>gendo le classi derivate a def<strong>in</strong>ire l’implementazione.I programmi non possono creare istanze delle classi astratte, solamentei puntatori alle classi astratte sono permessi. Queste classi sono state pro-WYX&Z£[\]^`_a[\b\cYd&e¥f!gihjlk3mnfpooqYr&s¥t!uvtbrtpwxỳ zntpwbwY‘&’L‘”“v•v–!—˜!•vš›—*œ`a˜žbžŸY &¡£¢2¤*¢!¥l¦2§¨¦2¤*©`ªn¢p«b«¼Y½&¾L½”¿vÀ¨Á2Â*Ã2À¨Ä›ÂÅ3ÆnÃpÇǬY­®°¯2±”¯!²´³aµ!¥·!¸v·¹3ºn·»b»…Y†&‡¥ˆ2‰'Š¥‹!Œv‹2†‹p*ˆŽ3n‹pÈYÉ&ÊÌËÍ!ÎiÏÐË!ÐÑ3ÒnÍpÓÓ{Y|&}L|'~}¥!€v2|‚ƒ`„ab*¡+£,.-/-021¨3465879:-!;=?7@Ä 7BBãYä”åÜæ8çSènéÌæê!èiëìæí3înêpïïW¡X£WZY[\^]_`¨abbðYñ&òôóõ8öø÷£ùõ!úiûó*ùü3ýnõpþþÔYÕÔ£Ö”×!ØÚÙÜÛ×2ØÞÝ”×2Ø*ß`àaáâbâÿ¡ £¢¥¤§¦¨¤©©¢¦¨ƒ t€ ẍ | |>‚?z>?zc¡d£e¥fg6fḧ i§j:eḧ flkk¡£! §"#$%&"#$'(¨&))C¡D£E¥F§G¨FHIKJML2N6F§OPHQ>RTSUQNVHUEG¨QLLFigura 7.1: Schematizzazione della gerarchia <strong>di</strong> classi <strong>di</strong> basso livelloimplementata dalle API <strong>di</strong> QBIC.gettate per essere estensibili, <strong>in</strong> particolare è possibile <strong>in</strong>serire classi per <strong>in</strong>tegrarenuovi tipi <strong>di</strong> contenuti multime<strong>di</strong>ali come i suoni od i filmati oppure è possibileimplementare nuove tipologie <strong>di</strong> feature, nuove metriche <strong>di</strong> <strong>di</strong>stanza e così via.La gerarchia <strong>di</strong> classi def<strong>in</strong>ita da QBIC utilizza solamente l’ere<strong>di</strong>tarietà s<strong>in</strong>gola(Figura 7.1) <strong>in</strong> particolare esiste una convenzione sui nomi delle classi del tipoQbFraseDescrittivaClass. Le funzioni membro sono hanno tutte le <strong>in</strong>iziali delleparole maiuscole, mentre le variabili hanno l’<strong>in</strong>iziale della prima parola m<strong>in</strong>uscolae la altre maiuscole.Descriviamo ora le caratteristiche e le funzioni pr<strong>in</strong>cipali <strong>di</strong> ciascuna delleclassi contenute nella API <strong>di</strong> QBIC rimandando al manuale utente [?] i particolarisui s<strong>in</strong>goli meto<strong>di</strong>.


7.3 Gerarchia <strong>di</strong> classi <strong>di</strong> basso livello. 143QbBaseClass è una classe astratta madre <strong>di</strong> tutte le altre classi nella gerarchiada cui derivano tutti i meto<strong>di</strong> def<strong>in</strong>iti. Le classi derivate possono utilizzare i meto<strong>di</strong>della superclasse per determ<strong>in</strong>are il tipo <strong>di</strong> <strong>in</strong>terfaccia e monitorare lo stato deglioggetti.Il tipo <strong>di</strong> <strong>in</strong>terfaccia è una variabile enumerazione che può assumere i seguentivalori: genericData, feature, connect, database, keyDatabase, databaseIterator,parameter, catalog, eccu uvu query, , mentre lo stato degli oggetti e controllato dalmetodo IsOk.QbCatalogClass è una classe derivata da QbBaseClass che gestisce tutte leoperazioni relative ai cataloghi come la creazione, la cancellazione <strong>di</strong> tabelle el’aggiunta, la rimozione e l’aggiornamento delle feature per le immag<strong>in</strong>i <strong>di</strong> <strong>in</strong>put.In questa versione <strong>di</strong> QBIC si utilizzano i files dbm <strong>di</strong> UNIX, come sistema <strong>di</strong>memorizzazione permanente, dove il nome del database è un sotto <strong>di</strong>rettorio nelfile system e i vari cataloghi sono i file con nome derivato dalla relativa classe <strong>di</strong>feature e con estensione uguale al nome del catalogo.Per ogni catalogo QBIC genera un file <strong>di</strong> <strong>in</strong><strong>di</strong>ce (FeatIdx.nomeCat) chepermette <strong>di</strong> recuperare più velocemente le feature.QbConnectClass è derivata dalla classe padre QbBaseClass ed è utilizzata perottenere la connessione ad un Database o ad un Filesystem. Il Metodo Connectstabilisce una connessione al Database od esegue il Mount del Filesytem che sonooperazioni <strong>di</strong>spen<strong>di</strong>ose <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo e vengono eseguite una volta per tutteall’<strong>in</strong>izio dei programmi.Il metodo Disconnect esegue il processo <strong>in</strong>verso. Entrambi i meto<strong>di</strong>richiedono il nome del database e la modalità si apertura <strong>in</strong> lettura “r” ed <strong>in</strong>scrittura “w”.QbDatabaseClass deriva dalla classe QbBaseClass e def<strong>in</strong>isce un’<strong>in</strong>terfacciaastratta ad un Database per archiviare i dati.L’utente deve creare una specifica implementazione delle <strong>in</strong>terfaccie delle funzionivirtuali come Open, Close, Insert, Update, ecc„…y†‡O Commit, <strong>in</strong> modo dapoter <strong>di</strong>alogare correttamente con i <strong>di</strong>versi Database Manager (IBM Db2, Oracle,Sysbase, dbm e così via).In questa versione è implementata la classe QbDbmDatabaseClass che derivadalla precedente e def<strong>in</strong>isce il contenuto delle funzioni virtuali <strong>in</strong> modo da operarecorrettamente con il Database Dbm <strong>di</strong> UNIX. In particolare i meto<strong>di</strong> open e closeaprono o <strong>di</strong>struggono una connessione al Db, la creano se non esiste e richiedonola def<strong>in</strong>izione della modalità <strong>di</strong> apertura <strong>in</strong> lettura o scrittura.Le operazioni che riguardano l’<strong>in</strong>serimento, l’aggiornamento o la cancellazione<strong>di</strong> record lavorano su coppie chiave(nome del file <strong>in</strong> Dbm) valore (adesempio una feature); non sono ammessi due record con lo stesso valore <strong>di</strong> chiave.QbDatumClass deriva dalla classe base e def<strong>in</strong>isce un puntatore ad unastr<strong>in</strong>ga <strong>di</strong> byte, la sua lunghezza ed il formato del dato memorizzato. Questa


IIIII144 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.classe è utilizzata come “mezzo <strong>di</strong> trasporto” per trasferire i risultati dell’elaborazione<strong>di</strong> un metodo ad un altro e fornisce le operazioni <strong>di</strong> base per scrivere eleggere i dati privati della classe.QbDbIteratorClass deriva dalla classe base e def<strong>in</strong>isce quello che neiDatabase viene chiamato cursore (iteretor) che è necessario nella gestione liste<strong>di</strong> dati. Ad esempio nel caso della query si ottiene quasi sempre come risultatouna lista <strong>di</strong> chiavi.Per poter eseguire una serie <strong>di</strong> operazioni su ognuna <strong>di</strong> esse si crea un oggettodella classe QbDbIterator che punta al primo elemento della lista ed implementa imeto<strong>di</strong>: More che <strong>in</strong>forma sull’esistenza <strong>di</strong> ulteriori elementi nella lista, Next chefornisce l’elemento successivo nella lista e Reset che riporta il cursore all’<strong>in</strong>iziodella lista.QbFeatureClass è una sotto classe della superclasse QbBaseClass e vieneimpiegata per <strong>in</strong>capsulare i valori delle feature. Implementa i meto<strong>di</strong> per l’estrazionedelle feature e per il calcolo della <strong>di</strong>stanza tra coppie <strong>di</strong> feature. Al f<strong>in</strong>e<strong>di</strong> gestire le feature specifiche come l’istogramma dei colori oppure le tessiturevengono create le seguenti sottoclassi:QbTextFeatureClass per il recupero <strong>in</strong> base alle str<strong>in</strong>ghe <strong>di</strong> testo;QbDrawFeatureClass per il recupero <strong>in</strong> base alla <strong>di</strong>stribuzione delle zone <strong>di</strong>colore;QbColorFeatureClass per il recupero <strong>in</strong> base al colore me<strong>di</strong>o;QbTextureFeatureClass per il recupero <strong>in</strong> base alla caratterizzazione delletessiture;QbColorHistogramFeatureClass per il recupero <strong>in</strong> base all’istogramma deicolori.QbGenericDataClass deriva dalla classe QbBaseClass e def<strong>in</strong>isce tipologie<strong>di</strong> dati generiche come: immag<strong>in</strong>i, video, testo e au<strong>di</strong>o. Questa classe <strong>in</strong>capsualai data nei passaggi tra il proce<strong>di</strong>mento <strong>di</strong> estrazione delle feature, l’<strong>in</strong>terfacciautente e i file <strong>di</strong> dati esterni.Questa classe è completamente implementata e fornisce modalità standard peril passaggio <strong>di</strong> <strong>in</strong>terrogazioni o <strong>di</strong> <strong>in</strong>formazioni specifiche tra client e server.Questa classe non fa nulla per def<strong>in</strong>ire il formato dei tipi <strong>di</strong> dati specifici, perfar ciò bisogna creare una sottoclasse. Ad esempio QbGenericImageDataClasspermette la gestione specifica delle immag<strong>in</strong>i.QbGenericImageDataClass è una sottoclasse <strong>di</strong> QbGenericDataClass ed <strong>in</strong>cludetutti i meto<strong>di</strong> della superclasse più una serie <strong>di</strong> meto<strong>di</strong> specifici per l’elaborazionedelle immag<strong>in</strong>i come la lettura dalla memoria o dal <strong>di</strong>sco, la de-


7.3 Gerarchia <strong>di</strong> classi <strong>di</strong> basso livello. 145term<strong>in</strong>azione delle <strong>di</strong>mensioni dell’immag<strong>in</strong>e, la gestione delle LUT e dellemaschere.I formati <strong>di</strong> immag<strong>in</strong>i gestiti nella presente versione <strong>in</strong>cludono i file conestensione bmp, gif, jpg, pgm, ppm, tif e tga.QbKeyDatabaseClass è una sottoclasse <strong>di</strong> QbDatabaseClass che viene impiegataper restituire i risultati <strong>di</strong> un’<strong>in</strong>terrogazione oppure per specificare una“Restriction list” <strong>di</strong> chiavi.La “restriction list” è un sotto<strong>in</strong>sieme <strong>di</strong> chiavi, tipicamente derivato da unaquery precedente, che viene utilizzato nelle successive per restr<strong>in</strong>gere il dom<strong>in</strong>io<strong>di</strong> ricerca ed lo strumento attraverso il quale, a più alto livello, vengonoimplementate le query multi-feature e multi-pass.La QbDatabaseClass è un archivio <strong>di</strong> coppie chiave/valore <strong>di</strong> <strong>di</strong>stanza, lacreazione <strong>di</strong> cursori è necessaria per recuperare gli elementi <strong>in</strong> or<strong>di</strong>ne crescente <strong>di</strong><strong>di</strong>stanza.I meto<strong>di</strong> implementati per questa classe comprendono quelli per la lettura ela scrittura del valore della <strong>di</strong>stanza associata alla chiave,quelli per recuperare ilnumero <strong>di</strong> chiavi presenti nell’oggetto ed il valore massimo <strong>di</strong> <strong>di</strong>stanza presente.QbParameterClass è derivata dalla classe QbBaseClass ed <strong>in</strong>capsula iparametri associati con la determ<strong>in</strong>azione <strong>di</strong> una feature <strong>di</strong> QBIC o <strong>di</strong> una <strong>in</strong>terrogazione.E’ totalmente implementata e crea un vettore <strong>di</strong> coppie nome/valoreche ogni classe derivata da QbFeatureClass può utilizzare.Ogni volta che viene creato un oggetto feature <strong>di</strong> una certa classe vengonoassegnati anche i parametri <strong>di</strong> default che possono essere “aggiustati” secondo leesigenze degli utenti.QbQueryClass deriva da QbBaseClass ed è una classe astratta che def<strong>in</strong>isceil metodo Evaluate che permette l’esecuzione dell’<strong>in</strong>terrogazione e necessita <strong>di</strong>una serie <strong>di</strong> parametri <strong>di</strong> <strong>in</strong>gresso comprendenti: il numero <strong>di</strong> risultati richiesti, ilcatalogo da <strong>in</strong>terrogare, le eventuali liste <strong>di</strong> restrizione e maschere, il numero e iltipo <strong>di</strong> feature co<strong>in</strong>volte, i dati dell’immag<strong>in</strong>e d’esempio da utilizzare nella ricercae i parametri <strong>di</strong> query necessari.Per il sistema Dbm viene fornita una sottoclasse QbQueryServerClass chedef<strong>in</strong>isce l’implementazione dei meto<strong>di</strong> virtuali della relativa superclasse.In molte delle classi vengono <strong>in</strong>clusi due meto<strong>di</strong> detti ToQueryStr<strong>in</strong>g eFromQueryStr<strong>in</strong>g che trasformano un oggetto <strong>di</strong> tipo QbDatumClasse <strong>in</strong> unastr<strong>in</strong>ga e viceversa, permettendo il passaggio dallo spazio <strong>di</strong> processo del sistema“client” a quello del sistema “server” nel caso che siano fisicamente residenti susistemi <strong>di</strong>versi.


146 L’ambiente <strong>di</strong> sviluppo <strong>di</strong> QBIC.


Capitolo 8Implementazione <strong>di</strong> un IDB tramiteQBICIn questo capitolo si fornisce la descrizione dell’ambiente e del l<strong>in</strong>guaggio <strong>di</strong> programmazioneutilizzati, un’<strong>analisi</strong> degli strumenti software acquisiti da altri programmatoried una descrizione dell’<strong>in</strong>terfaccia e delle funzioni del programma(QbicProg.exe).8.1 Ambiente e l<strong>in</strong>guaggio utilizzato.Il sistema è stato sviluppato <strong>in</strong> ambiente W<strong>in</strong>dows 9x ed il l<strong>in</strong>guaggio utilizzatoper l’implementazione è il Visual C++ Versione 5.0.I vantaggi offerti dall’uso <strong>di</strong> W<strong>in</strong>dows sono pr<strong>in</strong>cipalmente legati alla como<strong>di</strong>tàdell’ambiente grafico fornito. Con l’utilizzo <strong>di</strong> questo ambiente sono possibilifunzionalità quali un’<strong>in</strong>terfaccia grafica standard, il Multitask<strong>in</strong>g, l’approccio allaprogrammazione Object Oriented, il controllo della memoria, l’<strong>in</strong><strong>di</strong>pendenzadall’Hardware <strong>in</strong>stallato e l’uso <strong>di</strong> librerie a collegamento <strong>di</strong>namico (DLL).Il l<strong>in</strong>guaggio Visual C++ permette con relativa facilità <strong>di</strong> progettare GUI(Graphics User Interface) per mezzo della quale l’utente può <strong>in</strong>teragire con il sistema.Il fatto che tutte le applicazioni W<strong>in</strong>dows con<strong>di</strong>vidano lo stesso sistema <strong>di</strong>f<strong>in</strong>estre <strong>di</strong> <strong>di</strong>alogo e menù e che queste siano <strong>di</strong>sponibili al programmatore, che lepuò <strong>in</strong>serire nel proprio programma, fa si che l’utilizzo del sistema risulti molto<strong>in</strong>tuitivo.8.2 La libreria <strong>di</strong> Classi MFC.Il compilatore Visual C++ <strong>di</strong> Microsoft è corredato <strong>di</strong> una libreria MFC (MicrosoftFundation Class) che contiene una serie <strong>di</strong> strumenti <strong>di</strong> sviluppo orientati agli


IIIIIII148 Implementazione <strong>di</strong> un IDB tramite QBICoggetti. Poiché l’applicazione sviluppata gestisce documenti multipli, per mezzo<strong>di</strong> MFC sono stati def<strong>in</strong>ititi i quattro moduli pr<strong>in</strong>cipali per la gestione <strong>di</strong> questotipo <strong>di</strong> applicazioni [?]:CMa<strong>in</strong>Frame: contiene le classi utilizzate per controllare le funzioni dell’<strong>in</strong>terfacciadel documento ‘ma<strong>in</strong>’. Attraverso i menù del documento‘ma<strong>in</strong>’ l’utente può scegliere il tipo <strong>di</strong> operazione che <strong>in</strong>tende eseguire:<strong>in</strong>serimento e cancellazione delle immag<strong>in</strong>i nel Database, <strong>in</strong>terrogazioni,CChildFrame: contiene la classe utilizzata per controllare le funzioni <strong>di</strong><strong>in</strong>terfaccia del documento ‘figlio’ che contiene l’output del sistema, cioèl’<strong>in</strong>sieme delle immag<strong>in</strong>i che costituiscono il risultato dell’<strong>in</strong>terrogazione.eccu uvuCDoc: contiene la classe che specifica il documento dell’applicazione, ilsuo scopo è quello <strong>di</strong> memorizzare i dati grezzi: str<strong>in</strong>ghe, numeri <strong>in</strong>teri efloat<strong>in</strong>g po<strong>in</strong>t, eccuvuvuCview: fornisce il supporto alla visualizzazione dei dati memorizzat<strong>in</strong>el documento: è <strong>in</strong> questa classe che si implementa il co<strong>di</strong>ce per lavisualizzazione delle immag<strong>in</strong>i.8.3 Architettura del sistema.Nel programma sviluppato possono essere identificate le seguenti unità funzionali:libreria <strong>di</strong> Classi fornita dalla IBM che implementa la gestione del DatabaseQBIC descritta nel Capitolo 7;libreria <strong>di</strong> classi CIMAGE 1 utilizzata per la visualizzazione nella vista deirisultati dell’<strong>in</strong>terrogazione;il programma QbicProg.exe con le relative classi che tramite i due moduliprecedenti implementa le funzioni <strong>di</strong> <strong>in</strong>serimento e cancellazione <strong>di</strong> immag<strong>in</strong><strong>in</strong>el catalogo e permette la def<strong>in</strong>izione dell’<strong>in</strong>terrogazione, la suaesecuzione e la visualizzazione dei risultati.1 La Cimage è una libreria sviluppata da Alejandro Aguilar Sierra ed è <strong>di</strong>sponibile all’<strong>in</strong><strong>di</strong>rizzo:http://web.ukonl<strong>in</strong>e.co.uk/julian.smart/code/cimage/cimage.zip


IIII8.4 La libreria CImage. 1498.4 La libreria CImage.La CImage è una libreria scritta <strong>in</strong> l<strong>in</strong>guaggio C++ <strong>in</strong> grado <strong>di</strong> gestire immag<strong>in</strong>i<strong>in</strong> formati <strong>di</strong>versi che viene impiegata nella fase <strong>di</strong> visualizzazione dei risultatidell’<strong>in</strong>terrogazione.In questa versione (1.2) la libreria permette <strong>di</strong> leggere e salvare i formati bmp,jpg e png e leggere solamente il formati gif. I meto<strong>di</strong> pr<strong>in</strong>cipali utilizzati dallaclasse per la visualizzazione delle immag<strong>in</strong>i sono:void CImage(void); è il costruttore che permette <strong>di</strong> <strong>in</strong>izializzare unoggetto appartenete alla classe CImage;BOOL ReadFile(const CStr<strong>in</strong>g& filename, <strong>in</strong>timageType); legge un’immag<strong>in</strong>e, dove filename identifica il suonome nel filesystem, e imageType def<strong>in</strong>isce il tipo <strong>di</strong> immag<strong>in</strong>e da leggere.ImageType può assumere i valori CIMAGE FORMAT BMP, CIMAGEFORMAT GIF, CIMAGE FORMAT JPEG, CIMAGE FORMAT PNGoppure -1 che determ<strong>in</strong>a il tipo <strong>di</strong> immag<strong>in</strong>e dall’estensione del file.BOOL Draw(CDC *dc, <strong>in</strong>t dx, <strong>in</strong>t dy, <strong>in</strong>t dw, <strong>in</strong>t dh,<strong>in</strong>t sx, <strong>in</strong>t sy); <strong>di</strong>segna l’immag<strong>in</strong>e letta con ReadFile sul devicecontext puntato da *dc. Il device context è una struttura dati <strong>di</strong> MFC chetiene traccia degli attributi della superficie <strong>di</strong> <strong>di</strong>segno <strong>di</strong> una f<strong>in</strong>estra e<strong>di</strong>noltre realizza l’<strong>in</strong><strong>di</strong>pendenza dal hardware <strong>in</strong>stallato. Gli altri parametrispecificano:dx, dy l’angolo <strong>in</strong> alto a s<strong>in</strong>istra del rettangolo <strong>di</strong> dest<strong>in</strong>azionedell’immag<strong>in</strong>e;dw, dh le <strong>di</strong>mensioni del rettangolo che contiene l’immag<strong>in</strong>e da <strong>di</strong>segnare;sx, sy l’angolo <strong>in</strong> alto a s<strong>in</strong>istra da cui <strong>in</strong>iziare a <strong>di</strong>segnare l’immag<strong>in</strong>e.BOOL Stretch(CDC *dc, <strong>in</strong>t dx, <strong>in</strong>t dy, <strong>in</strong>t dw, <strong>in</strong>tdh, <strong>in</strong>t sx, <strong>in</strong>t sy, <strong>in</strong>t sw, <strong>in</strong>t sh) come la funzioneDraw, solamente che <strong>in</strong> questo caso si possono variare le <strong>di</strong>mensionidell’immag<strong>in</strong>e visualizzata: <strong>in</strong> questo caso sw ed sh rappresentano le<strong>di</strong>mensioni dell’immag<strong>in</strong>e sorgente che possono <strong>di</strong>fferire da quelle delrettangolo da <strong>di</strong>segnare. Questa funzione viene utilizzata dal programmaper creare le versioni m<strong>in</strong>iaturizzate delle immag<strong>in</strong>i appartenenti al risultatodell’<strong>in</strong>terrogazione.


150 Implementazione <strong>di</strong> un IDB tramite QBIC8.5 QbicProg: gestione delle <strong>in</strong>terrogazioni.Il primo passo obbligatorio per l’esecuzione <strong>di</strong> un’<strong>in</strong>terrogazione, ma anche per leoperazioni <strong>di</strong> popolazione del Db, consiste nella apertura <strong>di</strong> un catalogo all’<strong>in</strong>terno<strong>di</strong> un Database.In Figura 8.1 è riportata la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo visualizzata attraverso l’opzione<strong>di</strong> menù apri/crea Catalogo che contiene due caselle <strong>di</strong> testo per specificare ilnome del database ed il relativo catalogo da aprire, nella casella database ècontenuto un Db <strong>di</strong> default.La coppia <strong>di</strong> pulsanti <strong>di</strong> opzione permette <strong>di</strong> def<strong>in</strong>ire la modalità <strong>di</strong> apertura<strong>in</strong> lettura od <strong>in</strong> scrittura (per le query normalmente si apre <strong>in</strong> lettura). Chiudendola f<strong>in</strong>estra tramite il pulsante Ok viene visualizzato il risultato dell’operazione<strong>di</strong> apertura (successo o <strong>in</strong>successo). La seconda operazione necessaria all’ese-Figura 8.1: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’apertura/creazione <strong>di</strong> un nuovo catalogo <strong>in</strong>un Database.cuzione <strong>di</strong> una query consiste nel def<strong>in</strong>ire l’<strong>in</strong>sieme delle feature da utilizzare e lamodalità con cui queste <strong>in</strong>teragiscono nel recupero delle immag<strong>in</strong>i.In Figura 8.2 è riportata la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo visualizzata attraverso l’opzione<strong>di</strong> menù Inserisci feature che contiene una casella <strong>di</strong> riepilogo che permette <strong>di</strong>scegliere le <strong>di</strong>verse tipologie <strong>di</strong> feature implementate da QBIC, una casella <strong>di</strong>testo per specificare il peso da attribuire alla feature nel caso <strong>di</strong> query <strong>di</strong> tipomulti-feature ed una coppia <strong>di</strong> caselle <strong>di</strong> controllo che permettono <strong>di</strong> selezionare lamodalità <strong>di</strong> calcolo della <strong>di</strong>stanza e l’abilitazione della modalità <strong>di</strong> <strong>in</strong>terrogazionemulti-pass. Inf<strong>in</strong>e una coppia <strong>di</strong> pulsanti <strong>di</strong> opzione permette <strong>di</strong> specificare se lafeature viene <strong>in</strong>serita ai f<strong>in</strong>i dell’<strong>in</strong>terrogazione o della popolazione del Db.


8.5 QbicProg: gestione delle <strong>in</strong>terrogazioni. 151Al term<strong>in</strong>e delle operazioni <strong>di</strong> <strong>in</strong>serimento dei parametri della feature premendoOk viene visualizzato il risultato dell’operazione compiuta (feature <strong>in</strong>serita ono con successo) ed un riassunto dei parametri <strong>in</strong>seriti.Per mo<strong>di</strong>ficare i parametri associati ad una feature già <strong>in</strong>serita basta re<strong>in</strong>serirlamo<strong>di</strong>ficando i necessari parametri. Nel caso <strong>in</strong> cui una feature da <strong>in</strong>serire nonsia contenuta all’<strong>in</strong>terno del catalogo aperto viene presentato un messaggio <strong>di</strong> erroredato che l’eventuale <strong>in</strong>terrogazione, su quella feature, non ritornerebbe alcunrisultato. Una f<strong>in</strong>estra analoga a quella <strong>di</strong> Figura 8.2, ma senza la casella <strong>di</strong> testoFigura 8.2: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’<strong>in</strong>serimento <strong>di</strong> una nuova feature nel catalogo.e senza le caselle d’opzione, permette <strong>di</strong> elim<strong>in</strong>are una feature precedentemente<strong>in</strong>serita.Premendo Ok viene visualizzato il risultato dell’operazione eseguita ed unalista delle feature ancora attive, oppure viene visualizzato un messaggio d’errorese la feature da cancellare non è stata precedentemente <strong>in</strong>serita.Un’altra operazione fondamentale per l’esecuzione <strong>di</strong> una <strong>in</strong>terrogazione consistenel def<strong>in</strong>ire un’immag<strong>in</strong>e d’esempio <strong>in</strong> modo da poter recuperare quelle più“simili”.Questa operazione viene effettuata attraverso la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo (Figura 8.3)visualizzata selezionando la voce Seleziona immag<strong>in</strong>e dal menù QBIC Query Dbche contiene un campo casella <strong>di</strong> testo dove specificare, <strong>in</strong> funzione dei pulsanti


152 Implementazione <strong>di</strong> un IDB tramite QBIC<strong>di</strong> opzione, o un valore <strong>di</strong> chiave per un’immag<strong>in</strong>e <strong>in</strong>terna al Db oppure il nome<strong>di</strong> un file per un’immag<strong>in</strong>e esterna.Una <strong>di</strong>scussione a parte richiede la spiegazione del pulsante d’opzione Picker,che permette <strong>di</strong> specificare come immag<strong>in</strong>e d’esempio il Picker che sarà <strong>in</strong>trodottonel Paragrafo 8.7. Anche <strong>in</strong> questo caso premendo Ok viene illustrato ilFigura 8.3: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione dell’immag<strong>in</strong>e d’esempio su cuieseguire la query.risultato dell’operazione (successo o <strong>in</strong>successo), <strong>in</strong> particolare viene visualizzatoun messaggio negativo nel caso che la chiave od il nome del file specificato nonesista.Dopo aver specificato il catalogo da aprire, <strong>in</strong>serito le feature necessariee specificato l’immag<strong>in</strong>e d’esempio è possibile mandare <strong>in</strong> esecuzione l’<strong>in</strong>terrogazioneselezionando la voce esecuzione Query nel menù QBIC QueryDb.Questo comando provoca l’apertura della corrispondente f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo <strong>di</strong>Figura 8.4 che contiene una casella <strong>di</strong> testo con il relativo <strong>di</strong>spositivo <strong>di</strong> <strong>in</strong>cremento/decrementoche permette <strong>di</strong> variare il numero, compreso tra 1 e 100, delleimmag<strong>in</strong>i visualizzate nel risultato dell’<strong>in</strong>terrogazione. Spuntando la casella <strong>di</strong>controllo sottostante è possibile ottenere <strong>in</strong> risposta all’<strong>in</strong>terrogazione un <strong>in</strong>siemecasuale <strong>di</strong> immag<strong>in</strong>i, questa opzione necessita solamente che sia stato aperto uncatalogo nel Database.In questo caso premendo il tasto Ok oltre ad essere visualizzati eventualimessaggi d’errore, causati da un’errata def<strong>in</strong>izione dei parametri delle f<strong>in</strong>estre


8.6 QbicProg: popolazione del Database. 153Figura 8.4: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per l’esecuzione dell’<strong>in</strong>terrogazione.precedenti, vengono visualizzate nella vista corrente le m<strong>in</strong>iature delle immag<strong>in</strong>irecuperate nel numero specificato.Per ogni immag<strong>in</strong>e visualizzata viene fornito il nome e la relativa <strong>di</strong>stanzadall’immag<strong>in</strong>e d’esempio utilizzata nell’<strong>in</strong>terrogazione. Nel caso che il numero<strong>di</strong> immag<strong>in</strong>i ecceda le <strong>di</strong>mensioni della f<strong>in</strong>estra <strong>di</strong> visualizzazione appaionole classiche barre <strong>di</strong> scorrimento che permettono <strong>di</strong> visualizzare le immag<strong>in</strong><strong>in</strong>ascoste.In figura 8.5 sono visualizzate le prime sei immag<strong>in</strong>i ottenute <strong>in</strong>terrogando ilcatalogo ibm33 con l’immag<strong>in</strong>e flower04.jpg utilizzando l’istogramma dei colori.Ri<strong>di</strong>mensionando la f<strong>in</strong>estra le immag<strong>in</strong>i vengono <strong>di</strong>sposte <strong>di</strong>namicamente <strong>in</strong>modo da occupare sempre il m<strong>in</strong>or spazio possibile.8.6 QbicProg: popolazione del Database.Per poter eseguire un’<strong>in</strong>terrogazione bisogna prima <strong>in</strong>serire una serie <strong>di</strong> immag<strong>in</strong><strong>in</strong>el database; questa operazione prende il nome <strong>di</strong> popolazione del Database.In questa fase è possibile sia aggiungere nuove immag<strong>in</strong>i ad un catalogo esistentesia crearne uno nuovo: <strong>in</strong> entrambi i casi è necessario tramite la f<strong>in</strong>estra <strong>di</strong><strong>di</strong>alogo apri/crea Catalogo <strong>in</strong> Figura 8.1 aprire il catalogo e specificare l’opzione<strong>di</strong> apertura <strong>in</strong> scrittura.Analogamente al caso dell’<strong>in</strong>terrogazione bisogna def<strong>in</strong>ire quali tipologie <strong>di</strong>feature verranno estratte per le immag<strong>in</strong>i da <strong>in</strong>serire, questa operazione si effettuasempre attraverso la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo Inserisci feature <strong>in</strong> Figura 8.2 specificandol’opzione “popolazione”. In questo modo è possibile <strong>in</strong>serire le feature anche se


154 Implementazione <strong>di</strong> un IDB tramite QBICFigura 8.5: Risultati dell’<strong>in</strong>terrogazione su flower04.jpg utilizzando l’istogrammadei colori.non sono già presenti nel catalogo, operazione che risulterebbe del tutto <strong>in</strong>utilenel caso <strong>di</strong> un’<strong>in</strong>terrogazione.I valori dei parametri come il peso, l’or<strong>di</strong>ne e la modalità multi-pass sono deltutto <strong>in</strong><strong>in</strong>fluenti ai f<strong>in</strong>i dell’<strong>in</strong>serimento delle immag<strong>in</strong>i nel catalogo. I nomi delleimmag<strong>in</strong>i da <strong>in</strong>serire nel catalogo aperto, per le opzioni <strong>di</strong> feature selezionate,vengono immesse attraverso la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo Inserisci immag<strong>in</strong>i, attivabileattraverso il menù QBIC Popola Db.Questa f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo (Figura 8.6) contiene una coppia <strong>di</strong> caselle <strong>di</strong> testo:nella prima viene <strong>in</strong>serito il percorso nel filesystem che <strong>in</strong><strong>di</strong>vidua la <strong>di</strong>rectorycontenente le immag<strong>in</strong>i, la seconda casella <strong>in</strong>vece permette <strong>di</strong> def<strong>in</strong>ire la listadelle immag<strong>in</strong>i da <strong>in</strong>serire. Questa consiste <strong>in</strong> una serie <strong>di</strong> nomi <strong>di</strong> file con relativicaratteri ‘jolly’ (? e *) separati da almeno uno spazio.La chiave che identifica <strong>in</strong> maniera univoca ogni immag<strong>in</strong>e <strong>in</strong>serita nel catalogodel database è ottenuta estraendo dal percorso completo il nome piùl’estensione del file che lo memorizza.Premendo il pulsante Ok tutte le immag<strong>in</strong>i vengono <strong>in</strong>serite nel catalogo estraendole feature specificate nel passo precedente, se un’immag<strong>in</strong>e da <strong>in</strong>serirenon esiste oppure è <strong>in</strong> un formato non gestito da QBIC viene visualizzato unmessaggio d’errore.Attraverso la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo Elim<strong>in</strong>a Immag<strong>in</strong>e <strong>in</strong> Figura 8.7 dello stessomenù è possibile elim<strong>in</strong>are tutte le feature <strong>di</strong> una data immag<strong>in</strong>e <strong>in</strong>serite <strong>in</strong> uncerto catalogo. Nella casella <strong>di</strong> testo contenuta nella rispettiva f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo


8.7 Esecuzione <strong>di</strong> <strong>in</strong>terrogazioni tramite Picker. 155Figura 8.6: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione delle immag<strong>in</strong>i da <strong>in</strong>serire nelcatalogo.viene <strong>in</strong>serita la chiave dell’immag<strong>in</strong>e da elim<strong>in</strong>are. Premendo Ok è possibilevisualizzare il risultato (successo o <strong>in</strong>successo) dell’operazione <strong>di</strong> cancellazione.Utilizzando la voce Conta <strong>Immag<strong>in</strong>i</strong> del menù QBIC Popola Db <strong>in</strong> Figura 8.8 èpossibile ottenere il numero <strong>di</strong> immag<strong>in</strong>i <strong>in</strong>serite nel catalogo per una data feature.La feature da utilizzare per il calcolo viene def<strong>in</strong>ita attraverso una casella <strong>di</strong> riepilogoche contiene i nomi delle feature gestite dalla versione esistente del programma.Selezionandone una e premendo Ok si visualizza il numero delle immag<strong>in</strong>iper le quali, nella fase <strong>di</strong> popolazione, è stata estratta la feature specificata.Queste sono le funzioni <strong>di</strong> base necessarie alla gestione del Database <strong>di</strong> immag<strong>in</strong>i<strong>di</strong> QBIC che permettono <strong>di</strong> <strong>in</strong>serire, elim<strong>in</strong>are e ricercare le immag<strong>in</strong>i<strong>in</strong>serite. È possibile sviluppare funzioni evolute sia per la fase <strong>di</strong> popolazione cheper quella <strong>di</strong> <strong>in</strong>terrogazione: <strong>in</strong> particolare è possibile def<strong>in</strong>ire <strong>in</strong>terrogazioni attraversoi Picker cioè str<strong>in</strong>ghe <strong>di</strong> testo che def<strong>in</strong>iscono criteri <strong>di</strong> ricerca su una serie<strong>di</strong> zone <strong>di</strong> colore da <strong>in</strong><strong>di</strong>viduare all’<strong>in</strong>terno delle immag<strong>in</strong>i, oppure, per la fase <strong>di</strong>popolazione, è possibile def<strong>in</strong>ire, attraverso opportune maschere b<strong>in</strong>arie, una serie<strong>di</strong> oggetti all’<strong>in</strong>terno delle immag<strong>in</strong>i da cui estrarre un set <strong>di</strong> feature autonome.8.7 Esecuzione <strong>di</strong> <strong>in</strong>terrogazioni tramite Picker.Uno strumento molto potente, per l’esecuzione <strong>di</strong> <strong>in</strong>terrogazioni visuali, fornitodal sistema QBIC, è il “Color Picker”. Questo permette <strong>di</strong> specificare l’immag<strong>in</strong>e


156 Implementazione <strong>di</strong> un IDB tramite QBICFigura 8.7: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izione della chiave dell’ immag<strong>in</strong>e daelim<strong>in</strong>are dal catalogo.<strong>di</strong> query, nella versione attuale, def<strong>in</strong>endo la posizione <strong>di</strong> una serie <strong>di</strong> rettangoli <strong>di</strong>colore omogeneo.La particolarità del sistema è che non è necessario specificare tutti i rettangoliche compongono l’immag<strong>in</strong>e, ma solamente le parti che <strong>in</strong>teressano maggiormente,mentre quelle lasciate <strong>in</strong> bianco vengono semplicemente trascurate. QBICmemorizza il Picker attraverso una str<strong>in</strong>ga <strong>di</strong> testo avente la seguente struttura:uDwi<strong>di</strong>th,height:Rulx,uly,rwidth,rheight,R,G,B:Ruvudove:D specifica l’area <strong>di</strong> <strong>di</strong>segno def<strong>in</strong>ita attraverso lunghezza e larghezza e conl’angolo <strong>in</strong> alto a s<strong>in</strong>istra nell’orig<strong>in</strong>e;: è il separatore che delimita i vari rettangoli che si vogliono utilizzare comeesempio ai f<strong>in</strong>i della def<strong>in</strong>izione dell’<strong>in</strong>terrogazione;R specifica un rettangolo con l’angolo superiore s<strong>in</strong>istro <strong>di</strong> coor<strong>di</strong>nate ulx e uly,lungo rwi<strong>di</strong>th e largo rheight con il colore def<strong>in</strong>ito nello spazio RGB dai tre<strong>in</strong>teri R,G,B.Nel caso <strong>in</strong> cui venga <strong>in</strong>serito più <strong>di</strong> un rettangolo, l’or<strong>di</strong>ne <strong>di</strong> <strong>in</strong>serimentodeterm<strong>in</strong>a la modalità <strong>di</strong> sovrapposizione, <strong>in</strong> particolare i rettangoli successivi alprimo vanno a coprire, se sovrapposti, i precedenti. Il programma Qbicprog.exeimplementa visivamente l’<strong>in</strong>serimento dei rettangoli all’<strong>in</strong>terno del Picker. All’<strong>in</strong>ternovoce <strong>di</strong> menù Color Picker sono contenuti tutti gli strumenti necessari alladef<strong>in</strong>izione del Picker, che viene visualizzato all’<strong>in</strong>terno della f<strong>in</strong>estra attiva.


8.7 Esecuzione <strong>di</strong> <strong>in</strong>terrogazioni tramite Picker. 157Figura 8.8: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per il calcolo del numero <strong>di</strong> immag<strong>in</strong>i presenti peruna data feature.Tramite la voce Dimensione Picker del precedente menù si accede alla f<strong>in</strong>estra<strong>di</strong> <strong>di</strong>alogo <strong>di</strong> Figura 8.9 che contiene due caselle <strong>di</strong> testo al cui <strong>in</strong>terno è possibilespecificare le <strong>di</strong>mensioni del picker (larghezza e altezza) <strong>in</strong> pixel.Premendo Ok viene <strong>di</strong>segnato un rettangolo col bordo <strong>di</strong> colore nero che delimital’area all’<strong>in</strong>terno della quale è possibile <strong>in</strong>serire i rettangoli che def<strong>in</strong>isconol’<strong>in</strong>terrogazione.Il passo prelim<strong>in</strong>are all’<strong>in</strong>serimento <strong>di</strong> un qualunque rettangolo all’<strong>in</strong>terno dell’area<strong>di</strong> <strong>di</strong>segno del Picker consiste nel def<strong>in</strong>ire la tonalità <strong>di</strong> colore che il rettangolodeve assumere. QBIC richiede che il colore sia def<strong>in</strong>ito attraverso la ternadello spazio RGB e l’immissione del colore selezionato avviene attraverso laf<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo Seleziona colore dal menu color Picker.Questa f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo (Figura 8.10) contiene tre barre <strong>di</strong> avanzamento etre caselle <strong>di</strong> testo una per ogni canale <strong>di</strong> colore nello spazio RGB.Spostando ognuna delle barre <strong>di</strong>sponibili si va ad agire sulla rispettiva casella<strong>di</strong> testo che riporta il valore <strong>in</strong>tero compreso tra 0 e 255 assegnato a ciascun canale<strong>di</strong> colore.Se la f<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo non viene aperta o viene premuto Cancel il coloreassegnato <strong>di</strong> default è il bianco.Dopo aver selezionato un colore è necessario <strong>di</strong>segnare un rettangolo e ciòavviene tramite la voce <strong>di</strong> menù Inserisci Rettangolo che non apre nessuna f<strong>in</strong>estra<strong>di</strong> <strong>di</strong>alogo, ma permette <strong>di</strong> selezionare tramite il mouse i due vertici su lati oppostidel rettangolo da <strong>in</strong>serire.La selezione avviene premendo il tasto s<strong>in</strong>istro del mouse <strong>in</strong> corrispondenza


158 Implementazione <strong>di</strong> un IDB tramite QBICFigura 8.9: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la def<strong>in</strong>izioni delle <strong>di</strong>mensioni dell’area <strong>di</strong><strong>di</strong>segno del Picker.del punto che identifica il vertice, avendo cura <strong>di</strong> <strong>in</strong>serire prima quello <strong>in</strong> alto as<strong>in</strong>istra e poi l’altro <strong>in</strong> basso a destra del rettangolo.Dopo aver <strong>di</strong>segnato i rettangoli, all’<strong>in</strong>terno del picker, necessari alladef<strong>in</strong>izione dei criteri che devono rispettare i risultati dell’<strong>in</strong>terrogazione occorre,come nei casi precedenti, <strong>in</strong>formare il sistema che si <strong>in</strong>tende impiegare il picker.Ciò avviene attraverso la f<strong>in</strong>estra <strong>di</strong> Figura 8.3descritta nel Paragrafo 8.5 settandoil pulsante <strong>di</strong> opzione Picker.Premendo Ok viene visualizzata la str<strong>in</strong>ga utilizzata da QBIC perrappresentare il picker nella fase <strong>di</strong> <strong>in</strong>terrogazione.8.8 Modalità <strong>di</strong> compilazione del co<strong>di</strong>ce.In questo paragrafo sono riportati i riferimenti per recuperare il co<strong>di</strong>ce, <strong>in</strong> partereperito presse terze parti, utilizzato per produrre il programma Qbicprog.exe.Il co<strong>di</strong>ce prodotto <strong>in</strong> questa tesi è <strong>di</strong>sponibile <strong>di</strong>rettamente all’<strong>in</strong><strong>di</strong>rizzo ftp delserver del DSI:ftp.sparc20.dsi.unimo.itNel <strong>di</strong>rettorio:/export/home/progetti.comuni/tesi/torricel/progIn particolare nei seguenti sotto <strong>di</strong>rettori sono contenuti file relativi a:


8.8 Modalità <strong>di</strong> compilazione del co<strong>di</strong>ce. 159Figura 8.10: F<strong>in</strong>estra <strong>di</strong> <strong>di</strong>alogo per la selezione del colore nello spazio RGB./Cimage Libreria <strong>di</strong> classi per la visualizzazione <strong>in</strong> una f<strong>in</strong>estraW<strong>in</strong>dows delle immag<strong>in</strong>i <strong>in</strong> versione m<strong>in</strong>iaturizzata;/jpeg Librerie <strong>di</strong> classi per l’apertura ed il salvataggio delleimmag<strong>in</strong>i <strong>in</strong> formato compresso jpg;/png Librerie <strong>di</strong> classi per l’apertura ed il salvataggio delleimmag<strong>in</strong>i <strong>in</strong> formato png;/zlib Librerie per la gestione della compressione nel formato png;/Qbic Librerie <strong>di</strong> classe per la gestione delle funzionalità <strong>di</strong> <strong>in</strong>terrogazionee popolazione del Database <strong>di</strong> immag<strong>in</strong>i <strong>di</strong>QBIC;/Qbicprog File del programma <strong>in</strong> Visual C++ 5.0, che ho sviluppato,contenente le primitive MFC per la realizzazionedell’ambiente a f<strong>in</strong>estre utilizzato nella Tesi.In particolare nel <strong>di</strong>rettorio /Qbic sono contenute i sotto <strong>di</strong>rettori /lib per le


160 Implementazione <strong>di</strong> un IDB tramite QBIClibrerie, /<strong>in</strong>clude per i file <strong>in</strong>clude, /dll contenente le librerie a collegamento <strong>di</strong>namicoed il file QbicWrap.cpp contente il file sorgente delle classi <strong>di</strong> più altolivello.Per ottenere l’eseguibile è necessario <strong>di</strong>sporre dell’ambiente <strong>di</strong> programmazioneMicrosoft Visual C++ 5.0 e copiare i file contenuti nel <strong>di</strong>rettorio /prog apartire da:tesiˆ progˆC:ˆAll’ <strong>in</strong>terno dei <strong>di</strong>rettori /cimge, /jpeg, /png, /zlib sono presenti i file <strong>di</strong> progettocon estensione *.dsw che permettono <strong>di</strong> settare tutti i parametri da utilizzarenella compilazione per ottenere le librerie necessarie al funzionamento delprogramma QbicProg.exe.Per i file nel sotto <strong>di</strong>rettorio /Qbic non sono forniti i file sorgenti però sono<strong>di</strong>sponibili le librerie già compilate ed i file dll che devono essere copiati nel<strong>di</strong>rettorio contenete l’eseguibile f<strong>in</strong>ale.I file nel sotto<strong>di</strong>rettorio /qbicprog contengono i file necessari alla compilazionedel eseguibile sviluppato <strong>in</strong> questa tesi, aprendo il file QbicProg.dsw si settano iparametri per la compilazione ed il l<strong>in</strong>k <strong>di</strong> tutte le librerie utilizzate.Nel file <strong>di</strong> <strong>in</strong>clude global.h sono <strong>in</strong>seriti i riferimenti ad una serie <strong>di</strong> percors<strong>in</strong>el filesystem per recuperare i dati sulle immag<strong>in</strong>i e sulle feature estratte: se sidecide <strong>di</strong> mo<strong>di</strong>ficare qualche percorso bisogna riflettere i cambiamenti <strong>in</strong> questofile.All’<strong>in</strong>terno del sottoalbero del <strong>di</strong>rettorio /qbicimage sono contenute sotto<strong>di</strong>rettoriche memorizzano i file delle immag<strong>in</strong>i su cui estrarre le feature che QBICsi occupa <strong>di</strong> memorizzare come sotto<strong>di</strong>rettori del <strong>di</strong>rettorio /qbicdata.I file contenenti i capitoli della presente tesi realizzata attraverso il programma<strong>di</strong> composizione tipografica L A TEX sono <strong>di</strong>sponibili sempre sul server nel<strong>di</strong>rettorio:/export/home/progetti.comuni/tesi/torricel/texLa versione demo del Database QBIC è nel file qbnt 3.zip, il pacchettocompleto <strong>di</strong> Cimage è <strong>in</strong> cimage.zip e il Database <strong>di</strong> immag<strong>in</strong>i W<strong>in</strong>dSurf è <strong>in</strong>projimage.zip tutti nel <strong>di</strong>rettorio /prog.


Capitolo 9Risultati sperimentali con QBIC eW<strong>in</strong>dSurfIn questo capitolo vengono analizzate, confrontate e <strong>di</strong>scusse le prestazioni deimotori <strong>di</strong> ricerca QBIC e W<strong>in</strong>dSurf eseguendo una serie <strong>di</strong> test pratici sulleversioni <strong>di</strong>sponibili.In particolare, mentre per il primo è <strong>di</strong>sponibile una versione <strong>di</strong>mostrativaprelevabile su Internet, per il secondo <strong>in</strong>vece si <strong>di</strong>spone del software completosviluppato dall’Università <strong>di</strong> Bologna.9.1 Modalità <strong>di</strong> valutazione.Sebbene siano state def<strong>in</strong>ite misure per la valutazione dell’efficacia e dell’efficienzadei sistemi <strong>di</strong> ricerca basati sul contenuto (Ve<strong>di</strong> Paragrafo 1.4), <strong>in</strong> realtà nonesistono criteri oggettivi <strong>in</strong> grado <strong>di</strong> valutare, <strong>in</strong> maniera adeguata, la bontà deirisultati ottenuti.In generale la bontà del risultato <strong>di</strong>pende dalle valutazioni soggettive dell’utente.Da quanto visto <strong>in</strong> precedenti lavori <strong>in</strong> ambito CBVQ le valutazioni fattesono <strong>di</strong> tipo ‘comparativo’, ovvero si cerca <strong>di</strong> stimare la bontà relativamente adaltri sistemi che adottano tecniche <strong>di</strong>fferenti per l’estrazione delle feature.Lo scopo delle valutazioni è determ<strong>in</strong>are quali benefici <strong>in</strong>troduce l’adozione <strong>di</strong>strumenti per l’<strong>analisi</strong> tempo/frequenza (cioè quelli adottati da W<strong>in</strong>dSurf) rispettoai più tra<strong>di</strong>zionali strumenti basati sulla daterm<strong>in</strong>azione degli istogrammi (cioèquelli adottati da QBIC).Le valutazioni effettuate mirano pr<strong>in</strong>cipalmente a comparare la bontà dei risultatiottenuti trascurando totalmente il confronto tra i tempi necessari all’estrazionedelle feature ed al confronto delle stesse durante l’esecuzione delle <strong>in</strong>terrogazioni.Infatti il sistema W<strong>in</strong>dSurf sotto questo aspetto risulta nettamente peggiore sia


162 Risultati sperimentali con QBIC e W<strong>in</strong>dSurfper il fatto che le tipologie <strong>di</strong> feature da estrarre sono più complesse da calcolarerispetto agli istogrammi, sia perché allo stato attuale del progetto non è ancorastata implementata alcuna politica <strong>di</strong> <strong>in</strong><strong>di</strong>cizzazione per il recupero delle featuredurante la fase <strong>di</strong> <strong>in</strong>terrogazione del database.In particolare attualmente viene impiegata la scansione sequenziale, ma si stavalutando l’<strong>in</strong>troduzione <strong>di</strong> un’organizzazione <strong>di</strong> più alto livello basata sugli alberimetrici [?].9.2 Analisi delle capacità <strong>di</strong> <strong>in</strong>terrogazione.La versione “demo” <strong>di</strong> QBIC, ottenuta al sito della IBM, contiene una serie <strong>di</strong>limitazioni: <strong>in</strong> particolare non sono <strong>in</strong>cluse le funzioni necessarie alla gestionedegli oggetti che QBIC può estrarre <strong>in</strong> maniera semi-automatica attraverso l’<strong>in</strong>terazionecon l’utente. Ogni oggetto estratto viene così trattato alla stessa manieradelle immag<strong>in</strong>i calcolando tutte le feature implementate e permettendo il recuperoda parte delle <strong>in</strong>terrogazioni.Nella versione “demo” è possibile effettuare le seguenti <strong>in</strong>terrogazioni:Istogramma dei colori: è possibile recuperare 12 immag<strong>in</strong>i alla volta <strong>in</strong> base allasimilitu<strong>di</strong>ne dell’istogramma dei colori;Disposizione: l’immag<strong>in</strong>e è scomposta attraverso la sovrapposizione <strong>di</strong> unagriglia con un numero fisso <strong>di</strong> celle all’<strong>in</strong>terno delle quali vengono estrattefeature sul colore,come il colore me<strong>di</strong>o, che viene confrontato, attraversole solite funzioni <strong>di</strong> <strong>di</strong>stanza, con le feature della corrispondente cellanell’immag<strong>in</strong>e <strong>di</strong> query;Texture: si recuperano via via lotti <strong>di</strong> 12 immag<strong>in</strong>i più simili <strong>in</strong> base alle featuresulla tessitura;Ibrido: si recuperano le immag<strong>in</strong>i attraverso una query <strong>di</strong> tipo multi–feature considerando,per la determ<strong>in</strong>azione della similitu<strong>di</strong>ne, sia le feature sul coloreche sulla tessitura.In W<strong>in</strong>dSurf, <strong>di</strong>sponibile <strong>in</strong> versione “completa”, <strong>in</strong>vece è possibile specificareuna serie <strong>di</strong> parametri per l’estrazione delle feature, come il tipo ed il livello <strong>di</strong>trasformata Wavelet, lo spazio <strong>di</strong> colore da utilizzare nella trasformazione e lametrica impiegata dall’algoritmo K–Means per l’estrazione delle regioni.


9.3 Descrizione del Test-set. 1639.3 Descrizione del Test-set.Le immag<strong>in</strong>i impiegate nella valutazione delle prestazioni dei due sistemi (W<strong>in</strong>d-Surf vs. QBIC) sono state estratte dal CD-Rom numero 7 appartenente ad IMSIPHOTOS 1 ; le immag<strong>in</strong>i contenute <strong>in</strong> questo CD-Rom hanno <strong>di</strong>mensioni variabili‰‹ŠU MŒŠŽ,U tra U,U%M ‰,UU e e sono organizzate <strong>in</strong> classi <strong>di</strong> soggetti semanticamenteomogenee.Per semplificare le valutazioni abbiamo creato un Test–Set <strong>di</strong> circa 570immag<strong>in</strong>i ottenute selezionandone, <strong>in</strong> maniera casuale, un numero variabileall’<strong>in</strong>terno <strong>di</strong> ciascun raggruppamento semantico presente nel CD-Rom.I Test–Set utilizzati sono elaborati da W<strong>in</strong>dSurf specificando come classe <strong>di</strong>trasformata la Wavelet <strong>di</strong> Daubechies 11 iterata tre volte sullo spazio <strong>di</strong> coloreHSV ed applicando per il Cluster<strong>in</strong>g la metrica <strong>di</strong> Mahalanobis.9.4 Prove e Risultati.Le prove riportate <strong>in</strong> questo paragrafo sono il sotto<strong>in</strong>sieme più significativo <strong>di</strong> unpiù vasto <strong>in</strong>sieme <strong>di</strong> test a cui sono stati sottoposti entrambi i sistemi.Come prima prova <strong>in</strong>terroghiamo entrambi i sistemi fornendo un’immag<strong>in</strong>e <strong>di</strong>query rappresentante la ban<strong>di</strong>era americana (301200.jpg). All’<strong>in</strong>terno del Test–setsono presenti ben 9 immag<strong>in</strong>i che rappresentano una ban<strong>di</strong>era americana completa,cioè con le strisce bianche e rosse e le stelle bianche sullo sfondo blu, riprese daangolazioni <strong>di</strong>verse, con illum<strong>in</strong>azioni <strong>di</strong>verse e con <strong>in</strong> trasparenza altre immag<strong>in</strong>i.Inoltre sono presenti ulteriori 6 immag<strong>in</strong>i rappresentanti altrettanti particolaridella ban<strong>di</strong>era.Nelle Tabelle 9.1 e 9.2 sono riportate le m<strong>in</strong>iature delle prime 12 immag<strong>in</strong>iappartenenti al risultato dell’<strong>in</strong>terrogazione sui sistemi QBIC e W<strong>in</strong>dSurf.Come si può osservare <strong>in</strong> Tabella 9.1, i risultati migliori si ottengono utilizzandoper l’<strong>in</strong>terrogazione l’istogramma dei colori, che permette <strong>di</strong> recuperaresolamente 4 immag<strong>in</strong>i valide, mentre impiegando l’opzione riguardante la <strong>di</strong>stribuzionespaziale dei colori si ottengono risultati peggiori per il fatto che l’immag<strong>in</strong>e,presentando una <strong>di</strong>namica dei colori fortemente variabile, non trova giovamentodalla sud<strong>di</strong>visione <strong>in</strong> celle. I risultati ottenuti con W<strong>in</strong>dSurf <strong>in</strong> Tabella9.2 sono migliori <strong>di</strong> quelli <strong>di</strong> QBIC per il fatto che vengono recuperate ben 6immag<strong>in</strong>i contro le 4 <strong>di</strong> QBIC.In questa <strong>in</strong>terrogazione come immag<strong>in</strong>e <strong>di</strong> query impieghiamo un’immag<strong>in</strong>eche rappresenta un aeroplano ad elica <strong>di</strong> colore rosso su sfondo azzurro ripresoda <strong>di</strong>verse angolazioni(B10374.jpg). Nel Test–Set precedentemente def<strong>in</strong>ito sonopresenti 9 immag<strong>in</strong>i valide come risultato per questa query.1 IMSI Master Photos 50.000 <strong>di</strong>sponibili all’<strong>in</strong><strong>di</strong>rizzo Internet: http://www.imsisoft.com


164 Risultati sperimentali con QBIC e W<strong>in</strong>dSurfNelle Tabelle 9.3 e 9.4sono riportate le m<strong>in</strong>iature delle prime 12 immag<strong>in</strong>iappartenenti al risultato dell’<strong>in</strong>terrogazione sui sistemi QBIC e W<strong>in</strong>dSurf.In questo caso, eseguendo l’<strong>in</strong>terrogazione sul motore <strong>di</strong> ricerca QBIC, si recuperano,<strong>in</strong> Tabella 9.3, ben 5 immag<strong>in</strong>i valide ottenute utilizzando l’opzione<strong>di</strong> query riguardante la <strong>di</strong>sposizione spaziale <strong>di</strong> zone <strong>di</strong> colore, che questa voltaottiene risultati migliori, al contrario della precedente, rispetto all’utilizzo dell’istogramma.Altre 4 immag<strong>in</strong>i contenute nella risposta presentano un’elevatapredom<strong>in</strong>anza <strong>di</strong> tonalità <strong>di</strong> colore vic<strong>in</strong>e al rosso.La motivazione <strong>di</strong> questo comportamento è probabilmente dovuta al fatto che,<strong>in</strong> questo caso, sono presenti solo due zone <strong>di</strong> colore rilevanti: la zona centralerappresentante l’aeroplano e lo sfondo azzurro.Il risultati ottenuti con W<strong>in</strong>dSurf <strong>in</strong> Tabella 9.4 sono migliori <strong>di</strong> quelli <strong>di</strong> QBICper il fatto che vengono recuperate ben 8 immag<strong>in</strong>i contro le 5 <strong>di</strong> QBIC.In quest’ultima <strong>in</strong>terrogazione utilizziamo un’immag<strong>in</strong>e d’esempio che rappresentaun <strong>di</strong>rigibile della II guerra mon<strong>di</strong>ale. Questo è, rispetto ai precedenti, uncaso particolare perché utilizza un’immag<strong>in</strong>e a toni <strong>di</strong> grigio.Nel Test–Set precedentemente def<strong>in</strong>ito sono presenti 8 immag<strong>in</strong>i valide. NelleTabelle 9.5 e 9.6 sono riportate le m<strong>in</strong>iature delle prime 12 immag<strong>in</strong>i appartenential risultato dell’<strong>in</strong>terrogazione sui sistemi QBIC e W<strong>in</strong>dSurf.Questa <strong>in</strong>terrogazione eseguita da QBIC, utilizzando la <strong>di</strong>stribuzione dellezone <strong>di</strong> colore, restituisce le immag<strong>in</strong>i <strong>in</strong> Tabella 9.5 e mette <strong>in</strong> luce i profon<strong>di</strong>limiti del sistema nella gestione delle immag<strong>in</strong>i a toni <strong>di</strong> grigio, <strong>in</strong>fatti, <strong>in</strong> questocaso, vengono recuperate solamente 3 immag<strong>in</strong>i <strong>di</strong> molto <strong>in</strong>feriori alla totalità <strong>di</strong>quelle presenti nel Data-set.È da notare che, pur essendo <strong>in</strong> numero ridotto le immag<strong>in</strong>i a toni <strong>di</strong> grigiopresenti nel data set, il sistema ha recuperato molte immag<strong>in</strong>i a colori, il che portaa pensare ad un’errata gestione <strong>di</strong> questa tipologia <strong>di</strong> immag<strong>in</strong>i.Al contrario, il risultato ottenuto da W<strong>in</strong>dSurf <strong>in</strong> Tabella 9.6 è ottimo perchévengono recuperate tutte e 8 le immag<strong>in</strong>i valide presenti nel Test–Set e l’unicaimmag<strong>in</strong>e a colori <strong>in</strong>clusa ha predom<strong>in</strong>anti sfumature <strong>di</strong> grigio.


9.4 Prove e Risultati. 165301200.jpg B10373.jpg 301500.jpg 301000.jpgB10372.jpg B35772.jpg B10370.jpg B35770.jpg300900.jpg B43947.jpg B43946.jpg B43119.jpgTabella 9.1: Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e 301200.jpg.301200.jpg 301500.jpg 301000.jpg 300900.jpg301900.jpg B10370.jpg 301600.jpg B11151.jpgB42265.jpg 665700.jpg B11153.jpg B41889.jpgTabella 9.2: Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>e 301200.eps.


166 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


9.4 Prove e Risultati. 167B10374.jpg B10372.jpg B10373.jpg B10371.jpgB10370.eps B9966.jpg B9888.jpg B47697.jpgB9887.eps B35730.jpg B9893.jpg 680000.jpgTabella 9.3: Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e B10374.jpg.B10374.jpg B10367.jpg B10372.jpg B10368.jpgB43948.jpg B41889.jpg B43949.jpg B10373.jpgB10371.jpg B9966.jpg B103746.jpg B10370.jpgTabella 9.4: Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>e B10374.jpg.


168 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


9.4 Prove e Risultati. 169B13870.jpg B43514.jpg B13973.jpg B13867.jpgB13868.jpg B9909.jpg B30314.jpg B10580.jpgB41492.jpg B10389.jpg 667100.jpg 571100.jpgTabella 9.5: Risultati ottenuti <strong>in</strong>terrogando QBIC sull’immag<strong>in</strong>e B13870.jpg.B13870.jpg B13869.jpg B13973.jpg B13873.jpgB13867.jpg B13868.jpg B13872.jpg B13874.jpgB35320.jpg B13871.jpg B13799.jpg B12437.jpgTabella 9.6: Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sull’immag<strong>in</strong>e B13870.eps.


170 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


9.4 Prove e Risultati. 171In tutte le query eseguite l’opzione fornita da QBIC riguardante le tessitureha fornito risultati deludenti, recuperando un numero <strong>di</strong> immag<strong>in</strong>i valide semprem<strong>in</strong>ore rispetto a quelle della altre opzioni <strong>di</strong>sponibili, mentre la modalità <strong>di</strong><strong>in</strong>terrogazione ibrida riportava gli stessi risultati <strong>di</strong> quella sull’istogramma.Nella maggior parte dei casi <strong>in</strong> QBIC l’impiego dell’opzione riguardante la<strong>di</strong>stribuzione spaziale delle zone <strong>di</strong> colore ha ottenuto risultati migliori rispettoal più semplice istogramma, anche se fatica a competere con l’algoritmo <strong>di</strong>estrazione automatica <strong>di</strong> regioni implementato da W<strong>in</strong>dSurf.Al f<strong>in</strong>e <strong>di</strong> valutare più approfon<strong>di</strong>tamente le potenzialità dei due algoritmi nelriconoscimento delle tessiture creiamo un nuovo Test–Set contenente una serie <strong>di</strong>campioni <strong>di</strong> tessitura prelevati dalla collezione Brodatz 2 .Brodatz <strong>in</strong> [?] ha raccolto <strong>in</strong> una pubblicazione cent<strong>in</strong>aia <strong>di</strong> immag<strong>in</strong>i rappresentantile tessiture <strong>di</strong> elementi naturali e manufatti umani che sono impiegati datutti gli sviluppatori per testare le potenzialità dei propri sistemi.Brodatz TextureNome File Contenuto Cod.1101.jpg Erba (D9)1102.jpg Corteccia (D12)1103.jpg Paglia (D15)1104.jpg Tessuto a sp<strong>in</strong>a <strong>di</strong> pesce (D15)1105.jpg Tessuto <strong>di</strong> lana (D19)1106.jpg Pelle <strong>di</strong> vitello pressata (D24)1107.jpg Sabbia <strong>di</strong> mare (D29)1108.jpg Acqua (D38)1109.jpg Segatura (D68)1110.jpg Raffia (D84)1111.jpg Pelle <strong>di</strong> c<strong>in</strong>ghiale (D92)1112.jpg Muro <strong>di</strong> mattoni (D94)1123.jpg Bolle <strong>di</strong> sapone (D103)Tabella 9.7: Descrizione del contenuto <strong>di</strong> alcune tessiture contenute nel secondoTest–Set.In Tabella 9.7 sono riportate, accanto ai nomi dei file contenenti i campioni<strong>di</strong> tessitura, le relative descrizioni e la catalogazione <strong>di</strong> Brodatz per alcune delleimmag<strong>in</strong>i presenti nel Data–Set creato.Per ognuna delle tessiture presenti nel Data–Set <strong>in</strong>iziale, ai f<strong>in</strong>i <strong>di</strong> testare lecapacità <strong>di</strong> recupero dei sistemi QBIC e W<strong>in</strong>dSurf, sono state <strong>in</strong>serite le versioni2 reperibili all’<strong>in</strong><strong>di</strong>rizzo: sipi.usc.edu/services/database/Database.html


172 Risultati sperimentali con QBIC e W<strong>in</strong>dSurfruotate rispettivamente <strong>di</strong> 90 e 180 gra<strong>di</strong>, quelle con contrasto aumentato del 30%e lum<strong>in</strong>osità aumentata dal 20% (identificate nel nome del file dai suffissi r90,r180, C30 e B20 rispettivamente).Come primo test consideriamo l’immag<strong>in</strong>e rappresentante una corteccia d’albero(1102.jpg) e sottoponiamola ad entrambi i sistemi da analizzare specificandoper QBIC l’opzione <strong>di</strong> query riguardante la tessitura.Nelle Tabelle 9.8 e 9.9 sono riportati le prime 8 immag<strong>in</strong>i su 12 del risultatodell’<strong>in</strong>terrogazione sul file 1102.jpg sui sistemi QBIC e W<strong>in</strong>dSurf rispettivamente.In questo caso QBIC recupera solamente 3 immag<strong>in</strong>i, <strong>in</strong> particolare oltreall’immag<strong>in</strong>e utilizzata nella query viene recuperata l’immag<strong>in</strong>e ruotata U’‘ <strong>di</strong>rispetto all’orig<strong>in</strong>ale e quella con il contrasto aumentato del 30% mentre lerimanenti immag<strong>in</strong>i rappresentano erba e bolle <strong>di</strong> sapone.W<strong>in</strong>dsurf <strong>in</strong>vece recupera 4 tessiture, oltre a quelle recuperate da QBIC nellastessa <strong>in</strong>terrogazione viene recuperata anche l’immag<strong>in</strong>e ruotata J”“,U ‘ <strong>di</strong> rispettoall’orig<strong>in</strong>ale e le rimanenti 4 appartengono tutte alla categoria del tessuto <strong>di</strong> lana.A conferma dei risultati ottenuti nel test precedente consideriamo l’immag<strong>in</strong>erappresentante erba (1101.jpg) e sottoponiamola ad entrambi i sistemi daanalizzare specificando per QBIC l’opzione <strong>di</strong> query riguardante la tessitura.Nelle Tabelle 9.10 e 9.11 sono riportate le prime 8 immag<strong>in</strong>i su 12 del risultatodell’<strong>in</strong>terrogazione sul file 1101.jpg rispettivamente sui sistemi QBIC e W<strong>in</strong>dSurf.


9.4 Prove e Risultati. 1731102.jpg 1102B20.jpg 1102r180.jpg 1113r90.jpg1101B20.jpg 1101.jpg 1101r180.jpg 1113B20.jpgTabella 9.8: Risultati ottenuti <strong>in</strong>terrogando QBIC sulla texture 1102.jpg.1102.jpg 1102r90.jpg 1102r180.jpg 1105C30.jpg1102C30.jpg 1105.jpg 1105r90.jpg 1105r180.jpgTabella 9.9: Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sulla texture 1102.jpg.


174 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


9.4 Prove e Risultati. 1751101.jpg 1101B20.jpg 1101r180.jpg 1102r180.jpg1102.jpg 1102B20.jpg 1103C30.jpg 1113r90.jpgTabella 9.10: Risultati ottenuti <strong>in</strong>terrogando QBIC sulla texture 1101.jpg.1101.jpg 1101r90.jpg 1101r180.jpg 1101C30.jpg1402.jpg 1407.jpg 1106C30.jpg 1113.jpgTabella 9.11: Risultati ottenuti <strong>in</strong>terrogando W<strong>in</strong>dSurf sulla texture 1101.jpg.


176 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


9.5 Conclusioni. 177Anche <strong>in</strong> questo caso QBIC Tabella 9.10 recupera solo 3 immag<strong>in</strong>i valide,cioè l’immag<strong>in</strong>e orig<strong>in</strong>ale, quella con la lum<strong>in</strong>osità <strong>in</strong>crementata del 20% e quellaruotata <strong>di</strong> J”“,U ‘ rispetto all’orig<strong>in</strong>ale.W<strong>in</strong>dSurf, d’altro canto, recupera 4 immag<strong>in</strong>i valide comprendenti entrambele versioni ruotate e quella con il contrasto <strong>in</strong>crementato del 30%.W<strong>in</strong>dsurf <strong>in</strong> entrambe le <strong>in</strong>terrogazioni recupera sempre le tessiture ruotate evidenziandola proprietà della trasformata Wavelet <strong>di</strong> essere praticamente <strong>in</strong>varianterispetto alle rotazioni.9.5 Conclusioni.Questa serie <strong>di</strong> test ci porta a concludere, almeno <strong>in</strong> prima <strong>analisi</strong>, la superioritàdegli algoritmi <strong>di</strong> W<strong>in</strong>dSurf rispetto a QBIC nel recupero delle immag<strong>in</strong>idei Data–Set creati. Ciò determ<strong>in</strong>a la superiorità dei sistemi <strong>di</strong> <strong>analisi</strong> tempo/frequenzarispetto a quelli basati sugli istogrammi o derivati da essi, giustificandola maggiore complessità delle operazioni <strong>di</strong> estrazione delle feature el’aumento proporzionale dei tempi <strong>di</strong> elaborazione.Per ciò che riguarda le tessiture <strong>in</strong>vece, la <strong>di</strong>fferenza <strong>di</strong> prestazioni sembraessere m<strong>in</strong>ore, ma sempre a favore <strong>di</strong> W<strong>in</strong>dSurf. Il motivo <strong>di</strong> questo risultatoè da ricercare nell’utilizzo, da parte <strong>di</strong> QBIC, dell’ algoritmo <strong>di</strong> Tamura, che èmolto primitivo (estrazione <strong>di</strong> un numero ridotto <strong>di</strong> coefficienti) e datato (’78)e nell’impossibilità da parte <strong>di</strong> W<strong>in</strong>dSurf <strong>di</strong> sfruttare le potenzialità dell’algoritmo<strong>di</strong> estrazione delle regioni, visto che le tessiture sono quasi sempre nonclusterizzabili.


178 Risultati sperimentali con QBIC e W<strong>in</strong>dSurf


ConclusioniL’utilizzo <strong>di</strong> strumenti per l’esecuzione <strong>di</strong> <strong>in</strong>terrogazioni visuali pare la giustasoluzione al problema del reperimento corretto ed efficiente delle immag<strong>in</strong>i conle caratteristiche desiderate.L’<strong>analisi</strong> e la sperimentazione dei prototipi software attualmente <strong>di</strong>sponibiliper l’esecuzione <strong>di</strong> <strong>in</strong>terrogazioni visuali hanno <strong>di</strong>mostrato <strong>di</strong>screte capacità nelrecupero delle immag<strong>in</strong>i desiderate.In questi prototipi le tecnologie utilizzate nell’esecuzione delle <strong>in</strong>terrogazion<strong>in</strong>on sono ancora pienamente consolidate, <strong>in</strong>fatti ciascun sistema sviluppato e realmenteimplementato adotta modalità <strong>di</strong> recupero uniche con aspetti positivi e negativi<strong>di</strong>versi. Oltretutto i sistemi analizzati più approfon<strong>di</strong>tamente <strong>in</strong> questa tesi(QBIC e W<strong>in</strong>dSurf) risolvono il problema <strong>in</strong> maniera parziale, contenendo ancoramolte limitazioni.La prima osservazione è che QBIC è un prototipo rilasciato da un laboratorioIBM e qu<strong>in</strong><strong>di</strong> ha già le caratteristiche <strong>di</strong> uno strumento software maturo, mentreW<strong>in</strong>dSurf è un prototipo sviluppato da ricercatori ed ha come unico obbiettivoquello <strong>di</strong> evidenziare meto<strong>di</strong> <strong>in</strong>novativi <strong>di</strong> estrazione <strong>di</strong> feature.Al livello <strong>di</strong> gestione del Database, il sistema adottato da W<strong>in</strong>dsurf nonpermette l’aggiornamento <strong>di</strong>namico delle feature delle immag<strong>in</strong>i memorizzaterichiedendo, per l’aggiunta <strong>di</strong> nuove immag<strong>in</strong>i, la ricostruzione globale delcatalogo, operazione molto <strong>di</strong>spen<strong>di</strong>osa <strong>in</strong> term<strong>in</strong>i <strong>di</strong> tempo.A livello <strong>di</strong> feature, quelle estratte da W<strong>in</strong>dSurf sono molto più efficaci <strong>di</strong>quelle <strong>di</strong> QBIC nel recupero delle immag<strong>in</strong>i simili, come <strong>di</strong>mostrato nel capitolo9, grazie all’<strong>in</strong>troduzione <strong>di</strong> algoritmi <strong>di</strong> segmentazione che estraggono versionilocali delle feature rispetto a quelle globali <strong>di</strong> QBIC.D’altro canto, le modalità attraverso la quali è stato sviluppato il co<strong>di</strong>ce <strong>di</strong>W<strong>in</strong>dSurf non consentono un adeguato riutilizzo, nelle applicazioni sviluppatedagli utenti, dei miglioramenti ottenuti.Inoltre <strong>in</strong> W<strong>in</strong>dSurf non esistono strumenti <strong>di</strong> <strong>in</strong><strong>di</strong>cizzazione che permettano


180 Conclusioni<strong>di</strong> migliorare i tempi <strong>di</strong> recupero quando le <strong>di</strong>mensioni del Database cresconooltre il migliaio <strong>di</strong> immag<strong>in</strong>i.Mentre QBIC fornisce una serie <strong>di</strong> strumenti che l’utente può <strong>in</strong>tegrare nelleproprie applicazione per aggiungervi funzionalità <strong>di</strong> CBVQ, W<strong>in</strong>dsurf è un’applicazionestatica che non permette l’<strong>in</strong>tegrazione del proprio co<strong>di</strong>ce con quellodell’utente e nemmeno aggiunta <strong>di</strong> nuove feature.QBIC, anche se non utilizza le feature più evolute, presenta un ambiente moltoben strutturato per la gestione del database delle immag<strong>in</strong>i e delle relative feature,<strong>in</strong>oltre un aspetto <strong>in</strong>teressante <strong>di</strong> QBIC è quello <strong>di</strong> essere un sistema aperto.Uno sviluppo futuro <strong>di</strong> questa tesi potrebbe consistere nell’estrazione delco<strong>di</strong>ce <strong>di</strong> W<strong>in</strong>dsurf, che implementa la trasformata Wavelet e l’estrazione delleregioni, ed <strong>in</strong>tegrarlo <strong>in</strong> QBIC che presenta una migliore organizzazione delleoperazioni legate alle estrazione delle feature ad alla memorizzazione delle stesse.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!