32
“MF_Tesi” — 2011/8/3 — 21:18 — page 1 — #1 UNIVERSITÀ DEGLI STUDI DI SALERNO FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI Tesi di Laurea in Informatica Un coprocessore per Stereo-Matching: Profiling e Benchmark Relatore Candidato Ch.mo Prof. Giancarlo Raiconi Michele Fratello Dott. Mario Vigliar Matr. 0512100156

Tesi Michele Fratello

Embed Size (px)

DESCRIPTION

Tesi di Informatica di Michele Fratello UNISA

Citation preview

Page 1: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 1 — #1 ii

ii

ii

UNIVERSITÀ DEGLI STUDI DI SALERNOFACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E

NATURALI

Tesi di Laurea in Informatica

Un coprocessore per Stereo-Matching: Profiling eBenchmark

Relatore Candidato

Ch.mo Prof. Giancarlo Raiconi Michele FratelloDott. Mario Vigliar Matr. 0512100156

Page 2: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 2 — #2 ii

ii

ii

Frase + Dedica...

Page 3: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 3 — #3 ii

ii

ii

3

Page 4: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 4 — #4 ii

ii

ii

Indice

Introduzione 8

1 Sistemi Embedded ed FPGA 111.1 Sistemi Embedded . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.1.1 Generalità . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.1.2 Progetto di Sistemi Embedded . . . . . . . . . . . . . . . 14

1.2 FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.2.1 Concetti generali di una FPGA . . . . . . . . . . . . . . . 16

1.2.2 Blocchi di una FPGA . . . . . . . . . . . . . . . . . . . . 17

1.2.3 Interconnessioni . . . . . . . . . . . . . . . . . . . . . . . 21

2 Immagini Digitali e Image Processing 232.1 Tipi di immagini . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.2 Dimensioni delle immagini . . . . . . . . . . . . . . . . . . . . . . 26

2.3 Digitalizzazione dell’immagine . . . . . . . . . . . . . . . . . . . . 26

2.3.1 Campionamento . . . . . . . . . . . . . . . . . . . . . . . 27

2.3.2 Quatizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 29

4

Page 5: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 5 — #5 ii

ii

ii

Elenco delle figure

1.1.1 Esempio di sistemi embedded che compongono il sistema di ge-stione di un’autovettura. . . . . . . . . . . . . . . . . . . . . . . . 12

1.2.1 Schema di principio dell’architettura di un FPGA. . . . . . . . . 16

1.2.2 Esempio di BLE con LUT a 4 ingressi e Flip-Flop. . . . . . . . . 17

1.2.3 Connessione tra blocchi logici mediante risorse programmabili. . 18

1.2.4 Connessione tra blocchi logici mediante Switch Module. . . . . . 20

1.2.5 Canale con segmenti di lunghezza 1, 2, 3, 4. . . . . . . . . . . . . 21

2.1.1 Spettro elettromagnetico. . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1 Segnale campionato. . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.3.2 Diversi passi di campionamento. . . . . . . . . . . . . . . . . . . 29

5

Page 6: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 6 — #6 ii

ii

ii

Elenco delle tabelle

6

Page 7: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 7 — #7 ii

ii

ii

Elenco degli algoritmi

7

Page 8: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 8 — #8 ii

ii

ii

Introduzione

I sistemi embedded giocano un ruolo importante nella vita di tutti i giorni,anche in casi in cui non risultano visibili. Possiamo trovare dei sistemi em-bedded dappertuto: dal timer di un forno a microonde, ad un cellulare, ad unriproduttore multimediale, e più in generale in qualsiasi dispositivo dotato diun certo quantitativo di intelligenza. Un sistema embedded molto spesso è unpiccolo computer implementato per uno specifico scopo, o un numero ristrettodi operazioni per le quali è stato programmato. La sua controparte, invece, uncomunissimo PC, è in grado di svolgere un elevato numero di operazioni qualicontrollare le email, navigare su internet, ascoltare musica, redigere un testo,ecc.

In generale un sistema embedded:

• è un sistema progettato per eseguire un processo, in modo parzialmente ocompletamente indipendente dall’intervento umano,

• è progettato con particolari tecniche che assicurano l’esecuzione di pochiprocessi, ma nel modo più efficiente possibile,

• interagisce con l’ambiente fisico che lo circonda (sistemi di guida automa-tizzati, rilevazione di temperature, ecc.).

Molti sistemi embedded svolgono applicazioni cosiddette “time critical” nel sen-so che il sistema lavora in un ambiente dove il tempismo è di fondamentale

8

Page 9: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 9 — #9 ii

ii

ii

importanza: il risultato di un’operazione ha significato solo durante una spe-cifica finestra temporale. Il sistema di autopilota di un aereo è un esempio disistema embedded time critical. Se l’autopilota rileva che l’aereo per qualcheragione si sta portando in una situazione di stallo, allora dovrà eseguire delleoperazioni per correggere tale situazione entro pochi millisecondi per evitareconseguenze catastrofiche.I campi di applicazione di un sistema embedded sono virtualmente illimitati,perchè ogni giorno vengono introdotti nuovi prodotti sul mercato che utilizzanoun computer embedded in modo nuovo e originale. Negli ultimi anni, prodottihardware come microprocessori, microcontrollori e FPGA sono divenuti moltoeconomici. In questo modo quando bisogna implementare un nuovo dispositivodi controllo è molto più saggio acquistare un chip multi-purpose e scrivere lapropria applicazione per lo specifico hardware. Produrre un chip ad-hoc pergestire un particolare processo, o una serie di processi costa molto più tempo edenaro. Molti computer embedded vengono inoltre corredati di librerie esausti-ve, in modo da ridurre le difficoltà nella realizzazione del codice per la propriaapplicazione.Come abbiamo visto, uno dei principali vantaggi dei sistemi embedded, che de-riva dalla loro natura di componenti special-purpose, è la rapidità con cui puòeseguire le operazioni. Infatti una delle fasi che compongono la realizzazione dihardware specifico per un determinato task consiste proprio nell’ottimizzare almassimo i tempi di elaborazione. Per questo motivo i sistemi embedded ven-gono largamente utilizzati nel campo della Computer Vision, in modo da poterottenere dei tempi di risposta tali da consentire la realizzazione di applicazionireal-time.In particolare possiamo definire la Computer Vision come la trasformazione diinformazioni provenienti da immagini statiche o un video in una decisione oin una rappresentazione differente. Queste trasformazioni vengono eseguite perraggiungere un particolare scopo. I dati di input possono completarsi con in-formazioni riguardanti il contesto dell’applicazione del tipo “la videocamera ècollocata in auto” oppure “il misuratore laser indica un oggetto a distanza di1m”. La decisione presa può essere “c’è una persona in questa scena” oppure“ci sono 14 cellule tumorali nel tessuto”. Una nuova rappresentazione invecepuò significare trasformare un’immagine a colori in una in scala di grigi, oppurecorreggere l’immagine, ad esempio rimuovendone il rumore. E’ semplice esseretratti in inganno pensando che le applicazioni di computer vision sono di sem-plice realizzazione. Ad esempio quanto può essere difficile individuare un’autoin un’immagine? Il cervello umano divide l’informazione visiva in diversi canali

9

Page 10: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 10 — #10 ii

ii

ii

che inviano informazioni differenti al cervello, che è dotato di un sistema di at-tenzione in grado di identificare le parti interessanti dell’immagine sopprimendotutte le altre. In un sistema di visione artificiale, invece, un computer riceveuna matrice di numeri proveniente da una videocamera o dal disco, ed è questotutto quello che un computer “vede”. Sarà poi compito di chi risolve il problemadi convertire questa matrice di numeri nella “percezione dell’oggetto”.

Uno dei campi della computer vision in cui si spendono più risorse (sia economi-che che intellettuali) è il problema dello stereo matching. Dati due dispositivi dicattura, collocati orizzontalmente si ottengono due viste differenti della stessascena, in modo simile a quello che succede nella visione binoculare dell’uomo.Comparando queste due immagini possiamo ottenere l’informazione della pro-fondità relativa degli oggetti all’interno della scena, in forma di disparità, che èinversamente proporzionale alla differenza in distanza degli oggetti.

In particolare in questa tesi si intende analizzare le prestazioni di un algorit-mo di stereo matching implementato sia in versione software (linguaggio C)che in hardware (tramite il linguaggio di descrizione di hardware Bluespec Sy-stemVerilog). Questo algoritmo che si basa su un approccio di programmazionedinamica ben si presta alla sintesi in hardware per favorire un elevato guada-gno di prestazioni, sia per quanto riguarda l’utilizzo di un sistema embedded,sia perchè il punto di forza di questo algoritmo non è tanto la precisione delrisultato ottenuto, che comunque raggiunge risultati più che soddisfacenti, mala velocità dei tempi di risposta. Uno dei problemi principali degli algoritmi distereo matching, infatti, è il tempo necessario ad ottenere la mappa di disparitàdata una coppia di immagini stereo di una data scena. L’algoritmo in questioneè stato proposto dai Professori/Dottori: Romain Dieny, Jerome Thevenon,Jesus Martinez-del-Rincon, Jean-Christophe Nebel dell’Università diKingston.

10

Page 11: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 11 — #11 ii

ii

ii

Capitolo 1Sistemi Embedded ed FPGA

1.1 Sistemi Embedded

Con sistema embedded (sistemi immersi) si identificano genericemente dei si-stemi elettronici progettati appositamente per una determinata applicazione,spesso con una piattaforma hardware ad hoc, immersi nel sistema che control-lano e in grado di gestirne tutte o parte delle funzionalità. In questa area sicollocano sistemi di diverse tipologie e dimensioni, in relazione al tipo di micro-processore, al sistema operativo e alla complessità del software che può variarele sue dimensioni in modo considerevole.

Contrariamente ai sistemi generici, un sistema embedded ha dei compiti co-nosciuti già durante la fase di sviluppo, che eseguirà dunque grazie ad unacombinazione di hardware e software specificatamente studiata per tale applica-zione. In questo modo, l’hardware necessario può essere ridotto notevolmente,e di conseguenza viene ridotto lo spazio occupato, i consumi, e, cosa molto im-portante in ambito industriale, il costo di fabbricazione. Inoltre l’esecuzione delsoftware avviene spesso in tempo reale (real-time).

11

Page 12: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 12 — #12 ii

ii

ii

1.1. SISTEMI EMBEDDED 12

Figura 1.1.1: Esempio di sistemi embedded che compongono il sistema digestione di un’autovettura.

Nell’elettronica moderna esistono numerosi esempi di sistemi embedded, non èsbagliato affermare che, oggigiorno, la quasi totalità dei sistemi di automazioneutilizza una elettronica integrata dedicata in grado di gestirla. Ad esempio bastipensare che nelle ultime generazioni di autovetture di fascia media sono presentiall’incirca un centinaio di microcontrollori, ognuno dei quali svolge dei compitiben precisi.

1.1.1 Generalità

La maggior parte dei sistemi embedded è progettata per compiere ripetutamenteun’azione ad un costo contenuto. La maggior parte di questi sistemi, ma nontutti, ha inoltre dei vincoli di performance che devono essere rispettati, comead esempio la necessità di operare in tempo reale. Può accadere anche che unsistema debba essere molto veloce nell’esecuzione di alcune funzioni, ma possatollerare velocità inferiori per altre attività. Questi sistemi rispettano i vincoli

Page 13: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 13 — #13 ii

ii

ii

1.1. SISTEMI EMBEDDED 13

di performance con una combinazione di hardware e software appositamenteprogettati.Risulta difficile caratterizzare la velocità o i costi di un sistema embedded gene-rico, anche se soprattutto per sistemi che devono processare una grande quantitàdi dati, il progetto stesso assorbe la maggior parte dei costi. Fortunatamente,la maggior parte dei sistemi embedded ha delle necessità di performance chepossono essere soddisfatte con una combinazione di hardware dedicato ed unaquantità limitata di software ad elevate prestazioni. Per avere un’idea, bastipensare ad un decoder per una televisione satellitare. Nonostante un sistemacome questo debba processare decine di megabit di dati al secondo, la maggiorparte del lavoro è svolta da hardware dedicato che separa, regola e decodificail flusso digitale multicanale in un’uscita video. Alla CPU embedded spetta ilcompito di determinare i percorsi dei dati nel sistema, gestire gli interrupt, gesti-re la grafica, e così via. Spesso, quindi, la gran parte dell’hardware di un sistemaembedded deve sottostare a dei requisiti di performance molto meno severi diquelli che, invece, deve rispettare l’hardware primario del sistema stesso. Que-sto permette all’architettura di un sistema embedded di essere intenzionalmentesemplificata rispetto a quella di un computer generico che deve eseguire le stesseoperazioni, usando ad esempio una CPU più economica che tutto sommato sicomporta discretamente anche per queste funzioni secondarie.Nel caso di sistemi che devono essere commercializzati in massa, come un lettoredi musica portatile, ridurre i costi diventa una priorità. Sistemi di questo tipo,infatti, spesso sono dotati di alcuni chip, una CPU altamente integrata, un chipdedicato a tutte le altre funzioni ed un singolo banco di memoria. In questocaso ogni componente è selezionato e progettato per ridurre il più possibile icosti.Il software utile a gestire molti sistemi embedded, in particolare quelli senzahard disk, è talvolta chiamato firmware. Il firmware è un tipo di software che,ad esempio è possibile trovare nei chip delle memorie ROM o Flash. Ai sistemiembedded è spesso richiesto di essere attivi continuamente per anni, idealmentesenza contrarre errori. Pertanto il software ed il firmware sono progettati etestati con molta più attenzione rispetto a sfotware tradizionale per personalcomputer. Molti sistemi embedded, infatti, evitano di incorporare componenticon parti meccaniche in movimento (come gli hard dick), poichè essi sono menoaffidabili rispetto a componenti allo stato solido come le memorie Flash. Inaggiunta, i sistemi embedded potrebbero non essere fisicamente accessibili (adesempio i componenti lanciati nello spazio). Pertanto il sistema deve esserecapace di resettarsi autonomamente in caso di perdita o corruzione dei dati.

Page 14: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 14 — #14 ii

ii

ii

1.1. SISTEMI EMBEDDED 14

Questa funzionalità è molto spesso ottenuta con l’inserimento di un componenteelettronico chiamato watchdog, che resetta il computer a intervalli regolari; ilsoftware, periodicamente, procede a riazzerare il timer interno del componente.

1.1.2 Progetto di Sistemi Embedded

Nel progetto di un moderno e affidabile sistema embedded è possibile individua-re due caratteristiche fondamentali: la riprogrammabilità e lo spazio occupato.Difatti sarebbe utile pensare a un sistema dedicato in grado di essere riadat-tabile, nel caso ad esempio ci fosse la necessità di aggiornare il sistema. Neisistemi embedded classici sia a elementi discreti che basati su ASIC il design èappunto uno e uno soltanto. Nel caso in cui si abbia la necessità di cambiarele specifiche occorrerebbe riprogettare completamente il sistema globale. D’al-tra canto, però, i sistemi ASIC consentono l’ottimizzazione più avanzata poichèl’hardware occupa lo spazio strettamente necessario, rendendo quindi il sistemadi controllo facilmente integrabile. La risposta a queste due esigenze è statatrovata utilizzando le Logiche Programmabili e i microcontrollori.

Una logica programmabile è un componente elettronico in grado di esplicareuna funzionalità selezionabile da utente e ottenibile mediante un insieme distrumenti software. Un progetto può essere realizzato e verificato in alcuni gior-ni mentre, volendo seguire lo stesso percorso con la tecnologia classica relativaagli ASIC (gate-array o standard-cell), sono richieste diverse settimane di svi-luppo. Le logiche programmabili sono, ad oggi, presenti per il 70% dei nuoviprogetti di sistemi elettronici, grazie alla possibilità di sviluppare sistemi conuna funzionalità di base, in grado di essere aggiornata in seguito con un’even-tuale riprogrammazione della logica. Il concetto di logica programmabile derivada quello delle ROM. In queste si ha che per una determinata combinazionedi ingressi (linee di indirizzo) si ottiene in uscita una prefissata sequenza di bit(dato memorizzato nella corrispondente locazione di memoria). Gli indirizzi diingresso hanno, per una memoria, un valore tipicamente sequenziale. Di con-seguenza possono essere presenti combinazioni non necessarie per il progetto incorso ma che comunque occupano spazio e di cui bisogna comunque configura-re lo stato iniziale per evitare problemi durante la fase di sviluppo. le logicheprogrammabili attualmente presenti sul mercato possiamo dividerle, dal puntodi vista architetturale, in tre tipologie:

-PLD Programmable Logic Device

Page 15: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 15 — #15 ii

ii

ii

1.2. FPGA 15

-FPGA Field Programmable Gate Array

-SoPC System on Programmable Chip

I PLD rappresentano l’evoluzione temporale della tecnologia nelle logiche pro-grammabili, dove si è partiti da un semplice array di porte AND e OR i cui in-gressi e le cui uscite possono opportunamente essere collegate al momento dellaprogrammazione (PAL, Programmable Array Logic). Si è poi passati all’utilizzodi macrocelle, in grado di eseguire funzioni sempre più complesse, inizialmentedisposte solamente in prossimità dei piedini di uscita del dispositivo (GAL, GateArray Logic). Infine, le macrocelle, disposte su tutta l’area disponibile, hannodato vita a dispositivi logici programmabili più complessi, i CPLD, (ComplexProgrammable Logic Device). Parlando di FPGA, oramai possiamo con certezzaaffermare, che siano lo strumento preferito dai progettisti per realizzare sistemiembedded. Esse consistono fondamentalmente in un array di blocchi logici e diinterconnessioni di linea e di colonna, che una volta programmate mettono incomunicazione tra loro i blocchi logici e i blocchi programmabili di I/O dispostisulla periferia del chip stesso. I motivi di questo indiscusso successo delle FPGAsono molti. Sicuramente i principali risiedono nel fatto che esse sono compat-te con un costo relativamente basso e sopratutto facilmente programmabili permezzo di codici software come ad esempio il VHDL, il Verilog o il più recenteBluespec SystemVerilog.

1.2 FPGA

La FPGA sta diventando uno dei più importanti strumenti per circuiti digitalie la chiave del suo successo risiede sia nella sua programmabilità, che consentedi realizzare immediatamente qualsiasi funzione, sia nei bassi costi di progetta-zione, in quanto non è richiesta la realizzazione di uno specifico design come pergli ASIC.

Questa maggior flessibilita’ in fase di progettazione si paga in termini di areanon utilizzata perche’ le FPGA occupano un’area almeno dieci volte più grande.Inoltre, questi dispositivi programmabili risultano almeno tre volte più lenti de-gli ASIC e, la bassa velocità con cui viaggia il segnale è dovuta principalmente alfatto che i diversi blocchi logici all’interno di una FPGA sono connessi attraversodei blocchi programmabili che presentano al loro interno elementi (componenti)attivi il cui attraversamento introduce un grosso termine di ritardo, mentre nelle

Page 16: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 16 — #16 ii

ii

ii

1.2. FPGA 16

Standard-Cell il segnale attraversa solo piste metalliche, che non presentano glielevati valori di resistenza e capacità dei pass-transistor presenti negli switchmodule.

1.2.1 Concetti generali di una FPGA

La FPGA è un tipo di circuito VLSI e consiste in una matrice di blocchi logici(CLB), in cui vengono implementate delle funzioni logiche, e che sono intercon-nessi tra di loro mediante risorse programmabili, quest’ultimi sono responsabilidi un grande consumo in termini di area a causa degli elementi attivi che licompongono.

Figura 1.2.1: Schema di principio dell’architettura di un FPGA.

In figura 1.2.1 è mostrato un esempio di architettura di FPGA: i blocchi funzio-nali (o blocchi logici) sono separati tra loro mediante canali verticali e orizzon-tali, all’interno dei quali corrono parallele le piste di interconnessione definiteSegment Wire; nei punti di intersezione tra un canale verticale e uno orizzontalesono posizionati gli switch module, i quali contengono della logica programma-bile per poter realizzare i collegamenti necessari. La connessione tra due diversiCLB avviene mediante l’uso di elementi attivi che possono essere programmati,ossia posti ad ON o ad OFF, dove tali valori vengono memorizzati nelle celledi memoria di una RAM. Pertanto, se il pass-transistor è acceso, consente ilpassaggio bidirezionale del segnale, viceversa, se è spento, non permette il suo

Page 17: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 17 — #17 ii

ii

ii

1.2. FPGA 17

attraversamento. La presenza dei pass-transistor introduce resistenze e capacitàparassite lungo il cammino percorso dal segnale.

1.2.2 Blocchi di una FPGA

Una FPGA è costituita da blocchi logici, blocchi Input/Output e interconnes-sioni programmabili. Per implementare un circuito ciascuno dei blocchi logiciviene opportunamente programmato, realizzando una particolare funzionalitàdel circuito, e ognuno dei pad viene fissato in input o in output. Di seguito sianalizzano i singoli blocchi che realizzano una FPGA e si forniscono le definizioniprincipali.

Cluster Logic Block

L’elemento logico più piccolo che possiamo trovare in una FPGA è Basic LogicElement (BLE). Ciascun BLE è un’unità indivisibile che contiene al suo internoelementi logici combinatori e sequenziali. Un esempio esplicativo di quantoappena descritto è riportato in figura 1.2.2 che presenta un BLE che contieneuna Look-Up-Table (LUT) a 4 ingressi e un Flip-Flop.

Figura 1.2.2: Esempio di BLE con LUT a 4 ingressi e Flip-Flop.

I BLE vengono organizzati in cluster collegati tra loro mediante delle intercon-nessioni locali (local routing).

Un generico CLB è descritto dai seguenti 4 paramentri:

Page 18: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 18 — #18 ii

ii

ii

1.2. FPGA 18

1. k numero di ingressi di una LUT;

2. N numero di BLE presenti all’interno di un CLB e numero di uscitedell’intero blocco logico;

3. I numero di ingressi al CLB;

4. M clk numero di ingressi al CLB dedicati ai segnali di clock.

Una LUT con più ingressi può implementare più logica al suo interno, perciòil numero di CLB da utilizzare in un circuito diminuirebbe e aumenterebbel’area da poter dedicare al routing. Tuttavia, visto che la complessità di unaLUT cresce esponenzialmente all’aumentare del numero di ingressi, risulta pocogestibile l’utilizzo di una LUT come un unico blocco logico avente un elevatonumero di ingressi. Così, invece di realizzare un blocco con molti pin, risulta piùsemplice raggruppare insieme alcune LUT ed interconnetterle con un routinglocale. Questo tipo di interconnessione è più veloce rispetto a quello di tipogenerale tra blocchi logici, e migliora le caratteristiche di velocità della FPGA,ossia i tempi di ritardo sono ridotti. Tuttavia, il routing locale effettuato tra lediverse LUT aumenta quadraticamente al crescere delle dimensioni delle stesseLUT, quindi non è conveniente realizzare CLB molto grandi altrimenti l’areanecessaria per le interconnessioni locali supererebbe quella risparmiata grazie alfatto che non bisogna più effettuare il routing generale.

Lungo il perimetro di ciascun blocco logico sono distribuiti i pin di ingresso e diuscita, e questi sono collegati ai segment wire di un canale adiacente mediantedei transistor, elementi attivi programmabili che realizzano l’interconnessione.Un esempio di quanto appena detto è mostrato in figura 1.2.2.

Figura 1.2.3: Connessione tra blocchi logici mediante risorse programmabili.

Page 19: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 19 — #19 ii

ii

ii

1.2. FPGA 19

Connection Module

Le connessioni tra i diversi blocchi logici si realizzano grazie a due tipi di com-ponenti: i segment wire presenti lungo i canali orizzontali e verticali che corronoadiacenti ai blocchi logici, e gli elementi programmabili (sostanzialmente deiMOS) che realizzano i collegamenti tra i vari wire.

Il connection module, si utilizza per connettere i pin dei blocchi logici ai diversisegment wire che appartengono al canale.

Si definisce flessibilità Fc di un connection module il numero di piste, apparte-nenti ad un canale, ai quali può connettersi ciascun pin dei vari blocchi logici.Il caso mostrato in figura 1.2.2 presenta un valore pari a Fc = 2. Utilizzando unpiccolo valore di Fc si riduce il numero di transistori MOS necessari per collegarei vari pin alle tracce del canale, tuttavia ciò provoca solo un’apparente riduzionedi area, in quanto il processo di routing risulta più complicato e richiede unacapacità di canale (W ) più grande. Questo implica un aumento dell’area occu-pata per far spazio alle nuove piste necessarie. Pertanto si richiede un valoreappropriato per Fc, e, generalmente, lo si fissa a W/N ; questa scelta garantisceche tutte le piste all’interno di ciascun canale siano pilotate almeno da un pindi uscita di ogni blocco logico.

Switch Module

Uno switch module è un blocco di forma quadrata avente un numero di terminalisu ciascun lato pari a W . Si posiziona nel punto di intersezione tra un canaleverticale e uno orizzontale e, programmando i pass-transistor al suo interno,permette il collegamento tra una pista appartenente ad un canale e quella diun altro. Per semplicità si può pensare che le interconnessioni viaggiano sudue livelli: sul primo livello tutte le piste appartenenti al canale orizzontale,sul secondo quelle appartenenti al canale verticale. Si definisce flessibilità Fs diuno switch module il numero di connessioni programmabili esistenti tra ciascunterminale e gli altri, questo valore è la chiave di volta dell’intera architetturaperché condiziona la fase di routing.

La figura 1.2.2 mostra un’architettura di FPGA di tipo Island-Style dove i bloc-chi logici sono disposti come gli elementi di una matrice bidirezionale e sonoseparati gli uni dagli altri da canali verticali e orizzontali nei cui punti di inter-sezione si trovano gli switch module che realizzano le connessioni tra le diversetracce poste all’interno dei vari canali adiacenti ai CLB.

Page 20: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 20 — #20 ii

ii

ii

1.2. FPGA 20

Figura 1.2.4: Connessione tra blocchi logici mediante Switch Module.

Uno switch module è costituito da elementi attivi, il cui ingombro è abbastanzarilevante, quindi si tende a limitare il loro numero all’interno di ciascun bloccodi connessione; è necessario, però, un giusto compromesso tra area occupata ecapacità di effettuare un routing comodo ed efficiente mediante un numero con-siderevole di transistor che garantiscano una flessibilità adeguata. Inoltre, perpoter programmare lo switch module è necessario che vi sia qualche elemento dimemoria che tenga conto se la connessione rispetto ad una delle possibili dire-zioni permesse risulta ON o OFF e questo aumenta notevolmente l’occupazionedi area.

Infine, va tenuto in conto che questo blocco ha un effetto preponderante sullavelocità dei collegamenti tra i vari CLB, dunque risulta l’elemento architetturalepiù critico all’interno della FPGA. Pertanto, in questi ultimi anni l’attenzionesi è focalizzata sullo sviluppo di architetture in cui il processo di routing, che

Page 21: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 21 — #21 ii

ii

ii

1.2. FPGA 21

gestisce questi collegamenti programmabili, risulti il più efficiente possibile.

1.2.3 Interconnessioni

Le interconnessioni all’interno di una FPGA sono costituite da piste metalliche,che viaggiano all’interno di canali orizzontali e verticali e che possono avere unaqualsiasi lunghezza, dove per lunghezza di ciascun segmento si intende il numerodi blocchi logici attraversati. Il numero di segment wire all’interno di ciascuncanale si indica con W .

Un’architettuara si definisce “segmented” se possiede segment wire aventi diversalunghezza, anche maggiore di 1, ossia che percorrono all’interno dei canali deitratti più lunghi di un singolo CLB. In figura 2.6 è riportato un esempio in cuivi sono segmenti di lunghezza 1, 2, 3 e 4. Pertanto i wire più lunghi di un CLBpasseranno attraverso alcuni switch module prima di giungere a destinazionenel blocco logico sink.

Figura 1.2.5: Canale con segmenti di lunghezza 1, 2, 3, 4.

I tool che effettuano il routing cercano di trovare i cammini più brevi possibi-li e, in primo luogo, suddividono le reti di interconnessione tra i vari CLB incollegamenti punto-punto (source-sink), andando alla ricerca del percorso mi-nimo per ciascuna connessione. E’ importante sfruttare in maniera oculata lerisorse a disposizione, distribuendo le interconnessioni lungo i canali in modo dauniformare l’occupazione delle tracce.

Il programma che effettua il processo di routing associa una funzione di costo aciascuna interconnessione basando la sua scelta sulla decisione di ottimizzare ol’area occupata dai collegamenti o la velocità dei segnali che viaggiano attraversoquesti.

Page 22: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 22 — #22 ii

ii

ii

1.2. FPGA 22

Esistono molte tecniche di stima delle possibili interconnessioni da realizzare,sostanzialmente esse valutano il numero ottimale di tracce da utilizzare pereffettuare i collegamenti più brevi possibili; tuttavia, si richiede un giusto com-promesso tra l’area necessaria alla creazione dei canali e la lunghezza dei col-legamenti tra il blocchi logici, in quanto canali più larghi consentono camminipiù brevi e, viceversa, canali più stretti implicano interconnessioni più lunghe.Interconnessioni lunghe presentano ritardi elevati in quanto devono essere at-traversati molti switch module, ossia il segnale deve passare attraverso dei pass-transistor che presentano una resistenza e due capacità parassite. Il ritardo dipropagazione viene analizzato mediante tecniche che modellizzano il percorsoeffettuato dal segnale mediante reti RC.

Page 23: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 23 — #23 ii

ii

ii

Capitolo 2Immagini Digitali e ImageProcessing

Le immagini digitali sono un tipo di immagini che sono state convertite in unformato leggibile dai computer e consistono in una sequenza di 0 e 1 logici. Disolito, con immagine intendiamo una figura fissa che non cambia nel tempo, adifferenza dei video che evolvono nel tempo e in generale contengono movimen-ti e/o cambiamenti di oggetti. Le immagini digiyali solitamente si ottengonoconvertendo segnali continui in un formato digitale. Allo stesso modo, le imma-gini digitali sono visualizzate attraverso diversi media di visualizzazione, tra cuistampanti digitali, monito e proiettori.

Un aspetto importante dell’elaborazione delle immagini che lo rende un argo-mento molto interessante è l’elevatissima diversità dei campi in cui se ne può fareuso. Virtualmente ogni ramo della scienza ha una sottodisciplina che utilizzadispositivi di registrazione o sensori per collezionare immagini da tutto ciò che cicirconda. Queste informazioni sono di solito multidimensionali e possono essereorganizzate in un formato che sia comodo per la visione da parte di persone.Questo genere di dataset può essere trattato come un’immagine e processatoutilizzando le tecniche di elaborazione delle immagini, anche se le informazioninon derivano da una fonte di luce visibile.

23

Page 24: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 24 — #24 ii

ii

ii

2.1. TIPI DI IMMAGINI 24

2.1 Tipi di immagini

Un altro aspetto interessante dell’elaborazione delle immagini è la diversità deitipi di immagini che possiamo avere, e che si possono ottenere da quasi qual-siasi tipo di radiazione. Certamente uno degli sviluppi più interessante si hanell’imaging medico, grazie alla nascita di nuovi sensori in grado di catturareimmagini da fonti di radiazioni fino ad allora troppo deboli, come ad esempio laPET o la risonanza magnetica, o che rilevano le radiazioni in modi nuovi, comead esempio nella TAC, dove i raggi X vengono catturati da diverse angolazioniper ottenere un’aggregazione di immagini.Lo spettro delle radiazioni che possono essere rilevate, memorizzate come im-magini, visualizzate, analizzate, trasmesse o memorizzate è molto ampio. Nel-l’esperienza di tutti i giorni, noi siamo portati a pensare a “quello che vediamo”come “quello che abbiamo davanti”, ma in realtà i nostri occhi reagiscono ad unaporzione molto piccola di tutte le informazioni disponibili in un dato momento.Come per ogni altro sensore, l’occhio umano ha un range limitato. La banda diradiazioni elettromagnetiche che siamo capaci di vedere, il cosiddetto “spettrovisibile”, è molto ristretto, come possiamo vedere in Figura 2.1.

Figura 2.1.1: Spettro elettromagnetico.

In ogni istante, percepiamo davvero una piccola parte di tutte le radiazionidisponibili che ci circondando. Da un punto di vista evolutivo, la banda diradiazioni elettromagnetiche che l’occhio umano percepisce, probabilmente èottimale, dato che la quantità di informazioni è ridotta e quella piccola parteche utilizziamo è estremamente affidabile e disponibile (il sole, infatti, emettemolte radiazioni nello spettro visibile, e l’atmosfera terrestre si lascia facilmenteattraversare nello spettro del visibile). Sicuramente, radiazioni che ricadonoin altre bande possono essere molto utili, quando si cerca di raccogliere tuttele informazioni possibili dal mondo circostante. Infatti, in alcuni campi dellascienza si creano immagini da praticamente tutto lo spettro elettromagnetico, e

Page 25: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 25 — #25 ii

ii

ii

2.1. TIPI DI IMMAGINI 25

si utlizzano queste informazioni per creare una migliore rappresentazione dellarealtà fisica.

Un punto che hanno in comune quasi tutte le immagini è che c’è una sorgente cheemette una radiazione, questa radiazione interagisce con qualche materiale, cheviene rilevato e infine trasdotto in un segnale elettrico che verrà successivamentedigitalizzato. Le immagini risultanti possono essere successivamente utilizzateper estrarre informazioni riguardanti la sorgente della radiazione e/o gli oggetticon la quale la radiazione ha interagito.

Possiamo classificare le immagini in funzione del modo in cui avviene l’intera-zione con la radiazione:

Immagini da riflessione: rilevano la radiazione che è stata riflessa dalla su-perficie degli oggetti. La radiazione stessa può essere ambientale o artifi-cale, e può provenire da una sorgente localizzata o da sorgenti multiple oestese. La maggior parte della nostra esperienza con le immagini avvieneche tramite gli occhi si basa su immagini riflesse. Esempi di luce non vi-sibile comuni includono immagini radar, immagini sonar, immagini laser,ecc. Il tipo di informazioni che possono essere estratte dalle immaginiriflesse riguarda principalmente le superfici dell’oggetto, le sue forme, ilcolore, ecc.

Immagini da emessione: queste immagini sono ancora più semplici, dato inquesto caso l’oggetto stesso che viene ripreso produce luce propria. Unesempio sono le immagini termiche o ad infrarossi, che si incontrano spes-so in applicazioni mediche, astronomiche, e militari; oggetti che produconoluce visibile come ad esempio delle lampadine o le stells. Nelle immagi-ni di questo tipo, l’informazione che otteniamo è principalmente internaall’oggetto; l’immagine può rivelare come l’oggetto crea la radiazione ofornire informazioni sulla strutture interna dell’oggetto. In ogni caso, puòanche essere un’informazione di tipo esterno, ad esempio, una telecameratermica può essere utilizzata in situazioni di scarsa luminosità per produr-re delle immagini utili di una scena che contiene oggetti caldi, come adesempio delle persone.

Immagini da assorbimento: forniscono informazioni circa la struttura inter-na dell’oggetto. In questo caso, la radiazione passa attraverso l’oggettoe viene parizalmente assorbita o attenuata dal materiale che lo compo-ne. Il grado di assorbimento influenza il livello di radiazione catturato

Page 26: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 26 — #26 ii

ii

ii

2.2. DIMENSIONI DELLE IMMAGINI 26

nell’immagine. Alcuni esempi sono le immagini a raggi X e alcuni tipi diimmagini soniche.

Chiaramente, la classificazione appena fatta è informale, ed una data immaginepuò contenere oggetti, che interagiscono con le radiazioni in maniera differente.E’ però molto importante realizzare che le immagini provengono da differentifonti di radiazione ed oggetti, e lo scopo dell’imaging è di solito quello di estrarreinformazioni circa la sorgente e/o gli oggetti, catturando la radiazione riflessa/-trasmessa ed esaminando il modo in cui questa interagisce con gli oggetti, il chepuò rivelare informazioni utili sia sulle sorgenti che sugli oggetti.

2.2 Dimensioni delle immagini

Un’importante caratteristica delle immagini digitali e dei video è che sono segnalimultidimensionali, il che significa che sono funzioni di più di una singola varia-bile. Nello studio dell’elaborazione dei segnali digitali, i segnali sono in generedelle funzioni monodimensionali del tempo. Le immagini, invece, sono funzionidi due o 3 variabili spaziali, senza considerare che un video digitale include unaterza (o quarta) dimensione temporale. La dimensione di un segnale è il numerodi coordinate che sono necessarie per indicizzare un dato punto nell’immagine.Una conseguenza di ciò è il fatto che l’elaborazione digitale delle immagini, ed inspecial modo l’elaborazione digitale dei video, è particolarmente data-intensive,cioè sono richieste discrete risorse computazionali e di memorizzazione.

2.3 Digitalizzazione dell’immagine

Tutto ciò che ci circonda, ad ogni ragionevole scala di osservazione, è sottopostoa grandezze che variano con continuità nel tempo. Allo stesso modo, i segnali ele immagini che sono tanto abbondanti nell’ambiente (prima di essere percepite)sono di natura analogica. Con analogico intendiamo due cose: che un segnaleesiste in un dominio (spaziale o temporale) continuo, e che assume con conti-nuità valori compresi in un determinato intervallo. Ma dato che l’elaborazionedell’immagine avviene grazie all’utilizzo di strumenti digitali, dobbiamo con-vertire queste immagini continue, in una forma comprensibile da un computer.Anche per digitale intendiamo due cose: che il segnale è definito su un dominio(spaziale o temporale) discreto, e che assume valori discreti. Prima di avviare il

Page 27: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 27 — #27 ii

ii

ii

2.3. DIGITALIZZAZIONE DELL’IMMAGINE 27

processo di elaborazione digitale deve essere eseguito un processo di conversioneanalogico-digitale (conversione A/D). La conversione A/D consiste in due passi:campionamento e quantizzazione.

2.3.1 Campionamento

Il campionamento è il processo che converte un segnale spazio-continuo (o tempo-continuo) in un segnale spazio-discreto (o tempo-discreto). Per un segnale con-tinuo di dimensione data, ci sono determinate ragioni matematiche riguardo alfatto che c’è un limite inferiore alla frequenza di campionamento (che determinail numero minimo di possibili campioni) richiesta per ottenere delle informazionidal segnale. Tuttavia, l’elaborazione delle immagini è una disciplina visual, edè più importante capire che quello che di solito è importante è che il processodi campionamento non comporti una perdita di informazione visuale. Detto inparole povere, l’immagine/video campionato si deve “vedere bene”, cioè che nonsoffra troppo della perdita di risoluzione o di artefatti che si possono creare colprocesso di campionamento.

Figura 2.3.1: Segnale campionato.

La Figura 2.3.1 illustra il risultato del campionamento di un segnale continuomonodimensionale. E’ semplice osservare che i campioni nel loro insieme de-scrivono grosso modo la forma del segnale originale piùttosto bene, anche se

Page 28: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 28 — #28 ii

ii

ii

2.3. DIGITALIZZAZIONE DELL’IMMAGINE 28

ci possono essere delle piccole variazioni tra un campione e il successivo chepossono andare perse. Matematicamente, l’informazione può andare perduta,cioè potrebbe non essere possibile ricostruire il segnale continuo originale daicampioni. Supponiamo che il segnale sia parte di un’immagine, ad esempio unasingola riga dell’immagine visualizzata a video, allora la qualità visiva potrebbeo meno essere ridotta nella versione campionata. Chiaramente, il concetto diqualità visiva cambia da persona a persona, e dipende dalle condizioni sottole quali l’immagine viene vista, come ad esempio la distanza da cui guardiamol’immagine.

Da notare che in Figura 2.3.1 i campioni sono indicizzati da numeri interi. In-fatti, il segnale campionato può essere visto come un vettore di numeri. Se ilsegnale è finito in ampiezza, allora il vettore del segnale puso essere memorizza-to e processato in digitale come se fosse un arrai, quindi l’utilizzo di un indiceintero risulta naturale. Allo stasso modo, il segnale di un’immagine che è cam-pionato nello spazio è generalmente indicizzato da un intero per ogni dimensionecampionata, consentendo di essere facilmente processata come un normale arraydi numeri multidimensionale. Un’immagine campionata è un array di valori del-l’immagine campionati che sono tipicamente organizzati in un formato tabellarerighe-colonne. Ognuno degli elementi dell’array è chiamato picture element, opiù semplicemente pixel. Si può usare anche il termine pel per definire un pixel,ma questo termine è caduto in disuso dato che è meno descrittivo ed evidente-mente, non molto accattivante. Il numero di righe e di colonne in un’immaginecampionata è generalmente posto ad un valore che è potenza di 2, dato che sem-plifica di molto l’indirizzamento dei campioni nella memoria di un computer, edinoltre ci sono degli algoritmi, tra cui la trasformata di Fourier discreta, chesono particolarmente efficienti quando operano su segnali che hanno dimensionepotenza di 2. Le immagini sono quasi sempre rettangolari (quindi indicizzateda una coppia di coordinate Cartesiane), in generale la dimensione orizzontaleè più lunga, sopratutto nei segnali video, in cui vengono utilizzati diversi aspectratio quali 4:3 o 16:9.

Come menzionato sopra, gli effetti di un campionamentto insufficiente (“sotto-campionamento” - “undersampling”) sono chiaramente visibili. In Figura 2.3.1sono mostrati due esempi di immagini campionate. Le due immagini conten-gono entrambe un significativo ammontare di dettagli visivi interessanti chesostanzialmente definiscono il contenuto dell’immagine. Le immagini vengonomostrate a diverse densità di campionamento: 256 x 256 (28x28 = 65536 cam-pioni), 128 x 128 (27x27 = 16384 campioni) e 64 x 64 (26x26 = 4096 campioni).Chiaramente, in entrambi i casi, tutte e tre le risoluzioni delle immagini sono

Page 29: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 29 — #29 ii

ii

ii

2.3. DIGITALIZZAZIONE DELL’IMMAGINE 29

Figura 2.3.2: Diversi passi di campionamento.

digitali, quindi c’è in ogni caso una potenziale peridta di informazioni relativeall’immagine analogica originale. Tuttavia, si nota il rapido degrado della qua-lità percepita delle immagini. E’ interessante notare che l’impronta digitale a64 x 64 ha completamente cambiato pattern. Appare addirittura quasi comeun’altra impronta digitale. Questi sono i risultati di un effetto del sottocampio-namento detto aliasing, cioè le frequenze dell’immagine non sembrano avere unsignificato fisico (in questo caso, creando addirittura un falso pattern).

2.3.2 Quatizzazione

Il successivo passo del processo di digitalizzazione dell’immagine è la quantiz-zazione. I valori che un immagine assume sono delle intensità, dato che corri-spondono ad un segnale incidente su un sensore, come ad esempio la quantità difotoni o l’ampiezza della funzione d’onda. L’intensità è una quantità prettamen-te positiva. Se l’immagine è rappresentata visivamente usando la scala di grigi,allora il valore dei pixel deve riferirsi ad uno dei livelli di grigio. Chieramente,

Page 30: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 30 — #30 ii

ii

ii

2.3. DIGITALIZZAZIONE DELL’IMMAGINE 30

in generale, un’immagine potrebbe essere composta da pixel multivalore (comein un’immagine a colori), oppure l’immagine potrebbe presentare dei pixel convalore negativo, in questo caso però non siamo in presenza di una funzione diintensità. In ogni caso, i valori dell’immagine devono essere quantizzati affinchèl’immagine possa essere processata.La quantizzazione è il processo di convertire un’immagine a valori continui inun’immagine a valori in un intervallo discreto. Questo di solito viene effettuatoattraverso operazioni di arrotondamento, troncamento, o qualche altro processonon lineare irreversibile. La quantizzazione è un passo fondamentale che deveprecedere l’elaborazione digitale, dato che l’intensità dell’immagine deve rappre-sentare con precisione finita (limitata dalla lunghezza della parola macchina) inqualsiasi elaboratore.Quando il livello di grigio di un pixel è quantizzato, gli viene assegnato unodei valori dell’insieme finito di numeri che corrisponde al range del livello digrigio. Una volta definito l’insieme finito di valori per la scala di grigi, allorala quantizzazione può essere realizzata semplicemente arrotondando il valoredel pixel dell’immagin con il livello di grigio discreto più vicino. Questi valorearrotondati possono essere qualunque tipo di numero, ma per convenienza esemplicità di rappresentazione, sono mappati tramite una trasformazione linearein un insieme finito di numeri interi non negativi {0, ...,K − 1}, dove K è unapotenza di 2: K = 2B . Quindi il numero di livelli di grigio disponibili è K, edil numero di bit allocati per ogni pixel è B. In genere 1 · B · 8 con B = 1 (perle immagini binarie) e B = 8 (dove ogni livello di grigio occupa un byte) sonole più comuni profondità di colore per un pixel. Le immagini multivalore, conele immagini a colori, richiedono una quantizzazione dei pixel che può essere siaindividuale che collettiva (parliamo di “quantizzazione vettoriale”); per esempio,un’immagine a tre componenti di colore è molto spesso rappresentata con 24bitper pixel.Diversamente dal campionamento, la quantizzazione è complicata da analizzaredato che non è lineare. Inoltre, la maggior parte dei trattati teorici sull’elabo-razione dei segnali assume che i segnali studiati non sono quantizzati, dato chetende a complicare abbondantemente l’analisi. D’altra parte, la quantizzazioneè essenziale in ogni algoritmo di compressione di segnali con perdita di infor-mazioni, dove l’obiettivo può essere pensato come la ricerca della strategia diquantizzazione ottima che simultaneamente minimizza il volume dei dati conte-nuti nel segnale e che disturba il meno possibile la fedeltà del segnale. Con laquantizzazione semplice, come nel caso dell’arrotondamento al livello di grigiopiù vicino,

Page 31: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 31 — #31 ii

ii

ii

Bibliografia

[1] Carlo Brandolese, William Fornaciari - Sistemi embedded, svilup-po hardware e software per sistemi dedicati - Pearson PrenticeHall

[2] Digital Image Processing - Gonzalez and Woods - Prentice Hall -ISBN number 0201180758.

[3] http://www.dsp.dist.unige.it/~aldo/eiva1/Matdida/DispEIVA1cap1_3- Dispense di elaborazione di immagini

[4] Avidan, S., Shamir, A. 2007. Seam Carving for Content-AwareImage Resizing. ACM Trans. Graph. 26, 3, Article 10 (July 2007),9 pages.

[5] Content aware image retargeting - A.Bonsigliore,S.Anelli -http://airlab.elet.polimi.it/images/4/45/Documentazione.pdf

[6] Michael Rubinstein, Ariel Shamir, Shai Avidan - Improved SeamCarving for Video Retargeting ACM Transactions on Graphics,Volume 27, Number 3, SIGGRAPH 2008

[7] Linux. La guida Di Matt Welsh,Matthias Kalle Dalheimer,LarKaufman - Strumenti per l’analisi dei programmi - pag.541-543

[8] Manuale gprof-http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html

31

Page 32: Tesi Michele Fratello

ii

“MF_Tesi” — 2011/8/3 — 21:18 — page 32 — #32 ii

ii

ii

BIBLIOGRAFIA 32

[9] Red Hat Enterprise Linux 3: System Administration Guide -Oprofile Capitolo 43 - http://web.mit.edu/rhel-doc/3/rhel-sag-it-3/ch-oprofile.html

[10] Manuale Oprofile - oprofile.sourceforge.net/doc/ -

[11] Manuale Valgrind - http://www.faqs.org/docs/Linux-HOWTO/Valgrind-HOWTO.html

[12] Intel® VTune™ Amplifier XE 2011 -http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/

[13] Gprof2dot - http://code.google.com/p/jrfonseca/wiki/Gprof2Dot