580 likes | 696 Views
Un ambiente XML -based per l’elaborazione di immagini digitali. Linguaggi e Modelli Computazionali LS Anno Accademico 2008/2009 Raimondo Vergottini. Introdurre un nuovo approccio al Digital Image Processing basato su una tecnologia di uso comune come quella XML .
E N D
Un ambiente XML-based per l’elaborazione di immagini digitali Linguaggi e Modelli Computazionali LS Anno Accademico 2008/2009 Raimondo Vergottini
Introdurre un nuovo approccio al DigitalImage Processing basato su una tecnologia di uso comune come quella XML. • Dimostrare come tale linguaggio si presti anche alla descrizione di algoritmi. • Permettere di sfruttare tutti i vantaggi ad esso legati (come la generazione automatica di codice). Motivazioni ed obiettivi
Definire un linguaggio di alto livello XML-based (XIPL - XML Image Processing Language) per codificare gli algoritmi. • Creare un linguaggio di basso livello, denominato XASM - XML Assembly(anch’esso XML), per una virtualmachine a stackche implementi le funzioni elementari sulle immagini digitali. • Creare il compilatore sfruttando la tecnologia XSLT. Soluzione proposta
4 Notazione Prefissa Polacca !! Un esempio di codice XIPL
Definizione dell’elemento radice: 5 Sequenza qualsiasi di statement Analisi della grammatica XIPL (1)
Convenzione sui nomi dei tag: 6 • Definizione dei possibili statements. Uno statements può essere uno qualsiasi di questi elementi Analisi della grammatica XIPL (2)
7 Espressioni riguardanti immagini Analisi della grammatica XIPL (3)
8 Operatori aritmetici Analisi della grammatica XIPL (4)
9 Filtraggio tramite convoluzione con una maschera Array di double Filtraggio Gaussiano Analisi della grammatica XIPL (5)
10 Filtro mediano Filtro di sharpening Resizing Analisi della grammatica XIPL (6) Rotazione
11 Scalatura And logico tra due immagini Or logico tra due immagini Or esclusivo tra due immagini Analisi della grammatica XIPL (7)
12 Not logico di un’immagine Trasformazione esponenziale Trasformazione logaritmica Trasformazione quadratica Trasformazione con radice quadrata Analisi della grammatica XIPL (8)
13 Assegnamento di un’immagine ad una variabile Salvataggio su file di un’immagine Codifiche possibili Forloop Analisi della grammatica XIPL (9)
14 Visualizzazione di un’immagine Tag per una variabile Lettura di un’immagine Analisi della grammatica XIPL (10)
Esprimendo una versione semplificata in notazione formale: 15 La stringa vuota non fa parte del linguaggio!!! Classificazione secondo Chomsky
Come si nota, nella produzione IMSUM(ma anche IMMUL), operando una sostituzione: 16 IMSUM::=<im.sum> IMEXPRESSIONIMEXPRESSION</im.sum> (sostituendo) IMSUM::=<im.sum> IMSUMIMEXPRESSION</im.sum> Classificazione secondo Chomsky (2) • Trattandosi di evidente Self-Embedding, la grammatica è, dunque, Context-free.
Esaminiamo gli Starter Symbolsdei metasimboli che compaiono nella parte sinistra di più produzioni: • Per il metasimbloSTATEMENT: 17 Tutti disgiunti • Per il metasimbloIMEXPRESSION: E’ LL(1)? Tutti disgiunti • La grammatica è anche LL(1).
18 Notazione Postfissa Polacca !! Un esempio di codice XASM
Definizione dell’elemento radice: 19 Sequenza qualsiasi di statement Analisi della grammatica XASM (1)
Convenzione sui nomi dei tag: • Definizione dei possibili statements. 20 Push di un’immagine Analisi della grammatica XASM (2)
21 Push di una stringa Push di un intero Somma di una costante ad una variabile Inizio di un ciclo for etichetta Analisi della grammatica XASM (3) Istruzione di salto condizionato
22 Istruzioni per il Binding Analisi della grammatica XASM (4)
23 Analisi della grammatica XASM (5)
24 Analisi della grammatica XASM (6)
25 Analisi della grammatica XASM (6)
26 Analisi della grammatica XASM (7)
27 Analisi della grammatica XASM (8)
28 Analisi della grammatica XASM (9)
29 Analisi della grammatica XASM (10)
30 Analisi della grammatica XASM (11)
31 Analisi della grammatica XASM (12)
32 Analisi della grammatica XASM (13)
Occorre la trasposizione in notazione formale: 33 La stringa vuota non fa parte del linguaggio!!! Classificazione secondo Chomsky
Nessuna produzione presenta Self-Embedding. 34 • La grammatica è Regolare (tipo 3). Classificazione secondo Chomsky (2)
35 Un esempio di traduzione
36 Vengono “matchati” tutti i nodi figli e infine aggiunta l’istruzione di halt Analisi del traduttore XSLT (1)
37 Vengono prima passati i parametri della funzione, infine chiamata la funzione stessa Analisi del traduttore XSLT (2)
38 Analisi del traduttore XSLT (3)
39 Analisi del traduttore XSLT (4)
40 Analisi del traduttore XSLT (5)
41 Analisi del traduttore XSLT (6)
42 Analisi del traduttore XSLT (7)
43 Aggiunta etichetta per il salto Push del contatore Push di una unità Incremento del contatore Salto se il valore del contatore è minore di quello dell’attributo to Analisi del traduttore XSLT (8)
Linguaggio di programmazione: Java. • Piattaforma di sviluppo: JDK 1.6. • XSLT tecnology: JAXP. • XML-Java Bindingtecnology: JAXB. • IDE: Netbeans 6.1. Implementazione
45 JAXP XSLT tecnology compilatore Visitor Design Pattern Approccio utilizzato JAXB unmarshallingtecnology Interprete
GUI Implementazione XML-based ImplementazioneXML-based Image Processing Diagramma dei componenti Prototipi per la VirtualMachine Prototipi per il Compilatore
Modello del compilatore Il parser verifica la correttezza sintattica Il traduttore converte le frasi sintatticamente corrette Implementazione per il linguaggio XIPL Wrapping per le API della standard JDK Diagramma delle classi (1) Wrapping per le API SAX (più performanti rispetto alle DOM)
Interfaccia del Visitor Design Pattern Modello della VirtualMachine Implementazione XASM Il generico parser restituisce un Object (magari un APT….) Diagramma delle classi (2) Wrapping per la tecnologia JAXB
Esecuzione: la virtualmachine esegue (in un loop) sempre l’istruzione corrente. 49 Il parser restituisce l’oggetto che rappresenta l’albero Interpretazione
Assegnazione di una variabile: si cerca (partendo dall’env. Globale) se la variabile esiste. • In caso contrario viene creata nell’env. corrente. 50 Interpretazione: Politiche (1)