UNIVERSITÀ DEGLI STUDI DI GENOVA

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "UNIVERSITÀ DEGLI STUDI DI GENOVA"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Elettronica TESI DI LAUREA COMPRESSIONE DI IMMAGINI SU DISPOSITIVI CARATTERIZZATI DA RISORSE LIMITATE NELL AMBITO WIRELESS SENSOR NETWORKS. Relatore: Chiar.mo Prof. Ing. Giancarlo Parodi Candidato: Daniele Dentone Anno Accademico

2 Genova, 12 Marzo 2010 II

3 Image Compression on Constrained Resources devices in a Wireless Sensor Network Abstract The topic covered in this thesis concerns about the study and the implementation of compression algorithms specifically designed for costrained space FPGA devices. The goal is to find the better solution to reduce the data size of images acquired by high-resolution CMOS sensors, in order to minimize the energy requirements for data transmission and ensure a longer lifetime of the wireless architecture. III

4 Prefazione Gli argomenti trattati in questa tesi riguardano lo studio e l implementazione di algoritmi per la compressione d immagini su dispositivi caratterizzati da scarse risorse computazionali ed energetiche. Questi algoritmi devono quindi offrire un buon compromesso tra complessità, efficienza e velocità, al fine di ottimizzare l'utilizzo dei componenti hardware e la durata dell architettura di rete. La tesi si inserisce nell ambito di un progetto di ricerca denominato TERVISIO, che ha tra gli obbiettivi la valutazione dell uso delle Wireless Sensor Networks in ambito agroalimentare. In particolare, il caso di studio considerato in questa tesi riguarda l utilizzo di sensori ottici per il monitoraggio delle popolazioni di insetti infestanti le coltivazioni dell olio (mosche olearie). IV

5 Indice Indice 1 Stato dell'arte Caratteristiche delle Wireless Sensor Networks Tipologie di reti e applicazioni Protocollo ZigBee Multimedia Wireless Sensor Networks Metodologia di sviluppo Il progetto TERVISIO Architettura di sistema Scheda FPGA Sensore Ottico Strumenti Software Libero IDE National Instruments LabVIEW Problematiche per la compressione di immagini JPEG Usi tipici di Jpeg Compressione Jpeg Modifiche lossless effettuabili su immagini Jpeg Algoritmo di compressione Jpeg Cambio dello spazio di rappresentazione dei colori Downsampling Divisione in blocchi Discrete Cosine Transform Quantizzazione Codifica Entropica Livello di compressione ed artefatti JPEG Caratteristiche di Jpeg Compressione Jpeg V

6 Indice Trasformazione dello spazio dei colori Divisione dell immagine in blocchi Trasformata Wavelet Quantizzazione Codifica Performance Applicazioni di Jpeg L algoritmo LZ Basi dell algoritmo Fase di codifica Fase di decodifica Utilizzo di LZ77 in campo medico GIF Utilizzi del formato Gif Palette Gif LZW Implementazione effettuata Core MKJPEG Implementazione in hardware di LZ Adattamento dell algoritmo: LZSS Algoritmo di decompressione Risultati ottenuti Comparazione dei risultati Conclusioni e sviluppi futuri Conclusioni Sviluppi Futuri Ottimizzazione rapporto Compressione/velocità Adattamento allo standard DEFLATE Codifica di Huffman Descrizione dell algoritmo di Huffman Funzionamento di base dell algoritmo di Huffman Proprietà dell algoritmo di Huffman Varianti dell algoritmo di Huffman VI

7 Indice Decodifica di Huffman Applicazioni della codifica di Huffman Appendice Bibliografia VII

8 Stato dell arte 1 Stato dell'arte Obiettivo principale di questo capitolo è fornire una panoramica dello stato dell arte delle wireless sensor networks. Vengono a seguito fornite informazioni significative su tali infrastrutture, sulle loro esigenze e capacità, nello specifico dinamiche per la creazione di reti di sensori ottici. Nel secondo capitolo verranno invece descritte le piattaforme utilizzate nel progetto ed i criteri applicati per sceglierle, insieme agli strumenti di sviluppo che sono stati impiegati. 1.1 Caratteristiche delle Wireless Sensor Networks Una wireless sensor network, spesso abbreviata WSN, è una rete costituita da un elevato numero di sensori, detti nodi o mote, che dispongono di capacità autonome di elaborazione dei dati rilevati e trasmissione degli stessi tramite protocolli di rete dedicati [1] e applicati su reti wireless. L avanzamento della tecnologia nello sviluppo di dispositivi elettromeccanici sempre più piccoli e precisi, ha reso questi sistemi sempre più low cost, infatti, solitamente il numero di sensori impiegati all interno delle reti sono dell ordine delle migliaia, dato il loro costo trascurabile. Un altro aspetto riguarda la politica energetica che viene applicata ad ogni nodo. Infatti, la fonte energetica che li alimenta è non rinnovabile, e quando un nodo esaurisce la sua autonomia viene dismesso. L impatto di questa problematica è notevole soprattutto nella scelta dei protocolli di comunicazione da usare, nelle politiche di programmazione dei dispositivi e nel routing dell informazione tra i vari sensori. Figura 1.1- Evoluzione tecnologica dei nodi, in termini di area occupata. 8

9 Stato dell arte I nodi possono differire profondamente tra loro, infatti le loro specifiche sono direttamente collegate al contesto in cui devono operare e tipicamente si possono distinguere quattro tipi fondamentali. Il primo tipo di nodo ha l obiettivo di tenere traccia di un certo parametro, quale può essere temperatura, livelli di gas nocivi, pressione, umidità durante tutto il tempo in cui è in funzione. Ovviamente l aggiornamento di tali valori, che richiede una trasmissione (power consuming), dev essere regolato in base alle esigenze critiche del controllo. Il secondo tipo di nodo è orientato agli eventi. In pratica, quando si verifica l evento per il quale è stato settato il sensore, registra i dati relativi all evento per poi trasmetterli. Mettiamo, ad esempio, che il sensore sia montato sopra un semaforo, e che l evento che ne scatena la reazione sia un automobile che passi con il rosso: quando quest evento si verifica, il sensore ne registra l immagine, per trasmetterla successivamente al centro di elaborazione centrale. Il terzo tipo di sensore è orientato alla classificazione, in pratica è dotato di un algoritmo di SVM per distinguere, ad esempio, un automobile privata da un taxi. Questo tipo di sensore si rivela utile per segnalare un accesso non autorizzato, come potrebbe essere l utilizzo di corsie preferenziali. Il quarto tipo di sensore ha capacità di tracciamento di un oggetto, individuo o qualsiasi cosa di cui si desideri tenere traccia: posizioni e/o movimenti. Questo sensore ha una grande utilità in campi applicativi militari o comunque legati alla sicurezza. A queste quattro categorie si possono aggiungere le definizioni di attivo e passivo. In particolare, i sensori passivi sono costituiti da un singolo elemento che effettua valutazioni di tipo termico, sismico, acustico, ottico o biochimico, e tendenzialmente sono sistemi a con bassi livelli di energia in quanto non agiscono sull ambiente che monitorano. I sensori attivi, dato che vanno ad influire sull ambiente in cui si trovano, magari attraverso l uso di radar o sonar, sono generalmente sistemi ad alta energia, quindi più sensibili alla problematica dell autonomia energetica. In qualsiasi tipologia si ricada, rimane importante il fattore velocità col quale i dati vengono trasmessi al centro di riferimento, per garantire la minima latenza tra l acquisizione dei dati sul campo ed un eventuale intervento umano. 9

10 Stato dell arte L ambiente, in cui vengono distribuite le reti di sensori, può a volte essere ostile e caratterizzato da elevati livelli di rumorosità, temperatura e vibrazioni. Non è una evenienza così rara, il motore di un automobile potrebbe benissimo costituire un ambiente simile così come ambienti industriali o robot manifatturieri. Queste condizioni estreme hanno portato a rendere i sensori sempre più piccoli, economici e robusti. Inoltre, a seconda dell ambiente si diversificano le strategie di alimentazione e comunicazione dei sensori. Esistono quindi sensori perennemente connessi alla linea elettrica che comunicano via LAN, ed altri dipendenti da batterie e comunicanti via wireless. Le funzionalità che devono garantire i nodi riguardano problemi di processamento del segnale digitalizzato, compressione del segnale, gestione degli errori, codifica delle informazioni. E queste necessità, che sono funzione della particolare applicazione, rendono la progettazione dei componenti hardware un processo dedicato. L hardware, infatti, deve incorporare la parte sensoriale, processori, trasmettitori radio, gestione dell alimentazione, interfaccia verso il software. Queste componenti possono essere di tipo elettronico e meccanico, e l insieme viene chiamato sistema MEMS (Micro ElectroMechanical System). Una divisione logica dei tipi di hardware coesistenti all interno di un nodo porta alla definizione di quattro categorie di sottosistemi hardware che stanno alla base dell intero sistema: Power Management: Controllano l utilizzo dell energia di scorta, necessaria per effettuare le normali operazioni, e che può avere durata variabile, da ore ad anni a seconda dei compiti del nodo. Blocco di elaborazione logica e memorizzazione: Contiene microcontrollori e processori che variano da semplici architetture a 8 bit fino a 64 bit, il cui scopo è la criptazione dei dati, la gestione degli errori, la modulazione digitale e la trasmissione. La parte di memoria è legata ovviamente all applicazione, varia da pochi Megabyte a centinaia di Gigabyte. Blocco Sensore: Il blocco deputato all acquisizione dati, comprende il sensore stesso e tutti i circuiti di condizionamento analogico del segnale. 10

11 Stato dell arte Blocco di Comunicazione: E la sezione deputata alla comunicazione via wireless, che deve avere la capacità di comunicare anche con tipi di reti diverse. Figura 1.2- Architettura Hardware di un nodo sensore Inoltre, anche a livello software è possibile effettuare una divisione in sottosistemi ed in particolare: Livello Middleware: E il codice che fa da tramite relazionale per le applicazioni ad alto livello, garantendo funzioni che siano indipendenti dall hardware sul quale si trova. Rappresenta la base del sistema operativo, quando ne è presente uno. Livello Driver: Contiene i moduli software deputati alla gestione delle funzioni del sensore. Livello Comunicazione: Software dedicato alla gestione della comunicazione, routing delle informazioni, forwarding, applicazione dei protocolli. Livello Driver di Comunicazione: Software di gestione dell hardware radio, comprensivo delle operazioni di sincronizzazione, encoding del segnale, modulazione. 11

12 Stato dell arte Figura 1.3- Architettura Software di un nodo sensore 12

13 Stato dell arte 1.2 Tipologie di reti e applicazioni Le wireless sensor networks si basano sul sistema di comunicazione a salti multipli (multihop), poichè quest ultimo, differentemente da una trasmissione diretta a lunga distanza, ha una perdita di segnale molto inferiore. Infatti, la comunicazione avviene tramite salti tra un sensore e un altro, consumando in tal modo minore energia e rendendo il sistema più affidabile. In questo modo, nessun nodo è indispensabile alla comunicazione, dato che se è fuori uso (ad esempio per esaurimento della risorsa energetica) può essere tranquillamente sostituito da un altro nodo. Questa capacità di riconfigurazione è legata soprattutto alla strategia che sta alla base del multi-hop. Questa tecnica rende i nodi in grado di fare forwarding dei dati verso un altro nodo, che si trova più vicino al destinatario creando così una certa quantità di percorsi multipli che portano tutti allo stesso bersaglio, la cui distanza diventa così indifferente per il trasmettitore originale. Procedendo in questa maniera, si può sopprimere l esistenza di un nodo centrale che gestisce il traffico d informazione, a favore di una rete distribuita che si governa autonomamente. Questo tipo di reti prende il nome di C1WSN. Un altro tipo di rete è la C2WSN, che si basa sul principio di single-hop. In pratica, i nodi non comunicano più tra di loro bensì con un nodo predisposto ad avere la funzione di router, che raccoglie tutti i dati dei sensori che gli competono, per poi inviarli, senza processamenti ulteriori, al centro di controllo principale. La topologia punto-punto di questo tipo di reti che le rende poco costose, fa che siano utilizzate in applicazioni di monitoraggio su larga scala di ambienti industriali e medici Protocollo ZigBee Il protocollo standard, che viene impiegato per la comunicazione all interno di queste reti, viene indicato con il nome ZigBee [17]. Zigbee utilizza i layer a livello fisico e data link specificati precedentemente all interno del recente standard IEEE (Specifiche per network private a basso rate di trasmissione) aggiungendoci nuove caratteristiche e un API (Application Programming Interface) per consentire agli sviluppatori di creare applicazioni specifiche in grado di accedere ai servizi forniti dai livelli sottostanti. 13

14 Stato dell arte Figura 1.4- La struttura dei livelli ISO/OSI dello standard ZigBee Questo protocollo opera a diverse frequenze assegnate a seconda dei diversi paesi. Ad esempio, 868 MHz in Europa, 915 MHz negli USA, 2,4 GHz nel resto del mondo. I prodotti recentementi sviluppati su questa tecnologia risultano più frequentemente operanti alla frequenza di 2,4 GHz, che consente un data rate massimo che si aggira sui 250 Kb per secondo a livello fisico. La tecnica impiegata per la trasmissione si basa su una modulazione digitale a 16 elementi quasi ortogonali. Durante il periodo di trasmissione di ogni simbolo vengono usati quattro bit dell informazione per selezionare una delle 16 sequenze quasi ortogonali di rumore pseudo-casuale da trasmettere. Tali sequenze sono concatenate per simboli successivi e la sequenza aggregata generata viene modulata su una portante usando la modulazione O-QPSK (Offset Quadrature Phase Keying-Codifica a quadratura di fase con offset). Questa modulazione può essere vista come una O-QPSK codificata e quindi effettuata tramite una look-up table, la quale genera i simboli diminuendo il costo di trasmissione. Distanze tipiche di trasmissione vanno dai 30 metri in ambienti in cui gli elementi comunicanti non sono in vista (Ad esempio all interno di un abitazione) a oltre 80 metri se si ha la possibilità di non avere ostacoli tra i trasmettitori. Chiaramente il bit rate di 14

15 Stato dell arte trasmissione costituisce un vincolo se le applicazioni richiedono di trasmettere grandi moli di dati sui dispositivi di rete. Lo standard IEEE è un protocollo molto leggero e si basa sulla tecnica CSMA (Channel Sense Multiple Access), che consente di rilevare se ci sono accessi multipli alla rete e gestire al meglio le eventuali collisioni. Tra le caratteristiche che deve garantire si trovano la trasmissione di beacon frames, sincronizzazione dei dispositivi e affidabilità del meccanismo di trasmissione. Un aspetto chiave del livello Data Link riguarda la trasmissione della conferma della ricezione del pacchetto dati, effettuata per ogni blocco tramite questo livello, garantendo la consegna dello stesso. Nonostante ciò non vi è alcuna garanzia del livello di qualità del servizio nè supporto per livelli di priorità di tipo network. In pratica, ZigBee offre solo la consegna dei pacchetti individuali tra i ricevitori. A livello network, ZigBee implementa meccanismi usati per entrare od uscire dalle reti, e per effettuare il routing di blocchi informativi verso le destinazioni indicate. Tale routing si può articolare usando più di un dispositivo intermedio all interno della rete per giungere a destinazione. In questo modo si implementa la possibilità di utilizzare percorsi alternativi, rendendo la rete molto più solida e resistente ad eventuali guasti. La scoperta e la manutenzione di tali percorsi viene affidata al livello network, insieme all esplorazione e rilevazione di dispositivi vicini, con la conseguente memorizzazione delle informazioni relative a tali elementi. La crescita esponenziale del mercato dei sistemi di comunicazione wireless a corto raggio ha visto aumentare l importanza delle reti di sensori in grado di gestire immagini, per il supporto ad esigenze di sicurezza, sorveglianza ed inspezione. Per progettare un sistema efficiente di trasmissione d immagini in una WSN bisogna tenere conto di numerose problematiche legate al particolare tipo di architettura [2]. In particolare, tali problematiche sono in parte dovute alla limitatezza delle risorse, quali la fonte di energia del nodo wireless e le capacità di elaborazione dello stesso ed in parte da condizioni avverse del canale wireless e dalla capacità di resistenza agli errori degli algoritmi di compressione d immagini. A causa della perdita di segnale lungo il canale, al fading, a interferenze tra i canali e ad eventuali rumori presenti sul canale, la capacità dei 15

16 Stato dell arte canali wireless non riesce a competere con quella di un canale cablato, inoltre, il BER (Bit Error Rate) è molto più elevato. Una variabile introdotta dai canali wireless consiste anche nella possibile variazione delle caratteristiche del canale stesso nel tempo. Questo comportamento si ripercuote direttamente sul throughput del sistema, che diventa variabile a sua volta. ZigBee presenta inoltre alcuni limiti. Utilizzando la banda a 2.4 GHz otteniamo il massimo bit-rate (250 Kbps, contro i 40 e i 20 rispettivamente delle bande a 915 e 868 MHz) a livello fisico, ma vengono supportati solo pacchetti di dimensione limitata, in questo caso esiste un massimo di 127 byte. Inoltre, a causa dell overhead ai livelli network,mac e fisico, ogni pacchetto non può contenere più di 89 byte dedicati a dati dell applicazione. Questo comporta una grande frammentazione dello stream di dati, se questi risultano maggiori di tale valore. Il livello network non esegue la frammentazione, che dev essere gestita sia in fase di divisione che ricomposizione dal livello applicativo. Si rende così necessario anche un meccanismo di controllo di flusso per gestire gli acknowledge e le richieste di ritrasmissione di frammenti persi lungo il canale che presenti tali segnalazione ai livelli superiori a quello di network. Il vantaggio per cui questo standard viene impiegato nelle reti di sensori, è la minimizzazione del tempo di attività del ricetrasmettitore, che porta a un sensibile risparmio energetico. ZigBee dispone della capacità di comunicare con grande numero di nodi attivi ( a seconda della frequenza utilizzata) sia in modo statico che dinamico, e può rimanere in stand-by per un tempo considerevole, senza dover comunicare alcunchè alla rete. Tutto questo, messo insieme, porta ad un bassissimo consumo, a differenza di quanto si avrebbe utilizzando ad esempio il protocollo Bluetooth, che risulta più adatto a reti statiche a basso numero di nodi, bassi tempi di inattività e consumo elevato. Possibili applicazioni di queste reti, in ambienti domestici, includono l inserimento di politiche di controllo dell illuminazione, riscaldamento, condizionamento, di gas, acqua, elettricità, costruzione di impianti di sicurezza, sia contro possibili intrusioni che guasti. In particolare, architetture di sensori simili potrebbero agire addirittura per automatizzare la gestione e la riparazione di questi ultimi, fungendo sia da strumento di diagnosi che d intervento. 16

17 Stato dell arte Non è raro che sistemi basati su ZigBee vengano utilizzati per il controllo centralizzato di funzioni di riscaldamento e illuminazione. Infatti, è sufficiente attuare una politica di disattivazione di luci e riscaldamento negli ambienti che non vengono utilizzati, ad esempio in funzione di temperatura e luminosità dell ambiente esterno. Tale controllo non deve essere per forza di tipo on-off, ma si possono avere diverse scale, consentendo così una certa gradualità e aumentando le possibilità di utilizzo. Anche in ambiente industriale queste reti vengono largamente impiegate, solitamente per ridurre l intervento umano in ambienti potenzialmente pericolosi (Valutazione di emissioni nocive, o ambienti ad alta temperatura), o per compiti di gestione (Archivio e gestione magazzino) e utilizzo razionale dell energia. Possibili utilizzi in campo medico possono appartenere a semplici operazioni di monitoraggio delle condizioni di un paziente, sia in ambiente ospedaliero che remoto (domicilio del paziente) oppure a operazioni di emergenza, quali il rilevamento dei parametri vitali di una popolazione di pazienti che accedono al pronto soccorso, o addirittura dall interno di un ambulanza in comunicazione con il centro ospedaliero. Le reti C1WSN vengono applicate maggiormente in scenari di ricerca, nella gestione di eventi catastrofici, in campo militare e sicurezza. Nel primo tipo di applicazione, è possibile coprire la zona soggetta a calamità naturale con un grande numero di sensori, adibiti a compiti di assistenza e individuazione dei sopravvissuti, mappatura delle zone a rischio, rendendo le operazioni di salvataggio più sicure. Molti di questi sensori dispongono di videocamere a colori ed ad infrarossi, adatte ad essere utilizzate in ambienti privi di luce, quali possono essere macerie di costruzioni. Un altro impiego in questo contesto, è la diagnostica delle strutture danneggiate di pubblica utilità, quali acquedotti, ponti, edifici. Infatti le reti di sensori riescono a rilevare cedimenti e danni nascosti che sarebbero individuabili solo a fronte di costose analisi delle strutture onde evitare così ulteriori catastrofi impreviste, scatenate da successivi eventi distruttivi di minore entità. Nel campo militare, le reti di sensori hanno compiti di rilevazione, sia per eventuali incursioni nemiche, sia per attacchi chimici, biologici, nucleari, oltre che per la sorveglianza di luoghi ad alto livello di pericolosità, quali possono essere confini territoriali. 17

18 Stato dell arte Tutto questo è reso possibile dalla miniaturizzazione dei nodi, dal loro incremento di capacità e dal basso costo. Il fatto che tali reti siano anche robuste e in grado di riorganizzarsi le rende ideali in scenari di guerra, dove risulta impossibile avere personale specializzato disponibile. La caratteristica fondamentale per questo tipo di nodi è chiaramente la capacità di percepire vibrazioni, che possono rappresentare passi, spari (di tipo impulsivo), movimento di veicoli. La compresenza di tipi diversi di sensori su un singolo nodo consente di estrapolare meglio falsi allarmi grazie ad algoritmi di decisione basati su tutti i segnali rilevati. 18

19 Stato dell arte 1.3 Multimedia Wireless Sensor Networks La recente disponibilità di fotocamere cmos e microfoni a prezzi contenuti, in grado di catturare contenuti multimediali dall ambiente circostante, ha favorito lo sviluppo di Wireless Multimedia Sensor Networks. Queste reti consistono in dispositivi interconnessi che consentono l acquisizione di stream audio e video, immagini statiche, e dati. Grazie alla costante miniaturizzazione dell hardware, è possibile montare a bordo di un singolo nodo sia moduli di cattura audio che video. Oltre a raccogliere tali dati, le WMSN sono in grado di memorizzare, elaborare in realtime, correlare e fondere dati multimediali provenienti da fonti differenti. Questo nuovo tipo di reti, oltre a migliorare le reti già esistenti su campi di tracciamento, automazione negli edifici e gestione dell ambiente, rendono possibile alcune nuove applicazioni [3], quali: Multimedia Sensor Networks per la sorveglianza: Queste reti sono composte da video camere in miniatura alimentate a batteria, ognuna interconnessa con le altre. Infatti, ogni nodo è dotato di trasmettitore wireless a basso consumo capace di elaborare, trasmettere e ricevere dati. I sensori audio/video vengono utilizzati per migliorare e fare da spalla a sistemi esistenti di sorveglianza contro il crimine e gli attacchi terroristici. Reti a larga scala di questo tipo possono incrementare la capacità delle forze di polizia di monitorare aree, eventi pubblici, proprietà private e confini. In particolare, le WMSN portano tre vantaggi notevoli nei sistemi per la sorveglianza: o Aumento del campo visivo: In generale, il campo visivo di una telecamera risulta limitato, come il campo messo a fuoco durante uno zoom. Invece, un sistema distribuito di numerose videocamere e sensori consente una percezione dell ambiente da punti di vista multipli e sparsi, evitando l occlusione di alcune zone visive e garantendo una visione uniforme della totalità dell ambiente. o Miglioramento della qualità visiva: La ridondanza introdotta da sensori multipli, eterogenei e sovrapposti forniscono una comprensione migliore di quanto sta accadendo all interno dell ambiente. Infatti è possibile vedere lo stesso soggetto da punti di vista differenti e unendo i dati riportati dai 19

20 Stato dell arte sensori audio, video ed infrarossi riuscire a discernere cosa sta accadendo anche in situazioni abbastanza caotiche. o Multi-Risoluzione: La possibilità di acquisire differenti stream di dati (a diversa risoluzione) dallo stesso punto di vista fornisce una descrizione a risoluzioni multiple della scena, e numerosi livelli di astrazione. Per esempio, i dati forniti da un sensore statico a media risoluzione possono essere migliorati da una camera mobile con zoom che fornisce una vista ad alta risoluzione di eventuali regioni di interesse (ROI). Un possibile utilizzo di questa tecnica è il riconoscimento di persone in base ai loro lineamenti. Rilevazione e memorizzazione di eventi: Le reti di sensori multimediali possono individuare e tenere traccia, tramite registrazioni, di attività rilevanti quali furti, incidenti, violazioni al codice della strada. Controllo del traffico: Diventa possibile con le WMSN monitorare il numero e la posizione degli autoveicoli e garantire servizi di consiglio agli automobilisti per evitare la congestione del traffico. Inoltre, è possibile sviluppare dei sistemi di parcheggio intelligenti, che monitora i parcheggi disponibili e fornisce consigli su dove trovarli e quali siano i migliori rispetto alla nostra destinazione, migliorando così la mobilità urbana in modo considerevole. Ovviamente queste reti di sensori possono anche rilevare la velocità e il numero di veicoli, in modo da identificare eventuali violazioni e trasmetterne video alle forze di polizia. Servizi avanzati per la salute: Network wireless di telemedicina possono essere integrate a reti multimediali 3G per fornire servizi di assistenza alla salute. I pazienti indosseranno sensori per la rivelazione di temperatura corporea, pressione sanguigna, pulsazioni, attività respiratoria. Inoltre diventa possibile il monitoraggio remoto di pazienti attraverso sensori audio/video, di movimento e attività, incorporati all interno di bracciali. Assistenza agli anziani: Le reti di sensori possono svolgere la funzione di monitoraggio e studio del comportamento degli anziani al fine di identificare le cause di malattie quali la demenza. Tali sensori, in casi d emergenza, si connettono 20

21 Stato dell arte immediatamente con centri d assistenza remota e avvisano i parenti dell interessato. Monitoraggio d ambienti: Molti progetti di controllo di habitat naturali usano dati audio/video per problematiche in cui il tempo rappresenta un elemento critico del sistema. Ad esempio, in oceanografia, insiemi di sensori video vengono utilizzati per determinare lo stato dei litorali con il passare del tempo. Riconoscimento di persone: I contenuti multimediali forniti da questo tipo di reti, insieme a tecniche avanzate di processamento del segnale, risultano utili per l identificazione di persone scomparse o criminali e terroristi. Controllo di processo: I dati forniti dalle reti multimediali, quali immagini, temperatura, pressione possono essere utilizzati in processi di controllo industriale in cui il tempo è critico. La Machine Vision, applicazione delle tecniche di Computer Vision all industria manifatturiera, utilizza le informazioni estratte dalle reti di sensori per supportare processi di produzione quali fabbricazione di microchip, automobili, cibo, prodotti farmaceutici. Un esempio di possibile applicazione è l individuazione nei semilavorati e prodotti finiti di eventuali difetti. Inoltre, dotare i bracci robotici di un sistema di visione porta a una migliore identificazione di errori nel posizionamento di parti e alla loro correzione in tempo reale. Le WMSN nascono dalla convergenza di discipline dedicate a comunicazione, elaborazione dei segnali, teoria dei controlli e dei dispositivi embedded. Ciò porta queste strutture ad essere influenzate da un certo numero di fattori, quali: Requisiti di qualità specifici dell applicazione: La grande varietà di applicazioni basate su WMSN porta con se anche un grande numero di requisiti specifici. In aggiunta alle modalità tipiche di trasmissione dati, le WMSN devono consentire sia lo streaming dei contenuti multimediali sia l invio di snapshot. Questi ultimi portano i dispositivi a dover essere sensibili ad eventi e ad avere una reazione in tempi limitati, mentre lo streaming si articola su tempi più lunghi ma abbisogna di una trasmissione dati continua ed affidabile. Tutto ciò porta alla necessità di hardware di supporto adeguati, che supportino algoritmi ad alto livello per 21

22 Stato dell arte garantire la qualità del servizio e soddisfare i requisiti dell applicazione specifica. Questi vincoli sulla qualità vanno ad avere un impatto notevole sulla rete, e possono essere espressi come vincoli sulle caratteristiche di energia consumata, ritardi minimi, affidabilità, distorsione e tempo di vita della rete. Larghezza di banda: I contenuti multimediali, quali i video, richiedono delle larghezze di banda che sono molto più ampie di quelle supportate dai sensori disponibili al momento. Di conseguenza esiste la necessità dello sviluppo di tecniche di trasmissione ad alto bit-rate che comportino un consumo energetico ridotto. Una tecnica che sembra avere possibili applicazioni in ambito WMSN è la UWB (Ultra Wide Band). Tecniche di compressione: Gli stream video non compressi richiedono decisamente una larghezza di banda eccessiva per architetture wireless a multihop. Ad esempio, un singolo frame monocromatico a risoluzione 176x120, occupa circa 21 Kbyte, ed un video a 30 frame al secondo richiederebbe una larghezza di banda di oltre 5 Mbit al secondo. È evidente la necessità di tecniche di elaborazione del segnale efficienti, che riducano il numero di dati da trasmettere. Gli algoritmi tradizionali utilizzati nelle codifiche video si basano sull idea di ridurre il bit-rate generato dall encoder stimando la statistica della sorgente dati. Per conseguire ciò utilizzano tecniche di compressione intra-frame, che riducono la ridondanza informativa all interno dello stesso frame, mentre realizzano la compressione tra un frame ed un altro sfruttando la ridondanza tra frame in sequenza per ridurre i dati da memorizzare/trasmettere mantenendo comunque una buona performance. Il lato negativo di questo tipo di codifica è chiaramente la necessità di algoritmi complessi ad alto consumo energetico, chiaramente poco adatti ad un contesto di sensori wireless. Recentemente è stato elaborata una variante di questi algoritmi, dove il peso computazionale viene spostato sul decoder, consentendo di avere encoder semplici e quindi più leggeri sia dal punto della dimensione dell hardware sia da quello dell energia consumata. Elaborazione diretta dei dati: Le WMSN consentono l esecuzione di algoritmi sui dati ottenuti dall ambiente. Ciò richiede che l architettura di rete si adatti 22

23 Stato dell arte includendo strutture progettate per l elaborazione collaborativa, distribuita considerando i vincoli sulle risorse. Grazie a tale organizzazione è possibile estrarre solo le informazioni rilevanti, incrementando la scalabilità del sistema data la riduzione della trasmissione di informazioni ridondanti. Un esempio può essere l unione di dati derivati da differenti punti di vista con differenti risoluzioni, insieme con la riduzione della trasmissione delle informazioni non rilevanti oppure a filtraggi che dilatino la durata dell immagine nel tempo. Si rende quindi necessario sviluppare architetture che siano indipendenti dalle applicazioni, in modo da rendere flessibile l elaborazione dei contenuti. Consumo Energetico: La problematica energetica nelle WMSN si rende ancora più critica rispetto alle reti di sensori classiche. Infatti, pur essendo sempre su piattaforme con fonti di energia limitate, le applicazioni multimediali producono una quantità di dati molto elevata che richiede elaborazioni e larghe bande di trasmissione. Si sa che il consumo delle reti di sensori è generalmente dominato dalla trasmissione. Nel caso delle WMSN questo non si rivela sempre corretto, quindi bisogna studiare protocolli, algoritmi ed architetture in modo da bilanciare il consumo energetico con il livello di qualità richiesto dall applicazione. Flessibilità delle architetture: Necessaria per poter supportare applicazioni differenti nello stesso tempo. Piazzamento dei nodi: Alcuni sensori dispongono di una sensibilità elevata in corrispondenza di alcune direzioni (sensori direttivi) mentre altri possono raccogliere dati solo se l evento registrato è direttamente nella linea di vista del sensore. Quindi i modelli di distribuzione dei sensori utilizzati per le WSN non risultano sufficienti per pianificare la disposizione dei dispositivi in una WMSN. Integrazione con l architettura Internet: Per scopi commerciali risulta fondamentale garantire un servizio d interrogazione remota che consenta di ottenere informazioni dalla rete di sensori senza dover essere dove è localizzata l architettura. L integrazione di IP nelle WMSN diventa quindi un passo forzato nell evoluzione di tali reti. 23

24 Stato dell arte Integrazione con altre tecnologie wireless: Reti di sensori a larga scala possono essere costituite collegando nuclei indipendenti di sensori tramite altre tecnologie wireless. Ovviamente non bisogna sacrificare l efficienza delle operazioni eseguite all interno di ogni singola tecnologia. Considerando il problema dell architettura di rete delle WMSN, ci si imbatte spesso in strutture piatte ed omogenee nelle quali ogni sensore possiede le stesse caratteristiche e può comunicare solo con i nodi vicini. Questo atteggiamento è dovuto soprattutto alle esigenze di scalabilità della rete e del conseguente studio di un architettura insensibile alla dimensione della rete. Questa topologia non sempre è adatta alla gestione del traffico generato da applicazioni multimediali. Si ha quindi l esigenza di stabilire un architettura di riferimento per le WMSN. Figura 1.5- Architettura di riferimento di una WMSN Come si vede, sono presenti tre reti di sensori con caratteristiche variabili, e dislocate in luoghi differenti. Il primo tipo viene chiamato Single Tier Flat, al suo interno sono contenuti sensori video. Un sottoinsieme dei sensori, denominati hub, dispone di capacità di elaborazione superiori 24

25 Stato dell arte rispetto agli altri sensori. L unione degli hub costituisce un architettura di elaborazione distribuita. Tutti i contenuti multimediali vengono poi trasmessi con politica multi-hop ad un gateway wireless, direttamente connesso ad un elemento dedicato alla memorizzazione dei dati per utilizzi futuri. È possibile costruire architetture più complesse, che utilizzino una memorizzazione locale, che porta ad un notevole risparmio energetico, dato che non sussiste più la necessità di trasmettere tutti i dati continuamente al gateway remoto. Quest ultimo è connesso ad un nodo centrale che rappresenta l interfaccia verso l applicativo software che esegue le query sulla rete. Il secondo tipo rappresenta una struttura di tipo Single Tier Clustered, ed è costituita da sensori di tipo differente che inviano i dati a un nodo che funge da capo-cluster, il quale ha il compito di effettuare le elaborazioni sui dati multimediali in maniera intensiva. Questo nodo è anche collegato al wireless gateway e al nucleo di memorizzazione, verso i quali deve inviare i dati elaborati. Il terzo tipo rappresenta una rete di tipo Multi Tier, costituita da sensori di tipo diverso raggruppati in più livelli di rete, ognuno dei quali rappresenta un sottoinsieme delle funzionalità della rete. Sensori a basso consumo e risorse limitate svolgono compiti semplici, quali la misura di grandezze scalari, mentre sensori ad alto consumo sono responsabili di compiti più complessi. L elaborazione dei dati e la memorizzazione possono essere distribuite attraverso i vari livelli di rete. Un approccio possibile per progettare un applicazione per sensori multimediali consiste nel distribuire sensori in maniera omogenea e programmarli in modo da far eseguire tutte le operazioni possibili per ognuno. Questo porta alla creazione di una rete flat di tipo Single Tier composta da sensori omogenei. Un approccio alternativo, orientato alla tipologia Multi-Tier, consiste nell utilizzo di sensori eterogenei. In questo caso, i sensori a basso consumo vengono deputati alla realizzazione di compiti semplici, quali la rilevazione di grandezze scalari, mentre sensori con disponibilità elevata di risorse energetiche e computazionali vengono dedicati a compiti più complessi. Ad esempio, un applicazione di videosorveglianza può appoggiarsi a video camere a bassa risoluzione e sensori audio scalari per effettuare rilevazioni di movimento ed intrusione, per poi attivare delle camere ad alta risoluzione al fine di effettuare il tracciamento e riconoscimento dell evento rilevato a basso livello. 25

26 Stato dell arte L architettura si basa quindi su un sistema Multi Tier separato dal livello di funzionalità dei dispositivi. Un tier è infatti costituito da sensori video a bassa risoluzione, mentre l altro da videocamere con funzioni di zoom e movimento. Un architettura del genere offre molteplici vantaggi rispetto ad una di tipo Single Tier, soprattutto per scalabilità, costi inferiori, copertura superiore, funzionalità migliorate e una maggiore affidabilità. Considerando il problema di copertura dell ambiente da controllare, le reti di sensori tradizionali raccolgono informazioni all interno di un area ben definita, generalmente una circonferenza intorno al sensore, e definita dallo specifico modello. Nelle WMSN i sensori generalmente dispongono di una sensibilità maggiore e possono essere anche direzionali. In particolare, le videocamere possono raccogliere dati da regioni che non devono necessariamente essere vicine al sensore, ma non possono raccogliere dati se non sono direttamente in vista dell evento che andrebbe registrato. Inoltre, ogni sensore percepisce l ambiente e l eventuale oggetto da inquadrare da un punto di vista particolare, rendendo l orientamento e la posizione della videocamera relativi rispetto al soggetto. Per questo bisogna rimpiazzare il concetto di zona di sensibilità con il FOV (Massimo volume visibile dalla camera), e rivedere gli algoritmi di piazzamento dei sensori per mantenere la copertura totale dell area da sorvegliare. 26

27 Metodologia di sviluppo 2 Metodologia di sviluppo 2.1 Il progetto TERVISIO Il progetto TERVISIO (Territorial - Visio) si occupa del monitoraggio evoluto del territorio. In particolare può essere collocato nell area di sviluppo di tecnologie ICT per il telerilevamento con conseguente diagnostica delle condizioni ambientali e territoriali. Comprende lo sviluppo di tecnologie sia hardware che software, per la realizzazione di tali servizi, relative a sensori in loco e remoti, sia integrati che distribuiti. L obiettivo principale è la realizzazione di un sistema integrato che coniughi hardware e software collegando in maniera efficiente i sensori sparsi sul territorio tra loro e con i dispositivi centralizzati di raccolta dati ed analisi, i quali dovranno elaborare i dati e nel contempo effettuare predizioni sul comportamento futuro del sistema. Oltre all Università di Genova, partecipano al progetto: FOS SESMAT A Software Lab Università del Sannio Il progetto è stato suddiviso in cinque sezioni principali: 1. Stato dell arte, requisiti, metodologie e strumenti: Costituisce il consolidamento della conoscenza sullo stato dell arte di tecnologie rilevanti per il progetto, che verranno utilizzate e approfondite. (wireless sensor networks, tecnologie trasmissive, tipologie di rete, piattaforme di sviluppo, sistemi operativi, algoritmi di elaborazione dati, definizione delle ontologie). 2. Definizione Infrastruttura e Ricerca: Definisce l infrastruttura di comunicazione tra sensori e gateway. Tale architettura consente l integrazione dei sensori con meccanismi trasmessivi tra loro in modo diretto o tramite gateway. Si occupa quindi della caratterizzazione dei nodi dell infrastruttura ed in particolare modo degli aspetti di potenza computazionale, capacità di memorizzazione, capacità di comunicazione, capacità di elaborazione dei dati in locale e potenza energetica dei nodi. 27

28 Metodologia di sviluppo 3. Sviluppo: Contiene tutte le attività di sviluppo del progetto, per quanto riguarda la comunicazione coi sensori, i software applicativi, le librerie di accesso, le interfacce e l integrazione di sistema. Il processo di sviluppo si svolge in modo incrementale/interattivo, attraverso le diverse fasi di: analisi design sviluppo test unitari integrazione - test di integrazione. Il configuration management degli applicativi software viene effettuato in appositi repository (es. Subversion) che vengono resi disponibili in rete a tutti membri del progetto. Per automatizzare il processo di testing vengono utilizzati framework di test (es. JUnit). 4. Dimostratore: Consiste nella realizzazione di un dimostratore, operativo sul campo, che permetta di valutare l efficacia del sistema TERVISIO in un campo applicativo concreto. Il contesto applicativo consiste nella realizzazione di un sistema pilota per la filiera Agroalimentare. Tale filiera, molto importante per tutto il territorio Nazionale, ha già manifestato interesse verso il progetto e disponibilità ad accogliere esperienze pilota. 5. Project Management: Consiste in tutte le politiche di gestione e coordinazione degli elementi appartenenti al progetto, in modo da ottimizzare i risultati ottenuti e coordinare gli sforzi dei vari partner che vi aderiscono. Il lavoro compiuto in questa tesi si colloca all interno della sezione 4, infatti ci si è occupati della realizzazione di un modulo hardware scritto in vhdl che consente la compressione delle immagini ottenute dai sensori, in modo da ridurre il consumo energetico dovuto alla trasmissione delle stesse, allungando di conseguenza il tempo di vita del nodo e di conseguenza dell infrastruttura. Il filone Agroalimentare scelto, in cui si colloca il progetto, è quello dell olivicoltura e riguarda il controllo del numero di mosche dell ulivo. Tale mosca è considerata l'avversità più importante a carico dell'olivo, nelle regioni in cui è presente, arrivando a condizionare sensibilmente l'entità e la qualità della produzione nella maggior parte della coltivazione. L'incidenza dei suoi attacchi tende ad accentuarsi nelle regioni più umide e fresche di coltivazione, con una notevole variabilità a seconda della varietà coltivata, mentre diventa meno marcata nelle zone caratterizzate da estati calde e siccitose. 28

29 Metodologia di sviluppo I danni procurati alle coltivazioni da questa mosca possono dividersi in quantitativi e qualitativi. Il primo tipo di danno consiste nella sottrazione di una parte considerevole della polpa con conseguente riduzione della resa in olio. Una parte della produzione si perde anche a causa della caduta precoce di parte dei frutti. Il secondo tipo di danno consiste nel sensibile peggioramento della qualità dell'olio estratto da olive con un'elevata percentuale di attacchi. Tale olio presenta una maggiore acidità e una minore conservabilità. Inoltre è possibile che si verifichino deprezzamenti qualitativi dovuti all insediamento di muffe attraverso i fori causati dall uscita dell esemplare adulto dall oliva. Figura 2.1- La mosca olearia mentre deposita le uova in un oliva Questo ha portato all utilizzo di tecniche per combattere la mosca, in particolare tramite l utilizzo di sostanze chimiche, introduzione di nemici naturali e trappole. Queste ultime ci riguardano da vicino, e si suddividono in due tipologie: Trappole per cattura in massa (mass trap): sono impiegate per catturare in massa gli adulti in modo da abbatterne la popolazione fino a livelli tali da mantenere le infestazioni sotto la soglia di intervento. La loro densità deve essere elevata (una trappola per pianta con attrattivi sessuali e/o alimentari). Trappole per monitoraggio (trap-test): sono impiegate per rilevare l'andamento della popolazione di adulti allo scopo di stimare la soglia di intervento. La loro densità dipende dal tipo di trappola e di attrattivo usato. Le trappole sono in materiale plastico cosparse di vischio entomologico. 29

30 Metodologia di sviluppo Quest ultimo tipo è quello che ci interessa. Infatti, lo scopo dei nodi sensori è quello di inviare immagini dello stato di queste trappole, in modo da poter determinare quando necessita l intervento umano per regolare la popolazione di mosche olearie. Figura 2.2- Una trappola ad attrazione cromatica per scopi di monitoraggio Grazie alle Multimedia Wireless Sensor Networks è possibile effettuare questo controllo in automatico e in contemporanea su tutte le trappole senza richiedere una costosa ricognizione umana per ognuna di queste. In questo modo si riducono i tempi d intervento, ed è possibile effettuare anche delle statistiche sullo stato della popolazione delle mosche, in modo da poter costruire delle stime sul suo andamento futuro. Figura 2.3- Stima dell andamento di popolazione di mosche olearie durante l anno Vediamo ora più nel dettaglio su quali piattaforme hardware/software si è svolto il lavoro di sviluppo del compressore delle immagini della trappola per mosche. 30

31 Metodologia di sviluppo 2.2 Architettura di sistema L architettura della Multimedia Wireless Sensor Network impiegata nel progetto tervisio è composta da due sezioni principali. La prima è costituita dalla rete di sensori, mentre la seconda fornisce gli strumenti all utente per effettuare query dei dati rilevati. Figura 2.4- Architettura della rete sviluppata nel progetto TERVISIO Infatti, il sistema è del tutto trasparente per l utente, che non deve preoccuparsi di come funzioni il sistema sottostante, ma semplicemente collegarsi tramite un terminale ad internet ed utilizzare l interfaccia di un web server. Questo server, oltre a fornire i comandi per l utente, gestisce una base di dati su cui fare le ricerche e archiviare lo storico dei sensori. Questo database viene regolarmente aggiornato, (ad esempio una volta al giorno) in modo da fornire sempre dati attendibili per eventuali interventi umani. Un gateway ZigBee viene utilizzato come interfaccia tra il web server e il nodo coordinatore (sink) della rete. Questo gateway presenta quindi due interfacce, una con 31

32 Metodologia di sviluppo tecnologia GPRS per poter comunicare con il web server, l altra basata sulla tecnologia ZigBee. Il nodo coordinatore gestisce il flusso di dati che proviene dai numerosi sensori che vengono distribuiti sul territorio, quali possono essere sensori di umidità, pressione, temperatura, condizioni meteo e sensori ottici. La comunicazione con ognuno di questi sensori avviene tramite ZigBee e secondo le politiche di risparmio energetico discusse nel capitolo relativo allo stato dell arte. Andando ad analizzare i vari tipi di sensori, quello che ci interessa da vicino è chiaramente quello ottico. Figura 2.5- Le due schede che costituiscono il sensore ottico. In alto il modulo con a bordo sensore CMOS, FPGA e memoria SRAM, sotto il modulo ZigBee. Per poter procedere con il progetto relativo alla compressione d immagini, è necessaria, per prima cosa, la comprensione della sua architettura. In questo modo si viene a conoscenza di quali dispositivi abbiamo a disposizione e come possiamo utlizzarli al 32

33 Metodologia di sviluppo meglio. In particolare, all interno del sensore ottico troviamo diverse sezioni logiche, separate a seconda del compito a loro assegnato. Essendo un nodo che deve interagire con una rete di sensori, è presente un elemento di trasmissione a radiofrequenza secondo lo standard ZigBee. Questa sezione risulta anche essere quella che comporta il maggior dispendio di energia quando viene utilizzata. Una seconda sezione è ovviamente costituita dal sensore vero e proprio, che utilizza un sensore CMOS dalla risoluzione di 1,3 Megapixel, e che verrà descritto in dettaglio successivamente. A bordo del nodo troviamo anche un elemento di memoria SRAM, deputato alla memorizzazione delle immagini acquisite tramite il sensore, e per contenere risultati di alcune elaborazioni. Il nucleo del nodo è costituito da un FPGA, la quale è programmata per gestire ed elaborare i dati del sensore, interfacciarsi verso la memoria e il modulo ZigBee, e contenere la logica di controllo del sistema nella sua interezza. Infatti, l FPGA si trova ad essere interconnessa a tutti i dispositivi, in modo da coordinarne le operazioni. Per questo motivo, l algoritmo di compressione d immagini deve essere implementato al suo interno, secondo i vincoli della dimensione rimasta disponibile e senza compromettere le altre funzioni già realizzate. Nei prossimi due paragrafi verranno descritte più in dettaglio ognuna di queste componenti interne al nodo sensore, in modo da avere un quadro preciso dell hardware specifico con il quale è stata sviluppata la tesi. 33

34 Metodologia di sviluppo Figura 2.6- Architettura interna del nodo sensore ottico 34

35 Metodologia di sviluppo 2.3 Scheda FPGA Per realizzare il progetto è stata utilizzata la scheda M1-AGL-DEVKIT [4], prodotta dalla Actel. Questa scheda monta onboard un FPGA M1AGL600V2, una memoria sram da un megabyte e una flash da sedici megabyte, il programmatore FlashPro 3 collegato al pc tramite un connettore mini-usb, un certo numero di connettori di I/O, utilizzati per la connessione verso il sensore ottico, un secondo connettore mini-usb, usato per instaurare un collegamento seriale verso il pc, un banco di dip-switch programmabili, e infine dieci led a scopo diagnostico. Figura 2.7- Schema logico della scheda di sviluppo La scelta è caduta sul comparto FPGA per le caratteristiche di versatilità di tale struttura, che consente di creare architetture logiche completamente customizzate, senza dover sottostare ai vincoli che impongono dispositivi quali possono essere DSP o microcontrollori. La scelta della specifica FPGA è invece legata al fatto che Actel, pur essendo legata ad un mercato di nicchia rispetto alle più affermate Xilinx e Altera, ha posto come problematica principale e mossa strategica di mercato, la produzione di dispositivi i cui consumi siano estremamente ridotti. 35

36 Metodologia di sviluppo Questo fatto, che si concretizza nella possibilità di supporto a uno stile di programmazione più orientato al risparmio energetico piuttosto che alla velocità di esecuzione (attualmente implementato tramite tecniche di clock-gating, ossia lo spegnimento del clock dei dispositivi in stand-by all interno dell FPGA), insieme alle ridotte dimensioni rende questa struttura particolarmente adatta alla costruzione di nodi di wireless sensor networks. Infatti, tra le problematiche associate a queste infrastrutture, sicuramente quella del tempo di autonomia energetica dei nodi è una delle più sentite. Figura 2.8- Vista dall alto della scheda, con evidenziate le varie componenti 36

37 Metodologia di sviluppo 2.4 Sensore Ottico Il sensore ottico impiegato è l Omnivision OV9655, basato su tecnologia CMOS a basso voltaggio. Figura 2.9- Sensore ottico OV7725AA Questo dispositivo racchiude all interno di un singolo chip una fotocamera capace di catturare immagini a risoluzione SXGA (1280x1024), e un processore che provvede a formattare l immagine in modo da poter fornire diversi formati della stessa. Queste impostazioni vengono tutte determinate tramite la comunicazione della configurazione attraverso l interfaccia SCCB (Serial Camera Control Bus) del sensore. 37

38 Metodologia di sviluppo Figura Schema logico dei blocchi interni all OV9655 Analizzando la catena di elaborazione del segnale ottico, la si può suddividere in un determinato numero di passi sequenziali, rappresentati da altrettante unità funzionali. In particolare, si hanno questi elementi: Image Sensor Array, Timing Generator, Analog Signal Processor, Convertitori A/D, Digital Signal Processor (DSP), Output Formatter, Scaling Image Output, Strobe Mode, Digital Video Port, Interfaccia SCCB. L Image Sensor Array è il sensore vero e proprio che reagisce agli stimoli luminosi. Ha una dimensione di 1300 colonne per 1028 righe, per un totale di 1,3 MegaPixel. Il Timing Generator è deputato al controllo dell Array, alla generazione del frame e dei segnali di timing interni che poi andranno distribuiti verso gli altri blocchi funzionali. Controlla inoltre i tempi per garantire il frame rate, l AEC (Automatic Exposure Control), e in particolare dei segnali di timing che vengono restituiti alla scheda per comprendere quando inizia il frame ed entrare in sincronia con il flusso di dati (VSYNC,HREF,PCLK). 38

39 Metodologia di sviluppo L Analog Signal Processor esegue le operazioni automatiche di controllo del guadagno (AGC) e del bilanciamento del bianco (AWB). Dopo l elaborazione analogica, il segnale RAW viene campionato da due convertitori A/D a 10 bit di precisione, controllati da due multiplexer, in modo da dividere il segnale in un canale G (verde) e un canale condiviso BR (blu e rosso). I due convertitori lavorano alla frequenza massima di 12 Mhz. Infatti il rate di conversione è direttamente legato al frame rate, quindi variabile. In aggiunta alla conversione, questo blocco esegue una calibrazione digitale del livello di nero (BLC), e dispone di ulteriori controlli sul range di valori accettati dagli A/D. Questi controlli consentono all utente di correggere la luminosità finale dell immagine in funzione dell applicazione specifica che sta sviluppando. Il Digital Signal Processor controlla l interpolazione dai dati RAW a quelli RGB, insieme ad alcuni controlli della qualità dell immagine quali : Edge Enhancement (ottenuto tramite un filtro passa alto bidimensionale), Color Space Converter (sceglie lo spazio dei colori in cui verrà convertito il flusso di dati RAW, in questo caso può essere RGB oppure YUV/YCbCr), RGB Matrix (utilizzata per eliminare le interferenze tra i colori), controllo di tinta e saturazione, controllo programmabile di gamma, trasferimento dei dati da un formato a 10 bit verso uno ad 8 bit, cancellazione dei pixel bianchi, filtraggio del rumore. L Output Formatter semplicemente controlla tutti i dati in modo che siano rispettate le specifiche di format degli stessi prima di spedirli in uscita. La sezione di Scaling Image Output, attingendo a valori settati in registri accessibili all utente, effettua uno scalamento dell immagine in uscita, da dimensioni VGA fino a un limite minimo di 40x30. Lo Strobe Mode viene utilizzato per far lavorare il sensore con un opzionale flash esterno o LED. Il flusso di dati dell immagine, formattata e eventualmente scalata viene quindi fornito in uscita dal modulo Digital Video Port. L SCCB Interface fornisce all utente un modo per impostare tutti i parametri che controllano le singole funzioni dei blocchi che costituiscono il processo tramite semplici sequenze seriali di byte di controllo che vengono scritte nei registri interni del dispositivo prima di acquisire la prima immagine. 39

40 Metodologia di sviluppo La velocità di aggiornamento dell immagine è collegata alla risoluzione adottata. Nel caso dell SXGA si aggira sui 15 frame al secondo, mentre per risoluzioni inferiori può arrivare anche a 30. Tutte le funzioni di elaborazione d immagine quali il controllo dell esposizione, gamma, bilanciamento del bianco, saturazione del colore, controllo sulla tinta, cancellazione dei pixel bianchi, cancellazione del rumore sono programmabili attraverso il bus di controllo. 40

41 Metodologia di sviluppo 2.5 Strumenti Software Libero IDE Lo sviluppo del codice Vhdl del compressore è stato realizzato tramite gli applicativi che la stessa Actel consiglia di utilizzare per la programmazione delle FPGA che produce. In particolare, esiste un IDE (Integrated Design Environment), Libero [19], che contiene in un singolo programma tutto ciò che può risultare utile nel processo produttivo che contraddistingue la programmazione Hardware-Oriented. L intero processo di design viene infatti smembrato in diverse fasi, ad ognuna delle quali viene affiancato un tool specifico richiamabile dalla schermata principale dell IDE. Figura Schema del flusso produttivo dell IDE Libero Le fasi principali si dividono in Design, Sintesi e Simulazione, Place & Route e Programmazione del dispositivo. 41

42 Metodologia di sviluppo La fase di Design avviene attraverso due strumenti, uno testuale, l Hdl Editor, e uno grafico, ViewDraw. Mentre nel primo è possibile esprimere singoli blocchi funzionali tramite il coding diretto in Vhdl, nel secondo si dispone di una vista grafica dell intero progetto, nella quale si possono istanziare o i moduli scritti in Vhdl oppure Core sviluppati da Actel. Nel nostro caso, l interfaccia UART che gestisce la comunicazione verso il pc e il blocco che genera i tre clock necessari nel progetto sono stati generati con Core programmabili Actel. Figura Interfaccia di ViewDraw La fase di Sintesi avviene tramite il tool esterno Synplify Pro AE, dove AE sta per Actel Edition. Infatti questo tool è in realtà un sintetizzatore commerciale valido per qualsiasi tipo di FPGA utilizzate, ma in questo caso è stato adattato in modo da ottimizzare la sintesi su dispositivi Actel. Oltre ad effettuare la Sintesi, questo strumento offre la possibilità di inserire all interno del circuito ottenuto un ulteriore livello di logica, completamente dedicato ad un successivo debug sull hardware in esecuzione. Infatti, è possibile specificare, quando si effettua la sintesi tramite Identify, di quali segnali tracciare i valori durante l esecuzione. Questo tracciamento, che occupa risorse interne all FPGA (sia blocchi logici che blocchi Ram), può essere di due tipi. 42

43 Metodologia di sviluppo Watch, che semplicemente riporta i valori rilevati nel momento in cui viene fermato il debugger, e Trigger. Quest ultima modalità permette di settare un determinato valore del segnale oppure una transizione di stato per i quali l esecuzione del debugger viene istantaneamente fermata e i valori di tutti i segnali tracciati vengono aggiornati rispetto a quel preciso evento. Quando viene fermata l esecuzione, è possibile vedere le transizioni dei segnali sotto forma di waveform in un certo intorno temporale dell evento. Una volta effettuata la Sintesi, è buona norma passare allo stadio di Simulazione, in modo da individuare eventuali errori, sia concettuali che dovuti a comportamenti anomali del circuito dopo la sintesi. Figura Una simulazione effettuata dopo il Place & Route In pratica, esistono tre livelli di simulazione, ognuno dei quali dev essere superato per poter essere certi del funzionamento del codice una volta implementato sull hardware. Il primo livello testa semplicemente il codice, senza introdurre alcun legame con l hardware che verrà poi sintetizzato. Questo livello è molto adatto per verificare se la logica comportamentale che si vuole implementare è corretta. Il secondo livello si basa sui risultati della sintesi, quindi il comportamento che si ottiene in uscita è legato al circuito che è stato effettivamente sintetizzato. In questa fase, è possibile accorgersi di problematiche non più a livello logico, bensì fisico, quali possono essere la 43

44 Metodologia di sviluppo presenza di malfunzionamenti dovuti a glitch [5], perdita di valori dovuta a latch mal interpretati. Una volta risolti questi problemi, si può effettuare il Place & Route del circuito, e giungere alla terza fase della simulazione, in cui il circuito viene analizzato considerando anche i ritardi introdotti dai vari livelli di porte logiche in cascata. Se i risultati rimangono stabili anche in questa fase, ci sono buone probabilità che il circuito funzioni anche sull hardware. In caso contrario è buona norma provare ad abbassare la frequenza di funzionamento del circuito e riorganizzare la struttura in modo da diminuire i ritardi. La fase successiva è il Place & Route, dove il circuito sintetizzato viene distribuito tra le risorse effettivamente disponibili sull FPGA. Viene anche effettuata un analisi dei tempi ottenuti, in modo da verificare se rispettano i limiti che vengono imposti sul massimo ritardo nella fase di Sintesi. Un altra problematica evidenziata da questa fase è la presenza o meno di loop combinatori all interno del codice. Questi loop si generano quando si scrivono linee di codice in cui il valore di un espressione dipende direttamente dal valore dell espressione stessa. Ad esempio, un loop può essere generato da una struttura IF al cui interno viene modificato lo stesso valore che ne decide la validità : IF (Max_Len<Len) THEN Max_Len <= Max_Len + 1 ; END IF; In questo caso il valore di Max_Len dipende totalmente dai ritardi che si creano nel circuito, con il rischio che tale struttura si blocchi in un loop infinito, impedendo così la corretta esecuzione delle macchine a stati. L ultima fase è quella di programmare l FPGA, tramite la creazione di un apposito file di programmazione, ed eventualmente passare al debug sull hardware se nella fase di Sintesi erano stati predisposti dei segnali da tracciare National Instruments LabVIEW L ambiente di sviluppo fornito dalla National Instruments, oltre a fornire la possibilità di usare uno stile di programmazione con approccio grafico alla risoluzione dei problemi, è orientato all interazione tra il pc e dispositivi esterni, commercializzati molte volte dalla stessa National, al trattamento dei dati forniti. 44

45 Metodologia di sviluppo Nell ambito di questo progetto, il programma che fornisce l interfaccia per comunicare con la scheda FPGA è stato appunto scritto in LabVIEW. In questo modo, è stato possibile emulare il comportamento del sensore, fornendo alla scheda immagini di test, utili per determinare se le operazioni effettuate erano corrette. Inoltre, è possibile visualizzare un interpretazione del flusso dati che viene restituito, formattandola in diversi formati. Come si può vedere dalla figura, l interfaccia si suddivide in tre sezioni logiche, rispettivamente quella dedicata alla gestione della seriale, quella di comunicazione e quella dei parametri del visualizzatore d immagine. La prima sezione si occupa di tutti quei parametri legati alla riuscita della comunicazione via seriale, quali sono la porta di comunicazione, la velocità, il numero di bit di dati, il controllo di flusso, la presenza o meno di controlli di parità e il numero di bit di stop. La seconda sezione si occupa della trasmissione verso l FPGA di comandi oppure di dati. In particolare, è possibile dare all FPGA i seguenti comandi, inviando un byte con il valore corrispondente. Protocollo di scambio dati tra modulo radio e modulo immagini: 05 Configurazione del sensore Quando l FPGA riceve questo comando, esegue la sequenza di configurazione del sensore ottico, inviandogli i settaggi attraverso l SCCB. 07 Acquisisci Con questo comando, l FPGA esegue l acquisizione dal sensore dell immagine ripresa in quell istante, e la memorizza in SRAM. 04 Comprimi Quando viene inviato questo byte, inizia il processo di compressione, che preleva l immagine contenuta nella parte bassa della SRAM, la comprime e memorizza il risultato nella parte alta della stessa memoria. Un led è stato impiegato per evidenziare quando l FPGA è impegnata in questo processo, e quindi non può ricevere altri comandi. 08 Trasferisci Una volta terminata la compressione, mandando questo comando l FPGA ritorna tramite seriale il contenuto della memoria dove è contenuta l immagine compressa. 45

46 Metodologia di sviluppo Per quanto riguarda il trasferimento dati dall FPGA, abbiamo due indicatori che rappresentano il numero di byte che sono stati letti, e il numero totale di byte ricevuti. I valori di tali byte vengono scritti all interno di una finestra, che fornisce la base per la visualizzazione dell immagine. Il trasferimento verso l FPGA, utilizzato esclusivamente per testare il compressore con dei dati noti, può avvenire in due diverse modalità. Nella prima, il file che viene trasmesso è costituito da un immagine di dimensione a piacere che viene costruita tramite byte crescenti (Una sequenza tipo è...0e0f ) da 00 fino a FF. Questa sequenza si ripete fino a quando l immagine non è terminata, formando così una lunga serie di scale di grigi crescenti. Una volta assicuratosi che la compressione sia avvenuta in modo corretto, si può passare alla seconda modalità, che consente il trasferimento verso l FPGA di una qualsiasi immagine bitmap. Il formato con cui questa immagine è stata salvata è indifferente, infatti il programma provvede automaticamente a una sua conversione nel formato bitmap 565, che è il formato scelto come output predefinito del sensore. Questo perchè provvede già a una compressione preliminare, utilizzando 5 bit per la componente R, 6 per la componente G e 5 per quella B, al posto di 8 bit per ciascuna. Abbiamo quindi che un singolo pixel, invece di essere rappresentato con 24 bit, ne occupa solamente 16. La terza sezione si occupa esclusivamente dei settaggi da inviare alla finestra che visualizza l immagine, quali sono il tipo di formato dei dati (RGB, YUV), il numero di bit usati per rappresentare i dati, le dimensioni dell immagine e il comando di refresh. 46

47 Metodologia di sviluppo Figura Pannello di test per rete di acquisizione immagini 47

48 Problematiche per la compressione di immagini 3 Problematiche per la compressione di immagini La compressione d immagini consiste nell applicazione di algoritmi su immagini digitali in modo da ridurre l entropia di un immagine e riuscire quindi a memorizzarla e trasmetterla con costi minori in termini di spazio occupato e tempo di trasmissione. Tale compressione può essere lossy o lossless. La seconda viene preferita quando ci si occupa di immagini mediche e disegni tecnici, in quanto i metodi lossy introducono una certa degradazione dell immagine quando il rate di compressione diventa elevato. Questi metodi risultano ideali nel caso si debba comprimere foto nelle quali una piccola perdita d informazione non è così significante. Tra questi algoritmi ce ne sono alcuni che risultano interessanti nell ambito di questa tesi, quali JPEG, JPEG 2000, LZ77, GIF(LZW). Mentre i primi due sono algoritmi di tipo lossy, gli altri sono lossless. Tutti e quattro verranno discussi all interno di questo capitolo, in modo da avere una panoramica sulle due tipologie e valutarne vantaggi e svantaggi per l implementazione. 3.1 JPEG Jpeg, acronimo di Joint Photographic Experts Group ( gruppo che studiò lo standard), è un metodo di compressione lossy largamente usato per le immagini fotografiche. Il grado di compressione può essere regolato, in modo da avere un accettabile compromesso tra dimensione e qualità dell immagine. Livelli di compressione di circa 10:1 vengono raggiunti senza alterare sensibilmente l immagine. Jpeg viene usato all interno di numerosi formati d immagine, formando varianti quali Jpeg Exif, usato particolarmente nelle fotocamere, e Jpeg JFIF, che è il formato più diffuso per immagini utilizzate sul Web Usi tipici di Jpeg L algoritmo di compressione Jpeg funziona al meglio con fotografie e dipinti di scene realistiche in cui ci siano variazioni lente di tono e colore. Sul Web, dove la dimensione di un immagine è molto importante per ridurre il consumo di banda, il Jpeg è il formato attualmente più utilizzato, oltre che nelle fotocamere digitali. 48

49 Problematiche per la compressione di immagini Jpeg non si adatta bene invece a immagini formate da righe, testi o icone, dove il contrasto netto tra pixel adiacenti porta alla formazione di artefatti visibili. Immagini di questo tipo vengono compresse meglio da altri algoritmi, quali TIFF, GIF, PNG o RAW. Inoltre, Jpeg non è adatto per quei file che devono sottostare a numerosi editing, in quanto ogni volta che l immagine viene compressa e ricompressa abbiamo una perdita di qualità della stessa. Una soluzione è salvarla in formato PNG per successive elaborazioni, e tenere una copia Jpeg per la distribuzione. Dato che Jpeg è un metodo di compressione che porta a una certa degradazione dell immagine, non dev essere utilizzato in campo medico e astronomico e dovunque sia necessaria una riproduzione esatta dell immagine Compressione Jpeg Il metodo di compressione di Jpeg è solitamente Lossy, che comporta la perdita di una parte delle informazioni originalmente contenute nell immagine precludendone il recupero e influenzando la qualità della rappresentazione. Figura 3.1- Comparazione di qualità tra immagini salvate a diversi livelli di compressione Esistono tuttavia delle modifiche allo standard jpeg che sono lossless, ma non sono molto diffuse. Per adattarsi al web sono state sviluppate versioni di Jpeg interlacciate, nelle quali l immagine viene compressa in numerosi passi a dettaglio progressivamente più elevato. Questo le rende molto adatte a connessioni lente, consentendo una certa anteprima dopo aver ricevuto solo parte dei dati. Non è però molto supportata, e anche software compatibili 49

50 Problematiche per la compressione di immagini tendono a mostrare l immagine solo a download completato. Un ultimo standard poco utilizzato sono le immagini Jpeg a 12 bit per sistemi di visualizzazione medica Modifiche lossless effettuabili su immagini Jpeg Modifiche lossless ad un immagine Jpeg sono possibili nel caso in cui la dimensione dell immagine sia esattamente multipla del blocco minimo codificato (MCU, è solitamente un quadrato di 16 pixel di lato). Modifiche del genere sono rotazioni di 90 gradi, ribaltamenti orizzontali, verticali e diagonali, che non utilizzano tutti i blocchi dell immagine originale. La dimensione di un immagine non deve per forza essere multipla di un MCU, anche se questo limita le operazioni lossless che possono essere effettuate. La conversione tra il formato base e quello progressivo è effettuabile senza alcuna perdita di dati, dato che l unica differenza è l ordine in cui i coefficienti vengono scritti su file Algoritmo di compressione Jpeg Il processo di codifica Jpeg tramite lo standard JFIF consiste in numerosi passi di elaborazione [6]: 1. La rappresentazione dei colori viene convertita da RGB a YCbCr, dove Y costituisce la luminanza, mentre Cb e Cr sono le componenti blu e rossa che rappresentano il colore. A volte questo passaggio può essere saltato. 2. La risoluzione dei dati cromatici viene ridotta di un fattore 2, grazie al fatto che l occhio umano è molto più sensibile ai dettagli di luminosità che a quelli del colore. 3. L immagine viene divisa in blocchi 8x8, e per ogni blocco ognuna delle tre componenti viene sottoposta a DCT (Discrete Cosine Transform), che porta i dati nel dominio delle frequenze spaziali. 4. L ampiezza delle componenti in frequenza viene poi quantizzata. Questo perchè le visione umana è più sensibile a piccole variazioni di colore e luminosità su grandi aree piuttosto che a grandi variazioni ad alta frequenza. Di conseguenza le componenti ad alta frequenza vengono conservati con una precisione minore delle componenti a bassa frequenza. I settaggi di qualità dell encoder (su una scala da 0 a 100) influenzano di quanto viene ridotta la risoluzione per ogni componente. 50

51 Problematiche per la compressione di immagini Impostando una qualità troppo bassa le informazioni ad alta frequenza vengono scartate completamente. 5. I dati ottenuti per ogni blocchetto vengono ulteriormente compressi con un algoritmo lossless, variante della codifica di Huffman. Considerando un formato dei dati in ingresso del tipo RGB a 24 bit (8 per componente) e un livello di compressione lossy, vediamo in particolare ognuno di questi passi Cambio dello spazio di rappresentazione dei colori Per prima cosa, l immagine deve passare dallo spazio dei colori RGB (Rosso, Verde, Blu) a quello YCbCr (Luminosità, Blu, Rosso). Questo tipo di spazio consente una migliore compressione senza avere un impatto negativo sulla qualità percepita dell immagine. Alla base di questo sta il fatto che l informazione sulla luminosità (che influisce molto sulla qualità percettiva dell immagine) viene rappresentata da un solo canale, avvicinandosi alla rappresentazione effettiva del sistema di visione umano. I parametri per effettuare la conversione sono specificati nello standard JFIF, e dev essere effettuata per garantire la massima compatibilità, anche se certe implementazioni ad alta qualità l informazione sui colori viene tenuta separata nei tre canali RGB, portando a risultati più fedeli, ma anche a compressioni meno efficienti Downsampling A causa della densità di recettori del colore e della luminosità all interno dell occhio umano, riusciamo a notare molto più facilmente dettagli fini in luminosità piuttosto che nei colori. Sfruttando questa conoscenza, è possibile rendere più efficaci gli algoritmi di codifica. Infatti, dopo essere passati nello spazio YCbCr, si può procedere con la riduzione della risoluzione spaziale delle componenti Cb e Cr, chiamata Downsampling o Chroma Subsampling. In pratica, per ogni campione di luminosità, ci troveremo ad avere meno campioni che rappresentano il colore. Ad esempio, con un downsampling di 4:2:2 avremo la riduzione di un fattore due nella direzione orizzontale, con 4:2:0 di un fattore due sia in orizzontale che in verticale, con 4:4:4 non avremo alcuna riduzione. Per il resto della compressione, le diverse componenti verranno processate separatamente, ma in maniera simile. 51

52 Problematiche per la compressione di immagini Divisione in blocchi Dopo il subsampling, ogni componente dev essere divisa in blocchi di 8x8 pixel. A seconda di come è stato effettuato il passo precedente, questo porta a MCU (Minimum Coded Unit) di 8x8 (4:4:4), 16x8 (4:2:2) o 16x16 (4:2:0). Se i dati di un canale non cosituiscono un numero intero di blocchi, l encoder deve riempire l area rimasta vuota con dei dati. Se si riempe quest area con un colore fisso, si ottengono artefatti visibili lungo la parte visibile del bordo dell immagine. Un metodo per evitare ciò è semplicemente ripetere i pixel del bordo, anche se si possono venire a creare comunque artefatti Discrete Cosine Transform In questo passo le tre componenti di ogni blocchetto vengono convertite, in una rappresentazione nel dominio della frequenza, usando una Trasformata Discreta Coseno normalizzata, bidimensionale di tipo II (DCT). Figura 3.2- Un blocchetto 8x8 rappresentato in scala di grigi Figura 3.3- Rappresentazione matriciale di un blocchetto 8x8 a 8 bit 52

53 Problematiche per la compressione di immagini Prima di calcolare la DCT del blocchetto, è necessario effettuare una traslazione dei suoi valori di grigio da un range esclusivamente positivo ad uno centrato attorno allo zero. In questo caso, abbiamo 256 valori possibili di grigio [0,255], a cui bisogna sottrarre metà dei valori possibili, ossia 128, riportando i valori nel range [-128,127]. (3.1) La formula mostra come, al variare del numero di bit utilizzati per rappresentare i livelli di grigio, sia sufficiente sottrarre la potenza di 2 elevata al numero di bit meno uno per riportare i dati in una rappresentazione centrata intorno al valore zero. Figura 3.4- Blocchetto 8x8 dopo aver effettuato lo shift dei valori intorno allo zero Il prossimo passo è applicare la DCT bidimensionale, che è data dalla formula: (3.2) Dove u è la frequenza spaziale orizzontale, vincolata alla condizione per gli interi, v è la frequenza spaziale verticale vincolata da, p è una funzione di normalizzazione, che assume i seguenti valori 53

54 Problematiche per la compressione di immagini g x,y è il pixel che si trova alle coordinate (x,y) e G u,v è il valore del coefficiente DCT nelle coordinate (u,v). La trasformata effettuata sui 64 pixel della matrice 8x8 porta a 64 pixel risultanti che vengono prodotti come combinazione lineare dei coefficienti della DCT, che raccolgono le differenti frequenze spaziali verticali e orizzontali in ordine crescente. Figura 3.5- I 64 riquadri che contengono le diverse componenti frequenziali orizzontali e verticali con cui vengono rappresentati i pixel. U è l asse orizzontale, mentre v quello verticale. Applicando la trasformazione sulla matrice precedente, e arrotondiamo il risultato all intero più vicino, otteniamo questa nuova matrice: Figura 3.6- Matrice 8x8 dopo l applicazione della DCT Come si vede, nell angolo in alto a sinistra è presente un valore elevato, che viene chiamato coefficiente DC, mentre gli altri 63 valori vengono chiamati coefficienti AC. Il vantaggio della DCT è infatti la tendenza a concentrare buona parte del segnale in un 54

55 Problematiche per la compressione di immagini angolo della matrice risultante. Il passo successivo, la quantizzazione, accentua questo effetto mentre riduce la dimensione totale dei coefficienti DCT, producendo un segnale facile da comprimere nello stadio del compressore entropico. L elaborazione DCT incrementa temporaneamente la profondità di bit usati per rappresentare l immagine, ad esempio, si passa da una rappresentazione a 8 bit ad una a 11 o più bit a seconda della fedeltà del calcolo della DCT. Quindi è necessario usare temporaneamente registri di dimensione maggiore, raddoppiando la dimensione dell immagine almeno fino alla quantizzazione, che riporta la profondità di rappresentazione a 8 bit. In genere questa espansione non è causa di problemi di performance, almeno per molti encoder jpeg software, dato che solo una piccola porzione dell immagine viene conservata nella forma estesa in ogni istante delle procedura di codifica Quantizzazione Grazie alle caratteristiche del sistema di visione umano, è possibile ridurre il contenuto ad alta frequenza di un immagine senza incappare in alterazioni percepibili. Questo si ottiene semplicemente dividendo ogni componente, nel dominio della frequenza, per una costante, e approssimando il risultato all intero più vicino. Questo si traduce nell operazione che fa perdere più informazione all interno di tutto il processo. Infatti, a causa della quantizzazione, molti dei componenti ad alta frequenza vengono arrotondati a zero o diventano numeri molto piccoli, di segno sia positivo che negativo. Figura 3.7- Tipica matrice di quantizzazione, costruita secondo le specifiche dello standard I coefficienti quantizzati vengono calcolati secondo la formula 55

56 Problematiche per la compressione di immagini (3.3) Dove G è il coefficiente della DCT non ancora quantizzato, Q è la matrice di quantizzazione, e B è il risultato dopo la quantizzazione. Usando questa matrice di quantizzazione sul blocchetto a cui abbiamo già applicato la DCT, si ottiene la seguente matrice: Figura 3.8- Matrice 8x8 dopo la quantizzazione Per dimostrarlo, applichiamo la formula della quantizzazione a -415, che è il coefficiente DC, ottenendo Codifica Entropica La codifica entropica è una forma particolare di compressione lossless che necessita l ordinamento dei componenti dell immagine secondo un ordine Zig-Zag e un applicazione di un algoritmo RLE (Run Lenght Encoding) sui dati ottenuti. Questo produce un raggruppamento delle frequenze simili insieme e l espressione delle loro lunghezze in maniera codificata, per poi mandare il risultato a un codificatore di Huffman. 56

57 Problematiche per la compressione di immagini Figura 3.9- L ordinamento a Zig-Zag dei componenti di un immagine Lo standard Jpeg consente anche di utilizzare un codificatore aritmetico, che è superiore matematicamente alla codifica di huffman. Nonostante ciò, questa possibilità viene usata raramente perchè coperta da diritti e per la lentezza nel codificare e decodificare rispetto alla variante di Huffman, e produce vantaggi dell ordine del 5% della dimensione del file. Se chiamiamo B i l i-esimo blocco, e indicizziamo con due coordinate p e q che variano da 0 a 7 ogni pixel che contiene il blocco, ogni coefficiente nell immagine DCT può venire identificato da B i (p,q). Ad esempio, seguendo lo schema a Zig-Zag presentato sopra, l ordine dei pixel che verranno codificati all interno dell i-esimo blocco è: B i (0,0), B i (0,1), B i (1,0), B i (2,0), B i (1,1), B i (0,2), B i (0,3), B i (1,2) e così via. Questo modo di codificare viene chiamato Baseline Sequential Encoding. Figura Diagramma di flusso per il Baseline Sequential Encoding e decoding Il modello baseline supporta anche l encoding progressivo, che differentemente dal comportamento di quello sequenziale (codifica i coefficienti di un singolo blocco seguendo 57

58 Problematiche per la compressione di immagini l ordine Zig-Zag) codifica i coefficienti in una certa posizione all interno dei blocchi tutti in una volta, per poi muoversi alla successiva posizione. Ad esempio, se l immagine è suddivisa in N blocchi, questo modo di procedere codificherà il blocco Bi(0,0) di tutti blocchi, seguito da Bi(0,1), Bi(2,0) e così via. Si deve notare che una volta che sono state codificate tutte le posizioni di una determinata coppia di (p,q), la prossima posizione da codificare sarà quella che si trova esattamente dopo nell ordine a Zig-Zag. Si può notare che questa versione progressiva ha delle performance di compressione migliori, se compararata con quella sequenziale, grazie all uso di diverse tavole di Huffman create per frequenze diverse ad ogni passo, anche se la differenza non è così rilevante. Per codificare il pattern di coefficienti generati, Jpeg usa la codifica di Huffman, che dispone di una parola chiave EOB usata per terminare la sequenza in maniera anticipata quando i coefficienti che rimangono sono tutti zeri. Se applichiamo questo principio alla matrice di coefficienti utilizzata prima, otteniamo un ordine dei blocchi da codificare decisamente più breve: EOB Altre parole chiave del Jpeg rappresentano combinazioni del numero di bit significativi di un coefficiente includendo il segno e del numero di coefficienti nulli che lo precedono. Nel blocco che è uscito dalla quantizzazione abbiamo che molti dei coefficienti quantizzati sono numeri piccoli che non sono immediatamente preceduti da un coefficiente nullo, quindi avremo la loro rappresentazione sarà data da parole di codice relativamente corte. Lo standard Jpeg fornisce delle tavole di Huffman per scopi generali, ma gli encoder possono decidere di generare delle tabelle ottimizzate per la distribuzione frequenziale specifica dell immagine che si sta codificando. 58

59 Problematiche per la compressione di immagini Livello di compressione ed artefatti Figura Immagine che mette in rilievo la differenza tra l immagine originale e il risultato di una compressione a qualità 50. I punti più scuri indicano una differenza maggiore, che si trova soprattutto in presenza di bordi netti (cambi ad alta frequenza). Figura Ingrandendo l immagine si notano in maniera evidente i blocchi 8x8, insieme ad altri artefatti tipici della compressione lossy. Il rate, con cui viene compressa l immagine, può essere regolato secondo le esigenze, in modo da essere più o meno aggressivo quando esegue la divisione nella fase di quantizzazione. In generale, rapporti di compressione di 10:1 producono immagini che ad occhio nudo non possono essere distinte dall originale, mentre rapporti dell ordine di 100:1, pur essendo possibili, produrranno immagini che risulteranno chiaramente artefatte 59

60 Problematiche per la compressione di immagini rispetto all originale. Ovviamente la decisione del rate di compressione è completamente legata all uso a cui verrà destinata l immagine. Se ci riferiamo al Web, è facile incontrare immagini con evidenti artefatti, dovuti all elevato rate che viene usato per rendere le immagini abbastanza leggere da essere trasmesse in un tempo contenuto. Queste degradazioni sono particolarmente evidenti intorno a bordi che dividono colori ad alto contrasto, facilmente riscontrati quando sono presenti dei testi. Per ridurli è possibile scegliere un livello inferiore di compressione, magari salvando l immagine in un formato lossless, anche se, per immagini fotografiche, si avrà una dimensione elevata del file. Gli artefatti di compressione sono accettabili quando le immagini sono utilizzate per scopi di visualizzazione, perchè ulteriori elaborazioni di queste immagini porterebbero ad artefatti inaccettabili, che potrebbero addirittura rendere irriconoscibili particolari anche notevoli. Immagine Compressione Lossless Compressione Lossy Originale Elaborata da un rilevatore di bordi Tabella 3.1- Compressione e differenze sui bordi di un immagine ad elevato contrasto Alcuni programmi consentono all utente di variare il livello di compressione applicato ad ogni singolo blocco, quindi si può applicare una compressione maggiore alle aree dell immagine che presentano meno artefatti. In questo modo è possibile ridurre manualmente la dimensione del file mantenendo un degrado qualitativo accettabile. 60

61 Problematiche per la compressione di immagini Dato che la quantizzazione porta sempre ad una perdita d informazione, lo standard Jpeg si comporta sempre come un codec di compressione lossy. Dato che l informazione viene persa anche nell arrotondamento dei valori floating point, anche se avessimo una matrice di quantizzazione con tutti valori unitari, dell informazione verrebbe comunque scartata da questo secondo passo. 61

62 Problematiche per la compressione di immagini 3.2 JPEG 2000 Jpeg 2000 è uno standard di compressione d immagini creato dal team di Jpeg con lo scopo di migliorare lo standard originale passando dall utilizzo di Trasformate a Coseno Discreto a Trasformate di tipo Wavelet. I file di questo tipo portano estensioni come.jp2 e.jpx. La grande innovazione proposta da Jpeg 2000 non consiste tanto nell incremento dell efficienza di compressione, che risulta abbastanza modesto, bensì nella maggiore flessibilità del flusso di dati. Infatti, è possibile decodificarlo in maniere differenti, per esempio, interrompendolo in qualsiasi punto si può ottenere una rappresentazione dell immagine a bassa risoluzione, o il rapporto segnale-rumore. Diretta conseguenza della maggiore flessibilità è un aumento della complessità e del tempo di computazione di encoder e decoder. Un altra differenza con il Jpeg riguarda il tipo di artefatti prodotti, ad alti livelli di compressione, che prendono forma di anelli e sfocature al posto dei blocchetti classici di Jpeg. Inoltre, invece di memorizzare metadati addizionali in marker all interno dell header Exif, Jpeg 2000 li codifica in formato XML Caratteristiche di Jpeg 2000 Confrontando lo standard Jpeg 2000 con il precedente Jpeg si possono evidenziare le seguenti capacità che sono state introdotte: Performance di Compressione Superiore: Mentre a livelli di compressione molto bassi, dove si percepiscono pochi artefatti, Jpeg 2000 gode di un piccolo vantaggio rispetto a Jpeg, a livelli di compressione elevati tale vantaggio diventa subito evidente. Gli artefatti sono meno visibili, inoltre non c è traccia dei blocchetti di Jpeg. Questo è dovuto all utilizzo della DWT (Discrete Wavelet Transform) e ad uno schema di codifica entropico più complesso. Rappresentazione a Risoluzioni Multiple: Jpeg 2000 esegue una divisione dell immagine in più rappresentazioni a risoluzione diversa mentre esegue il processo di compressione. Queste immagini possono essere utilizzate come sostituti dell immagine completa in particolari applicazioni, o sul Web. Trasmissione Progressiva: Jpeg 2000 supporta la scalabilità dell immagine per pixel e risoluzione, denominata anche Decoding progressivo e Signal To Noise Ratio Scalability. Grazie a questi supporti, dopo che una piccola porzione 62

63 Problematiche per la compressione di immagini dell immagine è stata ricevuta, l utente è in grado di vedere una versione a bassa qualità della figura completa. La qualità di quest anteprima aumenta progressivamente mentre vengono scaricati i dati, aggiornandosi in real-time. Compressione Lossy e Lossless: Lo standard Jpeg 2000 supporta entrambi questi tipi di compressione all interno della stessa architettura di compressione. La compressione lossless viene implementata tramite l uso di una trasformata wavelet intera reversibile. Accesso random ed elaborazione dello stream di dati: Jpeg 2000 fornisce numerosi meccanismi per supportare l accesso casuale a regioni dell immagine con vari livelli di granulosità. In questo modo è possibile salvare l immagine con diversi livelli di qualità a seconda della regione dell immagine, comportando così una focalizzazione di ciò che vogliamo salvaguardare e risparmiare sulla dimensione del file. Questa caratteristica viene chiamata Region Of Interest (ROI). Resistenza agli errori: Jpeg 2000 è robusto verso errori sui bit introdotti da canali di comunicazione rumorosi, grazie alla codifica dei dati in blocchi indipendenti di piccole dimensioni. Formato del file flessibile: I file di tipo JP2 e JPX consentono di gestire le informazioni sullo spazio dei colori, metadati e informazioni per interagire con applicazioni di rete. Gestione dell informazione dei canali separata: Jpeg 2000 supporta la trasparenza, e l esistenza di piani Alpha Compressione Jpeg 2000 Lo scopo principale di Jpeg 2000 non è solo avere performance di compressione più elevate rispetto a Jpeg, bensì l aggiunta e il miglioramento di alcune caratteristiche quali la scalabilità e l elaborazione. Infatti l incremento di tali performance è abbastanza modesto rispetto a Jpeg, similmente al predecessore supporta livelli di compressione estremamente alti o bassi. La differenza con Jpeg sta nel fatto che, se vogliamo ridurre il numero di bit utilizzati per una certa immagine al di sotto di una soglia, non dobbiamo per forza ridurre 63

64 Problematiche per la compressione di immagini la risoluzione dell immagine prima di codificarla. Infatti, Jpeg 2000 riesce ad ottenere un risultato simile grazie alla sua struttura di codifica in multi-risoluzione [7]. Vediamo ora in dettaglio come avviene la compressione Jpeg Trasformazione dello spazio dei colori Come in Jpeg l immagine dev essere trasformata in modo da passare dalla rappresentazione nello spazio RGB ad un altro spazio di colori. Nel caso di Jpeg 2000 sono possibili due scelte, che portano a una trasformazione reversibile e ad una irreversibile: Irreversible Color Transform (ICT), che utilizza lo spazio dei colori YCbCr già incontrato in Jpeg. Viene chiamata irreversibile a causa della sua implementazione in floating o fixed point che porta ad errori di arrotondamento. Reversible Color Transform (RCT), utilizza lo spazio dei colori YUV che non introduce errori di quantizzazione, in modo da essere completamente reversibile. Per ottenere un implementazione corretta dell RCT bisogna che i numeri vengano arrotondati come specificato e non possano essere espressi direttamente in forma matriciale. Le trasformazioni vengono date dalle seguenti formule: (3.4) (3.5) La componente di crominanza può, ma non deve, essere abbassata di risoluzione. Infatti, dato che la trasformazione wavelet separa già l immagine in diverse scale, tale passo viene effettuato in modo molto più efficiente abbassando la rifinitura della scala Wavelet. Questo passo prende il nome di Multiple Component Transformation grazie alla possibilità di non doversi limitare al modello di colore RGB Divisione dell immagine in blocchi Dopo la trasformazione dello spazio dei colori l immagine viene suddivisa in blocchi rettangolari che verranno trasformati e codificati separatamente. Questi blocchi possono 64

65 Problematiche per la compressione di immagini assumere qualsiasi dimensione, al limite si può considerare l intera immagine come un singolo blocco. Una volta che si sceglie una dimensione, tutti i blocchi dovranno avere quella dimensione, ad eccezione naturalmente dei blocchi sul bordo destro ed inferiore dell immagine. Questa tecnica di divisione torna utile in quanto il decoder necessiterà di minore memoria per decodificare l immagine, potendo anche scegliere di agire su blocchi ben definiti al fine di ottenere una parziale decodifica dell immagine. Uno svantaggio di questa tecnica è invece la diminuzione della qualità dell immagine a causa di un basso rapporto Segnale Rumore. Usando troppi blocchi si ripresenta poi l effetto di squadratura tipico dello standard Jpeg Trasformata Wavelet I blocchi vengono quindi elaborati da una trasformata wavelet di profondità arbitraria, in contrasto con la DCT limitata a blocchi di 8x8 che viene usata in Jpeg. Jpeg 2000 utilizza due tipi diversi di trasformata wavelet: Irreversibile: Trasformata wavelet di tipo CDF 9/7. La sua irreversibilità è dovuta all introduzione di un rumore di quantizzazione legato alla precisione del decoder. Figura Immagine trasformata con wavelet di secondo livello di tipo CDF 9/7 Reversibile: Versione arrotondata della trasformata biortogonale CDF 5/3. Usando solo coefficienti interi l output prodotto non richiede alcuna quantizzazione, evitando così di introdurre l errore che ne consegue. Questo tipo di trasformata viene utilizzato nelle compressioni lossless. 65

66 Problematiche per la compressione di immagini Figura Wavelet di tipo CDF 5/3 per compressioni lossless Entrambe le trasformate vengono realizzate tramite convoluzione oppure lifting scheme Quantizzazione Dopo la trasformata wavelet i coefficienti vengono quantizzati scalarmente in modo di ridurre il numero di bit necessari a rappresentarli, al costo di una perdita di qualità. Il formato dell output deve appartenere ad un determinato set di numeri interi, che viene influenzato dai valori che vengono imposti come passo di quantizzazione. Infatti, più grande è il suo valore maggiore è la compressione e la conseguente perdita di dettagli. Settando tale valore a uno non viene effettuata alcuna quantizzazione. Tale settaggio viene usato per effettuare compressioni lossless Codifica Il risultato del processo di quantizzazione consiste in un insieme di sotto-bande rappresentanti l immagine in diverse scale di approssimazione. Una sotto-banda si può definire come un insieme di coefficienti (numeri reali) che rappresentano aspetti dell immagine associati ad un certo range di frequenze ed a una zona di spazio all interno dell immagine. Queste sotto-bande vengono ulteriormente divise in zone, regioni rettangolari nel dominio wavelet. Vengono tipicamente scelte in modo tale che i coefficienti al loro interno attraverso le sotto-bande formino approssimativamente dei blocchi spaziali nel dominio dell immagine ricostruita, ma non è un requisito obbligatorio. Le zone vengono ancora suddivise in blocchi di codice. Questi blocchi sono situati all interno di una singola sotto-banda e hanno la stessa dimensione (tranne quelli collocati ai bordi dell immagine). 66

67 Problematiche per la compressione di immagini L encoder deve elaborare i bit di tutti i coefficienti quantizzati di un blocco di codice, partendo da quelli più significativi e procedendo fino ad arrivare a quelli meno significativi, tramite un processo chiamato schema EBCOT. Questa sigla sta per Embedded Block Coding with Optimal Truncation. In questo processo, ogni bit del blocco di codice viene codificato in tre passaggi. Dapprima si codificano i piani di bit con relativi segni di coefficienti poco significativi insieme a bit vicini significativi, poi si codificano bit di rifinitura di coefficienti significativi ed infine coefficienti senza vicini significativi. Questi tre passi vengono chiamati Significance Propagation, Magnitude Refinement e Cleanup. Se si vuole effettuare una codifica lossless tutti i piani di bit devono essere codificati attraverso l EBCOT, senza tralasciarne alcuno. I bit selezionati dopo i passi di codifica vengono ulteriormente compressi attraverso un codificatore aritmetico binario ( Codificatore MQ), sensibile al contesto. Per contesto di un coefficiente s intende lo stato dei suoi nove coefficienti vicini all interno del blocco di codice. Il risultato è un bit-stream che viene suddiviso in pacchetti, dove un pacchetto raggruppa dei passi selezionati da tutti i blocchi di codice di una zona in un unità indivisibile. I pacchetti costituiscono la chiave che permette la scalabilità della qualità, infatti, pacchetti che contengono informazioni sui bit meno significativi possono essere scartati per ottenere bit-rate più bassi e distorsioni maggiori. Tutti i pacchetti provenienti da tutte le sotto-bande vengono quindi raccolti in livelli. Il modo in cui i pacchetti vengono costituiti dai passaggi di codifica dei blocchi di codice e quindi quale pacchetti conterrà un livello non viene specificato all interno dello standard Jpeg In generale un codec cercherà di costruire i livelli in modo tale che la qualità dell immagine cresca monotonicamente con ogni livello, mentre la distorsione diminuisce da livello a livello. In questo modo i livelli definiscono la progressione per qualità d immagine all interno dello stream di codici. 67

68 Problematiche per la compressione di immagini Il problema a questo passo è quindi trovare la lunghezza ottimale del pacchetto per tutti i blocchi di codice tale che minimizzi la distorsione totale in modo tale il bitrate generato eguagli quello richiesto. Lo standard non definisce una procedura su come effettuare questa ottimizzazione bitrate/distorsione, ma una line guida generale viene fornita nelle sue estensioni: per ogni bit codificato dall EBCOT viene misurato il miglioramento nella qualità dell immagine (definito come errore quadratico medio). Tale calcolo può essere implementato facilmente attraverso un algoritmo che faccia uso di una LookUp Table. Viene inoltre misurata la lunghezza dello stream risultante, formando un grafico, per ogni blocco di codice, che rappresenta sul piano bitrate-distorsione il rapporto tra la qualità dell immagine e la lunghezza del bitstream. La selezione ottimale per i punti di troncamento e i punti di costruzione dei pacchetti viene quindi definita dalla rilevazione di pendenze critiche su queste curve e dalla conseguente scelta di tutti i codici la cui curva nel grafico bitrate-distorsione sia più alta della curva a pendenza critica. Questo metodo è un applicazione particolare del metodo dei moltiplicatori di Lagrange che viene utilizzato per problemi di ottimizzazione sottoposti a vincoli. Il moltiplicatore di Lagrange, indicato con il termine rappresenta la curva a pendenza critica, il vincolo è il bitrate desiderato, e il valore da ottimizzare è la distorsione totale. I pacchetti possono essere riordinati arbitrariamente nel bit-stream di Jpeg 2000, dando all encoder e ai possibili server d immagini un alto grado di libertà. Immagini già codificate possono essere spedite sulla rete con bit-rate arbitrari usando un ordine di codifica basato sulla progressione dei livelli. Dall altro lato, le componenti dei colori possono essere memorizzate all inizio del bit-stream, consentendo l invio di immagini a bassa risoluzione (costituite dalle sotto-bande a bassa frequenza) per funzioni d anteprima dell immagine. Infine, è consentita l esplorazione spaziale di immagini ampie tramite la selezione dei blocchi appropriati o la selezione di partizioni dell immagine. Tutte queste operazioni non richiedono nessuna ricodifica, ma solamente operazioni di copiatura di blocchi di bit. 68

69 Problematiche per la compressione di immagini Performance Comparando Jpeg 2000 al precedente standard Jpeg, si nota un guadagno del livello di compressione tipicamente intorno al 20%, ovviamente a seconda delle caratteristiche dell immagine. Le immagini ad alta risoluzione tendono a beneficiarne in maniera maggiore grazie alla capacità di Jpeg 2000 di predire la ridondanza spaziale e quindi contribuire maggiormente al processo di compressione. Figura Immagine che mostra la differenza tra un immagine salvata in Jpeg 2000 al 50% del livello di compressione e l originale. In applicazioni con bit-rate estremamente bassi, alcuni studi hanno dimostrato che Jpeg 2000 viene superato in performance dalla codifica intra-frame dello standard H.264. Buone applicazioni per Jpeg 2000 risultano quindi grandi immagini con bordi a basso contrasto, quali possono essere immagini a scopo medicale Applicazioni di Jpeg 2000 Alcune delle applicazioni di mercato e non che si appoggiano a questo standard sono: Applicazioni su dispositivi multimediali (Fotocamere digitali, PDA, cellulari 3G, facsimili a colori, stampanti e scanner) Applicazioni di comunicazione Client/Server (su Internet, database d immagini, streaming video, server video, Second Life) Applicazioni militari e di sorveglianza (immagini ad alta risoluzione da satellite, rilevazione di movimenti, distribuzione e immagazzinamento di risorse sulla rete) Applicazioni per immagini medicali, osservanti le specifiche DICOM. 69

70 Problematiche per la compressione di immagini Sensing Remoto. Registrazioni video ad alta qualità basate su frame, editing e memorizzazione delle stesse. Cinema digitale. Jpeg 2000 ha molti punti comuni con il formato di compressione ICER, usato per la compressione delle immagini inviate dai rover marziani. L organizzazione Meteorologica Mondiale ha basato su Jpeg 2000 un nuovo formato di file, GRIB2. Questo tipo di file viene utilizzato per la distribuzione globale dei dati meteorologici, e l uso di Jpeg 2000 ne ha ridotto la dimensione di circa l 80%. 70

71 Problematiche per la compressione di immagini 3.3 L algoritmo LZ Basi dell algoritmo L algoritmo LZ77, sviluppato nel 1977 da Abraham Lempel e Jacob Ziv [8] e poi modificato in LZ78 l anno seguente, è basato su un approccio adattivo alla sorgente dei dati. Infatti l algoritmo riesce a trarne un modello mentre è ancora in atto il processo di codifica, in base alle nuove sequenze di dati che gli vengono fornite e lo aggiorna in tempo reale, tenendone traccia all interno di un dizionario. Per comprendere come questo algoritmo riesca a comprimere in modo lossless i dati che gli vengono forniti, bisogna fare alcune assunzioni. La prima è che la sorgente, di cui all inizio non è noto alcun modello, generi una sequenza di simboli che sia contenuta all interno di un alfabeto limitato, di cui si conoscano tutti gli elementi e come sono rappresentati. Il dizionario (search buffer) viene costruito a partire dalle sequenze che sono già state codificate, in questo modo, ogni volta che avviene la codifica di un dato, quest ultimo viene aggiunto alle informazioni che costituiscono il modello della sorgente. Procedendo in questo modo non ha più importanza come sia costituita effettivamente la sorgente, si lavora invece sulle caratteristiche della sequenza di dati che vengono fornite, svincolandosene [9]. Questo processo viene realizzato tramite la creazione di una finestra scorrevole che si può dividere in due sezioni distinte: il search buffer, che in ogni istante contiene l ultima parte di sequenza codificata, insieme a un certo numero di sequenze codificate in precedenza (per motivi di spazio viene usato solitamente un search buffer di 4096 Byte), e il look-ahead buffer, che contiene la prossima sequenza di dati che dev essere codificata. Partendo dal primo byte del look-ahead buffer, posto in una certa posizione fissa i, l algoritmo si muove all indietro all interno del search buffer tramite un puntatore j, alla ricerca di un eventuale corrispondenza con il byte puntato da i. 71

72 Problematiche per la compressione di immagini Figura Finestra scorrevole, con evidenziati i puntatori i e j Se la ricerca da esito positivo il codificatore produce in uscita una sequenza di tre byte (O,L,A), dove O è la differenza tra i valori di i e j, ossia la posizione nella quale è stata trovata la corrispondenza all interno del search buffer, L è la lunghezza della stringa individuata ed A è il simbolo all interno del look-ahead buffer che compare esattamente dopo la stringa trovata. Figura La stringa abc viene individuata all interno del dizionario La stringa cercata non è sottoposta al vincolo di appartenere interamente al search buffer, quindi è possibile che prosegua all interno del look-ahead buffer, ottenendo valori superiori a O, ad esempio (1,5,F9). Se la ricerca produce esito negativo, ossia il simbolo cercato non è presente all interno del dizionario, il codificatore presenta in uscita una tripla con il formato (0,0,A), dove A è proprio il simbolo che non è stato trovato. Figura Il simbolo d non viene trovato all interno del dizionario La memorizzazione del simbolo A può essere omessa nel primo caso, ma nel secondo non è possibile farne a meno. Infatti, tale memorizzazione consente la prosecuzione dell analisi 72

73 Problematiche per la compressione di immagini del flusso di dati senza perdere l informazione fornita da A. I dati forniti dalla sorgente vengono quindi codificati come un output formato da questi due tipi di triple, concatenati tra loro. Ovviamente questo rende evidente che avremo compressione dei dati solamente se verranno individuate delle sequenze coincidenti sufficientemente lunghe, in caso contrario infatti non è garantito che il numero di bit usato per rappresentare le triple sia inferiore a quello che sarebbe stato sufficiente a rappresentare i semplici dati. Si può notare che se la sequenza dati fosse costantemente variabile, con periodo superiore alla lunghezza del dizionario, l algoritmo si comporterebbe come un espansore, rappresentando ogni singolo byte con ben tre byte Fase di codifica Quando si inizia a comprimere, il search buffer è vuoto, quindi è impossibile trovare alcuna corrispondenza al suo interno. Di conseguenza, tutte le triple prodotte saranno del secondo tipo, con struttura (0,0,A). Questo continuerà ad accadere almeno fino a quando non si presenterà in ingresso un elemento che era già stato codificato. Vediamo come si comporta l algoritmo seguendo la sequenza di triple prodotte con una sequenza in ingresso nota e dimensioni di search buffer e look-ahead buffer rispettivamente di 5 e 6 byte. Primo passo: La tripla prodotta in uscita è (0,0,a). Secondo passo: Il precedente simbolo, a, è entrata nel dizionario, mentre b che non è ancora conosciuta, viene codificata come (0,0,b). Terzo passo: Il simbolo a è già presente nel dizionario, quando viene trovata vengono calcolati i valori di O e L. In questo caso, O vale 2, mentre L vale 1, producendo in uscita la tripla (2,1,a). Questo perchè il conto della dimensione di stringa uguale si interrompe al primo simbolo che non corrisponde, in questo caso, non c è corrispondenza per la stringa aa ma solo per il singolo simbolo a. 73

74 Problematiche per la compressione di immagini Quarto passo: Abbiamo corrispondenza per la stringa ba, quindi troviamo in uscita la tripla (3,2,b). Quinto passo: la corrispondenza viene trovata per la stringa aab, producendo la tripla (5,3,b). Sesto passo: Si ha corrispondenza per la stringa aabb, che risulta in una tripla (4,4,b) Settimo passo: La tripla prodotta da questo caso è (3,5,b). Si potrebbe pensare che in realtà la stringa massima corrispondente in questo caso sia bbb. Questo sarebbe vero se la ricerca di match terminasse quando finisce il search buffer, ma, dato che può continuare all interno del look-ahead buffer si nota come si riesce a raggiungere una corrispondenza di 5 simboli (che corrisponde anche con la massima corrispondenza rilevabile). L ultimo simbolo contenuto nel look-ahead buffer diventa A all interno della tripla Fase di decodifica Nella fase di decodifica, interpretando le triple bisogna desumere la sequenza di dati originale. Nelle figure che seguono, i simboli a sinistra della linea tratteggiata sono quelli che sono già stati decodificati. Nei primi due passi, essendo i primi simboli codificati da triple del tipo (0,0,A), è sufficiente scrivere direttamente i simboli indicati dalle triple. (0,0,a) 74

75 Problematiche per la compressione di immagini (0,0,b) I successivi quattro passi della sequenza di triple invece sono del tipo (O,L,A). Quindi secondo questi valori, bisogna effettuare la copia dei dati trovati all interno del search buffer alla locazione O, per una quantità L, e infine scrivere l ultimo elemento indicato dalla tripla, A. (2,1,a) (3,2,b) L ultimo passo, quello caratterizzato dalla tripla (3,5,b), avviene correttamente grazie al fatto che la stringa non viene copiata in blocco, bensì un simbolo alla volta Utilizzo di LZ77 in campo medico Il consumo energetico ridotto, e la necessità di piccole aree per implementare l algoritmo hanno reso LZ77 un alternativa rilevante, rispetto agli altri standard di compressione, per la compressione lossless d immagini in campo medico. In particolare per quanto riguarda la costruzione di endoscopi, quali il GIcam [10]. La struttura pensata per tale architettura utilizza due memorie separate di dimensione 8x8 pixel, nelle quali vengono caricati i dati alternativamente, così da disporre sempre di un blocco pronto per essere elaborato. Tali dati vengono poi passati attraverso uno stadio di 75

76 Problematiche per la compressione di immagini DCT, come nella procedura Jpeg standard, una successiva fase di quantizzazione, infine memorizzati all interno di una memoria e compressi tramite l algoritmo LZ77. Figura Architettura di compressione per endoscopio utilizzante l algoritmo LZ77 Se si utilizza una DCT di tipo reversibile, l unica perdita di qualità avviene all interno del blocco di quantizzazione, dato che LZ77 si comporta in modo lossless. Dato che non necessita di grandi calcoli, nè di grandi quantitativi di memoria, LZ77, non introducendo degradazioni all interno dell immagine si presta molto bene per un impiego in questo campo, dove riesce a raggiungere un efficienza di compressione del 75-85% (Anche grazie alla particolare natura delle immagini di tipo medico, che presentano tinte costanti e poche variazioni nette). Il sistema nella sua interezza consuma una potenza di 14,92 mw, considerando anche la parte dedicata alla trasmissione. In origine il sistema consumava una potenza di 33,5 mw. Questo risparmio è dovuto all utilizzo di LZ77 (Il compressore consuma solo 3,87 mw) al posto di altri algoritmi dal costo computazionale superiore, e dal conseguentemente diminuito tempo d attività dei circuiti RF. Se confrontiamo le immagini non compresse con quelle prodotte dalla compressione, possiamo notare che non sono presenti degradazioni visibili ad occhio nudo, tranne una leggera perdita di intensità cromatica. Ma questo non è dovuto all algoritmo applicato, bensì alla fase di quantizzazione che viene applicata ai dati prima di essere compressi. 76

77 Problematiche per la compressione di immagini Figura Confronto tra l originale e il risultato della compressione con LZ77. Dato che l algoritmo LZ77 opera dopo la quantizzazione, una volta fissata quest ultima, i soli parametri su cui si può agire per controllare la performance di compressione risultano essere le dimensioni di dizionario e look-ahead buffer. Ponendo come vincolo di prestazione minima un valore del 75% e stabilendo un set di 12 immagini di test, si può evidenziare molto bene come, a seconda di queste due dimensioni, vari la performance dell algoritmo. In particolare, come si può vedere nel grafico sotto, dimensioni di dizionario maggiori portano ad un incremento delle performance su quasi tutti i tipi d immagine, analogo discorso vale per la dimensione del look-ahead buffer. Ovviamente, per immagini specifiche è plausibile che dimensioni anche minori funzionino molto bene, ma in generale si può affermare che più la dimensione è grande, meglio funziona l algoritmo. 77

78 Problematiche per la compressione di immagini Figura Rate di compressione al variare della dimensione di look-ahead buffer e dizionario Nel caso del nostro progetto, LZSS si adatta molto bene alle nostre esigenze, anche perchè, pur disponendo di poche risorse, il tempo che viene utilizzato per effettuare una compressione è abbastanza ampio, dato che vengono effettuate poche trasmissioni, e con intervalli tra una e l altra di parecchie ore. Inoltre, il soggetto (che non varia nel tempo, ad esclusione delle mosche) che viene catturato nell immagine presenta un buon livello di uniformità cromatica, rendendo la compressione LZSS molto più efficiente che con immagini casuali, quali potrebbero essere fotografie di soggetti con variazioni cromatiche frequenti e bordi ad alto contrasto. 78

79 Problematiche per la compressione di immagini 3.4 GIF Gif (Graphics Interchange Format) è un formato d immagine bitmap introdotto nel 1987 da Compuserve e poi largamente utilizzato sul Web grazie al suo ampio supporto e portabilità. Il formato supporta una descrizione a 8 bit per pixel che formano una palette di 256 colori scelta tra lo spazio dei colori a 24 bit RGB. Inoltre supporta la riproduzione di animazioni, consentendo di usare palette diverse per ogni singolo frame. Il limite di 256 colori rende però il formato poco adatto alla riproduzione di fotografie a colori e immagini dettagliate, ma è perfetto per immagini semplici quali loghi e grafica con aree di colore costante. Le immagini Gif vengono compresse tramite LZW, una tecnica di compressione dati lossless, per ridurre la dimensione del file senza alterarne la qualità. Questo tipo di compressione fu soggetto a diritti dal 1985, alimentando delle controversie tra Unisys e Compuserve, sfociate nel 1994 nello sviluppo di un altro formato d immagine denominato PNG (Portable Network Graphics). Figura Immagine Gif non animata, è ben visibile come il limite di 256 colori renda poco realistica l immagine Gif fu introdotto per avere un formato d immagine a colori che sostituisse il precedente formato RLE che era in bianco e nero. La popolarità di Gif è dovuta principalmente alla compressione LZW che era molto più efficiente dell RLE, utilizzato all epoca nei formati PCX e MacPaint, consentendo così di scaricare immagini più grandi in tempi relativamente limitati anche su connessioni lente. 79

80 Problematiche per la compressione di immagini Il formato originale si chiama 87a. Nel 1989 venne rilasciata una versione migliorata, chiamata 89a, che aggiungeva il supporto a tempi di ritardo per le animazioni, uso di colori trasparenti come sfondo, ed a memorizzazione di metadati specifici per le applicazioni. Un altra funzione era la possibilità di inserire etichette di testo indipendenti dai dati grafici, ma, dato che c è poco controllo sui font visualizzati, viene scarsamente utilizzata. Per distinguere le due versioni basta leggere i primi sei byte del file, che interpretati in ASCII forniscono rispettivamente GIF87a e GIF89a. Gif è stato uno dei primi formati d immagini, insieme al formato XBM in bianco e nero, ad essere usato intensivamente su siti Web, principalmente per la sua capacità di produrre semplici animazioni grazie alla possibilità di immagazzinare più frame al suo interno e al controllo sui dati. L opzione di creare immagini interlacciate e quindi parzialmente riconoscibili anche prima del completo download (dando così la possibilità di interrompere il caricamento della pagina) contribuì alla popolarità del formato Gif Utilizzi del formato Gif 1. Gif si adatta perfettamente per loghi ad alto contrasto con un numero limitato di colori. Questo trae vantaggio dalla compressione lossless utilizzata, che funziona bene con aree uniformi di colore con bordi ben definiti (Al contrario di Jpeg, che preferisce gradienti morbidi e immagini con variazioni limitate). 2. Può essere utilizzato per immagazzinare sprite con pochi colori da impiegare nei videogiochi. 3. Brevi animazioni e spezzoni di film a bassa risoluzione possono essere rappresentati in file Gif. 4. A causa della limitazione della palette a 256 colori, non viene utilizzato come formato per la fotografia digitale. Al suo posto vengono impiegati formati in grado di gestire un range più elevato di colori, quali TIFF, RAW e JPEG. 5. Il formato PNG costituisce una valida alternativa a Gif, dato che utilizza tecniche di compressione migliori e non soffre del limite di 256 colori. Per contro non ha il supporto alle animazioni, anche se MNG e APNG, evoluzioni di PNG, consentono di memorizzare animazioni. Rimangono comunque due formati poco diffusi. 80

81 Problematiche per la compressione di immagini Palette Gif Il formato Gif è basato su palette. Nonostante si possa scegliere la palette tra milioni di palette diverse, per ogni frame attivo il numero massimo di colori è fisso a 256, che sono quelli contenuti nella palette attuale. Una palette non fa altro che associare al numero corrispondente uno specifico valore RGB. Questa limitazione sembrava ragionevole quando fu creato lo standard, anche perchè poche persone erano in grado di procurarsi l hardware per visualizzare più colori. Inoltre la grafica semplice dell epoca, formata da linee, disegni e fotografie in scala di grigi necessitava di un numero inferiore di colori per essere rappresentata correttamente. Figura Una palette Gif, in cui sono visibili i 256 colori utilizzati Il formato Gif permette anche di effettuare il dithering dei colori, che viene realizzato accostando pixel di due o più colori per ottenere un approssimazione di un colore, ma questa trasformazione implica una perdita di dettaglio inevitabile. Algoritmi venivano usati per selezionare la palette ed eseguire il dithering, producendo output differenziati poco adatti alla compressione, andando contro lo scopo originale del formato. Dato che negli anni 80 le schede grafiche disponevano di buffer a 8 bit, divenne un abitudine salvare le immagini Gif usando la palette Web Safe, che assicurava la fedeltà dell immagine su qualsiasi piattaforma, ma limitava notevolmente la scelta dei colori. Al giorno d oggi, visto che le schede grafiche supportano colori a profondità di 24 bit, le palette possono essere costruite con i colori ottimali per la specifica immagine. Per immagini di dimensioni limitate una piccola tabella di colori può risultare sufficiente, e consentire un download più veloce del file. Sia nel formato 87a che nella versione 89a le 81

82 Problematiche per la compressione di immagini specifiche consentono una dimensione della tabella dei colori pari a 2 n, dove n può assumere valori qualsiasi compresi tra 1 e 8. Molte applicazioni grafiche sono in grado di leggere e visualizzare immagini Gif con tabelle di qualsiasi dimensione, ma non tutte supportano in fase di creazione tutte le dimensioni. Tabelle da 2, 16 e 256 colori sono le più supportate. Figura Immagine Gif salvata con una palette Web Safe e ditherata. Si nota come il numero ridotto di colori renda poco realistica l immagine LZW GIF utilizza l algoritmo di compressione lossless LZW, che è una variante di LZ77, implementata nel 1984 da Terry Welch [11]. Il suo funzionamento è particolarmente semplice, invece di effettuare una statistica del testo in ingresso, delle stringhe di simboli vengono sostituite con un codice. Per far ciò deve tenere traccia di ogni nuova stringa di caratteri, memorizzandola all interno di un dizionario. La compressione avviene quando al posto di questa stringa memorizzata viene fornito in uscita un singolo simbolo che la identifica univocamente. Il codice prodotto può essere di lunghezza arbitraria, ma deve rispettare il requisito di essere maggiore della lunghezza di un singolo simbolo. I primi 256 codici vengono assegnati, nel caso di simboli da otto bit, al set standard che rappresenta l alfabeto. 82

83 Implementazione effettuata I codici rimanenti vengono assegnati alle stringhe durante l esecuzione dell algoritmo. Ponendo la lunghezza del codice a 12 bit avremo che i codici tra 0 e 255 rappresentano i simboli, mentre quelli tra 256 e 4095 si riferiscono alle stringhe. La tendenza durante la compressione è quella di tentare sempre di fornire in output codici per stringhe note, ed ogni volta che non ci si riesce e si produce di conseguenza un nuovo codice, tale valore viene memorizzato nel dizionario. Consideriamo una stringa di parole inglesi separate dal carattere / e seguiamo l evoluzione dell algoritmo passo dopo passo, come mostrato in figura: Stringa in ingresso = /WED/WE/WEE/WEB/WET Carattere in entrata Codice in uscita Valori del codice nuovi Nuove stringhe /W / 256 /W E W 257 WE D E 258 ED / D 259 D/ WE /WE / E 261 E/ WEE /WEE /W E/W EB WEB / B 265 B/ WET /WET EOF T Tabella 3.2 Algoritmo LZW eseguito passo dopo passo All inizio, viene effettuata una ricerca all interno del dizionario per trovare una corrispondenza con la stringa /W. Dato che non esiste, la stringa viene fornita in output suddividendola nei due simboli base / e W, e viene aggiunto un valore nel dizionario che contiene questa stringa. Il codice che gli viene assegnato è 256, dato che è il primo disponibile dopo quelli che rappresentano l alfabeto. Quando viene letto il secondo carattere, E, viene aggiunto un nuovo codice per la stringa WE, e viene fornito in output il simbolo W. Questo processo continua sino a quando non vengono letti nella seconda parola i caratteri /W, che corrispondono al codice 256. In questo caso viene fornito in uscita il codice, e una stringa di tre caratteri viene 83

84 Implementazione effettuata memorizzata nel dizionario /WE. Il processo continua fino a quando la stringa non termina e tutti i codici sono stati forniti in output. Come si nota, il dizionario si riempe rapidamente a causa del fatto che viene memorizzata una stringa ogni volta che viene prodotto un codice in output. In questo caso, dato che l ingresso è altamente ridondante vengono forniti in uscita 5 codici e 7 caratteri. Supponendo di utilizzare per i codici una lunghezza di 9 bit, la stringa originale di 19 caratteri (19 byte) viene ridotta a 13,5 byte. Ovviamente in questo caso si ha una buona performance grazie alla tipologia di dati in ingresso, con testi diversi è necessario più tempo prima che il dizionario sia completamente costruito, in genere devono essere acquisiti almeno un centinaio di simboli. La fase di decompressione dev essere in grado di estrarre lo stream originale partendo dai codici che gli vengono forniti. Una delle ragioni dell efficienza di LZW è che tale capacità viene assicurata senza che l algoritmo di compressione debba passare il dizionario utilizzato a quello di decompressione. Infatti, il dizionario si può ricostruire nella sezione di decompressione partendo dai codici che vengono forniti. Questo è possibile grazie al fatto che l algoritmo di compressione fornisce in output sia le stringhe che i simboli che compongono un codice prima che questo venga utilizzato in output. Il beneficio immediato di tale comportamento è appunto la maggior leggerezza dell output, che non deve portarsi dietro una grande quantità di dati per effettuare la riconversione codice-stringa. 84

85 Implementazione effettuata 4 Implementazione effettuata 4.1 Core MKJPEG La scelta di quale encoder implementare sull FPGA è legata a numerosi fattori, quali la complessità dell algoritmo, lo spazio potenzialmente occupato, la qualità dell immagine. La necessità principale dalla quale si è partiti è la riduzione notevole della dimensione del file da trasferire. Questo poneva già fuori dalla scelta algoritmi di tipo lossless, quali Tiff e implementazioni lossless di Jpeg e Jpeg Gif invece è stato scartato a causa del suo basso livello di dettaglio cromatico. La scelta è quindi inizialmente caduta su Jpeg 2000, dato il vasto supporto a funzioni di controllo che si adattano alle esigenze tipiche delle WSN, quali la trasmissione di una singola parte dell immagine, uso delle Regioni Di Interesse (ROI), e altre. Partendo dal presupposto che Jpeg 2000 altri non è che un evoluzione di Jpeg, si è suddiviso il lavoro in tre fasi: Creazione di un interfaccia verso la memoria Sram della scheda Implementazione dell algoritmo Jpeg sull FPGA Modifica di Jpeg in Jpeg 2000 La prima parte è stata costituita soprattutto dalla creazione di un interfaccia parallela a quella già esistente che preleva l immagine dal sensore per scriverla in memoria. Infatti, per testare il corretto funzionamento degli algoritmi di compressione, è necessario disporre di una sorgente nota. Per far ciò è stato impiegato uno switch sulla scheda che consente di scegliere la sorgente, da cui memorizzare l immagine, tra il sensore e la trasmissione seriale da pc, quest ultima pilotata da immagini definite. La struttura finale si compone di un paio di blocchi, deputati all interfacciamento verso la memoria, comandati da un blocco centrale ( poi sostituito dall encoder vero e proprio) e da un mux che consente lo switch del controllo tra i blocchi di acquisizione-trasferimento e quelli dedicati alla compressione. 85

86 Implementazione effettuata Il funzionamento di tale architettura è stato testato andando a scrivere i dati relativi all immagine nella metà bassa della memoria (primi 512 Kilobyte), andando poi a prelevarli e riscrivendoli nella metà alta della memoria. Tale approccio è stato mantenuto anche dopo l introduzione dell encoder, che viene alimentato con i dati presenti nella parte bassa e scrive il flusso codificato nella parte bassa della memoria. Ovviamente, può essere modificato, facendo in modo che l encoder scriva i codici esattamente sopra ai dati precedentemente codificati. In questa versione la dimensione dell immagine sorgente codificabile diventa praticamente il doppio. La seconda parte consisteva nell implementazione sull FPGA di un core che effettuasse la compressione Jpeg. Dato che per implementarlo da zero sarebbe stato necessario troppo tempo, si è cercato di adattare alcuni core free trovati sul sito Tra le alternative proposte due sembravano abbastanza valide: un core Jpeg scritto da un gruppo spagnolo e uno denominato MKJPEG [18]. Il primo è stato rapidamente abbandonato in favore del secondo, a causa della sua specificità per una piattaforma Xilinx e ad una documentazione poco fornita. Il secondo core invece disponeva di validi documenti di supporto [12], e un organizzazione del core molto più ordinata e comprensibile. Nonostante ciò, per poterlo adattare alla piattaforma utilizzata, erano necessari alcuni ritocchi. Il primo problema che presentava questa struttura era l interfacciamento verso l esterno, che utilizzava un bus di controllo di tipo OPB (Xilinx) per raccogliere i dati di configurazione e l immagine bitmap da comprimere. Come si vedrà nello schema funzionale dell architettura, tale comunicazione è gestita da tre blocchi, HOST DATA, HOST PROG e HOST IF. Anche se questi blocchi consentono di interfacciarsi a tutti i dispositivi OPB compatibili, nel nostro progetto non risultano necessari. Si è quindi proceduto alla rimozione di tali elementi, sostituendo i valori di configurazione con dei registri a valore determinato e l interfaccia verso i dati con un blocco, che alimenta l encoder e si interfaccia alla memoria interpretando i segnali che vengono forniti sul bus. Una volta rimosso il bus e creati gli appositi blocchi di interfaccia verso la memoria e il resto dell architettura, è stato disegnato lo schematico che comprendeva l encoder, per poi compilarlo e verificarne l occupazione sul dispositivo. 86

87 Implementazione effettuata A questo punto, si è verificato un altro problema, costituito dalla presenza di un piccolo elemento dell encoder che era scritto in verilog. Dato che il tool di compilazione non supporta linguaggi misti, è stato necessario rimuovere tale codice e sostituirlo con un equivalente in vhdl. HOST DATA HOST PROG data(23:0) we ready_int BUF_FIFO RGB to YCbCr DCT 2D almost_full ZIG ZAG Host IF Pipeline Controller Quantizer RLE sof size_x size_y Huffman Encoder JFIF GEN Byte Stuffer almost_full m u x receiver JPEG_ENC.vsd Figura Architettura interna del core MKJPEG. Si può notare come i passi dell algoritmo Jpeg siano stati suddivisi in una sequenza di blocchi logici Una volta resa possibile la compilazione del blocco, è emersa una problematica fondamentale, legata al dispositivo utilizzato. Infatti, l FPGA, sulla quale verrà programmato il progetto, non è quella disponibile sulla scheda di sviluppo, bensì una montata su una scheda ad hoc. Questa scheda, per risultare di ridotte dimensioni non monta a bordo tutti i connettori della scheda di sviluppo, nè led o switch e anche il programmatore viene lasciato esterno. Il problema principale non è però quello puramente legato alle connessioni, bensì ai dispositivi onboard. Infatti, pur disponendo di una memoria sram di dimensione doppia rispetto a quella del kit di sviluppo, l FPGA montata è di tipo M1AGL250V2. Quest FPGA dispone di un numero di celle logiche che è meno della metà di quelle 87

88 Implementazione effettuata dell M1AGL600V2 utilizzata fino a questo punto. Risulta evidente che il limite di occupazione sull FPGA del kit di sviluppo si sposta dal 100% a circa il 40-50%. In particolare, il blocco jpeg considerato risulta avere un occupazione superiore addirittura alla capacità del modello 600. Si rendeva necessario quindi un lavoro di rimozione di tutte le caratteristiche non necessarie e una modifica di tale architettura per portarla da un orientamento alla velocità ad uno più sensibile alle problematiche occupazionali. Infatti, tutto il core jpeg era stato originariamente progettato per fornire delle ottime performance come elaborazione parallela tramite la costruzione di pipeline interne e blocchi di memoria interni ad ogni sotto-blocco in modo tale di effettuare l elaborazione su interi blocchi di 8x8 pixel. Quest approccio, che risulta in velocità elevate di compressione, collide con l occupazione del core. Effettuando un analisi dei singoli sotto-blocchi, è risultato un elenco di alcuni di essi che, in relazione all architettura globale, occupavano una quantità spropositata di area. In particolare, il blocco più oneroso era BUF_FIFO, dedicato alla memorizzazione di almeno otto righe dell immagine per riempire la pipeline ed inviare blocchi di 8x8 pixel. Host Data image_width 24 data CTRL_SM pixel_cnt / wblock_cnt wblock_cnt Mux1 wren almost_full(wblock_cnt) rst sof flush FIFO(0) FIFO(1) FIFO(n-1) empty(0) almost full(0) almost full(1) almost full(n) Mux2 from Sub FIFOs from Sub FIFOs fifo_half_full (x_block_cnt) fifo_rd wblock_cnt waddr base Mux3 fifo ramwaddr waddr ram fifo ramwe SUB_RAM raddr ram Mux4 ramd(23:0) fifo ramraddr raddr base x_block_cnt x_block_cnt SUB_FIFO SIZE fifo_empty ramq(23:0) SUB_FIFO SIZE FDCT BUF_FIFO.vsd Figura Architettura interna del blocco BUF_FIFO. 88

89 Implementazione effettuata Come si può vedere nello schema, le righe dell immagine vengono memorizzate all interno di una struttura formata da numerose fifo, ognuna deputata alla memorizzazione di un blocchetto 8x8. Grazie a un sistema di multiplexing è possibile scegliere quale delle fifo verrà trasmessa al blocco di elaborazione successivo, in modo da avere sempre dei dati pronti. Infatti, l elaborazione comincia quando almeno 8 righe d immagine sono state caricate all interno delle fifo, e nel frattempo altre 8 vengono acquisite. Un elemento di ram consente di liberare la fifo che viene inviata in quel momento, così da poterla subito riutilizzare per nuovi dati provenienti dal blocco HOST DATA. Dato che una struttura del genere consuma una grande quantità di memoria, si è pensato di sostituirla con un blocco che fornisse ai blocchi successivi un blocchetto 8x8 alla volta senza creare una pipeline. Tale blocco, invece di memorizzare il flusso di byte di ogni riga e costruire N blocchetti 8x8 simultaneamente, facendo uso di un sistema di puntatori e offset, prelevava i dati relativi ad un singolo blocchetto e li trasmetteva al blocco di elaborazione successivo. Quest ultimo li accumulava all interno di una fifo, che una volta piena fermava il flusso di dati e iniziava l elaborazione del blocco appena completato. In questo modo, al posto di avere un blocco che memorizzava al suo interno fino a 16 righe d immagine alla volta (circa 90 Kilobyte di dati) si ha un blocco che al massimo memorizza un indirizzo di memoria (32 bit) e una fifo di dimensione di un blocco 8x8 (1024 byte). Effettuando questa sostituzione, bisogna tenere conto del fatto che il blocco successivo, deputato all esecuzione della FDCT (Fast Discrete Cosine Transform), si aspetta un input di tipo blocchetto 8x8 e dispone di alcuni comandi di interfaccia verso BUF_FIFO, che in questo caso vanno adattati per interagire con il nuovo modulo. In particolare, all interno del blocco FDCT abbiamo un elemento denominato Read_Controller che genera un segnale di Fifo_Read, insieme ad un segnale che indica quale delle fifo dev essere letta. Questo blocco riceve anche un segnale di Fifo_Empty quando la fifo non è pronta a trasmettere dei dati, inoltre gestisce un multiplexer delle componenti colore. Infatti, dato un ingresso a 24 bit per pixel, l FDCT, a seconda di quale indice è selezionato, esegue l elaborazione su tutti i dati di una singola componente per tutto il blocchetto 8x8. 89

90 Implementazione effettuata Questo ha portato a due necessità. La prima è la generazione di un input a 24 bit per pixel. Infatti il sensore ottico fornisce un uscita RGB 565, quindi bisogna effettuare un espansione a RGB 888. Questo è stato realizzato attraverso un semplice blocco espansore. La seconda è la sostituzione dei segnali di controllo sulla componente, che devono essere affidati al blocco che effettua la divisione in blocchetti al posto di BUF_FIFO. BUF_FIFO 24 data wr_addr(5:0), rd_addr(5:0) FRAM1 fifo_rd, x_block_cnt fifo_empty RBG2YCbCr BUF_FIFO read Controller cur_cmp_idx d_valid mux1 8 MDCT SOF data_dct 12 d_valid ENC_START_REG IMAGE_SIZE_REG FIFO1 rden empty FIFO rd ctrl ready_pb size_x(16:0), size_y(16:0) data_dct wr_addr(6) 12 d_valid start_pb CTRL_SM not DBUF wr_addr (5:0) wrt_cnt / transpose rd_addr(6) data_dct_q buf_sel 12 rd_addr(5:0) ZIGZAG FDCT.vsd Figura Architettura interna del blocco FDCT. 90

91 Implementazione effettuata Un altra operazione di riduzione della dimensione del core è stato eliminare il blocco di conversione dallo spazio di colore RGB a quello YCbCr. Questo è stato possibile grazie al fatto che il sensore, configurato adeguatamente, può fornire in uscita un output formattato appunto secondo lo standard YCbCr. Tale stadio di conversione diventa quindi inutile e può essere scartato. L ultima riduzione effettuata riguarda i blocchi di Byte Stuffing, JFIF Generator e Output Mux. Questi blocchi si curano della generazione dei dati necessari da aggiungere al flusso di dati compressi in modo tale che risulti compatibile alle specifiche espresse nello standard JFIF. HUFFMAN bs_buf_sel t flop rd_req empty data(7:0) CTRL_SM data_reg(7:0) CTRL_SM start_pb ready_pb 0x00 Byte Stuff Detector ENC_START_REG Mux1 SOF JFIFGen last_addr wr_cnt(23:0) wr_en ENC_LENGTH_REG wr_addr(23:0) out(7:0) OUT MUX ByteStuffer.vsd Figura Architettura interna del blocco Byte_Stuffer. Mentre JFIF Generator utilizza i dati relativi alla dimensione dell immagine e alcuni marker standard memorizzati in una piccola memoria (HEADER RAM) per generare 91

92 Implementazione effettuata l header e il footer del file, Byte Stuffing impedisce (Modificando eventuali sequenze di EOI inserendo al loro interno dei byte di valore 0) che nel flusso di dati si presentino sequenze che potrebbero coincidere con l indicazione di EOI (End Of Image) e l Output Mux sceglie quale valore fornire in uscita tra quelli prodotti dai due blocchi. (JFIF Generator viene abilitato solo all inizio e alla fine del file, nel mentre è valida l uscita di Byte Stuffing). HOST_IF waddr(9:0) wren data(7:0) eoi CTRL_SM CTRL_SM ready_jfif start_jfif rd_cnt(8:0) rdaddr(9:0) HEADER RAM EOI Writer ByteStuffer last_addr(23:0) eoi Mux2 eoi Mux1 wr_en wr_addr(23:0) wr_addr(23:0) out(7:0) OUT MUX JFIF_GEN.vsd Figura Architettura interna del blocco JFIF_GEN. Tale struttura, che rende il core perfettamente in grado di creare file compatibili con lo standard Jpeg, aggiunge una certa quantità di spazio occupato all interno dell FPGA, sia per i blocchi di elaborazione che per la memoria interna che contiene l header modificato in base alla specifica immagine. Inoltre, si rende necessario più spazio anche nella sram 92

93 Implementazione effettuata esterna per memorizzare l immagine compressa. Tale dimensione maggiorata si fa sentire nello stadio di trasmissione remota dell immagine compressa, che è la fase più power consuming dell intero processo. Si tende quindi a voler minimizzare il tempo di trasmissione per aumentare l autonomia energetica del nodo. In questo caso, dato che l immagine compressa è sempre delle stesse dimensioni e verrà poi ricevuta da un computer, si è deciso di lasciare a quest ultimo il compito di aggiungere i dati di header e footer per rendere l immagine visualizzabile da un qualsiasi decoder Jpeg. Adottando tale assunzione, è possibile la rimozione totale di tutti i tre i blocchi. Purtroppo, anche dopo questo processo di riduzione, lo spazio occupato rimaneva comunque proibitivo, almeno per il modello 200. Dato che anche riuscire a far stare il core sul modello 600 era legato a un lavoro di ottimizzazione, che andava a modificare la struttura generale dell architettura, senza alcuna garanzia che, dopo tutto ciò, la struttura sarebbe funzionata in tempi brevi e sul modello 200, si è preferito passare ad implementare un algoritmo di compressione lossless, magari meno efficiente, ma sicuramente più semplice e compatto. Nel caso specifico è stata scelta una variante dell algoritmo LZ77, LZSS. Questa variante porta numerosi benefici che rendono il rate di compressione più elevato senza gravare notevolmente sullo spazio necessario per implementarla, si presta quindi alla perfezione all utilizzo sull FPGA. 93

94 Implementazione effettuata 4.2 Implementazione in hardware di LZ Adattamento dell algoritmo: LZSS L algoritmo LZ77 funziona bene con sorgenti dall entropia limitata e con grandi dizionari. Questo vuol dire che è ottimo per comprimere testi, ma nel nostro caso, l entropia dei dati contenuti in un immagine è circa dieci volte più elevata di quella contenuta in un qualsiasi testo. Infatti, anche se i simboli dell alfabeto vengono rappresentati da codici ASCII, quindi con 8 bit, i valori effettivi che si troveranno all interno di un messaggio rispetteranno la statistica per ogni simbolo rispetto a quel linguaggio. Avremo quindi delle distribuzioni di probabilità con valori più alti sulle lettere maggiormente usate, quali potrebbero essere le vocali, che abbassano la variabilità dei dati in ingresso. Inoltre nel liguaggio è frequente, avendo un search-buffer abbastanza ampio, incontrare delle corrispondenze su parole intere. Quando si comprime un immagine, bisogna tenere conto che la gamma di valori possibili, pur essendo rappresentata sempre da 8 bit, non è più limitata a una ventina di simboli più probabili, ma è direttamente legata alla rappresentazione del colore, che può assumere 256 livelli. Quindi a seconda della figura che stiamo cercando di comprimere, avremo performance variabili in proporzione a quanto l immagine sia monotona, a basse variazioni. Questo fatto rende evidente che, se si potesse abbassare l entropia generale dell immagine, rendendola più omogenea, l algoritmo troverebbe un maggior numero di corrispondenze, e quindi otterremmo una compressione più efficiente. Per conseguire tale risultato è necessario applicare una quantizzazione sui dati in ingresso. Ad esempio, invece di considerare un formato dei dati in ingresso di tipo RGB 888, è possibile utilizzare un formato RGB 565 che fornisce livelli quantizzati dell immagine originale. Questa quantizzazione viene fatta semplicemente non considerando per ogni simbolo i bit meno significativi, che sono quelli a più alta probabilità di variazione. Infatti, se consideriamo la rappresentazione di F9, scartando gli ultimi due bit diventa uguale a F8, FA e FB. Aumenta di conseguenza la probabilità di trovare simboli uguali, con il compromesso di perdere una piccola parte d informazione. 94

95 Implementazione effettuata Questa perdita rimane accettabile fino a livelli di quantizzazione piccoli, ad esempio fino a 3 bit. Andando oltre, ovviamente le performance migliorano ancora, ma la degradazione dell immagine inizia a prevalere. Un altro elemento che rende l algoritmo originale poco performante, come livello di compressione, è la ricerca all interno del dizionario [13]. Infatti, quando viene trovato un simbolo nel dizionario, l algoritmo calcola la stringa massima a partire da quel punto, e poi produce l output corrispondente. Questo non vuol dire che la corrispondenza sia ottima. Mettiamo caso di avere codificato...34f9a3127c34f e di avere da codificare nel look-ahead buffer 34F9A L algoritmo originale, appena incontra il primo 34 partendo da destra, si ferma e calcola la lunghezza della stringa, producendo in uscita una tripla del tipo (O,2,A3). Se invece manteniamo in memoria questo match e lasciamo continuare l esplorazione del dizionario fino al suo termine, potremmo trovare match migliori, e memorizzarli, altrimenti teniamo come valido il primo match incontrato. Con la stringa codificata sopra, si vede subito che in posizione O + 5 abbiamo un match migliore, formato da ben quattro simboli. Quando l algoritmo lo incontra, calcola la lunghezza di match, e visto che è superiore a quella del match precedente, scarta quest ultimo e memorizza quello nuovo, per poi proseguire nella ricerca di eventuali nuovi match. Se ad un certo punto della ricerca si incontra un match di lunghezza massima (di dimensione uguale a quella del look-ahead buffer), anche se si continua, all interno del search buffer non ci potranno essere match migliori, quindi la ricerca viene subito interrotta e viene prodotto l output corrispondente. Questo approccio alla ricerca di match porta ad un compromesso tra tempi di ricerca e rate di compressione. Se da un lato abbiamo più probabilità di trovare match migliori, dall altro i tempi di ricerca iniziano a pesare sul tempo totale che l algoritmo impiega a comprimere un immagine. Infatti, con un dizionario di 4096 byte, per ogni nuovo byte da comprimere avremo da effettuare almeno 4096 controlli, che moltiplicati per il numero di byte che compongono un immagine, iniziano a diventare un numero considerevole. 95

96 Implementazione effettuata Le soluzioni a questo problema sono molteplici, come ad esempio aumentare la velocità di clock del compressore (attualmente 12 MHz), ridurre la dimensione del dizionario o limitare il valore di match massimo. Di queste, solo la prima non va a toccare il rate di compressione. Infatti, diminuendo la dimensione del dizionario è possibile perdere delle tendenze periodiche dei dati che abbiano periodo maggiore della finestra d osservazione, mentre limitando il match massimo non abbiamo garanzie sul fatto che quello fosse il match migliore. Una misura adottata per ridurre i tempi di ricerca almeno all inizio, è tenere traccia di quanti dati sono stati processati. Infatti, fino a quando non abbiamo codificato almeno un numero di byte pari alla dimensione del dizionario è del tutto inutile effettuare ricerche su tutta la sua ampiezza. Quindi le prime ricerche si fermano al numero di byte che sono già stati codificati, per poi diventare totali quando il dizionario è stato completamente riempito. Un altro accorgimento implementato riguarda il formato dell output prodotto dal codificatore. La versione originale prevede la trasmissione dei due tipi di triple in ogni caso, quindi, assumendo che ogni elemento della tripla abbia dimensione di un byte, andremmo a trasmettere una quantità eccessiva di dati per rappresentare simboli che non sono stati trovati, o con livelli di match molto bassi. Infatti, nel caso estremo di simbolo non trovato, andremmo a rappresentare con tre byte un simbolo di un byte. Bisogna quindi trovare un alternativa più funzionale, che consenta di evitare questo spreco di spazio [14]. La soluzione è contenuta in un cambio del modo in cui le triple vengono rappresentate, nello specifico passare da una rappresentazione legata al byte ad una legata al bitstream. Per poter eseguire un passaggio simile, è necessario definirne il formato, in modo che non ci siano ambiguità in fase di decompressione. La prima cosa da decidere sono le dimensioni dei componenti della tripla. Nel caso di O, viene semplicemente determinata dal numero di bit necessari per indirizzare completamente il search buffer. Teniamo conto di questo fattore quando bisogna scegliere la dimensione del suddetto, perchè oltre una certa dimensione i vantaggi del poter trovare più facilmente corrispondenze vengono completamente annullati dal numero di bit occupati dal puntatore, che viene trasmesso ad ogni tripla. 96

97 Implementazione effettuata Nel nostro caso specifico, si può trovare nella dimensione di 4096 byte un buon compromesso, infatti è un dizionario sufficientemente grande, e viene indirizzato tramite un puntatore a 12 bit. Per quanto riguarda L, si può fare l assunzione che, non conoscendo a priori la struttura dell immagine da comprimere, è difficile trovare corrispondenze più lunghe di un certo valore, e quindi inutile settare L a valori elevati. Nel nostro caso, si è optato per un valore pari a 15, rappresentabile attraverso 4 bit. S, essendo un simbolo, ha dimensione fissata ad 8 bit. Ora, facendo la somma di queste dimensioni, si vede che, per esprimere una tripla, sono necessari al minimo 24 bit, di conseguenza, in tutti i casi in cui esprimere direttamente i dati senza codificarli occupa meno di questa quantità, conviene ignorare la codifica e trasmettere direttamente. Questo porta alla luce una questione di univocità. Infatti, bisogna trovare il modo di distinguere quando il compressore ci sta inviando una sequenza che caratterizza una tripla, oppure sta semplicemente inviando il simbolo non codificato. Per risolvere la questione è sufficiente aggiungere un bit, chiamato flag, che precede ogni output del compressore. A seconda del valore che assume il flag, possiamo distinguere univocamente quale tipo di dati ci dobbiamo aspettare subito dopo. Nel nostro caso, si è stabilito che ad un flag di valore 1 segua sempre un simbolo (8 bit), mentre quando assume il valore 0 viene sempre seguito dalla definizione di una tripla (24 bit) Flag a 1, i seguenti 8 bit vengono interpretati come F Flag a 0, i 12 bit seguenti vengono interpretati come il valore di O (2), i successivi 4 come il valore di L (4), e gli ultimi 8 come la rappresentazione del simbolo A (CA) La corretta interpretazione da parte del software decompressore viene garantita dal fatto che questa struttura viene rispettata, e che all inizio i primi risultati forniti dal compressore saranno sicuramente con flag a 1, consentendogli di costruirsi un suo buffer di dati decompressi dai quali riuscire a interpretare le triple che arriveranno successivamente. 97

98 Implementazione effettuata Nel complesso, quindi una tripla viene sempre espressa tramite 25 bit. Questo ci fornisce un metro per decidere quando conviene trasmettere la tripla, settando una soglia sulla lunghezza della stringa coincidente. Nel caso in cui non si abbiano match, si trasmette direttamente flag più simbolo (9 bit, con un risparmio di 16 bit), nel caso si abbia match di un solo simbolo conviene ancora trasmettere i due simboli, dati dal byte corrispondente più il simbolo A ( = 18 bit, con un risparmio di 7 bit), mentre se si hanno match pari a due simboli o più, conviene sempre trasmettere la tripla corrispondente ( = 27 bit, spreco 2 bit). Per permettere la decodifica, è necessario ancora un ultimo accorgimento. Infatti, c è bisogno di un terminatore che indichi quando il decompressore si deve fermare. Questo viene generato quando il blocco che alimenta il compressore mette a 1 il segnale EOI (End Of Image). Infatti, quando questo segnale va a livello logico alto, il compressore smette di richiedere letture dalla memoria, e inizia a tenere conto di quanti byte da comprimere sono rimasti all interno del look-ahead buffer. Una volta che questo numero scende a zero, a sua volta alza un segnale di EOI_O che indica al blocco che scrive in memoria gli output di iniziare a scrivere la sequenza di terminazione. Questa sequenza è semplicemente costituita da una serie di simboli trasmessi direttamente con il flag a 1, con valori noti. In particolare si è scelto di mandare i valori ASCII della scritta ENDFILE, che ha una probabilità decisamente bassa di formarsi casualmente tra gli output compressi. La struttura della stringa di terminazione è la seguente: Flag + 0x45 E + Flag + 0x4E N + Flag + 0x44 D + Flag + 0x46 F + Flag + 0x49 I + Flag + 0x4C L + Flag + 0x45 E. 98

99 Implementazione effettuata 4.3 Algoritmo di decompressione L algoritmo di decompressione, essendo eseguito offline da un pc, è stato scritto in linguaggio C, ma non se ne esclude un porting direttamente nel programma in LabVIEW che fa da tramite verso l FPGA. Il funzionamento è semplice, e ricalca quello spiegato nel paragrafo Fase di decodifica, ma con alcuni accorgimenti per considerare le variazioni imposte dal dover lavorare a livello di bit (estrazione del flag, ricomposizione di valori di O,L,A spezzati in byte consecutivi) e non byte per recuperare sia le triple che i simboli non codificati. Per questo, il linguaggio C si presenta come ottimale per effettuare questo compito, dato che dispone di operazioni bitwise, quali and, or e shift a livello binario. Il codice viene riportato per la lettura in appendice. 99

100 Risultati ottenuti 5 Risultati ottenuti 5.1 Comparazione dei risultati Per effettuare una valutazione delle performance di compressione del blocco LZSS sono state utilizzate due immagini di prova, compresse sia in hardware che con i codec software dei formati d immagine esemplificati nel capitolo 3. La prima è una tipica immagine di test che contiene un numero molto elevato di colori, coprendo un vasto range di frequenze visive. Inoltre, non è un immagine monotona, presenta diversi bordi netti, e variazioni molto vicine di colore. La seconda immagine utilizzata è una fotografia rappresentante la trappola per mosche, ovvero l immagine che effettivamente dev essere compressa dal nodo remoto. Come si può notare, tale immagine è meno variabile rispetto a quella precedente e si presta più facilmente ad essere compressa Figura 5.1- Immagine BMP, 24 bit per pixel: 297 KB Quest immagine rappresenta i dati originali precedenti il processo di compressione, al massimo della qualità. Non sono però quelli che verranno mandati al blocco di compressione hardware, dato che il sensore ottico fornisce un uscita di tipo RGB 565, ovvero con una rappresentazione a 16 bit per pixel. Per effettuare la conversione da RGB 888 a 565 viene utilizzata l interfaccia in LabVIEW. 100

101 Risultati ottenuti Figura 5.2- Immagine GIF: 70 KB Quest immagine, pur garantendo un file di dimensioni contenute, mostra delle visibili degradazioni, dovute alla limitazione dei colori a solo 256 valori. Figura 5.3- Immagine JPEG, qualità massima: 145 KB Jpeg riesce molto bene a combinare un buon livello di compressione insieme al mantenimento della qualità dell immagine. Infatti, impostando il livello di qualità al massimo, si riesce ad ottenere un immagine di dimensioni dimezzate senza degradazioni visibili. 101

102 Risultati ottenuti Figura 5.4- Immagine TIFF Lossless: 329 KB Il formato di file TIFF, senza aggiungere alcun metodo di compressione, ossia conservando i dati in modalità lossless presenta addirittura un incremento della dimensione del file, mantenendo comunque inalterata la qualità. La dimensione ottenuta dalla compressione di questa immagine tramite LZSS con livello di quantizzazione 3 è pari a 150 KB. Considerando che il livello di degradazione introdotto dalla quantizzazione è abbastanza basso, si può affermare che le prestazioni raggiunte sono comparabili a quelle di Jpeg a qualità massima. L uso del formato GIF è sconsigliato, dato che porta a una riduzione sensibile del dettaglio cromatico dell immagine, mantenendone però l informazione sulla luminosità e di conseguenza la possibilità di distinguere i soggetti rappresentati. Tiff è anch esso da evitare, anche perchè utilizza i metodi di compressione di Jpeg per la versione lossy, mentre la versione lossless incrementa addirittura la dimensione del file. Per poter valutare quale formato sia effettivamente più conveniente, proviamo ora a vedere quali output vengono forniti dai vari algoritmi di compressione fornendo in input l immagine effettiva della trappola che dovrà essere compressa dal nodo remoto. 102

103 Risultati ottenuti Figura 5.5- Immagine BMP, 24 bit per pixel: 297 KB Fotografia della trappola per mosche effettiva, in formato RGB 888. Diversamente dall immagine di test con la frutta, qui lo sfondo è molto più costante, i colori sono più uniformi. Figura 5.6- Immagine GIF: 85 KB In questo caso sono meno visibili le degradazioni dovute alla perdita di informazione cromatica. Questo è dovuto semplicemente alla minore quantità di colori presenti 103

104 Risultati ottenuti nell immagine e alla loro somiglianza, che rende l immagine più simile all originale mescolando i colori vicini senza produrre troppa perdita di dettaglio. Figura 5.7- Immagine JPEG, qualità massima: 99 KB Nell immagine Jpeg, come nel caso precedente, troviamo un ottimo compromesso tra la dimensione ottenuta e il livello di dettaglio. In particolare, si ottiene una compressione migliore dell immagine di test con la frutta e non si presentano artefatti visibili. Figura 5.8- Immagine TIFF Lossless: 326 KB Anche in questo caso, l immagine Tiff si dimostra essere poco adatta alla compressione dell immagine, ma potrebbe essere utilizzata per scopi di archiviazione dell immagine. 104

105 Risultati ottenuti In questo caso le performance fornite dal compressore LZSS hardware si aggirano sui 122 KB. Tale risultato, che si posiziona poco dopo Jpeg, evidenzia come in effetti l algoritmo di compressione migliore sia effettivamente quest ultimo. Bisogna però tenere conto di alcuni punti di forza di LZSS, che nel particolare contesto applicativo lo rendono vincente rispetto a Jpeg e agli altri formati. In particolare, considerando il supporto hardware su cui deve girare l algoritmo, LZSS non comporta un occupazione eccessiva del dispositivo, cosa molto rilevante, visto che coinvolge sia la possibilità di effettuare delle aggiunte al progetto sia il consumo del dispositivo. Infatti, dato che ogni cella utilizzata contribuisce a consumare energia, un implementazione che risparmi sullo spazio risparmia anche in termini di energia usata. Un altra caratteristica peculiare del core sviluppato è la mancanza di disponibilità di un core free che esegua questo tipo di compressione sulla rete. Infatti, core che eseguono quest operazione sono disponibili in rete, ma vengono venduti da software house. Ora è disponibile quest implementazione free. 105

106 Conclusioni e sviluppi futuri 6 Conclusioni e sviluppi futuri 6.1 Conclusioni In conclusione, l implementazione effettuata riesce a raggiungere un buon compromesso tra la capacità di compressione, che viene effettuata in modalità lossless, e l occupazione sul dispositivo, requisito molto importante vista la natura della piattaforma hardware. Alla luce dei risultati forniti è evidente che la capacità di compressione non potrà mai raggiungere i livelli di un algoritmo lossy, ma la semplicità dell algoritmo combinata al ridotto spazio occupato bilanciano perfettamente questo problema. Inoltre, è possibile effettuare ancora dei miglioramenti all algoritmo, adattandolo al tipo di immagine specifica che viene trattata dal nodo e inserendo degli eventuali blocchi di elaborazione dei dati compressi. Ovviamente, per quanto riguarda la seconda possibilità, bisognerà fare alcune stime su quanto spazio potrebbero occupare tali blocchi, e verificare se un aggiunta sarebbe compatibile con lo spazio ancora disponibile. Nel paragrafo successivo vengono descritti sia il procedimento di adattamento dell algoritmo all immagine utilizzata sia un procedimento (Codifica di Huffman) che potrebbe costituire una possibilità di post-processing per incrementare il rate di compressione senza gravare eccessivamente sulla complessità dell encoder. 6.2 Sviluppi Futuri Possibili sviluppi futuri sono legati principalmente a due necessità: Ottimizzazione del rapporto Compressione/Velocità Adattamento del compressore allo standard DEFLATE Ottimizzazione rapporto Compressione/velocità Per quanto riguarda il primo passo, bisogna tenere conto del compromesso esistente tra la velocità di compressione e la sua efficacia. Infatti LZSS è un algoritmo che funziona meglio quanto più tempo dispone. I tempi di esecuzione dell algoritmo sono legati 106

107 Conclusioni e sviluppi futuri principalmente alla ricerca all interno del dizionario, e quindi funzione della dimensione di quest ultimo. Una soluzione per la riduzione di questi tempi è ricorrere alla costruzione di alberi di ricerca binari, in modo tale che si disponga di un metodo per evitare di dover analizzare tutto il dizionario. Tali metodi sono però abbastanza complessi da implementare, e visto lo spazio limitato che si ha sul dispositivo, si preferisce agire sui settaggi dell encoder. In particolar modo, quest implementazione di LZSS dispone di una funzione di ricerca multipla all interno del dizionario, come spiegato nel paragrafo 4.3.1, la quale porta all esplorazione totale del dizionario ad ogni nuovo byte che viene codificato. Un compromesso che permette di evitare questa esplorazione completa e quindi di tagliare i tempi di esecuzione è lo stop della ricerca alla prima occorrenza che viene individuata. Se da una parte viene accelerato il processo di compressione, dall altra si ha che non è più garantita l ottimalità del codice ottenuto. Infatti, estendendo la ricerca a tutto il dizionario, è possibile che si trovino dei match migliori. Un altro metodo per velocizzare l elaborazione è chiaramente ridurre la dimensione del dizionario. Se, nel caso della compressione di testi si ha la possibilità di trovare più parole con dizionari più ampi, comprimendo un immagine tale assunzione, pur essendo vera, perde un po di significato, dato che dopo un certo numero di campioni tutti i valori saranno stati memorizzati con una certa probabilità. Quindi, a meno di avere un immagine con andamenti periodici di dimensione maggiore del dizionario, si può effettuare tranquillamente una riduzione dello stesso al fine di tagliare i tempi necessari per la compressione. In questo caso, si può provare con una dimensione di 2048 byte, che porta ad un dimezzamento dei tempi di ricerca. Questo ovviamente con la funzione di ricerca multipla attiva. Si può anche effettuare una fusione tra i due metodi, ossia dimezzare il dizionario e disattivare la ricerca, ottenendo tempistiche migliori a scapito dell efficacia di compressione. L ultima risorsa disponibile per diminuire i tempi è modificare la frequenza di clock del compressore. Le simulazioni hanno evidenziato come, a partire dall attuale frequenza di 12 MHz, sia possibile il funzionamento fino a 24 Mhz. Incrementando ulteriormente la 107

108 Conclusioni e sviluppi futuri frequenza l encoder inizia a comportarsi in maniera non corretta, ma già così si avrebbe un vantaggio di velocità doppio. In conclusione, effettuando del tuning dei parametri dell encoder e variando la frequenza, si può ottenere un aumento di velocità minimo di quattro volte, che è un buon risultato, ma va confrontato con la possibile perdita di efficacia della compressione Adattamento allo standard DEFLATE Nel secondo passo si figura come sviluppo futuro la compatibilità con lo standard DEFLATE. Questo standard si basa su una compressione di tipo LZ, alla quale si aggiunge uno stadio ulteriore, dato dalla codifica di Huffman Codifica di Huffman La codifica di Huffman è un algoritmo di codifica entropica usato per compressioni lossless. Utilizza una tabella di codici a lunghezza variabile per codificare dei simboli, dove la tabella è stata generata da uno studio delle probabilità associate alla trasmissione di ogni singolo simbolo [15]. Per rappresentare ogni simbolo viene usato un metodo specifico, che introduce l utilizzo di codici prefissi. Bisogna in questo caso fare l assunzione che ogni stringa di bit rappresentante un simbolo non possa mai essere un prefisso di un altro simbolo.questa politica consente di esprimere i simboli più comuni usando stringhe di bit più corte di quelle usate per i simboli meno comuni. Huffman risulta essere il metodo di compressione più efficiente di questo tipo, nessun altra associazione da simboli a stringhe uniche di bit produce un output medio più piccolo quando le statistiche usate per creare il codice corrispondono con le frequenze reali di comparsa dei simboli. Per un set di simbolicon una distribuzione di probabilità uniforme e un numero di simboli potenza di due, la codifica di huffman corrisponde alla codifica binaria di blocchi, quale ASCII. 108

109 Conclusioni e sviluppi futuri Nonostante l algoritmo originale sia ottimale per una codifica simbolo dopo simbolo (considerando un flusso di dati scorrelati tra loro) con una distribuzione di probabilità conosciuta, non è ottimale quando cade il vincolo della codifica per simbolo, o le funzioni di distribuzione di probabilità non sono note o non sono indipendenti. In questo caso altri metodi quali la codifica aritmetica e LZW ottengono capacità di compressione migliori. Infatti, possono unire un numero arbitrario di simboli per codifiche più efficienti, inoltre possono adattarsi alle statistiche della sorgente in real-time. Questa caratteristica risulta particolarmente utile quando non si conosce a priori la statistica dei simboli emessi dalla sorgente, o quest ultima varia con il tempo. Nonostante abbia queste limitazioni, la codifica di Huffman può essere utilizzata adattivamente a probabilità sconosciute, tempo-varianti o legate al contesto. Nel caso di variabili casuali indipendenti e identicamente distribuite, combinare simboli insieme riduce l inefficienza, avvicinandosi all ottimalità all aumentare dei simboli uniti Descrizione dell algoritmo di Huffman L algoritmo di Huffman si prefigge lo scopo di, dato un set di simboli e i loro pesi (proporzionali alla probabilità del simbolo), trovare un set di codici con la minor lunghezza in bit (Un albero con percorsi ottimi dalla radice ). Abbiamo quindi in ingresso: L alfabeto costituito da n simboli Un insieme dei pesi di ogni simbolo, proporzionali alle probabilità degli specifici simboli: In uscita l algoritmo ci fornisce: Un inseme di codici che rappresentano tutti i possibili simboli, dove c i è il codice di. 109

110 Conclusioni e sviluppi futuri Possiamo quindi affermare che del codice C, che deve sottostare alla condizione è il percorso pesato per ogni codice. Ogni codice tale relazione è biunivoca, quindi è decodificabile univocamente. La somma di tutte le probabilità di tutti i simboli rimane sempre minore o uguale a uno. Se tale somma è proprio uguale a uno si dice che il codice è completo. Se così non è, si può sempre ottenere un codice equivalente aggiungendo dei simboli con probabilità nulla. In questo modo si ottiene un codice completo mantenendo la sua biunivocità. Il contenuto d informazione h espresso in bit all interno di ogni simbolo a i con probabilità diversa da zero risulta essere, secondo Shannon: (6.1) Si può definire l entropia H come la somma pesata del contenuto informativo di tutti i simboli a i con probabilità W i non nulla: (6.2) Infatti, i simboli a probabilità nulla non portano alcun contributo all entropia, dato che, quando W=0 si ha che. Questa risulta essere una forma indefinita. Applicando la regola di De L Hopital si ottiene: Come volevasi dimostrare, è inutile tenere in considerazione simboli a probabilità nulla. Come diretta conseguenza del teorema di Shannon sulla codifica di sorgente, l entropia è la misura della più piccola lunghezza della parola di codice che è teoricamente possibile per un certo alfabeto con un set di pesi associati. 110

111 Conclusioni e sviluppi futuri Se, ad esempio, abbiamo che l entropia calcolata risulta di 2,205 bit per simbolo, qualsiasi codifica non potrà mai restituire un risultato minore di tale valore. La codifica di Huffman riesce in molti casi ad avvicinarsi a tale limite, dimostrando di essere una delle migliori. Ovviamente una codifica di Huffman non deve essere unica, ma ha sempre la proprietà di minimizzare L(C) Funzionamento di base dell algoritmo di Huffman La base della codifica di Huffman è la creazione di un albero binario di nodi. Quest ultimi possono essere memorizzati all interno di vettori, la cui dimensione è legata al numero di simboli, n. Un nodo può essere sia una foglia oppure un nodo interno. All inizio del processo di codifica tutti i nodi sono foglie che contengono il simbolo stesso, il suo peso, e un collegamento opzionale verso un nodo genitore, che rende semplice la lettura del codice partendo dal nodo foglia [16]. I nodi interni contengono il peso del simbolo, collegamenti a due nodi figli e un collegamento opzionale a un nodo genitore. Per convenzione, il nodo figlio di sinistra viene rappresentato dal bit 0, mentre quello destro corrisponde a 1. Un albero completo può avere fino a n nodi foglia e n-1 nodi interni. Un albero di Huffman che non contenga simboli non usati produce codici a lunghezza ottimale. Il processo di codifica inizia con i nodi foglia che contengono le probabilità dei simboli che rappresentano. A quel punto viene creato un nuovo nodo i cui figli sono i due nodi con la probabilità più bassa, e la sua probabilità viene data dalla somma delle probabilità dei nodi figli. Considerando ora i due nodi foglia fusi all interno del nuovo nodo, che viene considerato al loro posto, si ripete quest operazione fino a quando non rimane un singolo nodo, e l albero di Huffman è completamente formato. Il più semplice algoritmo di costruzione di alberi di Huffman utilizza una coda a priorità, dove il nodo con la probabilità più bassa assume la priorità più elevata. I passi di questo algoritmo sono: Creazione di un nodo foglia per ogni simbolo, che viene inserito nella coda a priorità Fin tanto che c è almeno più di un nodo all interno della coda: 111

112 Conclusioni e sviluppi futuri o Rimozione dalla coda dei due nodi con la priorità più elevata (probabilità più bassa). o Creazione di un nuovo nodo interno che ha i due nodi rimossi come figli, e una probabilità uguale alla somma delle probabilità dei due nodi. o Aggiunta del nuovo nodo alla coda. Il nodo che rimane per ultimo è il nodo radice che completa l albero. Dato che una struttura dati di tipo coda a priorità richiede un tempo computazionale dell ordine di O(log n), e un albero con n foglie ha 2n-1 nodi, quest algoritmo opera in un tempo di O(n log n). Se i simboli vengono ordinati per probabilità, esiste un metodo che utilizza due code per creare un albero di Huffman in tempo lineare, ossia in O(n). La prima coda contiene i pesi iniziali, insieme ai puntatori alle foglie associate, mentre i pesi combinati insieme a puntatori all albero vengono conservati nella seconda coda. In questo modo viene assicurato che il peso minore sia mantenuto sempre all inizio di una delle due code. L algoritmo procede in questo modo: All inizio si parte con un numero di nodi foglia uguali al numero di simboli. Tutti i nodi foglia vengono inseriti nella prima coda in ordine crescente di probabilità così che in cima alla coda siano presenti gli elementi più probabili. Mentre c è ancora più di un nodo nelle code: o Si rimuovono i due nodi con il peso più basso, esaminando gli elementi in cima ad entrambe le code. o Si crea un nuovo nodo interno, con i nodi appena rimossi come figli e la somma delle loro probabilità come nuova probabilità. o Si inserisce il nuovo nodo al termine della seconda coda. Il nodo rimanente è la radice dell albero, che è ora completo. 112

113 Conclusioni e sviluppi futuri Figura 6.1- Esempio di costruzione di un albero binario data una sorgente che produce quattro simboli con relative probabilità. Invece di impiegare 2 bit per simbolo, grazie alla codifica di Huffman, ogni simbolo viene rappresentato con 1,85 bit. Quando è possibile, si dovrebbe cercare di ridurre la varianza della lunghezza delle parole di codice. Infatti, lo sbilanciamento dell albero produce codici di lunghezza elevata, che potrebbero costringere, ad esempio, a ridimensionare le dimensioni di un buffer di ricezione che deve avere a che fare con dati codificati secondo quell albero. Per minimizzare la varianza si possono rompere i legami tra le code, scegliendo il nodo nella prima coda. Questa modifica mantiene l ottimalità della codifica Huffman, minimizzando nello stesso tempo la varianza e la lunghezza massima della parola di codice Proprietà dell algoritmo di Huffman Le probabilità utilizzate possono essere generiche per l applicazione specifica, basate sull esperienza maturata con la stessa, oppure le frequenze effettive trovate all interno dei dati che vengono compressi. Questa seconda possibilità comporta che venga stilata una tabella delle frequenze da salvare insieme ai dati compressi e la necessità di una implementazione che la memorizzi in maniera efficace. La codifica di Huffman si dimostra ottimale quando la probabilità di ogni simbolo è una potenza negativa di due. I codici tendono quindi ad avere una certa inefficienza su alfabeti piccoli, dove spesso la probabilità cade in mezzo ai punti ottimali. L incremento della dimensione dell alfabeto fondendo più simboli in parole di lunghezza fissata prima di effettuare la codifica migliora le prestazioni, soprattutto se i simboli accostati sono altamente correlati. 113

10 argomenti a favore dell over IP

10 argomenti a favore dell over IP Quello che i fornitori di telecamere analogiche non dicono 10 argomenti a favore dell over IP Le telecamere di rete non sono certo una novità, infatti il primo modello è stato lanciato nel 1996. Nei primi

Dettagli

INNOVATION CASE. Sistema di controllo del traffico in una galleria autostradale

INNOVATION CASE. Sistema di controllo del traffico in una galleria autostradale Sistema di controllo del traffico in una galleria autostradale INNOVARE: COSA? L IDEA Ovunque nel mondo si assiste ad un aumento della densità del traffico veicolare. Il fenomeno porta con sé un enorme

Dettagli

La Videosorveglianza e la Salvaguardia degli ambienti

La Videosorveglianza e la Salvaguardia degli ambienti La Videosorveglianza e la Salvaguardia degli ambienti 2015 Un sistema di sicurezza evoluto 01 LA VIDEOSORVEGLIANZA 02 A COSA SERVE? 03 PERCHE GLOBAL SISTEMI La videosorveglianza è un evoluto sistema di

Dettagli

RETI DI SENSORI WIRELESS

RETI DI SENSORI WIRELESS 1 RETI DI SENSORI WIRELESS 1 Introduzione In questi ultimi tempi le reti di sensori wireless stanno sempre più incrementando la loro popolarità per il grandissimo numero di applicazioni possibili nelle

Dettagli

Informatica Generale Andrea Corradini. 10 - Le reti di calcolatori e Internet

Informatica Generale Andrea Corradini. 10 - Le reti di calcolatori e Internet Informatica Generale Andrea Corradini 10 - Le reti di calcolatori e Internet Cos è una rete di calcolatori? Rete : È un insieme di calcolatori e dispositivi collegati fra loro in modo tale da permettere

Dettagli

SISTEMA DI MONITORAGGIO AMBIENTALE TRAMITE WSN

SISTEMA DI MONITORAGGIO AMBIENTALE TRAMITE WSN Università degli Studi di Pavia Facoltà di Ingegneria Corso di Laurea Specialistica in Ingegneria Informatica SISTEMA DI MONITORAGGIO AMBIENTALE TRAMITE WSN Relatore: Prof. Paolo Ettore Gamba Correlatore:

Dettagli

A cura di: Dott. Ing. Elisabetta Visciotti. e.visciotti@gmail.com

A cura di: Dott. Ing. Elisabetta Visciotti. e.visciotti@gmail.com A cura di: Dott. Ing. Elisabetta Visciotti e.visciotti@gmail.com Il termine generico rete (network) definisce un insieme di entità (oggetti, persone, ecc.) interconnesse le une alle altre. Una rete permette

Dettagli

Reti di calcolatori: Introduzione

Reti di calcolatori: Introduzione Reti di calcolatori: Introduzione Vittorio Maniezzo Università di Bologna Reti di computer e Internet Rete: sistema di collegamento di più computer mediante una singola tecnologia di trasmissione Internet:

Dettagli

INTRODUZIONE A RETI E PROTOCOLLI

INTRODUZIONE A RETI E PROTOCOLLI PARTE 1 INTRODUZIONE A RETI E PROTOCOLLI Parte 1 Modulo 1: Introduzione alle reti Perché le reti tra computer? Collegamenti remoti a mainframe (< anni 70) Informatica distribuita vs informatica monolitica

Dettagli

Reti di computer. Agostino Lorenzi - Reti di computer - 2008

Reti di computer. Agostino Lorenzi - Reti di computer - 2008 Reti di computer Telematica : termine che evidenzia l integrazione tra tecnologie informatiche e tecnologie delle comunicazioni. Rete (network) : insieme di sistemi per l elaborazione delle informazioni

Dettagli

Promelit DiMavision. Video OverIP. DiMavision. L intelligenza al servizio della videosorveglianza.

Promelit DiMavision. Video OverIP. DiMavision. L intelligenza al servizio della videosorveglianza. Promelit DiMavision Video OverIP DiMavision. L intelligenza al servizio della videosorveglianza. DiMavision. Il sofware per gestire il sistema di videosorveglianza in modo facile, efficace, distribuito

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 6 COS E UNA RETE Una rete informatica è un insieme di PC e di altri dispositivi che sono collegati tra loro tramite cavi oppure

Dettagli

Esame di INFORMATICA COS E UNA RETE. Lezione 6 COMPONENTI DI UNA RETE VANTAGGI DI UNA RETE

Esame di INFORMATICA COS E UNA RETE. Lezione 6 COMPONENTI DI UNA RETE VANTAGGI DI UNA RETE Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 COS E UNA RETE Una rete informatica è un insieme di PC e di altri dispositivi che sono collegati tra loro tramite

Dettagli

La t ecnologia WSN La piattaforma NI WSN Ambiente di programmazione Real Time (NI LabVIEW):

La t ecnologia WSN La piattaforma NI WSN Ambiente di programmazione Real Time (NI LabVIEW): La programmazione grafica di Reti di Sensori Wireless (Wireless Sensor Networks - WSN) in ambito industriale Massimiliano Banfi - Systems Engineers Manager - National Instruments Italy La t ecnologia WSN

Dettagli

Finalità delle Reti di calcolatori. Le Reti Informatiche. Una definizione di Rete di calcolatori. Schema di una Rete

Finalità delle Reti di calcolatori. Le Reti Informatiche. Una definizione di Rete di calcolatori. Schema di una Rete Finalità delle Reti di calcolatori Le Reti Informatiche Un calcolatore isolato, anche se multiutente ha a disposizione solo le risorse locali potrà elaborare unicamente i dati dei propri utenti 2 / 44

Dettagli

Parte II: Reti di calcolatori Lezione 23

Parte II: Reti di calcolatori Lezione 23 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Parte II: Reti di calcolatori Lezione 23 Martedì 26-05-2015 1 Confronto tra switch

Dettagli

Contenuti. Corso di Laboratorio di Multimedialità. Programma del corso. Programma del corso

Contenuti. Corso di Laboratorio di Multimedialità. Programma del corso. Programma del corso Corso di Laboratorio di Multimedialità Anno Accademico 2002-2003 Docente: Claudio Sacchi PARTE 1: INTRODUZIONE AL CORSO E RIEPILOGO DEI CONCETTI DI BASE Contenuti Programma del corso ed articolazione delle

Dettagli

Videosorveglianza digitale di alta qualità in ogni angolo

Videosorveglianza digitale di alta qualità in ogni angolo Videosorveglianza digitale di alta qualità in ogni angolo Dopo l 11 settembre l esigenza relativa a progetti di videosorveglianza digitale in qualunque tipo di organizzazione e installazione è aumentata

Dettagli

Blu Sky. Security System

Blu Sky. Security System Blu Sky Security System blu sky Chi siamo Blu Sky sviluppa e vende sistemi esclusivi per la visione e per i processi di immagine, realizza inoltre strumenti per il real time video e lo streaming. Elemento

Dettagli

Applicazioni delle Wireless Sensor

Applicazioni delle Wireless Sensor UNIVERSITÀ DEGLI STUDI DI GENOVA FACOLTÀ DI INGEGNERIA Applicazioni delle Wireless Sensor Network nel campo bio-medicale Candidato: Luca Maranzano Relatore: Chiar. mo Prof. Ing. Sandro Zappatore 9 marzo

Dettagli

Elementi di Reti per Telecomunicazioni

Elementi di Reti per Telecomunicazioni Elementi di Reti per Telecomunicazioni (Parte II) Topologie ed Interfacciamento di Reti Corso di Telecomunicazioni Anno Accademico 2004/2005 Contenuti Introduzione alle reti di TLC. Topologie di Reti per

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 2. Introduzione al controllo logico Luigi Piroddi piroddi@elet.polimi.it Modello CIM Un moderno sistema di produzione è conforme al modello CIM (Computer Integrated

Dettagli

Proteggete il personale, i clienti e i valori della banca dai bancomat alle camere blindate

Proteggete il personale, i clienti e i valori della banca dai bancomat alle camere blindate Proteggete il personale, i clienti e i valori della banca dai bancomat alle camere blindate Videosorveglianza affidabile grazie a soluzioni con tecnologia video di rete all avanguardia Sistemi affidabili

Dettagli

IL TEST JIG PER IL SOTTOSISTEMA COMMS DEL DIMOSTRATORE TECNOLOGICO SATELLITARE

IL TEST JIG PER IL SOTTOSISTEMA COMMS DEL DIMOSTRATORE TECNOLOGICO SATELLITARE IL TEST JIG PER IL SOTTOSISTEMA COMMS DEL DIMOSTRATORE TECNOLOGICO SATELLITARE INDICE 1. Introduzione...3 2. Lista delle abbreviazioni...3 3. Requisiti e architettura del test jig COMMS...4 3.1 I compiti

Dettagli

L IMPATTO DELLE ANTENNE SWITCHED BEAM IN RETI WIRELESS DI SENSORI

L IMPATTO DELLE ANTENNE SWITCHED BEAM IN RETI WIRELESS DI SENSORI Università degli studi di Trieste Facoltà di Ingegneria Prova Finale in Trasmissione Numerica L IMPATTO DELLE ANTENNE SWITCHED BEAM IN RETI WIRELESS DI SENSORI Relatore: Chiar.mo Prof. Fulvio Babich Laureando:

Dettagli

MobiMESH. Wireless Mesh a banda larga. Ing. Stefano Napoli Product Manager

MobiMESH. Wireless Mesh a banda larga. Ing. Stefano Napoli Product Manager MobiMESH Wireless Mesh a banda larga Ing. Stefano Napoli Product Manager Un paradigma di networking Architettura di rete MobiMESH Rete Cablata: integrata nel routing Backbone: infrastruttura wireless multihop

Dettagli

Reti Locali. Lezione tenuta presso l Istituto I.I.S.S. Egidio Lanoce Maglie, 26 Ottobre 2011 Prof Antonio Cazzato

Reti Locali. Lezione tenuta presso l Istituto I.I.S.S. Egidio Lanoce Maglie, 26 Ottobre 2011 Prof Antonio Cazzato Reti Locali Lezione tenuta presso l Istituto I.I.S.S. Egidio Lanoce Maglie, 26 Ottobre 2011 Prof Antonio Cazzato Reti di Calcolatori una rete di calcolatori è costituita da due o più calcolatori autonomi

Dettagli

WAVECOMM S.r.l. Partner tecnologico per l'innovazione. Profilo. Mission

WAVECOMM S.r.l. Partner tecnologico per l'innovazione. Profilo. Mission WAVECOMM S.r.l. Partner tecnologico per l'innovazione Profilo Wavecomm S.r.l. è una azienda specializzata nella progettazione e realizzazione di sistemi elettronici avanzati, focalizzata nei settori dell'elettronica

Dettagli

Tecnologie Radio Cellulari. Reti Cellulari. Forma e Dimensione delle Celle. Organizzazione di una Rete Cellulare

Tecnologie Radio Cellulari. Reti Cellulari. Forma e Dimensione delle Celle. Organizzazione di una Rete Cellulare I semestre 04/05 Tecnologie Radio Cellulari Reti Cellulari Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

SMS Supervisor Management System

SMS Supervisor Management System www.brccompressors.it www.brcfuelmaker.it SMS Supervisor Management System SMS: Sistema di Supervisione e Controllo degli impianti di erogazione metano. Totalmente ingegnerizzato da Dresser Wayne, il sistema

Dettagli

Tecniche di Comunicazione Multimediale

Tecniche di Comunicazione Multimediale Tecniche di Comunicazione Multimediale Standard di Comunicazione Multimediale Le applicazioni multimediali richiedono l uso congiunto di diversi tipi di media che devono essere integrati per la rappresentazione.

Dettagli

Parte II: Reti di calcolatori Lezione 23

Parte II: Reti di calcolatori Lezione 23 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II: Reti di calcolatori Lezione 23 Giovedì 22-05-2014 1 Reti wireless Una

Dettagli

La classificazione delle reti

La classificazione delle reti La classificazione delle reti Introduzione Con il termine rete si intende un sistema che permette la condivisione di informazioni e risorse (sia hardware che software) tra diversi calcolatori. Il sistema

Dettagli

Un linguaggio comune per la domotica

Un linguaggio comune per la domotica Un linguaggio comune per la domotica La trasmissione e la corretta comprensione dʼinformazioni e comandi è indispensabile per il funzionamento ottimale degli impianti domotici Sono ormai di larga diffusione

Dettagli

MobiMESH. Presentazione tecnico-commerciale. Ing. Stefano Napoli Product Manager

MobiMESH. Presentazione tecnico-commerciale. Ing. Stefano Napoli Product Manager MobiMESH Presentazione tecnico-commerciale Ing. Stefano Napoli Product Manager Un paradigma di networking Architettura di rete MobiMESH Rete Cablata: integrata nel routing Backbone: infrastruttura wireless

Dettagli

Svantaggi della Commutazione di Circuito. Commutazione di Pacchetto. Struttura di un Pacchetto

Svantaggi della Commutazione di Circuito. Commutazione di Pacchetto. Struttura di un Pacchetto Università degli studi di Salerno Laurea in Informatica I semestre / Commutazione di Pacchetto Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Svantaggi della Commutazione

Dettagli

Reti di Calcolatori. Lezione 2

Reti di Calcolatori. Lezione 2 Reti di Calcolatori Lezione 2 Una definizione di Rete Una moderna rete di calcolatori può essere definita come: UN INSIEME INTERCONNESSO DI CALCOLATORI AUTONOMI Tipi di Rete Le reti vengono classificate

Dettagli

Reti di calcolatori. Riferimenti: Curtin cap. 9 Console cap. 6 (vecchia ed.) o cap. 8 (nuova ed.)

Reti di calcolatori. Riferimenti: Curtin cap. 9 Console cap. 6 (vecchia ed.) o cap. 8 (nuova ed.) Reti di calcolatori Riferimenti: Curtin cap. 9 Console cap. 6 (vecchia ed.) o cap. 8 (nuova ed.) Reti di calcolatori Inizialmente, con l avvento dei PC, il mondo dell elaborazione dati era diviso in due

Dettagli

Il sistema operativo TinyOS

Il sistema operativo TinyOS tesi di laurea Anno Accademico 2005/2006 relatore Ch.mo prof. Domenico Cotroneo candidato Giovanni Chierchia Matr. 534 / 804 ::. Obiettivi del lavoro di tesi Studio del sistema operativo TinyOS Studio

Dettagli

Esame di INFORMATICA Lezione 6

Esame di INFORMATICA Lezione 6 Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 6 COS E UNA RETE Una rete informatica è un insieme di PC e di altri dispositivi che sono collegati tra loro tramite cavi oppure

Dettagli

ACCESSNET -T IP NMS. Network Management System. www.hytera.de

ACCESSNET -T IP NMS. Network Management System. www.hytera.de ACCESSNET -T IP NMS Network System Con il sistema di gestione della rete (NMS) è possibile controllare e gestire l infrastruttura e diversi servizi di una rete ACCESSNET -T IP. NMS è un sistema distribuito

Dettagli

Soluzioni intelligenti per l integrazione di servizi tecnici in un ospedale 2011-1. Ronny Scherf

Soluzioni intelligenti per l integrazione di servizi tecnici in un ospedale 2011-1. Ronny Scherf 2011-1 Ronny Scherf Product Marketing Manager CentraLine c/o Honeywell GmbH Soluzioni intelligenti per In Europa gli edifici rappresentano il 40% del consumo energetico complessivo. Gli ospedali, in particolare,

Dettagli

CLASSIFICAZIONE DELLE RETI

CLASSIFICAZIONE DELLE RETI CLASSIFICAZIONE DELLE RETI A seconda dei ruoli dei computer le reti si classificano in: Reti Client Server in cui sono presenti computer con ruoli diversi, alcuni funzionano da client e uno o più da server

Dettagli

Lezione E1. Sistemi embedded e real-time

Lezione E1. Sistemi embedded e real-time Lezione E1 Sistemi embedded e real-time 3 ottobre 2012 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E1.1 Di cosa parliamo in questa lezione?

Dettagli

www.wireless-led.com Wireless LED Control for Indoor & Outdoor Lighting

www.wireless-led.com Wireless LED Control for Indoor & Outdoor Lighting www.wireless-led.com Wireless LED Control for Indoor & Outdoor Lighting Indoor Smart Building INDOOR LIGHTING Gli edifici del futuro saranno in grado di acquisire dai propri sistemi informazioni utili

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Parte II Lezione 1

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Parte II Lezione 1 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Parte II Lezione 1 Martedì 4-03-2014 1 TESTO DI RIFERIMENTO RETI DI CALCOLATORI

Dettagli

Fondamenti di routing (pag.34)

Fondamenti di routing (pag.34) Fondamenti di routing (pag.34) UdA2L1 Il livello di rete (Network layer) è il livello 3 della pila ISO/OSI. Questo livello riceve datagrammi (pacchetti) dal livello di trasporto e forma pacchetti che vengono

Dettagli

Università degli studi Roma Tre. Sensor Networks: Evolution, Opportunities and Challanges. Andrea Gasparri

Università degli studi Roma Tre. Sensor Networks: Evolution, Opportunities and Challanges. Andrea Gasparri Università degli studi Roma Tre : Evolution, Opportunities and Challanges Introduzione 1 Una rete di sensori è una collezione di nodi che collaborano per la raccolta di dati e per il loro processamento

Dettagli

Il Digital Business Ecosystem per migliorare la qualità della vita in una Smart City Giuseppe VISAGGIO giuseppe.visaggio@uniba.

Il Digital Business Ecosystem per migliorare la qualità della vita in una Smart City Giuseppe VISAGGIO giuseppe.visaggio@uniba. Il Digital Business Ecosystem per migliorare la qualità della vita in una Smart City Giuseppe VISAGGIO giuseppe.visaggio@uniba.it Dipartimento di Informatica Università di Bari Centro di Competenza ICT:

Dettagli

Reti di computer- Internet- Web. Concetti principali sulle Reti Internet Il Web

Reti di computer- Internet- Web. Concetti principali sulle Reti Internet Il Web Reti di computer- Internet- Web Concetti principali sulle Reti Internet Il Web Condivisione di risorse e comunicazione con gli altri utenti n n n Anni 70: calcolatori di grandi dimensioni, modello timesharing,

Dettagli

Sistemi Di Elaborazione Dell informazione

Sistemi Di Elaborazione Dell informazione Sistemi Di Elaborazione Dell informazione Dott. Antonio Calanducci Lezione III: Reti di calcolatori Corso di Laurea in Scienze della Comunicazione Anno accademico 2009/2010 Reti di calcolatori Una rete

Dettagli

Reti, Protocolli e Indirizzi. DIMENSIONE della RETE. Arpanet e Internetworking. Topologia a Stella

Reti, Protocolli e Indirizzi. DIMENSIONE della RETE. Arpanet e Internetworking. Topologia a Stella Premessa breve Reti, Protocolli e Indirizzi Lo sviluppo delle telecomunicazioni ha avuto due fattori determinanti : L esistenza di una rete esistente (quella telefonica) La disponibilita di HW e SW adeguati

Dettagli

VECTIS HX NVS quando la precisione conta davvero

VECTIS HX NVS quando la precisione conta davvero VECTIS HX NVS quando la precisione conta davvero Software di videosorveglianza di rete ad alte prestazioni con funzionalità Full HD. www.ssp-cctv.com Answers for infrastructure. Un nuovo software video

Dettagli

Sistema di diffusione Audio/Video su streaming.

Sistema di diffusione Audio/Video su streaming. 1 Sistema di diffusione Audio/Video su streaming. IL Progetto. Il progetto illustrato nel seguito prevede mediante la tecnologia di streaming la diffusione di audio/video su misura del cliente al 100%,

Dettagli

Presentazione del sistema Adcon Telemetry

Presentazione del sistema Adcon Telemetry Presentazione del sistema Adcon Telemetry 1. Premessa Lo scopo del monitoraggio è quello di automatizzare i processi, nei vari campi di applicazione, mediante sistemi di controllo, di trasmissione, raccolta

Dettagli

5. Internetworking L2/L3

5. Internetworking L2/L3 Università di Genova Facoltà di Ingegneria Reti di Telecomunicazioni e Telemedicina 1 5. Internetworking L2/L3 Prof. Raffaele Bolla dist! Sia l esistenza (almeno nella fase iniziale) di tecnologie diverse,

Dettagli

I principali vantaggi economici di un sistema Mobotix

I principali vantaggi economici di un sistema Mobotix I principali vantaggi economici di un sistema Mobotix Meno videocamere grazie alla risoluzione più elevata I sensori a 1536 linee e ad alta definizione offrono una panoramica migliore e consentono di monitorare

Dettagli

Le reti di calcolatori

Le reti di calcolatori Le reti di calcolatori 1 La storia Computer grandi e costosi Gli utenti potevano accerdervi tramite telescriventi per i telex o i telegrammi usando le normali linee telefoniche Successivamente le macchine

Dettagli

Linee di Prodotto. info@sysdev.eu info@pec.sysdev.eu - www.sysdev.eu

Linee di Prodotto. info@sysdev.eu info@pec.sysdev.eu - www.sysdev.eu Linee di Prodotto SYSDEV Srl Unipersonale Sede legale: v. Lamarmora 16-10128 - Torino Italia Sede operativa: c. Castelfidardo 30/A 10129 Torino Italia tel. 011 19838520 info@sysdev.eu info@pec.sysdev.eu

Dettagli

Sistemi di sorveglianza IP Axis. Possibilità infinite per la videosorveglianza.

Sistemi di sorveglianza IP Axis. Possibilità infinite per la videosorveglianza. Sistemi di sorveglianza IP Axis. Possibilità infinite per la videosorveglianza. Il settore della videosorveglianza è costantemente in crescita, grazie a una maggiore attenzione alla sicurezza da parte

Dettagli

Table of Contents. Insegnamento: Sistemi Distribuiti - 6 cfu LM Ing. Informatica Docente: Prof. Marcello Castellano

Table of Contents. Insegnamento: Sistemi Distribuiti - 6 cfu LM Ing. Informatica Docente: Prof. Marcello Castellano Insegnamento: Sistemi Distribuiti - 6 cfu LM Ing. Informatica Docente: Prof. Marcello Castellano Table of Contents Definizione di Sistema Distribuito - 4 Obiettivi Principali di un S.D. - 7 Tipi di Sistemi

Dettagli

Reti di calcolatori. Condivisione di risorse e comunicazione con gli altri utenti

Reti di calcolatori. Condivisione di risorse e comunicazione con gli altri utenti Reti di calcolatori Condivisione di risorse e comunicazione con gli altri utenti Reti di calcolatori Anni 70: calcolatori di grandi dimensioni, modello time-sharing, centri di calcolo Anni 80: reti di

Dettagli

UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA. Estratto tesi

UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA. Estratto tesi UNIVERSITÀ DI PISA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA ELETTRONICA Estratto tesi Realizzazione di un dispositivo per l analisi e la caratterizzazione dei moduli fotovoltaici

Dettagli

MONITORAGGI STRUTTURALI WIRELESS A LETTURA REMOTA

MONITORAGGI STRUTTURALI WIRELESS A LETTURA REMOTA ESSEBI Srl NUOVE FRONTIERE DEL MONITORAGGIO STRUTTURALE MONITORAGGI STRUTTURALI WIRELESS A LETTURA REMOTA Roma, 4 maggio 2011 Facoltà di Architettura via Gramsci, 53 Roma MONITORAGGIO WIRELESS I principali

Dettagli

È l ora della videosorveglianza basata su FPGA

È l ora della videosorveglianza basata su FPGA È l ora della videosorveglianza basata su FPGA Kambiz Khalilian, Strategic marketing manager Lattice Semiconductor Le preoccupazioni crescenti per la sicurezza hanno costretto i governi e le istituzioni

Dettagli

Per essere inviato il dato deve essere opportunamente codificato in modo da poter essere trasformato in SEGNALE, elettrico oppure onda luminosa.

Per essere inviato il dato deve essere opportunamente codificato in modo da poter essere trasformato in SEGNALE, elettrico oppure onda luminosa. La trasmissione dell informazione N.R2 La comunicazione tra due calcolatori si realizza tramite lo scambio di dati su un canale di comunicazione, esiste quindi un TRASMETTITORE che invia dei dati e un

Dettagli

Sensori e trasduttori. Dispense del corso ELETTRONICA L Luca De Marchi

Sensori e trasduttori. Dispense del corso ELETTRONICA L Luca De Marchi Sensori e trasduttori Dispense del corso ELETTRONICA L Luca De Marchi Gli Obiettivi Struttura generale di sistemi di controllo e misura Sensori, trasduttori, attuatori Prima classificazione dei sistemi-sensori

Dettagli

La rete ci cambia la vita. Le persone sono interconnesse. Nessun luogo è remoto. Reti di computer ed Internet

La rete ci cambia la vita. Le persone sono interconnesse. Nessun luogo è remoto. Reti di computer ed Internet La rete ci cambia la vita Lo sviluppo delle comunicazioni in rete ha prodotto profondi cambiamenti: Reti di computer ed Internet nessun luogo è remoto le persone sono interconnesse le relazioni sociali

Dettagli

Reti di computer ed Internet

Reti di computer ed Internet Reti di computer ed Internet La rete ci cambia la vita Lo sviluppo delle comunicazioni in rete ha prodotto profondi cambiamenti: nessun luogo è remoto le persone sono interconnesse le relazioni sociali

Dettagli

Realizzare un sensore di visione per applicazioni semplici e complesse. Ing. Marco Mina, Ing. Cor Maas ARS s.r.l. / LMI Technologies

Realizzare un sensore di visione per applicazioni semplici e complesse. Ing. Marco Mina, Ing. Cor Maas ARS s.r.l. / LMI Technologies Realizzare un sensore di visione per applicazioni semplici e complesse Ing. Marco Mina, Ing. Cor Maas ARS s.r.l. / LMI Technologies Applicazioni Complesse? Ispezione Di Tronchi Ispezione di Pneumatici

Dettagli

Reti di Sensori Wireless (WSN) per il telecontrollo nelle energie rinnovabili

Reti di Sensori Wireless (WSN) per il telecontrollo nelle energie rinnovabili Reti di Sensori Wireless (WSN) per il telecontrollo nelle energie rinnovabili Matteo Bambini Technical Marketing Manager Forum Telecontrollo Reti Acqua Gas ed Elettriche Roma 14-15 ottobre 2009 Agenda

Dettagli

Table of Contents. Definizione di Sistema Distribuito 15/03/2013

Table of Contents. Definizione di Sistema Distribuito 15/03/2013 Insegnamento: Sistemi Distribuiti - 6 cfu LM Ing. Informatica Docente: Prof. Marcello Castellano Table of Contents Definizione di Sistema Distribuito - 4-7 - 13 Definizioni e Principali Caratteristiche

Dettagli

Premessa. Presentazione

Premessa. Presentazione Premessa Nexera nasce come società del settore ICT, con una forte focalizzazione sulla ricerca tecnologica, e, sin dall inizio della sua attività, ha concentrato la propria attenzione al settore della

Dettagli

Reti di computer. Tecnologie ed applicazioni

Reti di computer. Tecnologie ed applicazioni Reti di computer Tecnologie ed applicazioni Da I.T a I.C.T Con I.T (Information Tecnology) si intende il trattamento delle informazioni attraverso il computer e le nuove apparecchiature tecnologiche ad

Dettagli

Reti di calcolatori. Permettono la condivisione di risorse (hardware e software) e la comunicazione con gli altri utenti. Reti di calcolatori

Reti di calcolatori. Permettono la condivisione di risorse (hardware e software) e la comunicazione con gli altri utenti. Reti di calcolatori Reti di calcolatori Permettono la condivisione di risorse (hardware e software) e la comunicazione con gli altri utenti Reti di calcolatori Anni 70: calcolatori di grandi dimensioni, modello time-sharing,

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 Livelli di rete e architettura Client-Server Lez 12 architettura client-server 1 Scorsa lezione: comunicazione Gli utenti chiedono comunicazione

Dettagli

OnGuard. Gestione Integrata t della Sicurezza Aziendale

OnGuard. Gestione Integrata t della Sicurezza Aziendale OnGuard Gestione Integrata t della Sicurezza Aziendale LA PROPOSTA DI SICUREZZA 3S Team Access Control System Intrusion System Tecnologie Biometriche e Tradizionali Gestione Beni Aziendali Sensoristica

Dettagli

Sistema di rilevamento integrato a lungo raggio Rilevamento a fibre ottiche e rete di comunicazione integrati

Sistema di rilevamento integrato a lungo raggio Rilevamento a fibre ottiche e rete di comunicazione integrati Sistema di rilevamento integrato a lungo raggio Rilevamento a fibre ottiche e rete di comunicazione integrati Rilevamento interrato, su recinzione, su muri e su tubazioni Distanza fino a 50 km e punto

Dettagli

Reti di elaboratori. Reti di elaboratori. Reti di elaboratori INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Reti di elaboratori. Reti di elaboratori. Reti di elaboratori INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Reti di elaboratori Rete di calcolatori: insieme di dispositivi interconnessi Modello distribuito INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Funzioni delle reti: comunicazione condivisione di

Dettagli

Servizi Internet multimediali

Servizi Internet multimediali Servizi Internet multimediali Appunti di Sistemi A cura del prof. ing. Mario Catalano F.Castiglione 1 F. Castiglione Applicazioni Elastiche Un utente umano attende informazioni da un server; Preferibile

Dettagli

Infrastrutture di supporto degli insediamenti produttivi dell area consortile ASI di Taranto.

Infrastrutture di supporto degli insediamenti produttivi dell area consortile ASI di Taranto. INDICE INDICE...1 1. DESCRIZIONE DELL INTERVENTO...2 2. CARATTERISTICHE TECNICHE...6 2.1 Apparati video...6 2.2 Apparati di videoregistrazione...6 2.3 Apparati di rete wireless...7 2.4 Sistema di centralizzazione

Dettagli

Architetture dei WIS. Definizione di WIS. Benefici dei WIS. Prof.ssa E. Gentile a.a. 2011-2012

Architetture dei WIS. Definizione di WIS. Benefici dei WIS. Prof.ssa E. Gentile a.a. 2011-2012 Architetture dei WIS Prof.ssa E. Gentile a.a. 2011-2012 Definizione di WIS Un WIS può essere definito come un insieme di applicazioni in grado di reperire, cooperare e fornire informazioni utilizzando

Dettagli

Laboratorio di Informatica. Le reti telematiche e Internet

Laboratorio di Informatica. Le reti telematiche e Internet Le reti telematiche e Internet Lezione 6 1 Insieme di cavi, protocolli, apparati di rete che collegano tra loro computer distinti i cavi trasportano fisicamente le informazioni opportunamente codificate

Dettagli

CENTRO PER L ADATTAMENTO DELL AMBIENTE DOMESTICO DI PARMA

CENTRO PER L ADATTAMENTO DELL AMBIENTE DOMESTICO DI PARMA CENTRO PER L ADATTAMENTO DELL AMBIENTE DOMESTICO DI PARMA Parte 2 Ing. Guido Matrella Università di Parma Numeri sulla disabilità in Italia Si stima che in Italia vi siano circa 2.824.000 disabili Il numero

Dettagli

Le Reti di Computer. Tecnologie dell'informazione e della Comunicazione. I.S.I.S.S. Sartor CASTELFRANCO V.TO. Prof. Mattia Amadori

Le Reti di Computer. Tecnologie dell'informazione e della Comunicazione. I.S.I.S.S. Sartor CASTELFRANCO V.TO. Prof. Mattia Amadori I.S.I.S.S. Sartor CASTELFRANCO V.TO Tecnologie dell'informazione e della Comunicazione Le Reti di Computer Prof. Mattia Amadori Anno Scolastico 2015/2016 COS È UNA RETE DI COMPUTER? Rete di computer è

Dettagli

Dimensione geografica delle reti. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan

Dimensione geografica delle reti. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan. Pan-Lan-Man-Wan-Gan-WLan-WMan-WPan Dimensione geografica delle reti Le reti possono essere più o meno vaste geograficamente. PAN LAN MAN GAN CABLATE (wired) SENZA FILI (wireless) infrarossi - onde radio WLAN WMAN WPAN MISTE (wired/wireless)

Dettagli

Server e Gateway VSoIP Pro

Server e Gateway VSoIP Pro IP video Server e Gateway VSoIP Pro Software VSoIP Server 3.2 14/12/2012- G215/2/I Caratteristiche principali VSoIP 3.2 Suite è il sistema di gestione video GANZ per reti Ethernet basato su una reale topologia

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 1

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Parte II Lezione 1 Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Parte II Lezione 1 Giovedì 5-03-2015 TESTO DI RIFERIMENTO RETI DI CALCOLATORI E INTERNET un

Dettagli

Protocolli di rete. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 02 Protocolli - 2/30

Protocolli di rete. Vittorio Maniezzo Università di Bologna. Vittorio Maniezzo Università di Bologna 02 Protocolli - 2/30 Protocolli di rete Vittorio Maniezzo Università di Bologna Vittorio Maniezzo Università di Bologna 02 Protocolli - 1/30 Strati di protocolli (Protocol Layers) Le reti sono complesse Molti elementi: host

Dettagli

Modello OSI e architettura TCP/IP

Modello OSI e architettura TCP/IP Modello OSI e architettura TCP/IP Differenza tra modello e architettura - Modello: è puramente teorico, definisce relazioni e caratteristiche dei livelli ma non i protocolli effettivi - Architettura: è

Dettagli

LAN MAN WAN. Una internet è l'insieme di più reti reti distinte collegate tramite gateway/router

LAN MAN WAN. Una internet è l'insieme di più reti reti distinte collegate tramite gateway/router Rete di reti (interrete, internet) 2 Prof. Roberto De Prisco TEORIA - Lezione 8 Rete di reti e Internet Università degli studi di Salerno Laurea e Diploma in Informatica Una rete di comunicazione è un

Dettagli

Building automation con Titino ed Arduino

Building automation con Titino ed Arduino Building automation con Titino ed Arduino Il progetto Titino nasce dopo una prima analisi delle soluzioni di building automation già esistenti e consolidate sul mercato, che hanno le seguenti criticità:

Dettagli

Corso di Sistemi di Elaborazione delle informazioni

Corso di Sistemi di Elaborazione delle informazioni Corso di Sistemi di Elaborazione delle informazioni Reti di Calcolatori Claudio Marrocco Componenti delle reti Una qualunque forma di comunicazione avviene: a livello hardware tramite un mezzo fisico che

Dettagli

Corso di Micro- e nano-sistemi per l Elettronica

Corso di Micro- e nano-sistemi per l Elettronica Corso di Micro- e nano-sistemi per l Elettronica Laurea Magistrale in Elettronica Docente: Gianfranco Manes Informazioni, Appelli e Dispense http://www.midra.dinfo.unifi.it/ Email: gianfranco.manes@unifi.it

Dettagli

Articolo. Dieci buoni motivi per acquistare una telecamere di rete Ovvero, quello che il vostro fornitore di telecamere analogiche non vi dirà mai

Articolo. Dieci buoni motivi per acquistare una telecamere di rete Ovvero, quello che il vostro fornitore di telecamere analogiche non vi dirà mai Articolo Dieci buoni motivi per acquistare una telecamere di rete Ovvero, quello che il vostro fornitore di telecamere analogiche non vi dirà mai INDICE Introduzione 3 Dieci cose che il vostro fornitore

Dettagli

RETI INTERNET MULTIMEDIALI

RETI INTERNET MULTIMEDIALI RETI INTERNET MULTIMEDIALI Compressive Video Motion JPEG, Digital Video, H.261, H.263 Il documento è adattato da materiale cortesemente messo a disposizione dal Prof. Stefano Paris e dal Prof. Vittorio

Dettagli

03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu

03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu 03 L architettura del computer e la CPU (parte 2) Dott.ssa Ramona Congiu 1 Anatomia del computer Dott.ssa Ramona Congiu 2 L Unità centrale 3 Anatomia del computer 4 La scheda madre All interno del computer

Dettagli

Capitolo 6. Wireless LAN: via i fili!

Capitolo 6. Wireless LAN: via i fili! Capitolo 6 Wireless LAN: via i fili! Spesso la realizzazione di una rete impone maggiori problemi nella realizzazione fisica che in quella progettuale: il passaggio dei cavi all interno di apposite guide

Dettagli

MONITORAGGIO MICRO-CLIMA IN AMBITO MUSEALE

MONITORAGGIO MICRO-CLIMA IN AMBITO MUSEALE TELEMOBILITY FORUM 2008 5-6 Novembre 2008 Campus Bicocca Milano ITALY MONITORAGGIO MICRO-CLIMA IN AMBITO MUSEALE RELATORE: STEFANO DERME IL PUNTO DI PARTENZA Il contesto: Aree Museali Espositive e di Storage

Dettagli

LA VIDEOSORVEGLIANZA MEGAPIXEL

LA VIDEOSORVEGLIANZA MEGAPIXEL LA VIDEOSORVEGLIANZA MEGAPIXEL Documento tecnico Autore: Giuseppe Storniolo Sommario LA VIDEOSORVEGLIANZA MEGAPIXEL 3 GENERALITÀ 3 CARATTERISTICHE TECNICHE RIASSUNTIVE DEL SISTEMA 4 LE TELECAMERE 5 IL

Dettagli