Sei sulla pagina 1di 12

Capitolo 9

Indici Multimediali
Introduzione
Il termine indice un termine che pu avere molteplici significati, ma nellambito multimediale sono due le definizioni che possono interessare particolarmente: 1. una lista ordinata in ordine alfabetico in funzione di un particolare dato; 2. E un oggetto che permette il puntamento e laccesso a un particolare contenuto, come nel caso de libri quando si fa riferimento allindice analitico. La definizione piu corretta per la prima presa in considerazione. In generale un indice ha una struttura ad albero, ossia un grafo connesso formato da nodi e frecce che collegano i livelli dellalbero ( si parla infatti di alberi k-ary). Un albero di ordine k un albero bilanciato (tutti i nodi allo stesso livello) che per ogni nodo possiede k nodi figli, e la complessit dellalbero . Il problema che alberi di questo tipo devono essere ribilanciati ogni qual volta si effettuano operazioni di aggiornamento delle informazioni dellalbero, e la complessit aumenta fino ad arrivare allordine O(N)

Si utilizzano dei B- Tree che sono degli alberi bilanciati dove ogni nodo pu ammettere al massimo o N o N/2 figli.

Spazi K - Dimensionali
Ricordiamo inoltre che i dati multimediali sono dati definiti in un o spazio bidimensionale, mentre i classici dati sono monodimensionali. In generale per si ha che data un informazione a k caratteristiche essa definita in uno spazio k dimensionale. Dunque le query definibili su uno spazio di questo tipo possono essere di tre tipi: Matching esatto: si ricerca un punto esatto dello spazio, che pu esserci o meno; Matching nelle vicinanze: si ricerca il punto piu vicino a un punto dato; Matching regionale: si ricerca un intera regione di punti.

Linserimento di un nuovo oggetto nello spazio comporta una divisione dello spazio k dimensionale in regioni distinte. Linserimento delloggetto avverr in una di queste regioni e se la regione piena allora si effettua una nuova divisione della regione.

Conversione dello spazio


Un metodo pi efficiente per quello della conversione dello spazio K Dimensionale in uno monodimensionale, pagando pero una piccola perdita di informazione. Una prima tecnica la Space filling curves, che trasforma lo spazio da K a monodimensionale mantenendo punti che erano vicini nello spazio K Dimensionale anche in quello Monodimensionale. In generale la trasformazione applicata una linearizzazione di una matrice k dimensionale. Se k = 2 possiamo introdurre i seguenti metodi di trasformazione: Ordinamento di riga/colonna: comporta la linearizzazione degli elementi per riga o colonna, gli elementi vengono inseriti allinterno di un vettore o un indice, presenta problemi in accesso ai dati quando si accede per colonna ( si passa da 0 a 8)

Ordinamento prima riga/ prima colonna: presenta una curva di ordinamento diversa dal metodo precedente, a forma rettangolare. Anche in questo casi si evidenziano problemi in colonna simili al metodo precedente

Diagonale di Cantor: risolve il problema degli accessi con una disposizione diversa di elementi vicini:

Curva di Hilbert o curva Z: simile a quella di Cantor ma con disposizione di elementi tali che la curva abbia una forma a Z.

Indicizzazione bidimensionale
Cerchiamo di definire un metodo di indicizzazione ritornando al concetto di feature di un immagine. Supponiamo di voler considerare uno spazio N dimensionale con k punti distinti su cui definita una funzione di distanza. RAGIONAMENTO BASE Allora se possiamo attribuire a ogni punto dello spazio una feature di un oggetto, allora trovare un oggetto simile vuol dire trovare un oggetto che abbia un punto associato alla stessa feature con la minore distanza dal punto a cui associata quella feature per loggetto in questione. Nel caso di uno spazio bidimensionale possiamo pensare di voelr dividere come vogliamo tale spazio con divisioni di qualsiasi forma ( rettangolari, quadrate o triangolari o arbitrarie.). Se la dimensione dello spazio 2 possiamo definire su un immagine un meccanismo di indicizzazione basato su alberi bidimensionali.La struttura di ogni elemento dellalbero bidimensionale la seguente:

INSERIMENTO Dunque ogni elemento dellalbero possieder due valori, un tag che identifica lelemento e due collegamenti, uno sinistro e uno destro. Per ogni nodo N e M distinti valgono le seguenti regole di inserimento,se il livello pari: Se M.XVAL < N.XVAL allora il collegamento a sinistra; Se M.XVAL >= N.XVAL allora il collegamento a destra;

Se il livello dispari si fanno considerazioni sul valore Y e si stabilisce che: Se M.YVAL < N.YVAL allora il collegamento a sinistra; Se M.YVAL >= N.YVAL allora il collegamento a destra;

dove M il nodo radice.

CANCELLAZIONE La cancellazione risulta essere molto semplice se lelemento da eliminare una foglia, ma complesso se un elemento intermedio, poich potrebbe avere dei figli da gestire. Dunque si deve cercare un elemento che possa sostituire quello in cancellazione. Lalgoritmo di cancellazione il seguente: Si trova un candidato; Si sostituiscono i valori nel nodo da cancellare; Si cancella il vecchio candidato.

Analizziamo ora la procedura per la determinazione del candidato R. Se dividiamo lalbero in due sottoalberi TL e TR per lalbero TL:

se li livello dispari M.XVAL < R.XVAL; se li livello pari M.YVAL < R.YVAL;

mentre per il sottoalbero TR si ha che: se li livello dispari M.XVAL >= R.XVAL; se li livello pari M.YVAL >= R.YVAL;

Indicizzazione quadtree
Il meccanismo di indicizzazione quadre un meccanisco ad albero dove ogni nodo dellalbero definisce una regione rettangolare. La radice rappresenta una regione vuota e il quadrante rettangolare diviso in quattro sottoaree che definiscono quattro figli per ciascun nodo dellalbero. Dunque un elemento dellalbero sar strutturato in questo modo:

Dove:

X e Y sono i valori che per un nodo radice identificano la regione vuota di partenza; NW,SW,SE e NE sono i 4 figli corrispondenti alle sottoregioni:

Linserimento tra elementi successivi avviene mediante le sottoregioni, in funzione del punto che identifica la radice o una sottoregione.

Algoritmo di inserimento PT_insert(P,R)

Funzione PT_COMPARE(P,R)

CANCELLAZIONE Il meccanismo di cancellazione un meccanismo che pu essere semplice se il nodo che si vuole cancellare non ha riferimenti ad altri nodi (non ha figli), mentre problematico a seconda delle specifiche situazioni, dato che per ogni situazione abbiamo bisogno di adottare una specifica soluzione. SITUAZIONE 1 Problema: Sia N un punto figlio di N radice. N non ha figli.Vogliamo cancellare N. Soluzione: Copiamo N in N e cancelliamo N. SITUAZIONE 2 Problema: Sia N un punto figlio di N radice. N ha un solo figlio .Vogliamo cancellare N. Soluzione:Cancelliamo il figlio temporaneamente e copiamo N in N e cancelliamo N.Poi reinseriamo il figlio. Possono verificarsi altre situazioni specifiche che si risolvono sulla stessa linea condotta in queste due soluzioni: cancellazione temporanea dei figli e copia di nodi in altri nodi, e reinserimento dei figli.

Algoritmi di ricerca dei punti


K NN Search
Lalgoritmo di ricerca K NN permette di trovare i K punti alla minima distanza da un punto Q dato in ingresso. Supponiamo di voler considerare K = 1. Siamo dunque interessati alla ricerca del punto piu vicino ad un punto fornito in ingresso. Definito dunque uno spazio bidimensionale (caso particolare) e definito su di essa una funzione di distanza lalgoritmo procede secondo questi step STEP 1 : Si definiscono due parametri: bestdist = +inf e bestdist = NULL; STEP 2: si ispeziona la distanza a partire dalla radice, mantenendo sempre aggiornato il parametro bestsol con il punto a distanza piu piccola e bestdist con tale distanza, ricordando che punti a distanza maggiore dalla distanza bestdist vengono scartati; STEP 3: il punto con la minor distanza il punto cercato.

IMPORTANTE Tale algoritmo reiterabile anche per K valori distinti; basta infatti considerare un array di soluzioni e prendere le k soluzioni a distanza minima dal punto in ingresso.

Range Search
Si ricercano tutti i punti di uno spazio in funzione del punto in ingresso fornito Q e un certo raggio R. Tutti i punti che vengono scartati sono tutti quelli al di fuori dellimmaginaria regione centrata nel punto Q e raggio R,anche se la condizione di scarto molte delle volte si modifica leggermente ai bordi.

La valutazione sempre in funzione della funzione di distanza.

Problemi degli alberi quadtree


Un problema sostanziale degli alberi quadtree che il processo di cancellazione di un nodo molto lento e anche i meccanismi di ricerca di un dato nodo richiedono una complessit molto elevata.

Alberi R - Tree
Supponiamo di voler considerare uno spazio k dimensionale. Una regione dimensionale pu essere definito come linsieme delle disuguaglianze in uno spazio k

Dove ogni immagine dunque pu essere rappresentata come una regione, invece di un insieme di punti, come nel caso quadtree. In tale spazio k dimensionale si definiscono gli alberi R Tree, generalizzazione degli alberi B Tree, dove ogni nodo ammette regioni bidimensionali.Come nel caso dei B Tree ogni nodo possiede minimo N/2 rettangoli e un massimo di N rettangoli interni e tutte le foglie si trovano allo stesso livello. La radice rappresenta lo spazio vuoto, e per ogni nodo la regione del nodo rappresenta il contorno dei rettangoli compresi allinterno. IMPORTANTE Diversamente dal B Tree, lR Tree permette di sovrapporre rettangoli. Nel caso in cui c sovrapposizione si generano due regioni differenti e la radice o il nodo in questione di dividono.

Un fenomeno particolare linserimento di un nuovo rettangolo allinterno di una regione. Tale inserimento richieder un ulteriore split delle regioni.Ci chiediamo dunque: in che modo andremo a dividere di nuovo la radice ? Possiamo dividere la radice in due modi: In modo da ridurre la sovrapposizione delle regioni; In modo da ridurre larea totale.

Il primo meccanismo opera una suddivisione:

che non efficiente in fase di ricerca. Il secondo meccanismo invece:

comporta un accesso multiplo alle regioni in fase di ricerca e gli inserimenti successivi comportano una ricerca della regione corretta e una suddivisione se questa piena. Dunque vogliamo rimuovere le sovrapposizioni che creano comunque problemi. Tale problema viene risolto con gli R+ - Tree che eliminano le sovrapposizioni slittando i rettangoli da inserire tra due regioni adiacenti, e tale soluzione si dimostrata lavorare bene per le operazioni di ricerca e inserimento.

Meccanismi di ricerca in R Tree


Si procede allo sttesso modo dei B Tree, con algoritmi NN di ricerca. Sorge per un problema: Bisogna fissare una definizione per la distanza fra rettangoli

Abbiamo due definizioni: 1. Si fissano punti in due rettangoli R e R e si analizza la distanza euclidea tra essi; 2. Si considerano le aree di intersezione o unione. Scelto uno dei criteri di distanza si pu porcedere con lalgoritmo classico di ricerca NN , fissando bestsol e bestdist come abbiamo fatto in precedenza, e applicando lo stesso criterio di scarto.

bestsol = d

X Tree
Abbiamo visto che ogni immagine pu essere ridotta a un rettangolo. Dunque possiamo pensare di operare un altro processo su un rettangolo R, quello di segmentazione. La segmentazione infatti permette di dividere un rettangolo in tanti sottorettangoli. Definiamo anche un operatore particolare: loperatore H, detto di omogeneit che applicato a sottorettangoli vero se quel sottorettangolo appartiene a una regione, altrimenti falso. Il processo di segmentazione gode delle seguenti propriet: 1. 2. 3. 4. Lunione dei sottorettangoli definisce limmagine; Lintersezione dei sottorettangoli nulla; L L

Fatta questa premessa siamo in grado di definire gli X Tree. Un X- Tree ha la stessa struttura di un R Tree ma introduce il concetto di supernodo,nodo di multiple dimensioni di k, necessario per leliminazione di un overlap tra rettangoli. Quando sorge il problema dellinserimento, come in figura

Si raddoppia il nodo creando dunque un supernodo 2K