Progetto 3DCloudViz NICE -DIEE WP 2 Algoritmi e sistemi per la visualizzazione remota anche su reti a banda limitata ed elevata latenza Deliverable D2 R.2.1 Stato dell'arte sugli algoritmi di compressione e metriche per la comparazione degli algoritmi di compressione R.2.2 Relazione test comparativo sulle performance reali degli algoritmi di compressione in contesti operativi generici e per categorie specifiche di contenuto (es. testo, grafica, fotografie ) R.2.3 Dataset per la validazione degli algoritmi di compressione R.2.4 Modello architetturale di un sistema di compressione adattativa, sistema di decisione per la selezione dinamica dell'algoritmo di compressione e protocollo di comunicazione tra client e server Pattern Recognition and Applications Lab DIEE - Università di Cagliari R2.1 STATO DELL'ARTE SUGLI ALGORITMI DI COMPRESSIONE E METRICHE PER LA COMPARAZIONE DEGLI ALGORITMI DI COMPRESSIONE Progetto 3D CloudWiz Progetto 3D CloudWiz | ATI NICE - DIEE Sommario Sommario..............................................................................................................................................i Obiettivo del documento......................................................................................................................1 Compressione lossless di immagini in real-time..................................................................................2 Algortimi di compressione dati........................................................................................................3 Codici di Huffman........................................................................................................................4 Codifica aritmetica.......................................................................................................................5 LZ77 – LZ78................................................................................................................................5 LZW(Lempel-Ziv-Welch)............................................................................................................6 RLE – Run Length Encoding.......................................................................................................7 Deflate..........................................................................................................................................7 Algoritmi di compressione lossless per immagini............................................................................8 Lossless JPEG e JPEG-LS............................................................................................................8 JPEG2000 – lossless...................................................................................................................10 JPEG XR.....................................................................................................................................11 Confronti tra i tre algoritmi precedentemente descritti..............................................................12 GIF..............................................................................................................................................13 PNG............................................................................................................................................13 Implementazioni multithread di diverso tipo.................................................................................15 ImageZero...................................................................................................................................15 LZ4.............................................................................................................................................17 Algoritmi di compressione proposti in letteratura..........................................................................17 A Lossless Image Compression Technique using Location Based Approach............................18 Context-based Dictionary Image Compression..........................................................................19 A new Algorithm for Lossless Compression applied to two-dimensional Static Images...........21 Fast Lossless Color Image Compressing Method Using Neural Network.................................22 Conclusioni.....................................................................................................................................24 Bibliografia.....................................................................................................................................25 Compressione di immagini generiche a contenuto eterogeneo (compound images).........................29 Metodi di segmentazione delle componenti di un'immagine.........................................................30 Approccio ad oggetti..................................................................................................................30 Approccio a layer.......................................................................................................................30 Approccio a blocchi....................................................................................................................32 i Progetto 3D CloudWiz | ATI NICE - DIEE Approccio ibrido.........................................................................................................................33 Algoritmi proposti in letteratura.....................................................................................................34 Metodi a blocchi.............................................................................................................................34 Metodi a layer.............................................................................................................................39 Metodi ibridi...............................................................................................................................41 Conclusioni.....................................................................................................................................44 Bibliografia.....................................................................................................................................44 Metriche per il confronto fra algoritmi di compressione di immagini...............................................47 Compression ratio...........................................................................................................................47 Tempo di compressione e decompressione....................................................................................47 Mean Squared Error – MSE...........................................................................................................48 Peak Signal to Noise Ratio – PSNR...............................................................................................48 Structural Similarity Index – SSIM................................................................................................49 Bibliografia.....................................................................................................................................50 ii Progetto 3D CloudWiz | ATI NICE - DIEE Obiettivo del documento Scopo di questo documento l’identificazione degli algoritmi più promettenti, tra quelli emergenti, per la compressione delle informazioni e la definizione di un insieme di metriche che consentano un efficace confronto dei diversi algoritmi sia nell'utilizzo in contesti generici che nell'applicazione a particolari categorie di informazioni e di pesare opportunamente la possibilità di modulare dei parametri di configurazione in modo da poterne modificare dinamicamente il funzionamento in funzione di contesti operativi (differenti condizioni di banda e latenza). Il documento è organizzato in diverse sezioni e coprirà i seguenti argomenti: Compressione lossless di immagini in real-time; Compressione di immagini generiche a contenuto eterogeneo (compound images); Metriche per il confronto fra algoritmi di compressione di immagini. 1 Progetto 3D CloudWiz | ATI NICE - DIEE Compressione lossless di immagini in real-time In questa sezione del documento si andrà ad analizzare lo stato dell'arte relativo alla codifica e alla decodifica delle immagini 2D nello specifico caso di algoritmi di tipo lossless, quindi senza perdita d'informazione, che possano essere utilizzati in un contesto nel quale sia necessaria la loro applicazione in real time (RT) o near real time. In letteratura vengono presentati un elevato numero di algoritmi di compressione di tipo lossy, specialmente facenti uso di DCT (Discrete Cosine Transform) o di DWT (Discrete Wavelet Transform) e/o loro combinazioni, mentre gli algoritmi di tipo lossless, presenti in numero più limitato, rimandano a tecniche di compressione più generiche ed universali per tutti i tipi di dati. All'interno di quest'insieme di algoritmi risulta ancora più complesso andare ad identificare tecniche che agiscano in real time o near real time. L'evoluzione degli studi sugli algoritmi di compressione d'immagini viene inoltre condizionata dalla presenza sul mercato di alcuni algoritmi di COdifica e DECodifica (CODEC) ormai ritenuti degli standard (ad esempio i vati PNG, JPEG ecc): essi raggiungono dei risultati tali che risulta complessa la realizzazione di metodologie che possano migliorarne le performance. In relazione alle specificità richieste, algoritmi di tipo lossless e funzionanti in real time o near real time, vengono presentate in questo documento tre categorie di algoritmi di compressione: algoritmi generici di compressione dati; algoritmi di compressione immagini considerati standard; algoritmi di compressione immagini proposti nella ricerca. Per gli algoritmi generici di compressione dati verrà presentato un riepilogo delle tecniche di compressione dati più comuni (es. codici di Huffman, LZ77, RLE ecc) con una breve descrizione dell'algoritmo che esse implementano. Per quanto riguarda gli algoritmi di compressione immagini considerati standard verranno presentate, anche con tabelle di confronto, quelle metodologie di compressione più diffuse nel mercato oggetto di studi specialmente nel settore di sviluppo di tipo industriale (es. JPEG-XR, PNG 2 Progetto 3D CloudWiz | ATI NICE - DIEE ecc). Per quanto riguarda gli altri algoritmi allo stato dell'arte proposti nella letteratura verrà presentato un resoconto delle tecniche che appaiono più interessanti dal punto di vista delle performance promesse. Algortimi di compressione dati In questo paragrafo andiamo ad analizzare le tecniche di compressione dei dati senza perdite, o lossless, che avviene attraverso l'utilizzo di codici, quindi definendo delle corrispondenze tra simboli d'ingresso e simboli d'uscita. Tali codici agiscono sui dati in ingresso, che possono essere sequenze di simboli e/o dati, in virtù di un modello statistico della sorgente che genera gli stessi simboli. Il modello al quale si fa riferimento può essere adattativo, quindi costruito e/o perfezionato contestualmente alla codifica dei simboli, oppure sussistere o essere dato a priori, quindi costruito sui dati stessi in modo globale ad esempio con una pre analisi delle statistiche dei simboli che occorre codificare. L'output di queste tecniche sarà quello di generare un bit-stream dal quale è possibile, mediante l'operazione inversa di decodifica, risalire perfettamente e senza nessuna alterazione o perdita d'informazione ai dati originali. Le principali tecniche di compressione dati presenti in letteratura risultano essere: codici di Huffman; codifica aritmetica [1]; LZ77 – LZ78; LZW(Lempel-Ziv-Welch); RLE – Run Length Encoding. Altri algoritmi di compressione dati spesso utilizzati sono: trasformata di Burrows-Wheeler (BWT) [2]; Prediction by Partial Matching (PPM) [3]; 3 Progetto 3D CloudWiz | ATI NICE - DIEE Deflate [4]. Queste compressioni lossless sono assolutamente generiche, adattabili quindi a qualunque formato dati, ma al variare della tipologia di dati in ingresso esse offrono prestazioni notevolmente differenti le une dalle altre. Combinazioni di queste tecniche, o parti di esse sono già utilizzati all'interno di comuni codec per immagini. Abbiamo ad esempio che LZW viene utilizzato per le immagini GIF, una variante di Deflate è stata implementata per PNG, mentre LZW e RLE sono utilizzate direttamente nel formato TIFF. Codici di Huffman I codici di Huffman sono tra i primi algoritmi di compressione dell'informazione. Nel 1952 David A. Huffman pubblicò un articolo [5] in cui mostrava un metodo per la costruzione di codici con criteri di minima ridondanza, questo metodo si mostra quindi particolarmente adatto alla compressione lossless dei dati in differenti contesti. Si può definire il processo di definizione dei codici come segue: 1) si crea una lista ordinata di simboli in base alle occorrenze degli stessi nel messaggio originale; 2) si ripetono i passi 2a, 2b e 2c tante volte finché all'interno della lista non rimane un unico simbolo; a) si determinano i due elementi meno frequenti all'interno della lista. Si crea un nodo “genitore” dell'albero di Huffman avente come nodi “figli” questi due elementi; b) si assegna la somma delle frequenze dei nodi “figli” al nodo “genitore” e lo si reinserisce nella lista ordinata; c) si cancellano i figli dalla lista ordinata; 3) si assegna infine una parola codice ad ogni elemento basandosi sulla sua posizione a partire dalla radice: in questo modo i simboli più frequenti saranno codificati con parole più corte e viceversa quelli più rari con parole più lunghe. 4 Progetto 3D CloudWiz | ATI NICE - DIEE Questo algoritmo di compressione è stato poi adattato e migliorato in differenti modi. I più conosciuti, qui non presentati, sono: Codifica adattativa di Huffman [6]; Algoritmo di Huffman con template; Codifica di Huffman a base n [7]; Codifica con costi per lettera diseguali [8]. Codifica aritmetica Negli anni '80 sono stati introdotti nuovi tipi di algoritmi statistici che hanno ovviato ad alcuni problemi che si presentavano con l'algoritmo di Huffman: i codici aritmetici [12]. Il codice di Huffman associa un valore intero ad ogni elemento della sorgente, il che porta ad un dispendio eccessivo in termini di memoria e proporzionale al numero di simboli all'interno della sorgente. I codici aritmetici codificano invece simboli, o gruppi di simboli, con numeri decimali, e permettono quindi di adoperare per la codifica dei numeri frazionari di bits. Se esaminiamo un solo simbolo, ovviamente, i risultati ottenuti con le due diverse tecniche saranno molto simili; ma una volta che esaminiamo una sequenza lunga di dati d'ingresso, la somma degli arrotondamenti (tali si possono considerare i bits adoperati dalla codifica di Huffman rispetto a quelli dei codici aritmetici) per la codifica dei singoli simboli porta ad una differenza netta tra i risultati ottenuti con i codici aritmetici e il codice di Huffman. LZ77 – LZ78 Altre tipologie di codifica sono quelle descritte dagli algoritmi Lempel-Ziv: di queste esistono differenti implementazioni. Nella prima versione (LZ77) [13] la codifica/compressione avviene mediante la sostituzione di parti di dati già processate. Si utilizza una finestra di scorrimento dei dati avente dimensione fissa: quando la finestra incontra un dato ripetuto allora tale dato viene sostituito da una coppia “lunghezza-distanza” che indica l'esigenza di dover copiare una certa porzione di dati, avente una certa “lunghezza”, da una determinata “distanza”. 5 Progetto 3D CloudWiz | ATI NICE - DIEE Con questa tipologia di compressione la possibilità di trovare una corrispondenza nel “dizionario” per la stringa di dati esaminata è quindi dipendente unicamente dai dati contenuti nella finestra di scorrimento in quell'istante e non si tiene invece conto dei record precedenti. Per superare questi inconvenienti e aumentare l'efficacia della codifica Lempel e Ziv, un anno dopo, svilupparono la codifica LZ78 [14]: si costruisce un dizionario dei dati già incontrati e si sostituiscono le occorrenze dei dati presenti nella finestra con un riferimento ai dati del dizionario. La decodifica è analoga alla codifica, all'inizio il dizionario contiene solo la stringa vuota e mentre viene riempito viene anche restituita la codifica originale. La differenza con il precedente algoritmo è il ridotto numero di confronti tra stringhe di dati e quindi una maggiore velocità, riguardo al coefficiente di compressione non ci sono rilevanti differenze. Anche a questi algoritmi sono stati applicati diversi adattamenti: da essi, ad esempio, derivano LZW, LZMA(Lempel Ziv Markov chain) [15] e LZSS [16]. LZW(Lempel-Ziv-Welch) Nel 1984 Terry Welch rivisitò l'algoritmo LZ78 [17] cercando di migliorarlo dal punto di vista della velocità adottando un dizionario base non vuoto. L’algoritmo LZW si basa sulla creazione di un dizionario di stringhe ricorrenti in un determinato insieme di dati utilizzando un dizionario di base che di norma è costituito dai 255 caratteri derivanti dalla codifica ASCII. Leggendo un unico carattere alla volta si aggiorna il dizionario mantenendo la sequenza codificata più lunga incontrata sino a quel momento. La velocità di questo algoritmo, rispetto a LZ78, è tale che l'ha portato da essere stato scelto e utilizzato in sistemi come: l'utility UNIX compress/uncompress. formato grafico TIFF. formato grafico GIF. standard V.42 bis per la trasmissione dati. 6 Progetto 3D CloudWiz | ATI NICE - DIEE Il prezzo da pagare per un incremento di performance in termini di velocità è un fattore di compressione che risulta non essere elevato. RLE – Run Length Encoding L'algoritmo RLE è una forma molto semplice di codifica per la compressione dati. Esso è basato sul fatto che in ogni flusso di dati sono presenti diversi dati simili, i valori ripetuti vengono definiti “run”, questi dati ridondanti saranno sostituiti con un contatore e il valore ad esso associato. Questo tipo d’algoritmo intuitivo funziona bene con tipologie di dati in cui in cui sono presenti un largo numero di occorrenze consecutive dello stesso byte pattern: da questo deriva il suo largo impiego nel settore legato alla compressione di immagini. Ad esempio RLE si presta bene per la compressione di formati grafici come BMP, PCX, TIFF (basandosi sulla ridondanza spaziale delle immagini) e viene anche utilizzato in alcune implementazione di formati editoriali come PDF o nella tecnologia per l'invio di FAX. Possiamo trovare diverse implementazioni di quest’algoritmo: RLE a livello di bit: ogni byte codifica sequenze di bit uguali; RLE a livello di byte: ogni run è codificato da due byte; RLE a livello di byte misto: si utilizza il concetto di byte di lunghezza, ossia un byte in cui il bit più indicativo denota il tipo di run (1 = compresso, 0 = non compresso). Deflate L'algoritmo Deflate è un algoritmo per la compressione dei dati introdotto dal programma PKZIP, e quindi formalizzato nella RFC 1951 [18]. Esso utilizza una combinazione dei metodi di compressione LZ77 e la codifica di Huffman. Deflate comprime i dati del flusso d'ingresso in blocchi di byte di lunghezza arbitraria massima di 64KB. Ognuno di questi blocchi è compresso separatamente mediante una combinazione di LZ77 e Huffman secondo il seguente criterio: gli alberi di Huffman usati per un blocco sono indipendenti da quelli utilizzati per blocchi precedenti o successivi; 7 Progetto 3D CloudWiz | ATI NICE - DIEE LZ77 può utilizzare un riferimento a una stringa duplicata vista in precedenza nella sequenza di input. La decisione relativa alla modalità di suddivisione in blocchi viene demandata all'utilizzatore finale in base alle proprie esigenze e in base alla tipologia di dato da andare a comprimere. Algoritmi di compressione lossless per immagini In questa sezione vengono presentati i principali algoritmi di compressione e decompressione delle immagini considerati degli standard. In particolare si farà riferimento alle alla famiglia di codec lossless appartenenti allo standard JPEG (Lossless Jpeg / Jpeg-LS, Jpeg2000 e JpegXR), il formato GIF e il formato PNG. Vengono inoltre presentati ImageZero e LZ4 che, pur non rappresentando una novità in termini di tecniche di compressione, rappresenta una novità in quanto aggiunge la parallelizzazione delle operazioni rispetto alle implementazioni dei codec tradizionali al fine di garantire una notevole velocità di codifica. Lossless JPEG e JPEG-LS A partire dal 1993, in seguito al successo della serie degli standard JPEG lossy, la commissione JPEG (Joint Photographic Experts Group) valutò che fosse necessario adottare una modalità di compressione lossless nello standard JPEG. La prima versione del "lossless" JPEG codificava la differenza tra ogni pixel ed il valore "predetto" per quel pixel. Il valore "predetto" è il risultato di una funzione che usa come parametri i valori dei pixel che si trovano sopra, sopra a sinistra e immediatamente alla sinistra del pixel in esame. Tale codifica viene anche chiamata Pulse Code Modulation (DPCM) e veniva utilizzata al posto della comune DCT utilizzata nel lossy JPEG. La sequenza di dati ottenuta veniva poi codificata con il metodo di Huffman o con altre codifiche aritmetiche. La ricerca di un sostituto che garantisse minore complessità computazionale e aumentasse le performance in termini di efficienza di compressione portò all'analisi di algoritmi che continuassero a non utilizzare la DCT – o le trasformazioni tra spazi di colore – ma che altresì 8 Progetto 3D CloudWiz | ATI NICE - DIEE portassero ad una compressione lossless o quasi lossless. Il risultato di tale ricerca è stato poi standardizzato in ISO-14495-1/ITU-T.87 con il nome di JPEG-LS. Il core del JPEG - LS è basato sull'algoritmo LOCO -I [19]di HP che si contraddistingue in quanto la fase di codifica viene preceduta da due fasi: quella di predizione e quella di modellazione degli errori. La bassa complessità di questa tecnica deriva da due fattori: il fatto che la previsione residuale segue quella che viene chiamata “Discrete Laplace Distribution”; l'utilizzo, in fase di codifica, di codici come quelli di Golomb-Rice, noti per essere ideali per le distribuzioni geometriche. Di seguito una tabella comparativa che illustra i risultati di compressione per un test set di immagini con l'utilizzo di differenti algoritmi candidati ad appartenere allo standard JPEG-LS espressi in bits/sample [20]: Image LOCO-I JPEG-LS FELICS LossLess LossLess CALIC JPEG JPEG Arithm Huffman Arithm LOCO-A PNG Bike 3.59 3.63 4.06 4.34 3.92 3.50 3.54 4.06 cafe 4.80 4.83 5.31 5.74 5.35 4.69 4.75 5.28 woman 4.17 4.20 4.58 4.86 4.47 4.05 4.11 4.68 tools 5.07 5.08 5.42 5.71 5.47 4.95 5.01 5.38 bike3 4.37 4.38 4.67 5.18 4.78 4.23 4.33 4.84 cats 2.59 2.61 3.32 3.73 2.74 2.51 2.54 2.82 water 1.79 1.81 2.36 2.63 1.87 1.74 1.75 1.89 finger 5.63 5.66 6.11 5.95 5.85 5.47 5.50 5.81 us 2.67 2.63 3.28 3.77 2.52 2.34 2.45 2.84 chart 1.33 1.32 2.14 2.41 1.45 1.28 1.18 1.40 chart s 2.74 2.77 3.44 4.06 3.07 2.66 2.65 3.21 compound1 1.3 1.27 2.39 2.75 1.50 1.24 1.21 1.37 compound2 1.35 1.33 2.40 2.71 1.54 1.24 1.25 1.46 9 Progetto 3D CloudWiz | ATI NICE - DIEE aerial2 4.01 4.11 4.49 5.13 4.14 3.83 3.58 4.44 faxballs 0.97 0.90 1.74 1.73 0.84 0.75 0.64 0.96 gold 3.92 3.91 4.10 4.33 4.13 3.83 3.85 4.15 hotel 3.78 3.80 4.06 4.39 4.15 3.71 3.72 4.22 Media 3.18 3.19 3.76 4.08 3.40 3.06 3.06 3.46 JPEG2000 – lossless Si tratta del successore designato del JPEG, già ufficializzato come standard ISO/ITU che va sotto il nome di JPEG2000 [21]. La versione completa delle specifiche relative a questo formato è scaricabile dalla pagina web del JPEG.org [22]. JPEG2000 è completamente diverso dal suo predecessore JPEG: propone prima di tutto il fatto che uno stesso algoritmo possa essere adatto sia alla codifica lossy che a quella lossless. La differenza tra i due standard è sostanziale e possiamo brevemente identificarle come segue: durante la prima trasformazione, quella che in JPEG veniva svolta tramite l'utilizzo di una DCT (Discrete Cosine Transform), in JPEG2000 si utilizza la DWT (Discrete Wavelet Transform); la fase di quantizzazione dei valori è opzionale in JPEG2000 se l'utente desidera ottenere una compressione senza perdita d'informazione. JPEG utilizza una versione avanzata della codifica di Huffman, JPEG2000 utilizza un metodo chiamato Embedded Block Coding with Optimized Truncation (EBCOT) [23]. Queste non sono però le uniche differenze apportate rispetto allo standard JPEG: a causa di questo i programmi attuali più diffusi (software di grafica, viewer e browser) e l'hardware (ad esempio le fotocamere digitali) non supportano nativamente il nuovo formato dello standard. Questo fatto non gioca a favore di JPEG2000 vista l'ampissima diffusione del formato JPEG (oltre l'80% delle immagini è codificato con lo standard JPEG) per cui il futuro di questo nuovo formato è ancora molto incerto nonostante le potenzialità che offre. 10 Progetto 3D CloudWiz | ATI NICE - DIEE Questi i passaggi per la codifica con JPEG2000 lossless: Passo 1) Preprocessing Se stiamo comprimendo un'immagine a colori occorre trasformare l'immagine nello spazio YCbCr e, per ogni canale, sottraiamo 127 ad ogni valore “unsigned” contenuto in esso. In questo modo avremo una “centratura” dei valori sullo 0. Passo 2) Trasformazione Uno dei principali cambiamenti nello standard JPEG2000 è l'uso della Trasformazione Wavelet Discreta (DWT) invece della DCT. Il risultato di quest’operazione è la decorrelazione tra le informazioni di bassa e alta frequenza contenute nell’immagine. La DWT si applica poi ricorsivamente, solitamente 2/3 volte, alla componente delle basse frequenze. Il risultato finale di tutta l'operazione è che l'intero contenuto informativo dell'immagine originale è stato segmentato in una serie di trasformazioni successive, che potranno poi essere compresse in un minimo spazio e poi decompresse in modo reversibile. Alla DWT vengono applicati dei filtri per la compressione, nel caso lossless solitamente il filtro LeGall53 o W5x3. Nel caso lossy i filtri applicati sono differenti. C'è da fare presente che la complessità della DWT dipende dalla dimensione dei filtri applicati e dal tipo di filtro. Solitamente essa è computazionalmente più complessa della DCT e richiede anche una maggiore memoria. Passo 3) Quantizzazione Nel caso di codifica lossless non si applica alcun tipo di quantizzazione. Passo 4) Encoding Per la compressione senza perdita di dati, usiamo semplicemente la metodologia EBCOT [24]per codificare gli elementi della trasformazione wavelet. JPEG XR JPEG XR [25], precedentemente conosciuto come HD Photo [26], è un formato per la compressione 11 Progetto 3D CloudWiz | ATI NICE - DIEE delle immagini sviluppato da Microsoft e studiato per superare la limitazione degli 8 bit per canale del formato JPEG estendendo la profondità del colore a 16 bit o più, supportare un numero maggiore di di spazi di colore e garantire la possibilità di gestire porzioni di immagine senza dover decodificare l’intera immagine. La qualità dell'immagine, percettivamente comparabile a quella del JPEG2000, ha un carico computazionale più vicino a quello del JPEG offrendo però una compressione superiore anche in caso di compressione lossless. L'algoritmo di compressione è molto simile a quello JPEG: avviene una trasformazione in un differente spazio di colore; ogni piano di colore viene suddiviso in blocchi di dimensione fissa; i blocchi vengono trasformati sotto il dominio della frequenza e gli viene applicata una codifica entropica. Essendo la trasformazione da RGB a YCbCr leggermente lossy (introduce infatti dei piccoli errori in fase di arrotondamento), il nuovo standard JPEG XR propone l'adozione della trasformazione dallo spazio RGB a quello YUV. La fase di trasformazione nel campo della frequenza avviene su blocchi di dimensioni inferiori e senza l'utilizzo della trasformata DCT bensì utilizzando, come nel JPEG2000, la DWT (Discrete Wavelet Transform) utilizzando l'algoritmo con schema “lifting” [27]: esso è un metodo alternativo per il calcolo dei coefficienti delle wavelet avente un minore costo computazionale e un minore utilizzo di memoria. Il vantaggio di questa codifica rispetto a JPEG2000 è il fatto che questa è già supportata dalla gran parte dei software che utilizzano immagini. Confronti tra i tre algoritmi precedentemente descritti In letteratura sono già presenti [28] dei test comparativi tra i tre algoritmi fin'ora trattatati. A puro titolo d'esempio di seguito vengono riportati brevemente i risultati d'interesse riferiti alle immagini Lena.bmp, Peppers.bmp, Couple.bmp e Sailboat on Lake.bmp (in alcuni casi si parte da formati .ppm o .pnm) presenti all'indirizzo http://sipi.usc.edu/database ed utilizzati per avere un PSNR pari 12 Progetto 3D CloudWiz | ATI NICE - DIEE a 40db (valori in tabella in bpp) TEST JPEG-2000 JPEG-XR JPEG-LS Lena.bmp 5 4.2 5.5 Peppers.bmp 6.6 6 5.5 Couple.bmp 3.4 3 4.5 Sailboat on Lake.bmp 8 7 6.7 GIF Il formato GIF (Graphic Interchange Format), diffuso alla fine degli anni 80, usa una forma di compressione LZW che mantiene inalterata la qualità dell'immagine. La profondità dei colori delle immagini GIF è di 8 bit, che consente di usare una tavolozza di massimo 256 colori. Consente inoltre di inserire la trasparenza ad uno dei colori individuati. Lo schema di compressione LZW è più adatto a comprimere immagini con grossi campi di colore omogeneo ed è meno efficiente nella compressione di immagini complesse con molti colori e grane/finiture complesse. Tale formato è stato superato a partire dal 1995 a causa dello sviluppo del PNG. PNG Il formato di codifica PNG [29] (Portable Network Graphics) è un formato grafico di tipo raster (bitmap) basato sulla compressione deflate. È stato elaborato nel 1995 per fornire un'alternativa libera al formato GIF per la quale era stato improvvisamente richiesto il pagamento delle royality di utilizzo. La compressione proposta con questo formato è una compressione senza perdita (lossless compression) da 5 a 25% migliore della compressione GIF. PNG può supportare colori fino a 32 bit. Il formato PNG-8, il primo nato, presenta effettivamente molte analogie con il formato GIF. Il formato PNG-24 è invece più “simile” a un JPEG e può supportare la trasparenza anche su più livelli di colore. Esso possiede solitamente una funzione di intreccio che permette di visualizzare progressivamente l'immagine. 13 Progetto 3D CloudWiz | ATI NICE - DIEE La struttura dei file PNG è composta come segue: una firma in esadecimale del file che identifica il tipo PNG una serie di chunks dell'immagine I chunks dell'immagine contengono il contenuto informativo dell'immagine stessa. I più importanti sono quelli definiti “critical”: IHDR Image header PLTE Palette IDAT Image data IEND Image trailer Oltre a questi chunks principali sono poi presenti chunks “accessori”. I chunks possono essere presenti nel file in qualsiasi ordine ma devono cominciare dal segmento di titolo (IHDR chunk) e finire dal segmento finale (IEND chunk). I chunks a loro volta sono suddivisi in quattro parti: dimensione del chunk, un numero intero di 4 byte tipo del chunk, un codice di 4 byte di caratteri ASCII alfanumerici che identificano la tipologia del chunk i dati del chunk il CRC (cyclic redundancy check), un codice correttore di 4 byte che permette di verificare l'integrità del segmento Di seguito una tabella riepilogativa relativa alla conversione di un'immagine campione che evidenzia le differenze di compressione tra PNG e le varie compressioni legate al JPEG impostando la qualità di output pari al 100%. TEST BMP JPEG (Qualità 100%) JPEG-XR (Qualità 100%) PNG Butterfly.bmp 668 KB 201 KB 251 KB 267 KB Questi valori sono stati ottenuti utilizzando il tool di grafica Gimp sulla seguente immagine 14 Progetto 3D CloudWiz | ATI NICE - DIEE d'esempio avente dimensioni 485x353 reperita gratuitamente sul sito http://pngimg.com/: Implementazioni multithread di diverso tipo Come già specificato in fase introduttiva vengono qui di seguito presentati due differenti tools di compressione, uno specifico per le immagini (ImageZero) e uno più generico (LZ4) che pongono il loro punto di forza sulla velocità d’esecuzione dell’algoritmo di compressione e decompressione piuttosto che sui livelli di compressione raggiunti. Tali performance vengono perseguite adattando gli algoritmi di compressione alle potenze di calcolo offerte dai moderni processori: in particolare si fa un forte utilizzo del multithreading. ImageZero ImageZero [30] nasce nel 2012 da un progetto di Chistoph Feck, sviluppatore di KDE, che ricercava un codec estremamente veloce, che fosse di tipologia lossless e che offrisse un discreto rapporto di compressione. Non avendo trovato quello che cercava ha stabilito di realizzarlo lui stesso. Le piattaforme di benchmark indipendenti per la valutazione delle prestazioni relative alle procedure di codifica e decodifica lossless documentano la velocità e la qualità del suo codec [31] [32]. Il codice è attualmente al primo stadio di sviluppo ma è estremamente promettente: rispetto al PNG comprime un'immagine PPM a 24 bit circa 20 volte più velocemente e la decomprime 2 volte più velocemente. Il tasso di compressione è estremamente prossimo a quello del PNG. L'algoritmo utilizzato è molto semplice: la compressione e la decompressione viene realizzata “per pixel”, senza branches (ad eccezione di un unico branch nel bit coder), in modo che sulle moderne CPU possa essere eseguito molto velocemente e in parallelo. Questo tipo di codifica non è adatta per grafici o per immagini in scala di grigi. 15 Progetto 3D CloudWiz | ATI NICE - DIEE Andando ad utilizzare come immagine campione quella presente all'indirizzo seguente: http://www.flickr.com/photos/anirudhkoul/3499471010/sizes/o/in/photostream/ questi sono i risultati ottenuti per le varie tipologie di codifica e decodifica: Metodo Dimensione del File (KB) Tempo di Compressione (s) Tempo di Decompressione (s) Originale 46380 - - JPEG-LS 14984 6,6 7,3 PNG 16256 42,4 2,4 1,2 1,3 ImageZero 15496 Alcuni interessanti risultati compresi nel “LossLess Photo Compression Benchmark” mostrano i risultati dei tempi di compressione e decompressione dei sistemi di compressione lossless applicati su un database di circa 3.46 GB. Quello che viene evidenziato è che il formato ImageZero, rilasciato con licenza BSD, così come il codice al quale fa riferimento, è nettamente il codec più veloce e garantisce una notevole velocità sia di compressione che di decompressione. La tabella seguente fornisce un riepilogo di quanto emerge. Software / Codec Licenza Dimensione (%) Compressione (s) Decompressione (s) Originale - 100 - - bzip2 -1 bzip2 License 56,3 476 218 PNG libpng License 42,5 844 72 ImageZero BSD 41,3 23 21 JPEG-LS HP License 37,4 107 92 lossless WebP BSD 35,6 7525 110 Flic Proprietario 30,0 210 231 Gralic Proprietario 28,1 1734 1897 16 Progetto 3D CloudWiz | ATI NICE - DIEE LZ4 LZ4 [33] è un algoritmo di compressione di dati generici, derivante dal filone dei codec LZ77, particolarmente orientato ad aumentare notevolmente le velocità di compressione e decompressione. Attualmente è un progetto presente su google-code [34] e sta avendo un notevole successo in quanto riesce a garantire velocità di 400MB/s per ogni core dedicato alla compressione. L'algoritmo è inoltre scalabile con le CPU multi core. I tempi di decompressione ottenuti sono nell'ordine dei GB/s e raggiungono, nei sistemi multi core, il limite di velocità della ram. Di seguito, in Tabella 6, viene riportato uno schema comparativo con le performance registrate da LZ4 rispetto ad altri algoritmi/tools di compressione Tool Ratio Comp. Speed (MB/s) Decomp. Speed (MB/s) LZ4 (r101) 2,084 422 1820 LZO 2.06 2,106 414 600 QuickLZ (1.5.1b6) 2,237 373 420 Snappy 1.1.0 2,091 323 1070 LZF 2,077 270 570 Zlib 1.2.8 -6 3,099 21 300 Algoritmi di compressione proposti in letteratura Di seguito vengono messi in risalto quelli che sembrano essere gli algoritmi di compressione per immagini più promettenti presenti in letteratura. Il vincolo della ricerca di compressioni lossless (o near lossless), real time (o near real time) e applicabili a immagini con un contenuto generico ha portato a un'elevata scrematura dell'offerta scientifica disponibile. La gran parte degli articoli analizzati è risultata essere non idonea allo scopo del presente documento. Molte delle pubblicazioni fanno inoltre riferimento a dataset di test non pubblici e/o comunque di difficile reperibilità o aventi un contenuto molto limitato d'immagini pregiudicando l'eventuale ripetibilità dei test presentati. Gli approcci mostrati sono quindi unicamente quelli che presentano delle misure di prestazioni relative a un dataset di dimensione sufficiente o relative a set di immagini standard. 17 Progetto 3D CloudWiz | ATI NICE - DIEE A Lossless Image Compression Technique using Location Based Approach A Lossless Image Compression Technique using Location Based Approach [32] è una tecnica per la compressione lossless d'immagini basata sulla divisione in blocchi 4x4 dell'immagine originale e in una loro successiva compressione. L'algoritmo in oggetto si basa essenzialmente su pochi semplici passi: 1) scomporre l'immagine in blocchi 4x4 non sovrapposti 2) per ogni blocco poi a) convertire il blocco in un array di 16 elementi con un approccio “da sinistra a destra e dall'alto in basso” b) individuare il valore più frequente all'interno dell'array (MFP) e eliminarlo c) scrivere il valore dell'MFP sul bit stream d'uscita susseguito da 4 bit che indicano il numero di occorrenze (la frequenza) dell'MFP d) individuare la frequenza del secondo valore più frequente all'interno dell'array (SMFP): se occorrono k bit per rappresentare questa frequenza, scrivere k nei successivi 4 bit nel bit stream d'uscita e) scrivere quindi il valore dell'SMFP in 8 bit f) scrivere il numero di occorrenze dell'SMFP g) scrivere tutte le posizioni delle sue occorrenze in k bit h) ripetere i passi da e) a g) per tutti i distinti valori di pixel rimasti nell'array 3) ripetere per ogni blocco per un'immagine a colori occorre ovviamente ripetere l'intero algoritmo per ogni componente di colore. Una tabella comparativa dei risultati di compressione, in termini di dimensione dell'immagine in bit, riportata nell'articolo viene di seguito proposta: TEST Non compressa GIF TIFF 18 PNG LICTLBA Progetto 3D CloudWiz | ATI NICE - DIEE Lena 2097152 443187 521830 387482 252082 Baboon 2097152 654541 535107 501350 196608 Iris 2097152 901120 802816 630784 201583 L'articolo presentato propone un metodo di compressione che sembra dare buoni risultati ma risulta anomalo il numero ridotto di campioni su cui vengono eseguiti i test. Inoltre esso sembra presentare dei limiti, ad esempio, il caso in cui tutti i pixel siano diversi comporterebbe un aggravio in termini di dimensioni dell'immagine, si avrebbero infatti per un singolo blocco 4x4 di un singolo canale di un'immagine: 8 bit per MFP bit per la frequenza MFP 4 bit per la rappresentazione di K 8 bit per SMFP 1 bit per la frequenza di SMFP 4 bit per la posizione di SMFP (8 + 1 + 4)*14 = 182 bit per i restanti valori dei pixel per un totale di 211 bit di un blocco compresso contro 128 bit del blocco non compresso. L'articolo stesso specifica però che nei blocchi di test 4x4 analizzati, circa 100.000, solo in una piccola parte di questi, 79, si è verificato il caso peggiore precedentemente indicato. Context-based Dictionary Image Compression Il Context-based Dictionary Image Compression (CDIC) [33] è un algoritmo proposto nel 2012 e che propone l'applicazione di tecniche di compressione di dati testuali anche nel campo delle immagini. In particolare la tecnica di compressione da applicare alle immagini è quella proposta da Nakano e altri [34] nel 1994, il Classifying to Sub-Dictionaries (CSD), che propone l'idea di combinare tecniche di compressione basate su dizionari a tecniche di compressione basate sul contesto dei 19 Progetto 3D CloudWiz | ATI NICE - DIEE dati: in particolare combinando la compressione Lempel-Ziv-Welch (LZW) con lo schema Prediction by Partial Matching (PPM). L'algoritmo in questione utilizza un numero elevato di sottodizionari che sono inizialmente presi in considerazione con tutti i possibili singoli caratteri. Ogni stringa da codificare viene codificata in base all'ultimo simbolo presente nella precedente sotto stringa che viene associato al dizionario secondario da utilizzare. Una volta individuato il dizionario, si utilizza l'algoritmo LZW per la compressione dei dati. Utilizzando sempre l'ultimo elemento per la codifica di una stringa successiva, viene considerato [35] come uno schema PPM del primo ordine. L'applicazione del CSD alle immagini bidimensionali è stata testata e confrontata con le prestazioni offerte dalla semplice compressione LZW. Per completezza di analisi, per la predizione del corretto sotto dizionario da andare a utilizzare, sono stati effettuati due differenti test: in un caso veniva sfruttato il valore del pixel a sinistra, mentre in un secondo caso il valore del pixel superiore. Quello che viene evidenziato dai test condotti su 9 immagini standard è che mediamente la codifica LZW riduce lo spazio occupato del 14%, mentre con la codifica CSD si può arrivare fino al 17%. I risultati pubblicati non sono entusiasmanti in termini di compressione anche perché, come nella maggior parte dei casi, non vengono riportati i tempi di codifica e decodifica delle immagini. Nella tabella a seguire vengono riportati i risultati ottenuti dai test svolti da El-Sakka dove i valori sono da intendersi in byte. TEST Non Compressa LZW CSD (Pixel sinistro) CSD (Pixel Superiore) Boats 103680 91183 87215 88816 Camera 65536 54720 51106 52325 Columbia 57600 52350 49666 50845 Crowd 262144 196955 188488 190171 Lake 262144 243225 235806 237016 20 Progetto 3D CloudWiz | ATI NICE - DIEE Man 262144 227473 220547 212930 Milkdrop 65536 55368 54290 53992 Peppers 65536 64423 63008 62515 Plane 65536 56218 53928 54840 A new Algorithm for Lossless Compression applied to two-dimensional Static Images A new Algorithm for Lossless Compression applied to two-dimensional Static Images (ALCSI) [36] è stato proposto nel 2012 e prevede l'utilizzo di una tecnica ibrida per la compressione delle immagini che sfrutta i concetti introdotti dall'algoritmo INA [37] per la parallelizzazione del processo. I risultati sperimentali del metodo INA, dello stesso autore, evidenziano come il metodo indicato abbia performance superiori alla codifica di Huffman e al JPEG-LS, di seguito un breve schema riassuntivo nella tabella seguente relativo alla compressione di un'immagine 2048x2048 in cui la compressione, per il metodo INA è stata ottenuta in 0.105 secondi: METHODS COMPRESSION RATIOS Huffman Coding 4% Prediction 27% JPEG-LS (Standard) 54% INA 58% Il metodo si compone di tre fasi: una prima fase di segmentazione dell'immagine, una seconda fase di compressione e una terza di codifica. Nella prima fase, l'intera immagine viene suddivisa in blocchi di dimensione fissa: ogni blocco genera due gruppi distinti. Un primo gruppo che identifica la sequenza dei pixel del blocco ordinati in ordine crescente e l'altro che rappresenta una sequenza formata da pixel organizzati in gruppi di coppie ordinate. I vantaggi apportati dalla segmentazione dell'immagine, tipicamente in blocchi di 21 Progetto 3D CloudWiz | ATI NICE - DIEE dimensione 4x4, sono essenzialmente riconducibili all'aumento in termini di velocità, alla riduzione della memoria richiesta e all'adattamento dei dati stessi per l'utilizzo nell'albero binario. La seconda fase, quella di compressione, è la novità apportata da questo metodo e si riferisce all'esecuzione parallela della compressione dei due gruppi ottenuti nella prima fase di segmentazione tramite l'utilizzo di un albero binario e uno schema di predizione. Nella terza ed ultima fase viene applicato un codificatore per la generazione del bit stream d'uscita. I risultati sperimentali pubblicati nella tabella seguente legati a questo metodo sono stati dei lievi miglioramenti nelle misure del rapporto di compressione e dei bit per punto rispetto al JPEG-LS. METHODS COMPRESSION RATIOS BPP Methods based on Substitution models 1,03 7,79 Methods based on Arithmetic models 1,11 7,21 Methods based on Dictionary models 1,23 6,53 Methods based on Predictive models 1,57 5,09 Methods based on Transformed models 1,76 4,54 JPEG-LS Standard 1,75 4,57 ALCSI 1,77 4,52 Fast Lossless Color Image Compressing Method Using Neural Network L'approccio mostrato nel 2002 con la pubblicazione “Fast Lossless Color Image Compressing Method Using Neural Network” [38] mira a rinunciare alle prestazioni in termini di compressione per andare invece a migliorare i tempi di compressione dei dati dell'immagine. Gli autori propongono un algoritmo di tipo predittivo che consta di tre fasi. Nella prima fase si procede a una trasformazione dello spazio di colore: seguendo gli esempi di JPEG-LS e JPEG2000 gli autori propongono un loro nuovo spazio di colore. Partendo dalle componenti originali (denominate genericamente A1, A2 e A3) si ottengono le nuove componenti secondo queste equazioni: A1' = floor (0.25A1 + 0.5A2 + 0.25A3) 22 Progetto 3D CloudWiz | ATI NICE - DIEE A2' = A1 - A2 A3' = A3 - A2 la trasformazione è ovviamente reversibile. Nella seconda fase si applica invece un modello predittivo: il valore del pixel è predetto pesando i valori dei quattro pixel in direzione in alto a sinistra. Se il pixel d'interesse è nella prima o nell'ultima colonna o se è nella prima riga, si utilizza un valore di default per il pixel vicino mancante. Il pixel k-simo in posizione (i,j) sarà calcolato come: Pk(i,j) = w1Pk(i,j-1) + w2Pk(i-1,j-1) + w3Pk(i-1,j) +w4Pk(i-1,j+1) dove i generici w inizialmente assumeranno il valore 0.25. Nella terza fase viene invece utilizzato una correzione adattativa dei singoli pesi in base all'algoritmo riportato in [39] attraverso l'utilizzo di una rete neurale a due livelli. I risultati ottenuti da questo metodo indicano che con questo metodo è possibile ottenere una compressione nettamente superiore che con il solo utilizzo dei metodi di Huffman o Lzw. Si ottiene inoltre un rapporto di compressione un po' peggiore rispetto a JPEG-LS ma si riesce, con l'utilizzo della metodologia proposta, a migliorare i tempi di compressione dell'immagine stessa. Di seguito sono mostrate due tabelle che riassumono tali prestazioni. Nella prima si fa riferimento al numero medio di bits per codificare ogni pixel, nella seconda vengono indicati i tempi di compressione ottenuti per le immagini di test. I risultati di compressione vengono proposti in termini di bits/pixel: Image Huffman LZW JPEG-LS Proposed Scenery1 2,92 5,01 2,13 2,20 Scenery2 2,27 4,20 1,83 1,89 Aerial 2,65 3,92 1,90 2,22 Computer's 2,47 3,08 2,21 2,55 Peppers 4,67 5,84 3,88 4,28 23 Progetto 3D CloudWiz | ATI NICE - DIEE Lena 5,12 6,78 4,52 4,76 I tempi di compressione, in termini di secondi, vengono riportati nella seguente tabella: Image Huffman LZW JPEG-LS Proposed Scenery1 6,88 9,87 6,21 5,10 Scenery2 9,35 13,32 8,68 7,27 Aerial 6,83 7,90 6,62 5,55 Computer's 5,24 8,68 4,46 3,89 Peppers 1,18 3,12 0,60 0,51 Lena 2,87 3,89 1,05 0,90 Conclusioni La letteratura scientifica, in relazione a codec lossless o near lossless che possano essere utilizzati in real time o in near real time, risulta essere limitata. Negli ultimi anni la comunità scientifica si è concentrata infatti ad affrontare le problematiche relative alla compressione e decompressione d'immagini seguendo gli andamenti del mercato: si è manifestata infatti una proliferazione di studi su specifiche tipologie d'immagine a discapito di studi legati a immagini generiche (in formato RGB o BGR). Ad esempio si riscontrano un numero elevato di studi legati alle immagini realizzate secondo il criterio Bayer CFA [40-42], specifico in particolare per immagini fotografiche ad elevata risoluzione e dipendente dai filtri implementati nelle fotocamere, come mostrato dagli studi in corso anche in aziende come Microsoft [43]; si ha anche la ricerca di nuove tecniche di codifica legato a immagini di tipo medicale [44,45], legato alle immagini astronomiche [46] o più genericamente alle 24 Progetto 3D CloudWiz | ATI NICE - DIEE tematiche del compound image compression [47,48]. Quello che viene evidenziato è che gli algoritmi e i formati di compressione già presenti sul mercato (JPEG XR, PNG ecc) sono attualmente considerati stabili e affidabili. Le prestazioni che essi offrono vengono valutate sufficienti per l'esigenza attualmente manifestata dal mercato: essi risultano offrire rapporti di compressione molto buoni, superati solo minimamente dai nuovi algoritmi presentati in letteratura, e tempi di compressione ragionevoli per le più diffuse applicazioni. Quello che si evidenzia è inoltre la presenza di una serie di studi e implementazioni che mirano ad utilizzare le codifiche dati ritenute standard (Huffman, LZ78 ecc) parallelizzandone però il processo ed adattando quindi queste tecniche al multi threading offerto dai processori oppure andando ad implementare i medesimi algoritmi al fine di utilizzare la potenza di calcolo presente nella GPU del sistema. Ovviamente tali soluzioni non migliorano il rapporto di compressione offerto dagli algoritmi ma si limitano a migliorare i tempi legati alla compressione e decompressione dei dati. Bibliografia 1. «http://math.unipa.it/~epifanio/tecnologie/compr07_08.pdf,» [Online]. 2. M. Burrows e D. Wheeler, «A block sorting lossless data compression algorithm». 3. «http://compressions.sourceforge.net/PPM.html,» [Online]. 4. «http://tools.ietf.org/html/rfc1951,» [Online]. 5. D. Huffman, «A method for the construction of minumum-redundancy codes». 6. P. E. Black, «Adaptive Huffman coding,» in Dictionary of Algorithms and Data Structures. 7. P. E. Black, «K-ary Huffman coding,» in Dictionary of Algorithms and Data Structures. 8. M. Golin, C. Kenyon e N. Y. Young, «Huffman Coding with Unequal Letter Costs». 9. I. Witten, R. Neal e J. Cleary, «Arithmetic Coding for Data Compression». 10. J. Ziv e A. Lempel, «A Universal Algorithm for Sequential Data Compression». 11. J. Ziv e A. Lempel, «Compression of Individual Sequences via Variable-Rate Coding». 25 Progetto 3D CloudWiz | ATI NICE - DIEE 12. D. Salomon, «Data Compression: The Complete Reference». 13. J. Storer e T. Szymansky, «Data Compression via Textual Substituion». 14. T. Welch, «A Technique for High-Performance Data Compression». 15. «http://tools.ietf.org/html/rfc1951,» [Online]. 16. M. Weinberger, G. Seroussi e G. Sapiro, «The LOCO-I Lossless Image Compression Algorithm: Principles and Standardization into JPEG-LS». 17. «http://www.hpl.hp.com/research/info_theory/loco/HPL-98-193R1.pdf,» [Online]. 18. M. Charrier, D. Santa Cruz e M. Larsson, «JPEG2000, the Next Millenium Compression Standard for Still Images». 19. «http://www.jpeg.org/jpeg2000/,» [Online]. 20. D. Taubman e M. Marcelin, «JPEG2000: Image Compression Fundamentals, Standards and Practice». 21. AA.VV., «http://www.hpl.hp.com/techreports/2001/HPL-2001-35.pdf,» [Online]. 22. AA.VV., «Recommendation T.832 /03/2009, updated 12/2009: Information Technology – JPEG XR image coding system – Part 2: Image coding specification». 23. AA.VV., «HD Photo: a New Image Coding Technology for Digital Photography». 24. «http://www.dsi.unifi.it/~berretti/download/jpeg-2000.pdf,» [Online]. 25. A. Solanki, «Implementation and performance analysis of JPEG2000, JPEG, JPEG-LS, JPEGXR and H.264/AVC Intra frame coding,» [Online]. 26. «http://www.ietf.org/rfc/rfc2083.txt?number=2083,» [Online]. 27. «http://imagezero.maxiom.de/,» [Online]. 28. http://www.squeezechart.com/bitmap.html. [Online]. 29. «http://www.imagecompression.info/gralic/LPCB.html,» [Online]. 30. «http://fastcompression.blogspot.it/2011/05/lz4-explained.html,» [Online]. 31. «https://code.google.com/p/lz4,» [Online]. 26 Progetto 3D CloudWiz | ATI NICE - DIEE 32. M. Hasan e K. M. Nur, «A Lossless Image Compression Technique using Location Based Approach». 33. M. El-Sakka, «Context-based Dictionary Image Compression». 34. AA.VV., «Highly efficient universal coding with classifying to subdictionaries for text compression». 35. J. Cleary e W. Teahan, «Unbounded length contexts for PPM». 36. J. Larrauri, «A new Algorithm for Lossless Compression applied to two-dimensional Static Images». 37. J. Larrauri e E. Kahoraho, «A new Method for Real Time Lossless Image Compression Applied to Artificial Vision». 38. K. Jia, S. Fang e S. Dun, «Fast Lossless Color Image Compressing Method Using Neural Network». 39. J. Zurada, «Introduction to Artificial Neural System». 40. «http://www.google.it/patents/US3971065,» [Online]. 41. K. Chung e Y. Chan, «A Lossless Compression Scheme for Bayer Color Filter Array Images». 42. C. Koh, J. Mukherjee e S. Mitra, «New Efficient Methods of Image Compression in Digital Cameras with Color Filter Array». 43. H. Malvar e G. Sullivan, «Progressive-to-Lossless Compression of Color-Filter-Array Images using Macropixel Spectral-Spatial Transformation». 44. C. Flint, «Determining optimal medical image compression: psycometric and image distortion analysis». 45. J. Janet, D. Mohandass e S. Meenalosini, «Lossless Compression Techniques for Medical Images in Telemedicine». 46. AA.VV., «Astronomical Image Compression Based on Noise Suppression». 47. T. Lin e P. Hao, «Compound Image Compression for Real-Time Computer Screen Image Transmission». 27 Progetto 3D CloudWiz | ATI NICE - DIEE 48. AA.VV., «Block-based Fast Compression for Compound Images». 49. C. Taskin e S. Sarikoz, «An Overview of Image Compression Approaches». 50. H. Cai e J. Li, «Lossless Image Compression with Tree Coding of Magnitude Levels». 51. B. Aiazzi, S. Baronti e L. Alparone, «Near Lossless Image Compression By Relaxation Labeled Prediction». 52. B. Aiazzi, S. Baronti e L. Alparone, «Lossless Image Compression Based on a Fuzzy-Clustered Prediction». 53. S. Qian, A. Hollinger e Y. Hamiaux, «Study of Real Time Lossless Data Compression for Hyperspectral Imagery». 54. M. Ciavarella e A. Moffat, «Lossless Image Compression Using Pixel Reordering». 55. AA.VV., «Lossless Image Compression». 56. M. Bhammar e K. Mehta, «Survey of Various Image Compression Techniques». 57. M. Groach e A. Garg, «DCSPIHT: Image Compression Algorithm». 58. M. Ashok e T. Reddy, «Color image compression based on Luminance and Chrominance using Binary Wavelet Transform and Binary Plane Technique». 59. N. Salam e R. Nair, «An Optimized Real Time Image Codec for Image Data Transmission and Storage». 60. A. Kaushik e M. Gupta, «Analysis of Image Compression Algorithms». 61. M. Allam e E. Abdel-Ghaffar, «JPEG2000 Performance Evaluation». 28 Progetto 3D CloudWiz | ATI NICE - DIEE Compressione di immagini generiche a contenuto eterogeneo (compound images) Gli algoritmi di compressione illustrati finora applicano lo stesso algoritmo di compressione su tutto il dato. Questi però, non sono ottimali però nell'applicazione verso le compound image. Queste ultime sono immagini a contenuto eterogeneo ovvero possono essere composte da diverse aree contenenti testo, immagini grafiche o fotografie naturali. Due tipici esempi di compound image sono l'immagine visualizzata nello schermo di un computer ed il sito web di un giornale, nella figura seguente viene mostrato un semplice esempio. La compressione di una compound image si basa sul fatto che vengano individuate le varie 29 Progetto 3D CloudWiz | ATI NICE - DIEE componenti/classi che compongono l'immagine, le quali verranno codificate separatamente tramite un apposito algoritmo di compressione, differente per ciascuna componente/classe. Nella prossima sezione verranno presentati i principali approcci proposti in letteratura per compiere la segmentazione delle compound image. Metodi di segmentazione delle componenti di un'immagine Come accennato poco sopra, il primo step da effettuare nella compressione delle compound image è la classificazione dell'immagine, ovvero l'individuazione di tutte le componenti che costituiscono la compound image. In relazione a tale classificazione esistono numerosi approcci di cui i più utilizzati sono i seguenti: Approccio a oggetti Approccio a layer Approccio a blocchi Approccio ibrido Approccio ad oggetti L’approccio a oggetti si propone di suddividere l’immagine in regioni, a loro volta divisibili in oggetti caratterizzati da bordi perfettamente definiti. Gli oggetti possono essere lettere, fotografie o elementi grafici. Questo approccio dovrebbe offrire un ottimo rapporto di compressione, in quanto una volta selezionato correttamente l’oggetto, esso può essere compresso con l’esatto algoritmo adatto al caso, senza considerare casi in cui la segmentazione non avvenga correttamente. In pratica la codifica dei bordi delle oggetti risulta essere piuttosto complessa, rendendo poco vantaggioso questo metodo in quanto fortemente dipendente dallo stato dell'arte attuale delle tecniche di segmentazione automatica. Approccio a layer In questo approccio l'immagine composita viene suddivisa in piani contenenti delle porzioni dell'immagine di partenza. La ricostruzione avviene attraverso degli layer specifici detti maschere. Dal punto di vista teorico l'immagine composita può essere suddivisa in un numero di layer che può dipendere dalla specifica applicazione. Uno dei metodi più diffusi è quello del Mixed raster 30 Progetto 3D CloudWiz | ATI NICE - DIEE content (MRC) [1] nel quale l'immagine di partenza viene suddivisa nei seguenti layer: 1) Foreground 2) Mask 3) Background Un semplice esempio può chiarire come viene suddivisa l'immagine composita e come viene ricostruita nella figura successiva, dove abbiamo un'immagine contenente una porzione di testo di colore rosa e un'immagine pittorica nella fattispecie un fiore bianco. Queste tipologie di contenuto sono inserite in uno sfondo azzurro, secondo l'approccio MRC l'immagine viene suddivisa in tre piani: il primo strato di foreground è costituito da un piano di colore rosa che quindi conserva l'informazione relativa al colore delle parti di testo. Esempio di approccio MRC La maschera è costituita invece da un piano di sfondo bianco con un testo di colore nero che quindi conserva l'informazione relativa al testo contenuto nell'immagine di partenza. Infine lo strato dello sfondo è costituito da un piano di colore azzurro nel quale è inserita la componente pittorica, di conseguenza tale strato conserva l'informazione relativa alla parte pittorica e allo sfondo. I tre layer ottenuti possono essere quindi compressi separatamente e la ricostruzione può essere effettuata attraverso la seguente relazione: I(i, j) = Msk(i, j)FG(i, j) + (1 − Msk(i, j))BG(i, j) Dove Msk è la maschera contenente il testo mentre FG e BG sono rispettivamente il background e il foreground. 31 Progetto 3D CloudWiz | ATI NICE - DIEE La particolare scelta di assimilare l'informazione del colore dello sfondo con la componente derivante dalle immagini pittoriche deriva dal fatto che la compressione di tali tipologie di contenuto può avvenire impiegando un singolo compressore. E' importante soffermarsi su questo aspetto in quanto l'adattamento tra la tipologia di contenuto del singolo strato ed il metodo di compressione da utilizzare per codificarlo risulta fondamentale in questo metodo.. In particolare lo scarso adattamento tra metodo di compressione e tipo di dato gestito può comprometterne l'efficacia, infatti a seconda della stratificazione adottata può capitare che oggetti di tipo diverso possano risiedere nel medesimo strato che viene compresso attraverso un singolo metodo di compressione che di fatto risulterà efficace sulla gestione di un solo tipo di contenuto. Risulta quindi importante scomporre l'immagine in tipologie di contenuto aventi caratteristiche tali da sfruttare al meglio le peculiarità dei diversi algoritmi di compressione a disposizione, senza dimenticare che abbiamo un grado di libertà derivante dalla possibilità di adottare una stratificazione più o meno profonda. Tale stratificazione ci consente di gestire il giusto contenuto col giusto metodo di compressione ma va comunque considerato che una suddivisione dell'immagine di partenza in un numero eccessivo di layer incrementa la complessità e acuisce un altro aspetto derivante dal fatto che aumentare a dismisura il numero di layer aumenta anche la ridondanza derivante dalla presenza simultanea di componenti dell'immagine originale in layer diversi . Approccio a blocchi Nella classificazione a blocchi l'immagine di partenza viene analizzata in blocchi di dimensioni prefissata. Ciascun blocco componente conterrà al suo interno dei punti appartenenti a: testo, immagini e componenti grafiche. Quindi ciascun blocco subisce un processo di classificazione nel quale ciascun pixel viene assegnato ad una tipologia specifica di contenuto. Tale metodo di classificazione ha quindi l'obbiettivo di identificare le diverse regioni che costituiscono l'immagine composita. In figura viene mostrato un semplice esempio nel quale si vede chiaramente come l'obbiettivo della segmentazione sia quello di identificare e separare le regioni dell'immagine di partenza in 32 Progetto 3D CloudWiz | ATI NICE - DIEE base al contenuto. Esempio di approccio a blocchi La conseguenza diretta di tale classificazione è la possibilità di comprimere ciascun tipo di contenuto con un metodo di compressione specifico consentendo una buona conservazione del contenuto informativo di partenza. In modo più specifico la classificazione a blocchi ha il vantaggio di presentare dei metodi di segmentazione tipicamente poco complessi e un buon adattamento tra metodo di compressione e contenuto gestito. Lo svantaggio fondamentale risiede nella decomposizione dell'immagine di partenza in blocchi che non presentano una forma rettangolare e che di conseguenza non consento l'utilizzo di metodi compressione standard, che tipicamente sono studiati per gestire immagini rettangolari, a meno di apportare delle modifiche per questo metodo specifico. Il metodo di classificazione a blocchi rappresenta una buona scelta quando si vogliano costruire dei compressori, per immagini composite, a bassa complessità. Approccio ibrido I metodi di classificazione basati sull'uso congiunto del metodo a blocchi e di quello a layer risultano relativamente recenti. Un esempio di approccio ibrido è quello proposto in [2]. Il metodo consiste in un primo passo di classificazione dell'immagine secondo l'approccio a blocchi, in particolare i blocchi vengono classificati in: Sfondo 33 Progetto 3D CloudWiz | ATI NICE - DIEE Testo Grafica Immagini pittoriche Contenuto misto (overlap) I blocchi con contenuto misto subiscono un processamento secondo il modello a layer. La sfida maggiore è ovviamente quella derivante dal blocco di sovrapposizione per il fatto che contiene contenuti differenti e, quindi, risulta più complessa la gestione in fase di compressione. In definitiva, tale metodo accomuna le caratteristiche salienti dei metodi di classificazione che lo compongono e di fatto può rappresentare un miglioramento rispetto a singoli approcci. Algoritmi proposti in letteratura In questa sezione verranno mostrate delle applicazioni in relazione ai metodi di segmentazione analizzati nella precedente sezione, in particolare si cercherà di dare una valutazione di ciascun metodo in modo da collocarlo in uno specifico ambito applicativo. Metodi a blocchi Per prima cosa analizzeremo i metodi proposti in [3], [4] e [5] nei quali viene applicata la classificazione a blocchi. L’approccio consiste nella suddivisione dell’immagine in un elevato numero di blocchi rettangolari, i quali verranno quindi singolarmente valutati e classificati come blocchi di testo, blocchi grafici o blocchi contenenti un’immagine naturale. Il processo di classificazione dei blocchi viene generalmente svolto utilizzando tre metodi: Conteggio dei colori DCT (Discrete cosine transform) Istogramma Shape primitive extraction and coding L'approccio proposto nel 2005 da Tony Lin et al. [3] sfrutta l'analisi a blocchi ed un nuovo algoritmo chiamato SPEC (Shape primitive extraction and coding). In particolar modo il sistema ottiene una segmentazione iniziale effettuando il conteggio dei colori in blocchi di 16x16 pixel, e classificando preliminarmente i blocchi come blocchi di testo o grafici nel caso in cui il numero dei 34 Progetto 3D CloudWiz | ATI NICE - DIEE colori sia minore di una soglia T1 (gli autori utilizzano 32 come soglia), in caso contrario, il blocco verrà classificato come blocco fotografico. Viene quindi generato un indice di un byte che viene associato ai blocchi di testo o grafici. Questa classificazione preliminare risulta essere estremamente rapida, nonostante alcuni blocchi pittorici siano talvolta catalogati come blocchi grafici e viceversa. Per questo motivo viene effettuata una seconda segmentazione di rifinitura, in cui verranno separati i blocchi testuali o grafici erroneamente classificati come blocchi pittorici. Non viene effettuata la rifinitura per blocchi pittorici classificati come testi, poiché essi non sono normalmente numerosi, e si tratterebbe solo di una perdita di prezioso tempo computazionale. I blocchi di tipo testuale/grafico vengono quindi analizzati tramite lo SPEC, algoritmo che consente di rilevare forme caratterizzate dallo stesso colore. Queste forme verranno analizzate in termini di grandezza e colore per rilevare possibili elementi testuali o grafici e spostarli quindi fra i blocchi appositi. Il seguente schema a blocchi riassume il funzionamento dell’algoritmo SPEC. 35 Progetto 3D CloudWiz | ATI NICE - DIEE I risultati ottenuti da questo algoritmo sono interessanti, sia in termini di tempo impiegato a comprimere e decomprimere le immagini, sia in termini di grandezza del file compresso e di qualità secondo quanto riportato nell’articolo. Due tabelle sono riportate per illustrare i risultati ottenuti su dieci “Compound Image”. Per dimostrare la qualità visiva ottenuta dall’algoritmo SPEC viene inoltre riportato nella prossima figura un paragone fra un’immagine compressa tramite lo SPEC e diversi altri algoritmi. 36 Progetto 3D CloudWiz | ATI NICE - DIEE Porzione dell'immagine originale (a), compressa tramite JPEG (b), JPEG-2000 (c), DjVu (d), SPEC (e). [3] Improved block based segmentation and compression techniques for Compound Images L'approccio presentato in [4] esegue un'analisi a blocchi basata sulla DCT. In particolare una volta divisa l’immagine in blocchi, viene effettuata la trasformata su ogni blocco singolarmente, e viene calcolata una variabile chiamata energia dei coefficienti AC (alternate current) nel seguente modo: 37 Progetto 3D CloudWiz | ATI NICE - DIEE Dove Ys,i è il coefficiente AC del blocco i-esimo. Una volta calcolato tale valore, se esso dovesse essere minore di una certa soglia, il blocco viene classificato come blocco “regolare”, ovvero un blocco in cui è presente lo sfondo dell’immagine. Viceversa, il blocco sarà considerato “non regolare”, e tramite un seguente procedimento di clustering può essere classificato come blocco di testo/grafico o blocco immagine. Block-based fast compression for Compound Images Un metodo, basato su istogramma, è stato proposto da WenpengDing et al. [5] e viene definito BFC (Block-based fast compression). Anche in questo metodo l’immagine viene suddivisa in blocchi da 16x16 pixel, i quali vengono poi processati per fornire un istogramma raffigurante il gradiente dei pixel del blocco. In particolar modo, i gradienti vengono suddivisi in base al loro modulo fra “lowgradient”, “mid-gradient” e “high-gradient”. Un esempio è illustrato nella seguente figura: Esempio di istogramma di blocco di testo[sinistra], blocco immagine [centro] e blocco ibrido [destra]. Una volta calcolati gli istogrammi, i blocchi potranno essere suddivisi in quattro categorie: blocchi “regolari”, blocchi di testo, blocchi immagine e blocchi ibridi. Nel caso dei blocchi “regolari”, l’istogramma sarà caratterizzato principalmente da “low-gradient”. I blocchi di testo avranno dei picchi nel “low-gradient” e nel “high-gradient”, quelli immagine avranno alti valori di “mediumgradient” e “low-gradient”, mentre i blocchi ibridi avranno entrambe le caratteristiche dei blocchi di testo e dei blocchi immagine. Una volta classificati i blocchi, essi vengono compressi tramite un algoritmo specifico asseconda del tipo di blocco. Per quanto riguarda i blocchi “regolari”, essi sono caratterizzati normalmente da un colore che compare con maggior frequenza, il quale viene 38 Progetto 3D CloudWiz | ATI NICE - DIEE codificato aritmeticamente, e che riempirà il blocco. Nei blocchi di testo vengono invece rilevati i quattro colori più frequenti, ed allo stesso modo vengono codificati aritmeticamente, riportando gli altri pixel con simile colore ad essi. I blocchi immagine vengono compressi tramite JPEG, mentre quelli ibridi richiedono un algoritmo specifico basato sulla wavelet di Haar, i cui coefficienti vengono poi compressi algoritmicamente. I rapporti di compressione ottenuti da questo metodo sono molto elevati, e decisamente migliori di altri algoritmi tradizionali, non adatti alle “Compound image”. Nella seguente tabella sono riportati i risultati ottenuti dagli autori in termini di fattore di compressione. Paragone fra il metodo proposto ed altri metodi di compressione tradizionali. [5] Metodi a layer Il metodo proposto in [6], A Layer-based Segmentation Method for Compound Images , si basa sull'applicazione di filtri per immagini e di operatori morfologici con lo scopo di estrarre il testo contenuto in immagini composite, in particolare il metodo è concepito per estrarre il testo da scansioni o riviste. A tale scopo viene impiegato il metodo MRC (MixedContentRaster), descritto nei paragrafi introduttivi di questa relazione, che estrae il testo contenuto nell'immagine di partenza separandola in tre layer: background, foreground e text mask. I passaggi essenziali effettuati dal metodo per estrarre i tre layer sono i seguenti: 1. L'immagine di partenza viene convertita in scala di grigi. 2. Viene applicato un filtro di Wiener per eliminare rumore di fondo (caso tipico delle scansioni). 3. Applicazione all'immagine di partenza del binarizzatore di Sauvola che mette in risalto il 39 Progetto 3D CloudWiz | ATI NICE - DIEE testo. 4. Applicazione all'immagine di partenza dell'operatore di Prewitt che cattura i bordi delle lettere per ottenere le regioni in cui si trova il testo. 5. Viene applicata un'operazione di dilatazione per aumentare le dimensioni delle aree nel quale è situato il testo. 6. Vengono applicate delle regole tese ad eliminare aree erroneamente classificate come testo. 7. Si svolge un'operazione di AND tra l'immagine al punto 3 e quella al punto 6 per estrarre la maschera di testo. 8. L'immagine ottenuta al punto 7 subisce una closing. 9. L'immagine al punto 8 subisce un ulteriore processo di filtraggio analogo a quello eseguito al punto 6. 10. L'immagine al punto 9 viene posta in AND con quella del punto 3 per riestrarre il testo. 11. Viene infine applicato un algoritmo di riempimento. In viene mostrato lo schema di principio dell'algoritmo. Le capacità di classificazione dell’algoritmo sono state valutate in [6] in termini di recall e precision: Il primo indice (recall rate) rappresenta il tasso di testo rilevato correttamente fra quello presente 40 Progetto 3D CloudWiz | ATI NICE - DIEE nelle immagine. Il secondo indice (precision rate) invece rappresenta il tasso di testo rilevato correttamente fra tutto il testo identificato dall’algoritmo . In tabella viene mostrato un estratto delle prestazioni dell'algoritmo proposto comparato col metodo DjVu in relazione agli indici qualitativi. L'algoritmo mostra delle prestazioni paragonabili al metodo allo stato dell'arte DjVu. Il metodo proposto può essere collocato probabilmente in ambiti applicativi dove non risulta stringente la specifica sulla velocità di calcolo e dove possa comunque essere gestita una complessità computazionale elevata derivante dai numerosi passi che l'algoritmo compie per effettuare la classificazione. Metodi ibridi Come esempio di metodo imbrido viene di seguito riportato l'approccio proposto in [2]: Enhanced Hybrid Compound Image Compression Algorithm Combining Block and Layerbased segmentation. Il metodo può essere descritto in due passi fondamentali. Nel primo passo i blocchi di immagini vengono classificati in cinque classi fondamentali secondo l'approccio a blocchi. Le cinque classi sono le seguenti: Sfondo Testo Grafica Immagini pittoriche Contenuto misto (overlap) Lo schema di segmentazione può essere rappresentato attraverso il seguente schema a blocchi. 41 Progetto 3D CloudWiz | ATI NICE - DIEE Il blocco di overlap che presenta caratteristiche ibride, ossia contiene testo e immagini che la segmentazione non ha separato, viene a sua volta processato attraverso il metodo di classificazione a layer impiegando lo schema classico a tre livelli proposto in [1]. Lo schema di segmentazione applicato per i blocchi di overlap può essere rappresentato dal seguente schema. Il metodo ibrido è stato valutato in base alle seguenti metriche di prestazione: Rapporto di compressione Tempo di compressione /decompressione Rapporto segnale rumore di picco Di seguito mostriamo un estratto dei risultati ottenuti dall'algoritmo proposto. Nella prima tabella viene mostrata la prestazione in termini di rapporto di compressione. 42 Progetto 3D CloudWiz | ATI NICE - DIEE Si nota come il metodo proposto (Model 2) abbia prestazioni paragonabili se non superiori agli altri metodi. Nella seguente tabella viene mostrata la prestazione del metodo in relazione al rapporto segnale rumore di picco. I valori ottenuti sono decisamente in linea con quelli degli altri algoritmi. Nella seguente tabella viene mostrata la valutazione dell'algoritmo in termini di tempi di compressione e decompressione. E' evidente che il metodo di compressione proposto presenta dei tempi di compressione/decompressione paragonabili agli altri metodi presi in considerazione. Tali valori vanno analizzati in relazione alla qualità visiva e in particolare possiamo notare che a parità di tempi di calcolo il metodo proposto produce dei buoni risultati soprattutto in termini di rapporto segnale rumore di picco. 43 Progetto 3D CloudWiz | ATI NICE - DIEE In definitiva possiamo dire che il metodo presenta delle prestazioni significative che gli consentono di essere impiegata efficacemente nell'ambito della compressione delle immagini composite. Conclusioni In questa sezione sono stati analizzati i principali metodi presenti in letteratura inerenti la compressione delle compound image. Risulta impossibile effettuare una comparativa accurata di tutti i metodi dato che ogni implementazione è stata testata dai rispettivi autori su piattaforme di calcolo diverse e su dataset non omogenei, nonostante ciò si possono fare alcune considerazioni. I metodi basati sulla classificazione a blocchi presentano probabilmente le prestazioni migliori in termini di velocità di calcolo e di flessibilità in relazione all'utilizzo di svariati schemi di codifica. I metodi basati sulla classificazione a layer presentano buone prestazioni dal punto di vista della qualità complessiva dell'immagine compressa ma soffrono di un'elevata complessità e dello scarso adattamento tra metodo di compressione e tipo di contenuto gestito. I metodi ibridi rappresentano un valido compromesso dei due approcci appena descritti. Bibliografia 1. de Queiroz, R., Buckley, R., Xu, M., “Mixed Raster Content (MRC) model for compound image compression”, Corporate Research& Technology, Xerox Corp., 1999. 2. Maheswari, D., Radha, V., “Enhanced Hybrid Compound Image Compression algorithm 44 Progetto 3D CloudWiz | ATI NICE - DIEE combining block and layer-basedsegmentation”, Springer, 2011. 3. Lin, T., Hao, P., “Compound Image compression for real-time computer screen image transmission”, IEEE Transactions on Image Processing, Vol. 14, No. 8, 2005. 4. Maheswari, D., Radha, V., “Improved block based segmentation and compression techniques for Compound Images”, International Journal of Computer Science &Engineering Technology, 2010. 5. Ding, W., Liu, D., He, Y., Wu, F.,“Block-based fast compression for Compound Images”, IEEE International Conference on Multimedia and Expo, 2006. 6. Mtimet, J., Amiri, H., “A layer-based segmentation method for compound images”, IEEE 10th International Multi-Conference on Systems, Signals&Devices (SSD), 2013. 7. Yang, H., Fang, Y., Yuan, Y., Lin W., “Subjective quality evaluation of compressed digital compound images”,Elsevier, 2014. 8. Wang, Z., Bovik, A., C., Sheikh, H., R., Simoncelli, E., P., “Image quality assessment: from error visibility to structural similarity”, IEEE Transactions on Image Processing, Vol. 13, No. 4, 2004. 9. Said, A. (2004) Compression of compound images and video for enabling rich media in embedded systems, PIE/IS&T Visual Communications and Image Processing Conference, SPIE Proc. Vol. 5308, Pp. 69-82. (2004). 10. Wong, T.S., Bouman, C.A. and Pollak, I. Improved JPEG decompression of document images based on image segmentation, Proceedings of the 2007 IEEE/SP 14th Workshop on Statistical Signal Processing, IEEE Computer Society, Pp. 488-492. (2007) 11. Li, X. and Lei, S Block-based segmentation and adaptive coding for visually lossless compression of scanned documents, Proc. ICIP, VOL. III, PP. 450-453 (2001). 12. Amir Said and Alex Drukarev, Simplified Segmentation for Compound Image Compression, 1999 13. Ricardo L. de Queiroz, Zhigang Fan, and Trac D. Tran, Optimizing Block-Thresholding Segmentation for Multilayer Compression of Compound Images,IEEE TRANSACTIONS ON 45 Progetto 3D CloudWiz | ATI NICE - DIEE IMAGE PROCESSING, VOL. 9, NO. 9, SEPTEMBER 2000 14. Wenpeng Ding,Yan Lu Feng Wu, ENABLE EFFICIENT COMPOUND IMAGE COMPRESSION IN H.264/AVC INTRA CODING, IEEE 2007 15. Alexandre Zaghetto and Ricardo L. de Queiroz, Segmentation-Driven Compound Document Coding Based on H.264/AVC-INTRA, IEEE TRANSACTIONS ON IMAGE PROCESSING, VOL. 16, NO. 7, JULY 2007 16. Amir Said, Compression of Compound Images and Video for Enabling Rich Media in Embedded Systems, Hewlett-Packard Laboratories, 2004 17. B.-F. Wu, C.-C. Chiu and Y.-L. Chen, Algorithms for compressing compound document images with large text/background overlap, IEE Proc.-Vis. Image Signal Process., Vol. 151, No. 6, 2004 18. Masashi Nakao, Masaki Kita, Haifeng Chen, Masayuki Miyama, An 8 ms Delay Real-time Image Transmission System for Remote Desktop, SID 2008 19. D.Maheswari , V.Radha, Comparison of Layer and Block Based Classification in Compound Image Compression, (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 2 (2) , 2011, 888-890 20. V.Radha, D.Maheswari, Secured Compound Image Compression Using Encryption Techniques, Proceedings of the World Congress on Engineering and Computer Science 2011 Vol I, WCECS 2011, October 19-21, 2011 46 Progetto 3D CloudWiz | ATI NICE - DIEE Metriche per il confronto fra algoritmi di compressione di immagini Per valutare in maniera adeguata gli algoritmi di compressione che saranno analizzati si farà riferimento ad alcuni parametri specifici. In letteratura sono presenti alcuni parametri universalmente riconosciuti ed accettati che sono: • rapporto di compressione (Compression Ratio); • tempo di compressione e decompressione (Compression and Decompression Time); • errore quadratico medio (Mean Squared Error – MSE); • picco del rapporto tra segnale e rumore (Peak Signal to Noise Ratio – PSNR); • indice di similarità strutturale (Structural Similarity Index – SSIM). Non tutti questi parametri sono universalmente applicabili: in particolare MSE, PSNR e SSIM misurando l’alterazione apportata all’immagine originale dall’algoritmo di compressione sono ovviamente utilizzati unicamente per le codifiche di tipo lossy o near lossless, mentre non hanno applicabilità per le codifiche di tipo puramente lossless. Compression ratio Il rapporto di compressione misura la quantità (dimensione) dei dati compressi rispetto alla quantità (dimensione) dei dati originali. Viene quindi definito come: Compression Ratio = Lunghezza dei dati originali / Lunghezza dei dati compressi come ovvio dalla formula precedente si può notare che il rapporto di compressione aumenta alla riduzione dei dati compressi. Tempo di compressione e decompressione I tempi di compressione e decompressione dell'informazione (solitamente misurati in secondi) sono l'unità di misura e confronto base al fine di valutare un sistema di compressione dell'immagine. Questi parametri mettono in evidenza il tempo richiesto dall'algoritmo / algoritmi implementati in un sistema per effettuare le operazioni di codifica e decodifica delle immagini in ingresso. 47 Progetto 3D CloudWiz | ATI NICE - DIEE Mean Squared Error – MSE L'MSE viene definito in statistica come la misura che indica la discrepanza quadratica media fra i valori dei dati osservati ed i valori dei dati stimati. Questo concetto viene declinato all'analisi delle immagini come la misura della differenza quadratica media, pixel per pixel, di due immagini di medesime dimensioni. Siano I e K due immagini di pari dimensioni, M x N, l'MSE tra le due immagini può essere definito come: Peak Signal to Noise Ratio – PSNR Il PSNR viene utilizzato per valutare la qualità dell'immagine compressa rispetto all'originale, per questo viene solitamente preso in considerazione prevalentemente per la misurazione delle prestazioni di algoritmi di compressione di tipo lossy (es. JPG). Esso, espresso in scala logaritmica di decibel, viene definito come il rapporto tra la massima potenza di un segnale e la potenza di rumore che può invalidare la fedeltà della sua rappresentazione compressa: è quindi la misura della distorsione introdotta comprimendo l'immagine originale. All'aumentare del valore di PSNR si aumenta il grado di somiglianza percepito, dal livello visivo umano, rispetto all'immagine originale. Tenendo in considerazione la formulazione dell'MSE precedentemente descritta, possiamo definire il PSNR di un'immagine come segue: Dove abbiamo indicato con R il massimo valore rappresentabile del pixel dell'immagine. Per un'immagine binaria il numeratore varrà sempre 1, per un'immagine in scala di grigi il numeratore assumerà invece il valore 255. Per immagini a colori tale definizione vale per un'unica componente. 48 Progetto 3D CloudWiz | ATI NICE - DIEE Si può quindi estendere la formulazione del PSNR ad immagini a colori come segue: Structural Similarity Index – SSIM Lo Structural Similarity Index (SSIM) è un indice utilizzato per misurare la somiglianza tra l'immagine originale e quella compressa. Viene spesso utilizzato al posto del PSNR o del MSE in quanto questi ultimi due non tengono strettamente conto della percezione dell'occhio umano. La differenza sta nel fatto che mentre PSNR e MSE stimano errori di tipo “fisico”, la brutale differenza tra i pixel delle due immagini, il SSIM valuta la degradazione dell'immagine dal punto di vista delle informazioni strutturali nel senso delle interdipendenze presenti tra pixel spazialmente vicini. SSIM viene calcolato per aree quadrate di un'immagine ed è possibile definirla, date due aree X e Y, come: dove abbiamo che σ2 è la varianza delle aree, μ è la media dei valori, σ xy è la covarianza tra i valori delle due aree ed infine C1 e C2 sono due variabili utilizzate per evitare forme indeterminate della funzione quando gli altri valori (μ2 e σ2) sono prossimi allo 0. In particolare essi sono definiti come: C1=(K1L)2 C2=(K2L)2 dove abbiamo che K1 e K2 sono due variabili avente valore molto minore di 1, tipicamente si ha il caso di K1 = 0.01 e K2 = 0.03, mentre L è il valore massimo che possono assumere i pixel (es. 255 per un'immagine in scala di grigi a 8 bit) ed è definibile quindi come: L = 2Numero di bit per pixel – 1 49 Progetto 3D CloudWiz | ATI NICE - DIEE Bibliografia 1. A. Mood, F. Graybill e D. Boes, Introduction to the Theory of Statistics. 2. Q. Huynh-Thu e M. Ghanbari, «Scope of validity of PSNR in image/video quality assessment». 3. AA.VV., «Image Quality Assessment: From Error Visibility to Structural Similarity». 50 Pattern Recognition and Applications Lab DIEE - Università di Cagliari R2.2 RELAZIONE TEST COMPARATIVO SULLE PERFORMANCE REALI DEGLI ALGORITMI DI COMPRESSIONE IN CONTESTI OPERATIVI GENERICI E PER CATEGORIE SPECIFICHE DI CONTENUTO Progetto 3D CloudWiz Progetto 3D CloudWiz | ATI NICE - DIEE Sommario Sommario..............................................................................................................................................i Obiettivo del documento......................................................................................................................1 Descrizione dell'organizzazione dei test...............................................................................................1 Test sui codec lossless..........................................................................................................................3 Codec lossless utilizzati....................................................................................................................3 Risultati degli esperimenti................................................................................................................4 Conclusioni.......................................................................................................................................9 Test sui codec lossy............................................................................................................................10 Codec lossy utilizzati......................................................................................................................10 Risultati degli esperimenti..............................................................................................................10 Analisi preliminare video con testo............................................................................................11 Analisi comparativa....................................................................................................................13 Analisi preliminare video con immagini naturali.......................................................................21 Analisi comparativa....................................................................................................................23 Analisi preliminare video composito..........................................................................................31 Analisi comparativa....................................................................................................................33 Conclusioni.....................................................................................................................................40 Test sui codec compound....................................................................................................................41 Codec compound............................................................................................................................41 Setup degli esperimenti..................................................................................................................41 Risultati degli esperimenti..............................................................................................................42 Conclusioni.........................................................................................................................................44 i Progetto 3D CloudWiz | ATI NICE - DIEE Obiettivo del documento In questo documento si illustrano i test comparativi degli algoritmi di compressione. Si partirà dai risultati del R2.1 selezionando alcune codifiche risultate maggiormente interessanti per il caso oggetto del progetto e verranno anche aggiunti anche una serie di codec lossy in quanto le reali condizioni operative, soprattutto in termini di banda, richiedono una riduzione maggiore dei byte inviabili attraverso la rete per frame inviato. In particolare come “classificatori” verranno testate le metodologie delle compound image descritte in R.2.1. Sono stati effettuati ulteriori test utilizzando classificatori specifici per la text detection oppure per l'individuazione di specifiche caratteristiche dell'imamgine con tecniche mutuate dalla scene analysis per guidare la scelta del codec a seconda del contenuto del frame/immagine. Si è scelto di non utilizzare poi questi approcci nei test estensivi riportati in questo documento in quanto le tempistiche di questi algoritmi non consentirebbero la realizzazione di un sistema il più vicino possibile al real-time dato che andrebbero ad introdurre un ritardo significativo che andrebbe ad aggiungersi alle tempistiche che saranno riportate di seguito. I test sono stati condotti esplorando la configurabilità degli algoritmi di compressione ed il loro comportamento in termini delle misure di qualità individuate nel R2.1 al variare del contesto operativo testato. 1 Progetto 3D CloudWiz | ATI NICE - DIEE Descrizione dell'organizzazione dei test Sono stati effettuati test indipendenti sulle seguenti tipologie di codec: Codec lossy Codec lossless Codec compound Gli aspetti principali considerati per la valutazione dei codec e dei metodi compositi sono: Qualità di codifica in termini di : MSSIM e PSNR Tempo di codifica, decodifica e totale Capacità di compressione I codec lossless e lossy sono stati testati sulle seguenti tipologie di contenuti: Video contenenti soltanto testo Video contenenti soltanto immagini Video compositi contenenti sia testo che immagini La valutazione dei metodi compositi è stata condotta soltanto col video composito. Le immagini impiegate per effettuare i test sono nel formato a tre canali BGR. In alcuni casi particolari è stato necessario convertire tale formato per assecondare le caratteristiche intrinseche di specifici codec. Setup degli esperimenti Tutti i metodi di codifica descritti nella precedente sezione sono stati testati su video con le seguenti caratteristiche tecniche (report R.2.3 per ulteriori dettagli): Video Testo Numero Frames Grandezza Frame Video Immagini Video Composito 700 700 700 1366 x 682 1366 x 682 1366 x 682 Tabella 1: Caratteristiche tecniche dei video Come indicato nella sezione introduttiva i fattori considerati per la valutazione sono: Tempo di codifica, decodifica e totale misurato come media sui fotogrammi che compongono ciascun video. Capacità di compressione o numero medio di volte in cui viene compressa l'immagine. Per quest'ultimo fattore si è tenuto conto della presenza di fotogrammi completamente neri 1 Progetto 3D CloudWiz | ATI NICE - DIEE derivanti da transizioni nei video. Tale caratteristica può rendere i risultati non veritieri e pertanto si è tenuto conto di ciò eliminandoli dai risultati. Tutti i test sono stati svolti in parallelo, avviando tre simulazioni per volta, su una macchina non dedicata, fornita di un processore Intel Core i7-3517U, su macchina virtuale Debian 7. 2 Progetto 3D CloudWiz | ATI NICE - DIEE Test sui codec lossless In questa sezione si descriveranno le prestazioni dei codec in grado di effettuare codifica senza perdita. L'analisi sarà incentrata sulla valutazione dei tempi di codifica, decodifica e totali nonchè sulla capacità di compressione. Verrà invece omessa la valutazione rispetto alla qualità di codifica data la natura dei codec in esame. Codec lossless utilizzati I codec lossless testati sono i seguenti: • Jpeg_LS: Lo schema di compressione dello standard JpegLS si basa su quello di Jpeg Lossless. La compressione in tal caso viene effettuata essenzialmente tramite un primo passo di predizione basato sulla codifica DPCM e da un passo costituito da una codifica entropica. In particolare lo scopo di Jpeg_LS è quella di ridurre la complessità della codifica entropica attraverso l'impiego dell'algoritmo LOCO-I . • Jpeg 2000: Jpeg2000 è un sistema di codifica lossless e lossy basato sulla tecnologia wavelet. Attualmente lo standard è composto da 14 punti. Il codec viene principalmente impiegato nella compressione di immagini e video nonchè per la compressione di informazioni volumetriche come definito nel punto 10 dello standard. • Jpeg XR: Il codec JpegXR (abbreviazione di Jpeg extendedrange) è un codec che permette di effettuare la compressione di immagini con codifica lossless o lossy. Introdotto nel 2006 dalla Microsoft, la codifica JpegXR si basa completamente sulla codifica Jpeg, ma con alcuni miglioramenti quali: compressione lossless, supporto alla codifica per tile, supporto del canale trasparenza. • LZO: Il codec LZO (Lempel – Ziv – Oberhumer), non si tratta di un codec per immagini, ma di un codec di compressione dati che permette di ottenere bassi livelli di compressione in tempi estremamente ridotti. La compressione avviene a blocchi, i quali vengono compressi grazie ad un dizionario scorrevole, utilizzando un algoritmo simile a quello della “sliding window”. Verrà utilizzato per valutare la capacità di un algoritmo pensato solo per la compressione dati in un contesto di compressione lossless di immagini. • Zrle: Il codec Zrle è un codec lossless basato sul principio di RLE (run length encoding), ovvero la compressione di sequenze di dati simili fra loro e sull’algoritmo di compressione “deflate”. La fase di compressione RLE si basa sull’individuazione di sequenze di pixel identici fra loro, che possono quindi essere compressi come il numero di pixel consecutivi ed il colore degli stessi. Per aumentare la compressione viene quindi applicato un algoritmo costituito dalla combinazione dell’algoritmo LZ77 e della codifica di Huffman. • RLE_LZO: Il codec RLE_LZO integra i codec RLE e LZO con lo scopo di migliorare la capacita complessiva di compressione. • WebP: Il codec è basato su un sistema predittivo con caratteristiche analoghe a quella utilizzata dal codec VP8 per codificare i fotogrammi chiave nei video. In fase di compressione il codec condivide alcune caratteristiche dell'algoritmo di compressione 3 Progetto 3D CloudWiz | ATI NICE - DIEE LZ77. Si è deciso di non includere i risultati del codec VP9 per i seguenti motivi: In seguito alla perdita di conversione introdotta dalla trasformazione dal formato BGR a quello YUV e viceversa, non è stato possibile riscontrare la caratteristica lossless tramite la misura delle metriche di qualità. Il codec non ha mostrato dei vantaggi rispetto ai concorrenti e pertanto non si sarebbe ottenuta alcuna indicazione significativa dall'introduzione della sua valutazione. Risultati degli esperimenti I risultati sperimentali verranno mostrati in forma tabellare, indicando i parametri di valutazione descritti nelle sezioni precedenti. Nel ambito del progetto è stato scelto di impostare la qualità di codifica di ciascun codec costruendo una mappatura (relativa) su una scala che varia da 0 a 100 come mostrato di seguito: Mappatura Qualità 0 Minima ... ... ... ... 100 Massima Ad ogni modo a parità di valore di mappatura i codec non mostrano la medesima qualità rispetto alle metriche MSSIM e PSNR, in quanto la variazione del parametro di qualità non è omogenea fra tutti i codec. Per i codec in esame la mappatura di qualità assume il seguente significato: • I codec: Jpeg_LS, Jpeg2000, JpegXR e WebP sono in grado in grado di effettuare sia codifica lossy che lossless. In questa sezione tali codec sono stati settati con la mappatura 100 che identifica la codifica senza perdita. • I codec: LZO, RLE_LZO e Zrle possono eseguire, ovviamente, soltanto codifiche lossless. In questo caso è possibile esprimere un grado di compressione da 0 a 100 che segue ha un significato diverso a seconda dell'algoritmo di compressione usato: LZO Mappatura Compressione Zip Mappatura Compressione 0 Minima 0 Massima 50 Intermedia 20 ... 40 ... 100 Massima 60 ... 80 ... 100 Minima Consideriamo in primo luogo i risultati relativi al test sul video contenente soltanto testo. La quarta colonna della tabella 2 indica il livello di compressione valutato rimuovendo i dati sul livello di compressione introdotto dai fotogrammi di transizione contenuti nel video in modo tale da avere dei valori medi di compressione più realistici. In grigio vengono indicati i codec con performance migliori, in verde le prestazioni migliori e in rosso le peggiori riscontrate. 4 Progetto 3D CloudWiz | ATI NICE - DIEE 5 Progetto 3D CloudWiz | ATI NICE - DIEE Encode Testo (ms) Codec_Jpeg_LS_100 156,897 codec_Jpeg2000_100 2030,661 codec_JpegXR_100 237,0315 codec_LZO_000 5,83376 codec_LZO_050 6,350296 codec_LZO_100 480,7578 codec_RLE_LZO_000 12,55072 codec_RLE_LZO_050 13,41644 codec_RLE_LZO_100 286,7269 codec_Webp_100 3429,253 codec_Zrle_000 181,8607 codec_Zrle_020 83,73205 codec_Zrle_040 54,82203 codec_Zrle_060 46,90518 codec_Zrle_080 36,04393 codec_Zrle_100 33,34371 Decode (ms) 144,4842 1478,033 209,7319 4,446056 4,399927 3,891319 5,148521 5,711399 5,786614 23,88109 8,683911 8,874047 8,910395 8,981062 9,179927 9,101639 Total_tim e (ms) 301,3812 3508,694 446,7634 10,27982 10,75022 484,6491 17,69924 19,12784 292,5136 3453,134 190,5447 92,60609 63,73242 55,88624 45,22385 42,44535 No Transitions Compression ratio 2,386901 4,489849 3,907942 6,20584 6,336709 8,216147 6,594978 7,081695 9,742093 16,49622 9,934391 9,881994 9,771124 9,628881 9,760488 9,556155 Tabella 2: Tabella riassuntiva codec lossles video testo Compress ratio mean 2,372665 4,466364 3,892301 6,202875 6,335569 8,223243 6,592389 7,06701 9,69826 16,48757 9,88897 9,835799 9,722819 9,582114 9,730503 9,531419 Il codec più performante dal punto di vista del tempo totale di codifica/decodifica è rappresentato da: codec_LZO_000 Come è naturale attendersi il codec LZO ottiene le sue migliori prestazioni dal punto di vista del tempo di codifica/decodifica imponendo il valore minimo di compressione essendo ottimizzato per la compressione dati e non facendo alcuna analisi sull'immagine stessa. In generale richiedere un livello di compressione maggiore comporta un aumento del tempo impiegato per effettuarla. Per quanto riguarda il codec LZO non risulta vantaggioso imporre il massimo livello di compressione dato che questo comporta un lieve miglioramento della compressione stessa a fronte di un aumento di un ordine di grandezza del tempo speso per effettuarla. Considerando la risoluzione del video e supponendo di inviare 25 fotogrammi al secondo sarebbe necessaria una risorsa di banda pari a circa: BW= 90Mbit/sec Il codec che ha mostrato le migliori prestazioni in termini di capacità di compressione é: codec_Webp_100 col livello di compressione misurato si potrebbe inviare il video con una banda pari a: BW=33.87 Mbit/sec quindi circa 1/3 di quella richiesta dal codec LZO. 6 Progetto 3D CloudWiz | ATI NICE - DIEE A fronte di tale capacità di compressione si riscontra un tempo totale di codifica/decodifica molto elevato e secondo solo a quello del codec Jpeg2000. Considerando che il tempo di decodifica mostrato da WebP è abbastanza contenuto esso si può collocare tra i codec adatti ad effettuare codifiche "offline" e che di fatto spostano la complessità della catena di compressione/decompressione verso il fornitore del servizio di streaming. Per concludere si può dire che l'integrazione di algoritmi Run Lenght Encoding con altri algoritmi di compressione non apportano migliorie significative in termini di compressione e tempo speso per effettuarla se non nel caso della combinazione codec_Zrle_100 per il quale si ha un livello di compressione maggiore di LZO_000 con tempi totali di codifica/decodifica abbastanza contenuti. Consideriamo i risultati relativi al test sul video contenente soltanto immagini naturali. Nella seguente tabella sono riportati i dati principali. Video codec_CharLS_100 codec_Jpeg2000_100 codec_JpegXR_100 codec_LZO_000 codec_LZO_050 codec_LZO_100 codec_RLE_LZO_000 codec_RLE_LZO_050 codec_RLE_LZO_100 codec_Webp_100 codec_Zrle_000 codec_Zrle_020 codec_Zrle_040 codec_Zrle_060 codec_Zrle_080 codec_Zrle_100 Encode (ms) 115,654 1096,165 275,6238 7,537492 8,025755 342,4183 13,12161 13,90665 236,1612 2433,795 99,19528 88,24164 79,67845 71,85119 57,80858 57,42856 Decode Total_time (ms) (ms) 100,6059 216,2599 860,3662 1956,531 213,5992 489,223 5,670801 13,20829 5,78367 13,80942 7,751754 350,1701 5,09813 18,21974 5,544662 19,45131 8,626229 244,7874 49,33965 2483,135 14,32377 113,519 13,5882 101,8298 13,62247 93,30093 13,79136 85,64255 14,22535 72,03393 14,75461 72,18317 No transitions Compression ratio 2,302684 10,97189 8,249279 3,697706 3,851162 6,671999 5,013473 5,258637 7,598651 15,59999 8,815354 8,747914 8,536808 8,21431 7,656403 7,503815 Tabella 3: Riassunto prestazioni test immagini naturali Compress ratio mean 69,69423 368,1858 142,7041 43,99502 44,1122 44,57947 968,51 966,848 1101,923 1412,437 1524,555 1479,565 1299,074 1073,56 774,5377 738,5948 Il codec più performante dal punto di vista del tempo totale di codifica/decodifica è rappresentato da: codec_LZO_000 Come nel caso precedente il codec LZO ottiene le sue migliori prestazioni dal punto di vista del tempo di codifica/decodifica imponendo il valore minimo di compressione. Analogamente imporre il massimo livello di compressione comporta un tempo totale di codifica/decodifica piuttosto elevato e pari a circa: 350 msec. Considerando la risoluzione del video e supponendo di inviare 25 fotogrammi al secondo sarebbe necessaria mediamente una risorsa di banda pari a : 7 Progetto 3D CloudWiz | ATI NICE - DIEE BW= 151 Mbit/sec Quindi il codec LZO comprime meno se il contenuto del video è caratterizzato da transizioni poco nette tipiche dei video privi di testo. Come per la compressione del video con solo testo il miglior codec in termini di capacità di compressione è : Webp_100 in tal caso si otterrebbe un'occupazione di banda pari a: BW= 36 Mbit/sec valore decisamente inferiore rispetto a quello mostrato da LZO seppur piuttosto elevato. Analogamente al caso descritto precedentemente WebP impiega molto tempo per effettuare la codifica rispetto alla decodifica, ma in tal caso mostra anche un tempo di decodifica non propriamente limitato. Anche in questo caso l'integrazione di differenti metodi di compressione non ha portato vantaggi significativi. Per concludere è necessario evidenziare come la capacità di compressione media valutata con e senza le transizioni sia decisamente diversa come indicato dalle ultime due colonne della Tabella 3. Consideriamo infine i risultati relativi al test sul video composito, in Tabella 4 sono state riportate le informazioni principali. Encode Compound (ms) codec_CharLS_100 151,2023 codec_Jpeg2000_100 1828,029 codec_JpegXR_100 257,3069 codec_LZO_000 5,966675 codec_LZO_050 6,353451 codec_LZO_100 370,0537 codec_RLE_LZO_000 12,41577 codec_RLE_LZO_050 13,44856 codec_RLE_LZO_100 178,511 codec_Webp_100 4543,755 codec_Zrle_000 84,73863 codec_Zrle_020 69,09967 codec_Zrle_040 60,05692 codec_Zrle_060 51,92939 codec_Zrle_080 43,29128 codec_Zrle_100 41,65115 Decode (ms) 136,598 1353,497 212,7063 4,410306 4,575433 4,795172 4,654704 5,232057 6,386386 44,97143 10,39744 10,33161 10,36764 10,22724 10,69557 10,70906 Total_tim No transitions e (ms) Compression ratio 287,8003 1,918267 3181,526 5,906544 470,0131 5,20892 10,37698 4,81994 10,92888 4,94203 374,8489 6,138201 17,07048 4,985602 18,68062 5,248601 184,8974 6,729704 4588,726 13,1683 95,13608 7,227404 79,43128 7,219542 70,42457 7,186295 62,15664 7,119092 53,98685 7,030804 52,3602 6,95526 Tabella 4: Dati riassuntivi video composito Compress ratio mean 1,922266 5,860537 5,16017 4,848007 4,969573 6,180175 5,031443 5,296671 6,79717 13,17223 7,29423 7,285679 7,25013 7,179905 7,082596 7,003254 Ancora una volta la combinazione LZO_000 rappresenta la migliore soluzione per quanto riguarda il tempo totale di codifica/decodifica. Il livello di compressione medio misurato si attesta 8 Progetto 3D CloudWiz | ATI NICE - DIEE su un valore intermedio rispetto a quelli misurati nei casi precedenti. L'occupazione di banda risulta piuttosto elevato in seguito alla bassa compressione introdotta: BW= 116 Mbit/sec Il codec WebP come nei casi precedenti mostra la migliore capacità di compressione che comporterebbe un'occupazione di banda pari a: BW= 42.4 Mbit/sec in tal caso si ottiene un valore più elevato rispetto al caso di video con solo testo o solo immagini. Conclusioni Come atteso, i codec lossless sono caratterizzati da livelli di compressione poco elevati. I codec che mostrano la migliore capacità di compressione spesso sono caratterizzati da tempi complessivi di codifica/decodifica molto elevati. In relazione ai contenuti testati non è emersa la possibilità di selezionare configurazioni particolari dato che per i tre casi considerati i codec migliori sono risultati sempre WebP e LZO. 9 Progetto 3D CloudWiz | ATI NICE - DIEE Test sui codec lossy In questa sezione si descriveranno le prestazioni dei codec che effettuano codifiche con perdita. Alcuni di essi sono anche in grado di effettuare codifiche lossless. L'analisi sarà incentrata sulla valutazione dei tempi di codifica, decodifica e totali nonchè sulla capacità di compressione. Si valuterà inoltre la qualità di codifica in relazione alle metriche PSNR e MSSIM. Codec lossy utilizzati I codec lossy testati sono i seguenti: • Jpeg_LS, Jpeg 2000, Jpeg XR e WebP descritti nella sezione lossless. • H264: L'H.264/MPEG-4 Part 10 o AVC (da Advanced Video Coding, termine inglese che tradotto letteralmente significa "codifica video avanzata"), designazione formale ISO/IEC 14496-10 o ITU-T H.264, è un formato standard di compressione video digitale con perdita creato dal Moving Picture Experts Group. Nel maggio 2003 è stata completata la stesura finale della prima versione dello standard, mentre nelle edizioni successive sono state aggiunte varie estensioni alle sue funzionalità. • TurboJpeg: è un’implementazione del codec Jpeg pensata per effettuare codifica e decodifica in tempi più rapidi, mantenendo le caratteristiche del Jpeg-lossy. • Vp8: Il 19 maggio 2010 Google, che ha acquistato On2 nel 2010, ha rilasciato VP8 come codec open source (sotto una licenza BSD-like) durante la conferenza Google I/O. Questo ha reso VP8 il secondo prodotto di On2 Technologies ad essere donato alla comunità del software libero dopo che nel 2002 rilasciò il codec VP3 (sempre sotto licenza BSD) alla Xiph.Org Foundation come codec Theora; la richiesta che ha sollecitato di più Google a rilasciare il codice sorgente di VP8 è venuta dalla Free Software Foundation, che il 12 marzo 2010 ha pubblicato una lettera aperta chiedendo a Google di rimpiazzare gradualmente l'uso di Adobe Flash Player e H.264 su YouTube con HTML5 e VP8. • Vp9: Conosciuto in precedenza come Next Gen Open Video (NGOV) o VP-Next è uno standard di compressione video aperto e libero da royalty in sviluppo da Google. Ideato come il successore di VP8, è in competizione con il codec HEVC (o anche H.265) del consorzio MPEG (parzialmente con royalty). Risultati degli esperimenti Nella presente sezione si analizzeranno i risultati degli esperimenti relativi ai codec lossy. Per ciascun tipo di video descritto nel setup degli esperimenti verrà condotta: Un'analisi preliminare: volta a dare una rappresentazione d'insieme delle prestazioni assolute di ciascun codec in relazione ai fattori di valutazione indicati nella sezione introduttiva; Un'analisi comparativa: volta ad indicare quali codec mostrano le migliori prestazioni in termini di capacità di compressione e tempo totale di codifica/decodifica. 10 Progetto 3D CloudWiz | ATI NICE - DIEE Si cercherà anche di dare un'indicazione delle prestazioni in termini di occupazione di banda. Nella sezione conclusiva viene elaborata una valutazione complessiva dei codec contestualmente al contenuto di ciascun video testato. La qualità di codifica verrà espressa in due modi differenti: 1. Metriche di qualità: MSSIM, PSNR; 2. Mappatura della qualità . Nel ambito del progetto è stato scelto di impostare la qualità di codifica di ciascun codec costruendo una mappatura su una scala che varia da 0 a 100 come mostrato di seguito: Mappatura 0 ... ... 100 Qualità Minima ... ... Massima Ad ogni modo a parità di valore di mappatura i codec non mostrano la medesima qualità rispetto alle metriche MSSIM e PSNR, quindi la mappatura indicata al punto 2 fornisce delle informazioni su come regolare ciascun codificatore per ottenere certe prestazioni, ma non consente di effettuare delle comparazioni in termini di prestazioni dal punto di vista della qualità visiva. In tal senso è necessario impiegare le metriche di qualità indicate al punto 1. Tutti i codec sono valutati al variare della qualità di codifica espressa attraverso la scala appena descritta. La qualità di codifica così configurata è stata impostata con un passo di 20 ottenendo quindi 6 campioni. Per quanto riguarda JpegLS nei grafici e nelle tabelle viene indicato col nome CharLS in riferimento all'implementazione utilizzata. Analisi preliminare video con testo Si consideri come punto di partenza l'analisi dei codec rispetto alle prestazioni migliori e peggiori in termini di: tempo di codifica, decodifica e totale, PSNR, MSSIM, capacità di compressione in funzione della mappatura di qualità indicata nella sezione introduttiva. La tabella seguente mostra un quadro riassuntivo. 11 Progetto 3D CloudWiz | ATI NICE - DIEE TESTO Q=0 WORST_ENC_TIME [msec] Vp9 4866,197468 BEST_ENC_TIME [msec] TurboJpeg 15,46341917 WORST_DEC_TIME [msec] Jpeg2000 572,571372 BEST_DEC_TIME [msec] TurboJpeg 9,740526466 BEST_PSNR (dB) CharLS TurboJpeg 19,2155304 BEST_MSSIM Openh264 0,983138498 WORST_MSSIM TurboJpeg 0,743321721 BEST_COMP_RATE WebP CharLS Vp9 Q=100 Vp9 Vp9 Vp9 Vp9 WebP 4910,889399 5008,5984 TurboJpeg TurboJpeg 16,86053934 18,4164263 Jpeg2000 Jpeg2000 677,0910572 795,357588 TurboJpeg TurboJpeg 11,14854793 12,5223906 Jpeg2000 35,67017253 40,0025075 TurboJpeg TurboJpeg 24,80058591 28,101319 Openh264 Jpeg2000 0,983138498 0,99250614 TurboJpeg TurboJpeg 0,898443585 0,94084579 Vp8 51,90428284 30,842491 CharLS 8,005624283 6,71234348 Vp9 4998,078751 BEST_TOTAL_TIME Q=80 CharLS 8,828946343 WORST_TOTAL_TIME Q=60 Vp8 99,40040071 WORST_COMP_RATE Q=40 CharLS 34,13907686 WORST_PSNR (dB) Q=20 TurboJpeg 25,20394564 Vp9 5043,258524 5160,63894 TurboJpeg TurboJpeg 28,00908727 30,9388169 4937,385036 TurboJpeg 19,60868813 Jpeg2000 832,5779013 TurboJpeg 13,42586409 Jpeg2000 45,83970795 TurboJpeg 30,81686116 Jpeg2000 0,997370143 TurboJpeg 0,96095406 WebP 26,28594018 CharLS 5,655961289 Vp9 5097,612516 TurboJpeg 33,03455222 Tabella 5: Tabella analisi preliminare video testo 3565,457496 TurboJpeg 20,8637897 Jpeg2000 1018,379933 TurboJpeg 14,41834764 JpegXR 3429,25319 TurboJpeg 34,85969099 Jpeg2000 1478,032734 WebP 23,88109299 WebP 51,7316392 Openh264 34,33945173 JpegXR 99 Openh264 35,51106391 WebP 0,999201624 TurboJpeg 0,980998609 Openh264 24,36084954 CharLS 4,193758036 Vp9 3672,841376 TurboJpeg 35,28213734 1 Openh264 0,990455471 Openh264 22,02074147 CharLS 2,372665328 Jpeg2000 3508,693979 TurboJpeg 60,73680687 Alcuni codec come indicato nella penultima riga della tabella sono caratterizzati da tempi di codifica/decodifica estremamente elevati e dell'ordine delle migliaia di msec. I codec che mostrano tali caratteristiche sono: Vp9: Il codec è progettato per spostare la complessità computazionale verso il fornitore del servizio di streaming e di fatto mostra una velocità di decodifica molto maggiore rispetto a quella di codifica. Jpeg2000: Il codec mostra in generale dei tempi di codifica e decodifica molto alti probabilmente imputabili all'implementazione OpenJpeg. Il codec WebP mostra dei tempi dei codifica e decodifica in linea con quella degli altri codec. Però impostando il massimo livello di qualità si misurano tempi di codifica elevati accompagnati da tempi di decodifica contenuti. Tale comportamento non stupisce se si considera che WebP è strettamente imparentato col codec video Vp8 e che in generale tali soluzioni tendono a prediligere la velocità in decodifica piuttosto che quella in codifica. 12 Progetto 3D CloudWiz | ATI NICE - DIEE I seguenti grafici pongono in evidenza le considerazioni preliminari appena fatte, si nota che i codec Vp9 e Jpeg2000 non possono essere inseriti agevolmente all'interno dei grafici dato i tempi elevati di codifica e decodifica. Anche il codec JpegXR mostra dei tempi elevati che si attestano in valori intermedi tra i codec più lenti descritti in precedenza e i restanti codec. Figura 1: Tempo di codifica e di decodifica Figura 2: Tempo complessivo di codifica/decodifica Analisi comparativa Per definire quale soluzione può risultare più performante rispetto ad uno specifico ambito di utilizzo è necessario definire la prestazione congiunta in relazione alla qualità di codifica, la capacità di compressione e il tempo totale di codifica/decodifica. Si considera come qualità visiva accettabile quella contraddistinta da valori di MSSIM pari o superiori a 0,85. Consideriamo come primo elemento di valutazione la capacità di compressione. La figura 3 rappresenta la qualità di codifica misurata tramite la metrica MSSIM in funzione della compressione. 13 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 3: MSSIM in funzione della compressione La prima considerazione evidente è che tutti i codec tranne TurboJpeg sono caratterizzati da una qualità di codifica sempre accettabile. Risulta inoltre che la qualità di codifica cresce al decrescere della compressione, inoltre dal punto di vista puramente qualitativo risulta che alcuni codec come TurboJpeg e JpegLS avrebbero la necessità di inviare un volume di informazione maggiore a parità di qualità di codifca rispetto agli altri codec. Un altro aspetto strettamente legato alla capacità di compressione è il tempo speso per effettuarla. Tipicamente maggiore è il tempo di codifica e maggiore risulta il livello di compressione ottenuto. Tale assunzione non è sempre valida e possono verificarsi comportamenti singolari. In figura 4 viene riportato il tempo di codifica in funzione della compressione. 14 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 4: Tempo di codifica e compressione In particolare i codec Vp9, Jpeg2000 mostrano dei livelli di compressione in linea con gli altri codec ma con tempi di codifica molto elevati risultando poco efficienti sotto questo aspetto. Risulta inoltre molto evidente la massima capacità di compressione del codec WebP. Per rimarcare che non sempre un elevato livello di compressione coincide con elevati tempi di compressione si consideri il seguente grafico che mostra i codec in grado di mantenere il tempo complessivo di codifica sotto i 350 msec. Figura 5: Tempo di codifica/decodifica sotto i 150 msec 15 Progetto 3D CloudWiz | ATI NICE - DIEE Il codec H264 è caratterizzato da un tempo di codifica limitato associato ad una capacità di compressione interessante in relazione agli altri codec. La capacità di compressione massima di TurboJpeg seppur superiore a quella di H264 non garantisce un'adeguata qualità di codifica (perchè ottenuta alla qualità minima) e perciò nonostante rappresenti la migliore soluzione in termini di tempo totale di codifica/decodifca non garantisce le stesse prestazioni di H264 in relazione al livello di compressione associato ad una qualità visiva accettabile. Dal grafico precedente spicca infine il basso livello di compressione del codificatore JpegLS (nel grafico è indicato il nome dell'implementazione CharLS). In linea generale si è constatato un certo bilanciamento tra i tempi di codifica e decodifica, risulta tuttavia in alcuni codec recenti come Vp9 che il tempo di codifica sia nettamente superiore al tempo di decodifica. Tale caratteristica è volta a sbilanciare il carico computazionale verso il fornitore del servizio di streaming. Tale considerazioni risultano più evidenti grazie alla figura 7 in cui Vp9 mostra un tempo di decodifica di un ordine di grandezza inferiore rispetto a quello di codifica mostrato in figura 4. Per comodità il grafico del codec Jpeg2000 non è stato inserito dato che per esso si rileva un tempo di decodifica sopra i 350 msec. Figura 6:Tempo di decodifica Si consideri ora come fattore di valutazione il Tempo complessivo di codifica/decodifica in funzione della qualità di codifica espressa con la metrica MSSIM e rispetto alla capacità di compressione. Consideriamo in primo luogo la metrica MSSIM in funzione del tempo complessivo. 16 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 7: MSSIM in funzione del tempo complessivo Il grafico pone in evidenza l'elevato tempo complessivo dei codec: Jpeg2000, Vp9 e WebP alla massima qualità indicando quindi che il bilancio tra tempo di codifica e decodifica li rende poco efficienti a parità di qualità rispetto agli altri codec. Spicca inoltre la buona prestazione dei codec TurboJpeg e H264. Il codec TurboJpeg va comunque tarato opportunamente per evitare di essere impiegato sotto la soglia di 0.85 della metrica MSSIM. L'analisi del tempo complessivo di codifica/decodifica in funzione della compressione non porta alcuna indicazione ulteriore rispetto a quelle ottenute dall'analisi dei tempi di codifica e decodifica studiati indipendentemente. In figura viene comunque riportato il tempo complessivo di codifica/decodifica in funzione della compressione 17 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 8: Tempo complessivo in funzione della compressione Per identificare quali codec consentano il miglior compromesso in termini di compressione e tempo complessivo di codifica/decodifica si è scelto di analizzare i dati considerando quelle impostazioni dei codec che consentono di avere una qualità di codifica sempre accettabile. In tal senso per semplificare l'analisi i dati riportati nella tabella 6 si riferiscono ai valori: 60,80 e 100 della mappatura di qualità. In verde si indica la prestazione migliore, in giallo la seconda migliore prestazione e in rosso la peggiore tutte valutate al medesimo livello qualitativo impostato in ingresso. La prima considerazione che risulta evidente è che tutti i codec codificano con un livello di qualità più che accettabile e ciò deriva dal fatto che sono stati selezionati i dati relativi a settaggi della qualità di codifica medio alti. 18 Progetto 3D CloudWiz | ATI NICE - DIEE CODEC MSSIM WebP 0,988276011 0,992711963 1 Jpeg_LS 0,979449333 0,993013031 1 Turbo_Jpeg 0,96095406 0,980998609 0,999738575 Jpeg_2000 0,997370143 0,999067921 1 H264 0,987807024 0,987807024 0,990455471 Jpeg_XR 0,996610609 0,999201624 1 Vp8 0,989731445 0,994232086 0,99864824 Vp9 0,996348166 0,997994029 0,999200104 COMPRESSION T_enc (msec) T_dec (msec) Total_time (msec) 26,43783405 21,69090183 16,49622481 5,68915664 4,222444622 2,386900564 15,48237537 11,41161849 3,349650985 9,333726264 6,386746736 4,489849363 24,46221517 24,46221517 22,10713679 8,650114298 5,409043506 3,907941942 23,76972032 19,54269948 11,05812993 19,4338347 15,0409803 9,060775479 287,483691 296,3066881 3429,25319 134,577887 169,3775122 156,8970143 19,60868813 20,8637897 34,85969099 1752,139099 1741,090072 2030,661245 46,06544778 46,87347496 46,65348498 350,7531559 383,0818455 237,0314664 117,5140544 119,6816123 183,2582947 4937,385036 3565,457496 1529,878196 34,06504864 38,21110014 23,88109299 78,53231474 100,4376981 144,4842203 13,42586409 14,41834764 25,87711588 832,5779013 1018,379933 1478,032734 54,34180973 54,82239485 54,78134335 285,0714306 316,0900644 209,7319413 57,85012303 60,80127754 106,0947296 160,2274807 107,3838798 94,62571102 321,5487396 334,5177883 3453,134283 213,1102017 269,8152103 301,3812346 33,03455222 35,28213734 60,73680687 2584,717 2759,470004 3508,693979 100,4072575 101,6958698 101,4348283 635,8245866 699,1719099 446,7634077 175,3641774 180,4828898 289,3530243 5097,612516 3672,841376 1624,503907 Tabella 6: Riassunto prestazioni Analizzando i dati il miglior livello di compressione misurato è ottenuto dal codec: WebP Un livello di compressione analogo si ottiene col codec H264 che risulta più vantaggioso dato che mostra un tempo totale di codifica e decodifica nettamente inferiore. In tabella si riporta il confronto tra il codec WebP e H264. Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) WebP 26.4378 287.4836 34.0650 321.548 H264 24.462 46.065 54.341 100.407 Tabella 7: Comparativa WebP, H264 WebP risulta più prestazionale rispetto a H264 soltanto per il tempo di decodifica ma complessivamente H264 è più veloce e mostra dei livelli di compressione e di qualità percepita in linea con WebP. 19 Progetto 3D CloudWiz | ATI NICE - DIEE Il codec più prestazionale dal punto di vista del tempo di codifica/decodifica è: TurboJpeg Il secondo codec più veloce è H264 che risulta comunque tre volte più lento rispetto a TurboJpeg. In tabella si riporta un breve confronto tra i due codec. Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) TurboJpeg 15.482 19.608 13.425 33.04 H264 24.464 46.065 54.341 100.407 Tabella 8: Comparativa TurboJpeg, H264 TurboJpeg risulta più vantaggioso se si predilige una maggiore velocità di codifica/decodifica. Il livello di compressione medio seppur inferiore a quello mostrato da H264 risulta comunque interessante. Dal punto di vista della qualità percepita entrambi i codec mostrano un MSSIM ben al di sopra di 0.85 al quale corrisponde una qualità visiva più che soddisfacente. Per completare l'analisi si considerino i valori medi minimi e massimi del bitrate di ciascun codec mediati su tutti i possibili valori di qualità impostabili. La tabella seguente riassume i risultati ottenuti. Codec WebP Jpeg_LS Turbo_Jpeg Jpeg_2000 H264 Jpeg_XR Vp8 Vp9 Bitrate_min (Mbit/sec) 5,56482226 62,72643029 9,244235956 12,81654758 20,58411649 20,58804006 10,68014459 13,31146339 Bitrate_max (Mbit/sec) 33,88455276 234,181184 166,8732661 124,495758 25,28446833 143,03365 50,54807669 61,69087859 Bitrate_mean (Mbit/sec) 14,34863827 93,07028927 24,48116847 32,65835467 21,99253125 44,76339511 17,64293967 21,72860718 Tabella 9: Stima dell'occupazione di banda per tutte le qualità impostabili La tabella da un'indicazione generale dell'allocazione di banda per ciascun codec in esame. Ad ogni modo dato che per questa analisi si stanno considerando tutti i possibili valori di qualità impostabili risulta che tali valori si riferiscono anche a qualità di codifica percepite non accettabili. Per qualità percepite che vanno da livelli accettabili al massimo disponibile otteniamo i seguenti risultati: 20 Progetto 3D CloudWiz | ATI NICE - DIEE Codec WebP Jpeg_LS Turbo_Jpeg Jpeg_2000 H264 Jpeg_XR Vp8 Vp9 Bitrate_min (Mbit/sec) 18,46260308 82,7641117 29,19617288 36,97539988 20,58411649 43,08464106 18,00298697 20,83270081 Bitrate_max (Mbit/sec) 33,88455276 234,181184 166,8732661 124,495758 25,28446833 143,03365 50,54807669 61,69087859 Bitrate_mean (Mbit/sec) 23,56011118 117,3546373 45,27070492 63,28958429 22,77157418 72,26279965 26,17526987 31,77447069 Tabella 10: Stima dell'occupazione di banda per qualità di codifica medio alte Come si nota i valori minimi sono aumentati è ciò sta ad indicare che per ottenere una qualità percepita sufficiente è necessario spedire una quantità maggiore di informazione. In definitiva se lo scopo è ottenere dei forti valori di compressione è consigliabile l'utilizzo del codec H264, se invece è necessario codificare e decodificare un video ad elevata velocità è consigliabile l'utilizzo del codec TurboJpeg. Analisi preliminare video con immagini naturali Si considerino i dati preliminari mostrati nella seguente tabella riassuntiva. I medesimi codec, che nel caso di codifica di video con testo hanno mostrato tempi di codifica/decodifica elevati , mostrano lo stesso comportamento anche per il contenuto video con immagini naturali. VIDEO WORST_ENC_TIME [msec] BEST_ENC_TIME [msec] WORST_DEC_TIME [msec] BEST_DEC_TIME [msec] BEST_PSNR (dB) WORST_PSNR (dB) BEST_MSSIM WORST_MSSIM BEST_COMP_RATE Q=0 Q=20 Q=40 Q=60 Q=80 Q=100 Vp9 Vp9 Vp9 Vp9 Vp9 Vp9 2672,641185 3007,92423 3346,342851 3751,653657 4142,033323 3195,400976 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 15,74966524 15,35433476 15,52912589 15,37437053 15,96541917 27,79412303 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 399,9048541 408,9278441 430,8044592 496,686289 614,1991574 860,3661831 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 9,367221745 9,394606581 9,757404864 9,872788269 10,49788841 17,73095708 Openh264 Openh264 Vp9 JpegXR JpegXR WebP 43,6484677 43,6484677 46,02464432 51,96718945 56,75624662 99 Jpeg2000 Jpeg2000 Jpeg2000 CharLS Openh264 Openh264 23,44511458 30,20765771 37,15785421 40,31535894 44,89831222 45,4600948 Openh264 JpegXR JpegXR JpegXR JpegXR WebP 0,958276824 0,963646627 0,980521771 0,991885608 0,996723066 1 Jpeg2000 CharLS CharLS CharLS CharLS Openh264 0,615877452 0,726387179 0,771552977 0,823444509 0,929148383 0,972007908 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 WebP 11643,67248 7140,652411 4571,602682 3735,00235 2772,697849 1412,437439 21 Progetto 3D CloudWiz | ATI NICE - DIEE WORST_COMP_RATE WORST_TOTAL_TIME BEST_TOTAL_TIME TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 102,8933092 82,77233872 72,32501731 65,17482235 54,62475047 27,29451626 Vp9 Vp9 Vp9 Vp9 Vp9 Vp9 2747,966906 3095,228422 3439,849584 3849,857227 4250,259044 3367,759897 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 25,11688698 24,74894134 25,28653076 25,2471588 26,46330758 45,52508011 Tabella 11: Tabella analisi preliminare video immagini naturali Analogamente al caso considerato nella sezione precedente i codec Vp9 e Jpeg2000 risultano difficili da inserire nei grafici relativi al tempo di codifica e decodifica come mostrato dalle figure 9 e 10. Anche il codec JpegXR mostra dei tempi di codifica e decodifica elevati che si attestano in valori intermedi tra i codec più lenti appena descritti e i restanti codec. Il codec WebP mostra dei tempi di codifica/decodifica molto elevati e paragonabili a quelli di vp9 e Jpeg2000 quando si imposta la massima qualità di codifica. Figura 9: Tempo di codifica e decodifica 22 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 10: Tempo complessivo di codifica/decodifica Analisi comparativa Per definire quale soluzione può risultare più performante rispetto ad uno specifico ambito di utilizzo è necessario definire la prestazione congiunta in relazione alla qualità di codifica, la capacità di compressione e il tempo totale di codifica/decodifica. Si considera come qualità visiva accettabile quella contraddistinta da valori di MSSIM pari o superiori a 0.85. Consideriamo come primo elemento di valutazione la capacità di compressione. Il seguente grafico rappresenta la qualità di codifica misurata tramite la metrica MSSIM in funzione della compressione. 23 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 11: MSSIM e Compressione Risulta piuttosto evidente che per il contenuto video con immagini naturali Jpeg2000 mostra una capacità di compressione molto alta rispetto agli altri codec per il quale non risulta agevole la visualizzazione. Per un analisi più semplice si può considerare il seguente grafico che riporta una porzione del grafico precedente. Un altra informazione che risulta evidente dalla figura 11 è data dal fatto che alcuni codec mostrano una qualità di codifica non sempre accettabile. I codec con tale caratteristica sono : Jpeg2000, Turbojpeg, e JpegLS. Nel caso di compressione di video con testo soltanto TurboJpeg mostrava un MSSIM sotto la soglia di 0,85. 24 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 12: Compressione[0-600] & MSSIM [0.85-1] In generale l'andamento qualitativo dei codec mostrati è molto simile. Soltanto JpegLS e TurboJpeg mostrano a parità di MSSIM rispetto agli altri codec un capacità di compressione inferiore. Un altro aspetto strettamente legato alla capacità di compressione è il tempo speso ad effettuarla. In figura viene riportato il livello di compressione in funzione del tempo di codifica. Figura 13: Tempo di codifica e compressione 25 Progetto 3D CloudWiz | ATI NICE - DIEE L'analisi risulta più agevole considerando i codec più veloci riportati nella seguente figura. Figura 14: Tempo di codifica [0-350 msec] & Compressione [0-600] I codec H264 e Vp8 sono caratterizzati da un tempo di codifica limitato, se paragonato ad altri codec, ma sono in grado di comprimere in maniera significativa. Sia il codec Vp8 che H264 comprimono maggiormente rispetto a TurboJpeg sia dal punto di vista della compressione media sia dal punto di vista della compressione massima. Tale risultato non è stato riscontrato col contenuto video con testo nel quale TurboJpeg alla qualità minima comprimeva in misura superiore rispetto ad H264. Spicca anche per il contenuto video con immagini naturali la scarsa capacità di compressione del codec JpegLS. In linea generale si è constatato un certo bilanciamento tra i tempi di codifica e decodifica, risulta tuttavia in alcuni codec come Vp9 che il tempo di codifica sia nettamente superiore al tempo di decodifica. Tale considerazioni risultano più evidenti grazie alla figura15 in cui il codec Vp9 mostra un tempo di decodifica di un ordine di grandezza inferiore rispetto al tempo di codifica. Per comodità il grafico non riporta il codec Jpeg2000 dato che per esso si rileva un tempo di decodifica sopra i 350 msec. 26 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 15: Tempo di decodifica Si consideri ora come fattore di valutazione il Tempo complessivo di codifica/decodifica in funzione della qualità di codifica espressa con la metrica MSSIM e rispetto alla capacità di compressione. Consideriamo in primo luogo la metrica MSSIM in funzione del tempo complessivo. Figura 16: Tempo complessivo in funzione del MSSIM 27 Progetto 3D CloudWiz | ATI NICE - DIEE Il grafico pone in evidenza l'elevato tempo complessivo dei codec: Jpeg2000, Vp9 e WebP alla massima qualità indicando quindi che il bilancio tra tempo di codifica e decodifica li rende poco efficienti a parità di qualità rispetto agli altri codec. Spicca inoltre la buona prestazione dei codec TurboJpeg e H264. Il codec TurboJpeg va comunque regolato opportunamente per evitare di codificare con una qualità visiva non accettabile. L'analisi del tempo complessivo di codifica/decodifica in funzione della compressione non porta alcuna indicazione ulteriore rispetto a quelle ottenute dall'analisi dei tempi di codifica e decodifica studiati indipendentemente. In figura 18 viene comunque riportato il tempo complessivo di codifica/decodifica in funzione della compressione. Figura 17:Tempo complessivo in funzione della compressione Per identificare quali codec consentano il miglior compromesso in termini di compressione e tempo complessivo di codifica/decodifica si è scelto di analizzare i dati considerando quelle impostazioni dei codec che consentono di avere una qualità di codifica sempre accettabile. In tal senso per semplificare l'analisi i dati riportati nella tabella 12 si riferiscono ai valori: 60,80 e 100 della mappatura di qualità. In verde si indica la prestazione migliore, in giallo la seconda migliore prestazione e in rosso la peggiore tutte valutate al medesimo livello qualitativo impostato in ingresso. La prima considerazione che risulta evidente è che tutti i codec codificano con un livello di qualità più che accettabile e ciò deriva dal fatto che sono stati selezionati i dati relativi a settaggi della qualità di codifica medio alti. 28 Progetto 3D CloudWiz | ATI NICE - DIEE CODEC WebP MSSIM 0,969428811 0,977946285 1 Jpeg_LS 0,823444509 0,929148383 1 0,978931843 Turbo 0,988691991 Jpeg 0,997888046 0,926083172 Jpeg 0,986520629 2000 1 H264 0,966607142 0,966607142 0,972007908 Jpeg 0,991885608 XR 0,996723066 1 Vp8 0,97018269 0,977893429 0,992740937 Vp9 0,985859923 0,990487099 0,996725629 COMPRESSION T_enc (msec) T_dec (msec) 240,042572 172,2829443 15,59999377 14,11480207 5,061866524 2,302683955 52,95227304 39,45889184 8,74276877 436,7932399 104,858828 10,97188575 223,7185104 223,7185104 193,141088 80,21428136 29,39326674 8,249279081 208,3921707 147,1105031 34,53414559 190,1418479 94,56274684 19,72864439 200,6831731 217,4238798 2433,795332 147,5273591 165,8584678 115,6539757 15,37437053 15,96541917 27,79412303 1138,917382 1152,880263 1096,165106 35,03406724 36,63472103 33,44926323 274,6776738 301,285681 275,6238026 95,77055937 93,5961774 102,0817396 3751,653657 4142,033323 3195,400976 18,85086266 20,84014306 49,33964807 79,74548069 90,06125894 100,605877 9,872788269 10,49788841 17,73095708 496,686289 614,1991574 860,3661831 46,96930472 47,95190844 46,17413162 191,964133 218,4234363 213,5992446 42,24031044 43,5302804 51,76111588 98,20357082 108,225721 172,3589213 Total_time(msec) 219,5340358 238,2640229 2483,13498 227,2728398 255,9197268 216,2598526 25,2471588 26,46330758 45,52508011 1635,603671 1767,079421 1956,531289 82,00337196 84,58662947 79,62339485 466,6418069 519,7091173 489,2230472 138,0108698 137,1264578 153,8428555 3849,857227 4250,259044 3367,759897 Tabella 12: Riassunto prestazioni video immagini naturali il miglior livello di compressione misurato è ottenuto dal codec: Jpeg2000 La seconda migliore prestazione si riscontra col codec WebP, mentre il codec che comprime meno risulta essere Jpeg_LS. Come indicato nell'analisi preliminare il codec Jpeg2000 risulta essere troppo lento sia in fase di codifica che di decodifica. In base a tali considerazioni si possono considerare altri codec che comprimono in misura inferiore, ma che possono garantire una migliore prestazione dal punto di vista del tempo di codifica decodifica. I codec che più si avvicinano in termini di capacità di compressione a WebP e Jpeg2000 sono: H264 e Vp8 I due codec e le rispettive capacità di compressione sono indicati in grigio nella tabella 14. Nella seguente tabella si riportano le prestazioni dei codec WebP, H264 e Vp8. 29 Progetto 3D CloudWiz | ATI NICE - DIEE Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) Webp 240.042 200.683 18.850 227.272 H264 223.718 35.034 46.969 82.003 Vp8 208.39 95.770 42.240 138.010 Tabella 13: Comparativa WebP,H264 e Vp8 Risulta evidente come H264 sia il compromesso migliore tra capacità di compressione e tempo totale di codifica/decodifica. Ancora una volta WebP mostra un tempo di decodifica molto contenuto se paragonato a quello di codifica. Dal punto di vista della compressione tutti i codec mostrati nella precedente tabella sono comunque caratterizzati da livelli simili. Per quanto riguarda il tempo complessivo di codifica/decodifica il codec più prestazionale è: TurboJpeg La seconda prestazione è relativa al codec H264 come indicato dalla seguente tabella riassuntiva. Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) TurboJpeg 52.952 15.374 9.872 25.247 H264 223.718 35.034 46.969 82.003 Tabella 14: Comparativa TurboJpeg, H264 Il codec TurboJpeg è complessivamente più veloce rispetto ad H264 ma comprime molto meno e con un divario maggiore rispetto a quello riscontrato sul video con testo indicando quindi che H264 rappresenta una buona soluzione per comprimere efficacemente immagini naturali. Per completare i risultati ottenuti consideriamo i valori medi minimi e massimi del bitrate di ciascun codec mediati su tutti i possibili valori di qualità impostabili. La tabella riassume i risultati ottenuti considerando di inviare il filmato di prova con una frequenza di 25 fotogrammi al secondo. Codec Bitrate_min(Mbit/sec) Bitrate_max(Mbit/sec) Bitrate_mean(Mbit/sec) WebP 0,814354676 35,83124509 1,87755913 Jpeg_LS 5,9842365 242,7459482 16,14733677 Turbo_Jpeg 5,484011784 63,93480312 9,843200368 Jpeg_2000 0,062812793 50,94540837 0,234057724 H264 2,153215433 2,894087456 2,362885518 Jpeg_XR 1,558889132 67,75952111 3,812251763 Vp8 1,130930742 16,18592817 1,980661352 Vp9 0,713086437 28,33277284 1,485962905 Tabella 15: Stima dell'occupazione di banda per tutte le qualità impostabili 30 Progetto 3D CloudWiz | ATI NICE - DIEE Per garantire un livello di qualità percepita sempre accettabile è necessario che il bitrate sia contenuto negli estremi indicati nella seguente tabella. Codec Bitrate_min(Mbit/sec) Bitrate_max(Mbit/sec) Bitrate_mean(Mbit/sec) WebP 1,915761278 35,83124509 3,106674695 Jpeg_LS 15,93481422 242,7459482 39,53251598 Turbo_Jpeg 9,008722642 63,93480312 13,70007027 Jpeg_2000 0,399618459 50,94540837 1,145790776 H264 2,153215433 2,894087456 2,483816769 Jpeg_XR 3,29094402 67,75952111 7,771341321 Vp8 1,776025178 16,18592817 3,172497469 Vp9 1,452556168 28,33277284 3,243918022 Tabella 16: Stima dell'occupazione di banda per qualità medio alte Risulta in definitiva che il codec H264 rappresenta il miglior compromesso nel caso in cui l'obbiettivo della codifica sia comprimere a livelli elevati. Se invece l'obbiettivo finale della compressione è mantenere il tempo totale di codifica/decodifica a livelli contenuti è consigliabile l'impiego del codec TurboJpeg. Analisi preliminare video composito L'analisi preliminare suggerisce le medesime indicazioni ottenute nelle sezioni precedenti, i codec Vp9 e Jpeg2000 mostrano tempi di codifica/decodifica inoltre il codec WebP , come nel caso di video contenente solo testo, registra il tempo di codifica più elevato. D COMPOUN WORST_ENC_TIME [msec] BEST_ENC_TIME [msec] WORST_DEC_TIME [msec] BEST_DEC_TIME [msec] BEST_PSNR (dB) WORST_PSNR (dB) BEST_MSSIM WORST_MSSIM BEST_COMP_RATE Q=0 Q=20 Q=40 Q=60 Q=80 Q=100 Vp9 Vp9 Vp9 Vp9 Vp9 WebP 4164,203934 4152,475207 4404,46671 4626,886681 4151,385994 4543,754564 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 15,22715737 16,44491416 16,93326037 17,19088984 19,13022461 30,46492561 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 Jpeg2000 478,7967797 585,3875894 707,9317253 725,8288798 874,1931674 1353,496748 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 9,507157368 10,84386409 11,45883405 12,05192704 13,6654907 22,29439771 Openh264 JpegXR JpegXR JpegXR JpegXR WebP 34,26231436 35,84257248 39,27740487 45,26520834 52,13435601 99 TurboJpeg TurboJpeg TurboJpeg TurboJpeg Openh264 Openh264 20,82187696 27,36776404 30,7273999 33,28083371 35,63908562 36,89740004 Openh264 JpegXR JpegXR JpegXR JpegXR WebP 0,94216124 0,963396159 0,978483511 0,993709823 0,998286612 1 TurboJpeg CharLS CharLS CharLS Openh264 Openh264 0,707071259 0,850154133 0,886638542 0,930836129 0,952847515 0,970806456 WebP Vp8 Vp8 WebP Openh264 Openh264 164,6118849 87,9713508 51,75419733 43,55505855 42,22227124 37,6143176 31 Progetto 3D CloudWiz | ATI NICE - DIEE WORST_COMP_RATE WORST_TOTAL_TIME BEST_TOTAL_TIME CharLS CharLS CharLS CharLS CharLS CharLS 5,479461607 4,999615256 4,364925185 3,724219648 3,016232186 1,922265907 Vp9 Vp9 Vp9 Vp9 Vp9 WebP 4277,341393 4266,763754 4524,229979 4762,119122 4269,475076 4588,725991 TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg TurboJpeg 24,73431474 27,28877825 28,39209442 29,24281688 32,79571531 52,75932332 Tabella 17: Tabella analisi preliminare video composito Le considerazioni preliminari risultano efficacemente espresse dai seguenti grafici riassuntivi. Figura 18: Tempo di codifca e decodifica Figura 19: Tempo complessivo di codifica e decodifica 32 Progetto 3D CloudWiz | ATI NICE - DIEE Analisi comparativa Per definire quale soluzione può risultare più performante rispetto ad uno specifico ambito di utilizzo è necessario definire la prestazione congiunta in relazione alla qualità di codifica, la capacità di compressione e il tempo totale di codifica/decodifica. Si considera come qualità visiva accettabile quella contraddistinta da valori di MSSIM pari o superiori a 0.85. Consideriamo come primo elemento di valutazione la capacità di compressione. Il seguente grafico rappresenta la qualità di codifica misurata tramite la metrica MSSIM in funzione della compressione. Figura 20: MSSIM e Compressione Il primo aspetto evidente è che qualitativamente si rileva un comportamento dei codec che può attestarsi in una via di mezzo tra ciò che è stato riscontrato con il video contenente testo e quello riscontrato con immagini naturali. Risulta evidente inoltre come Jpeg2000 a causa della presenza di testo comprime in misura nettamente inferiore a ciò che si è riscontrato con le immagini naturali. Per quanto riguarda invece JpegLS e TurboJpeg si riscontra ancora una capacità di compressione inferiore a parità di qualità di codifica rispetto agli altri codec. Tale considerazione risulta maggiormente chiara analizzando il grafico seguente. 33 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 21: MSSIM e Compressione Per quanto riguarda il tempo di codifica e il livello di compressione otteniamo i risultati riportati nella figura seguente. Figura 22: Tempo di codifica e compressione Le indicazioni generali che si ottengono sono in buona sostanza le medesime ottenute con gli altri contenuti video. Ancora una volta Vp9 e Jpeg2000 registrano i tempi di codifica più alti e a parità di compressione risultano svantaggiosi rispetto agli altri codec. I codec più veloci sono riportati nella seguente figura. 34 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 23: Tempo di codifica in funzione del livello di compressione Risulta come nei casi precedenti che TurboJpeg e H264 rappresentano un ottimo compromesso in termini di capacità di compressione in funzione del tempo speso per effettuarla. Per quanto riguarda il tempo di decodifica non si riscontrano risultati significativi rispetto ai contenuti video già analizzati e continua a risultare che Vp9 mostra un forte sbilanciamento del tempo di codifica rispetto a quello di decodifica. Nella figura seguente è riportato il tempo di decodifica in funzione della compressione e per comodità non viene riportato il risultato conseguito da Jpeg2000 dato l'elevato tempo di decompressione. Figura 24: Tempo di decodifica e compressione Di seguito si riporta il tempo complessivo di codifica/decodifica che comunque non fornisce indicazioni aggiuntive rispetto ai contenuti video già analizzati. 35 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 25: Tempo complessivo e compressione Si consideri ora come fattore di valutazione il Tempo complessivo di codifica/decodifica in funzione della qualità di codifica espressa con la metrica MSSIM e rispetto alla capacità di compressione. Consideriamo in primo luogo la metrica MSSIM in funzione del tempo complessivo. Figura 26: Tempo complessivo in funzione del MSSIM Ancora una volta risulta evidente la forte separazione in termini di tempo complessivo tra Vp9,Jpeg2000 e WebP alla qualità massima e gli altri codec. Emerge anche che TurboJpeg,WebP e JpegLS non sempre mostrano una qualità di codifica accettabile. Questa caratteristica è imputabile alla presenza di variazioni continue di colore tipiche delle immagini naturali, infatti tale comportamento non è stato riscontrato con il video contenente 36 Progetto 3D CloudWiz | ATI NICE - DIEE soltanto testo. Ad ogni modo risulta evidente il vantaggio nell'impiegare TurboJpeg e H264 quando si voglia che la catena di compressione/decompressione venga eseguita velocemente. Quindi regolando opportunamente la qualità di codifica soprattutto di TurboJpeg è possibile ottenere dei tempi complessivi molto contenuti. Per H264 invece non è stato possibile configurare una mappatura della qualità come risulta evidente dalla figura 26. Tale caratteristica può risultare più naturale considerando che è un codec specifico per la compressione di video, per il quale la caratteristica fondamentale è la capacità di compressione (o il bitrate). L'analisi del tempo complessivo di codifica/decodifica in funzione della compressione non porta alcuna indicazione ulteriore rispetto a quelle ottenute dall'analisi dei tempi di codifica e decodifica studiati indipendentemente. In figura viene comunque riportato il tempo complessivo di codifica/decodifica in funzione della compressione. Figura 27: Tempo complessivo in funzione della compressione 37 Progetto 3D CloudWiz | ATI NICE - DIEE Per identificare quali codec consentano il miglior compromesso in termini di compressione e tempo complessivo di codifica/decodifica si è scelto di analizzare i dati considerando quelle impostazioni dei codec che consentono di avere una qualità di codifica sempre accettabile. In tal senso per semplificare l'analisi i dati riportati nella tabella 18 si riferiscono ai valori: 60,80 e 100 della mappatura di qualità. In verde si indica la prestazione migliore, in giallo la seconda migliore prestazione e in rosso la peggiore tutte valutate al medesimo livello qualitativo impostato in ingresso. La prima considerazione che risulta evidente è che tutti i codec codificano con un livello di qualità più che accettabile e ciò deriva dal fatto che sono stati selezionati i dati relativi a settaggi della qualità di codifica medio alti. CODEC WebP MSSIM 0,95365333 0,960627767 1 Jpeg_LS 0,930836129 0,974149372 1 Turbo_Jpeg 0,962127674 0,979514539 0,999074867 Jpeg_2000 0,991932326 0,996797602 1 H264 0,952847515 0,952847515 0,970806456 Jpeg_XR 0,993709823 0,998286612 1 Vp8 0,948732562 0,969351887 0,996088258 Vp9 0,987610462 0,994470619 0,998396223 COMPRESSION T_enc (msec) T_dec (msec) Total_time(msec) 44,38240201 35,43517951 13,16830143 3,713455073 3,008407257 1,918267165 20,63188285 15,29219481 4,582414483 15,50323449 9,615098861 5,906544444 43,03029573 43,03029573 38,32297274 13,79115296 8,064184996 5,208919753 39,16167566 31,53971388 15,16684625 32,70041026 23,750875 11,76980364 245,2928655 253,6789056 4543,754564 204,8634506 215,0426037 151,202309 17,19088984 19,13022461 30,46492561 1610,779399 1553,037102 1828,029428 42,22667096 42,0497897 41,99806152 314,5512518 345,3601531 257,3068555 107,2364521 113,3128326 153,2143877 4626,886681 4151,385994 2105,564564 26,42888412 29,16226896 44,97142775 116,3462604 122,361475 136,5979742 12,05192704 13,6654907 22,29439771 725,8288798 874,1931674 1353,496748 51,14334621 50,64510443 51,13049499 239,8181989 271,3197783 212,706289 50,40015451 53,59950358 83,07090272 135,2324406 118,0890815 111,1083648 271,7217496 282,8411745 4588,725991 321,209711 337,4040787 287,8002833 29,24281688 32,79571531 52,75932332 2336,608279 2427,230269 3181,526176 93,37001717 92,69489413 93,12855651 554,3694506 616,6799313 470,0131445 157,6366066 166,9123362 236,2852904 4762,119122 4269,475076 2216,672928 Tabella 18: riassunto delle prestazioni Il miglior livello di compressione misurato è ottenuto dal codec: WebP La seconda prestazione migliore appartiene al codec H264 e analogamente ai casi visti in precedenza Jpeg_LS è il codec che comprime meno. La tabella seguente riassume le prestazioni dei codec H264 e WebP. 38 Progetto 3D CloudWiz | ATI NICE - DIEE Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) WebP 44.382 245.292 26.428 271.721 H264 43.030 42.226 51.143 93.370 Tabella 19: Comparativa WebP, H264 In questo caso risulta facile asserire che H264 risulta maggiormente vantaggioso rispetto a WebP dato che mostra un livello di compressione praticamente identico ma con un tempo complessivo di codifica/decodifica nettamente migliore. Risulta ad ogni modo che WebP mostra il miglior tempo in fase di decodifica. Il codec più prestazionale dal punto di vista del tempo complessivo di codifica/decodifica è: TurboJpeg Mentre il secondo codec più veloce è H264, la tabella seguente pone in relazione le prestazioni dei due codec. Codec Compressione T_enc (msec) T_dec (msec) T_tot (msec) TurboJpeg 20.631 17.190 12.051 29.24 H264 43.030 42.226 51.143 93.37 Tabella 20: Comparativa TurboJpeg, H264 Il codec H264 comprime all'incirca il doppio rispetto a TurboJpeg ma con un tempo complessivo di codifica/decodifica circa tre volte maggiore rispetto a TurboJpeg. Per concludere l'analisi si considerino i risultati rispetto ai valori medi minimi e massimi del bitrate di ciascun codec mediati su tutti i possibili valori di qualità impostabili. La tabella riassume i risultati ottenuti considerando di inviare il filmato di prova con una frequenza di 25 fotogrammi al secondo. Codec WebP Jpeg_LS Turbo_Jpeg Jpeg_2000 H264 Jpeg_XR Vp8 Vp9 Bitrate_min(Mbit/sec) 3,335725628 102,4783621 7,870063785 5,535648095 11,58491283 12,38217829 6,234323006 7,248075994 Bitrate_max(Mbit/sec) Bitrate_mean(Mbit/sec) 42,44793475 8,837537099 291,3917364 143,1859957 121,9809343 19,5651484 94,63523136 16,45643864 14,58569521 12,46154058 107,3096201 27,59269454 36,85454384 10,54931118 47,49163342 12,41248096 Tabella 19: Stima dell'occupazione di banda per tutte le qualità impostabili 39 Progetto 3D CloudWiz | ATI NICE - DIEE Volendo garantire una qualità percepita accettabile il bitrate minimo dovrà essere incrementato come indicato dalla seguente tabella. Codec Bitrate_min(Mbit/sec) Bitrate_max(Mbit/sec) Bitrate_mean(Mbit/sec) WebP 10,79589286 42,44793475 15,44515802 Jpeg_LS 128,5089574 291,3917364 172,1254155 Turbo_Jpeg 22,17953321 121,9809343 34,02712295 Jpeg_2000 21,3831863 94,63523136 39,1122888 H264 11,58491283 14,58569521 12,95156145 Jpeg_XR 26,33815531 107,3096201 46,30376706 Vp8 10,60070151 36,85454384 16,1321004 Vp9 11,70951066 47,49163342 19,28183546 Tabella 20: Stima dell'occupazione di banda per qualità medio alte In definitiva il codec H264 è la soluzione migliore in termini di compressione mentre TurboJpeg risulta il codec migliore per quanto riguarda il tempo complessivo impiegato per la codifica e decodifica. Conclusioni Per tutti i contenuti video testati è emerso che i codec con performance migliori sono: TurboJpeg e H264. Il primo garantisce la migliore prestazione in termini di tempo di codifica/decodifica complessivi mostrando ad ogni modo dei livelli di compressione comunque in linea con gli altri codec. Il secondo rappresenta certamente il miglior compromesso tra tempo totale di codifica/decodifica e capacità di compressione. 40 Progetto 3D CloudWiz | ATI NICE - DIEE Test sui codec compound In questa sezione si descriveranno le prestazioni dei metodi di compressione compositi. L'analisi sarà incentrata sulla valutazione dei tempi di codifica, decodifica e totali nonché sulla capacità di compressione. Si valuterà inoltre la qualità di codifica in relazione alle metriche PSNR e MSSIM. Codec compound I tre metodi di classificazione e codifica per compound image utilizzati sono i seguenti: Metodo a blocchi Metodo a strati Metodo ibrido Si rimanda al documento di descrizione dei suddetti metodi per la descrizione delle fasi di classificazione, mentre i codec singoli utilizzati per le aree di testo e di immagini sono i seguenti: CharLS H.264 Jpeg2000 JpegXR LZO RLE + LZO TurboJpeg Vp8 Vp9 WebP Zrle Alcuni di questi codec sono stati scartati a priori dopo essere stati testati singolarmente, poiché non adatti al caso studiato. In particolar modo CharLS, Jpeg2000, JpegXR, Vp9 e WebP non sono codec pensati per effettuare codifica e decodifica di immagini in real time, e presentano quindi tempi di elaborazione eccessivamente elevati. I codec rimanenti sono stati selezionati in base ai risultati ottenuti testando le performance dei singoli codec su immagini di tipo composito, immagini contenenti prevalentemente testo o immagini naturali. Setup degli esperimenti Al fine di valutare i metodi compound è stato utilizzato un video composto da zone di immagini naturali e zone di testo. Per una descrizione più dettagliata del video si rimanda al documento specifico in cui viene descritto il dataset utilizzato negli esperimenti. I test sono stati svolti in parallelo, avviando tre simulazioni per volta, su una macchina non dedicata, fornita di un 41 Progetto 3D CloudWiz | ATI NICE - DIEE processore Intel Core i7-3517U, su macchina virtuale Debian 7. Risultati degli esperimenti Al fine di gestire i risultati, è stato necessario compiere una prima scrematura, eliminando i risultati non accettabili. Sono stati quindi tracciati due grafici scatter dei risultati ottenuti sul video composito, che è il caso più significativo,riducendo gli assi del tempo e della qualità a valori significativi per il caso d'uso definito nel progetto. In questo modo, i metodi che impiegano un tempo totale di codifica e decodifica eccessivo, oppure che mostrano una qualità troppo bassa, non vengono neanche considerati. Nella figura seguente sono riportati i grafici: Figura 28: Capacità di compressione, MSSIM e tempo totale di codifica/decodifica Il primo grafico indica il rapporto di compressione ottenuto al variare del tempo totale di codifica e decodifica dei metodi compound, mentre nel secondo è indicata la qualità visiva misurata tramite l’MSSIM. Poiché i due assi del tempo coincidono, è possibile notare che i risultati di uno stesso codec risultano allineati. I casi più interessanti sono stati evidenziati. Il metodo che ottiene il rapporto di compressione maggiore è evidenziato in rosso, e indica il metodo a strati applicato utilizzando Zrle come codec per le aree di testo e H264 per le aree di immagini. Questo metodo permette di codificare in maniera lossless le zone di testo, che tipicamente sono le zone in cui è richiesta una qualità maggiore, mantenendo comunque alta la qualità su immagini naturali e zone a gradiente continuo grazie al codec H264, il quale permette oltretutto di comprimere notevolmente l’immagine composita. Tali risultati si accompagnano però ad un tempo di compressione e decompressione di circa 180 ms, troppo elevato per 42 Progetto 3D CloudWiz | ATI NICE - DIEE un’applicazione di remote desktop. In verde è indicato il metodo ibrido applicato usando il codec H264 per il testo e TurboJpeg per le immagini. Questo metodo ottiene dei tempi meno elevati del metodo precedentemente descritto grazie alle prestazioni del codec TurboJpeg, ed una qualità superiore, al prezzo di una notevole riduzione del rapporto di compressione. Sono invece evidenziate in giallo diverse combinazioni di qualità del metodo a blocchi applicato utilizzando LZO per le aree di testo e TurboJpeg per le aree contenenti immagini. Come nel caso precedente, le aree di testo vengono codificate in maniera lossless, mentre le aree a gradiente più continuo sono codificate tramite il TurboJpeg. Questo metodo, sebbene offra un tempo di codifica e decodifica estremamente rapido e una qualità altissima, non permette di comprimere sufficientemente l’immagine. Questo metodo è quindi adatto a situazioni in cui la banda disponibile è estremamente elevata. Infine in verde è indicato il metodo che offre il compromesso migliore: ovvero il metodo a strati che utilizza i codec Zrle e TurboJpeg. Questo metodo offre una qualità nettamente inferiore agli altri metodi, seppur sufficiente dal punto di vista percettivo, ma permette di ottenere un buon rapporto di compressione in un tempo accettabile di compressione e decompressione. 43 Progetto 3D CloudWiz | ATI NICE - DIEE Conclusioni In conclusione, può essere detto che i metodi compound offrono la possibilità di comprimere selettivamente determinate aree di un’immagine, permettendo quindi l’utilizzo di un codec rapido per le zone in cui la qualità visiva risulta essere meno importante, e un codec più preciso in zone in cui è determinante mantenere alta la qualità. Essi vanno però paragonati con i risultati ottenuti dall’analisi dei codec singoli. Nella seguente figura sono riportati due grafici contenenti alcuni risultati ottenuti dai codec standard sul medesimo video in cui sono stati testati i metodi compound. Figura 29: Capacità di compressione, MSSIM e tempo totale di codifica/decodifica 44 Progetto 3D CloudWiz | ATI NICE - DIEE Nei grafici sono indicati il rapporto di compressione e la qualità misurata tramite l’MSSIM rispetto al tempo impiegato per compiere la codifica e decodifica. Sono riportati solo i codec che rientrano in un tempo minore di 100 msec che consentono di ottenere un parametro di qualità maggiore dell’80% se misurato tramite MSSIM. Si può notare che i codec TurboJpeg e H264 presentano delle performance generalmente migliori dei metodi compound. Il codec H264 permette infatti di effettuare una codifica e decodifica in tempi minori di 100 ms, mantenendo un livello di compressione fra le 40 e 50 volte ed una qualità elevata, corrispondente a un risultato di 95% di MSSIM. Il codec TurboJpeg invece permette di ottenere dei tempi di compressione e decompressione estremamente rapidi e una qualità elevata al prezzo di una minore capacità di compressione. Utilizzare un metodo di classificazione e compressione compound porta conseguentemente ai seguenti svantaggi: Tempi di codifica e decodifica appesantiti a causa del tempo di classificazione ed eventuale ricostruzione dell’immagine Rapporto di compressione diminuito a causa della necessità di effettuare diverse compressioni per aree contenenti testo ed aree contenenti immagini naturali 45 Pattern Recognition and Applications Lab DIEE - Università di Cagliari R2.3 DATASET PER LA VALIDAZIONE DEGLI ALGORITMI DI COMPRESSIONE Progetto 3D CloudWiz Progetto 3D CloudWiz | ATI NICE - DIEE Sommario Sommario..............................................................................................................................................i Obiettivo del documento......................................................................................................................1 Descrizione dei dataset.........................................................................................................................1 i Progetto 3D CloudWiz | ATI NICE - DIEE Obiettivo del documento In questo documento verranno descritti i dataset che sono stati generati per rappresentare il contesto operativo e che sono stati utilizzati nella fase di test degli algoritmi. Descrizione dei dataset Per testare le performance dei codec e dei metodi di compressione specifici per immagini composite è stato realizzato un dataset composto da video diversi fra loro rappresentanti contesti operativi differenti. I contesti operativi individuati rappresentano una possibile modalità di interazione di un utente durante una sessione desktop e sono stati suddivisi in tre categorie per ciascuna delle quali è stato creato un video specifico: • Testo: In questo caso il contesto operativo è quello di un utilizzo del sistema principalmente per text editing e/o lettura di documenti prettamente testuale; • Immagini: In questo caso il contesto operativo è quello di visualizzazione di immagini naturali; • Compound: In questo caso il contesto operativo è quello di un utilizzo del sistema nel quale vengono visualizzati sia immagini/video che documenti testuali. Il primo video mostra due documenti di testo. La motivazione della creazione di un simile video è la necessità di valutare i singoli codec ed i metodi compound su immagini composte prevalentemente da testo. Nel caso in cui i risultati forniti evidenziassero la presenza di un codec o un metodo performante in maniera eccezionale su immagini simili, sarebbe possibile effettuare un controllo della percentuale dello schermo occupata da testo, e nel caso in cui essa fosse maggiore di una certa soglia, si potrebbe utilizzare direttamente il suddetto codec o metodo. Nel video, inoltre, i due documenti di testo vengono rapidamente scorsi al fine di testare le capacità dei codec su testi in movimento, che presentano quindi sfocature temporanee. Il secondo video realizzato è invece composto nella sua totalità da immagini naturali, trattandosi di un trailer cinematografico. Tale video è stato utilizzato per testare le capacità dei codec su 1 Progetto 3D CloudWiz | ATI NICE - DIEE immagini composte da un gran numero di colori a variazione prevalentemente continua. I risultati ottenuti dai codec su questo filmato possono essere utilizzati per definire il codec di scelta per le sezioni contenenti immagini naturali in un’immagine composita. A differenza dei primi due video, il terzo presenta sia aree di testo che aree contenenti immagini naturali o immagini grafiche, ovvero un video composito. Il video composito utilizzato è suddiviso principalmente in tre aree: • una zona in cui viene riprodotto un video; • una zona dove è presente un editor di testo; • una zona dove è presente un terminale dei comandi nel quale viene simulato l'inserimento di comandi e viene effettuato lo scroll in modo da testare la codifica di testi in movimento come nel caso del primo video. Ciò permetterà principalmente di testare i metodi compound su delle immagini molto vicine al caso di studio richiesto in base ai tempi, il rapporto di compressione e la qualità dell’immagine in uscita, ma anche sul tempo necessario affinché avvenga la classificazione dei blocchi o degli strati e sulla precisione stessa della classificazione, misurabile grazie ad un’immagine precedentemente etichettata. Tali risultati sono riportati nella sezione in cui vengono descritti i metodi compound applicati. In conclusione, i risultati ottenuti dai primi due video sono particolarmente utili al fine di selezionare i codec più adatti a codificare aree contenenti una tipologia specifica di immagini, mentre il terzo video permette di testare più a fondo i metodi compound, su immagini tipiche del caso di studio. Nella seguente tabella sono riportate le caratteristiche dei video utilizzati: Video Testo Numero Frames Grandezza Frame Video Immagini Video Composito 700 700 700 1366 x 682 1366 x 682 1366 x 682 2 Progetto 3D CloudWiz | ATI NICE - DIEE Tabella 1 - Caratteristiche dei video. Nella seguente figura sono riportati tre frame dei video utilizzati come dataset: 3 Progetto 3D CloudWiz | ATI NICE - DIEE Figura 1 - In alto una snapshot del video contenente testo, al centro una snapshot del video contenente immagini naturali e in basso una snapshot del video composito. 4 Pattern Recognition and Applications Lab DIEE - Università di Cagliari R2.4 MODELLO ARCHITETTURALE DI UN SISTEMA DI COMPRESSIONE ADATTATIVA, SISTEMA DI DECISIONE PER LA SELEZIONE DINAMICA DELL'ALGORITMO DI COMPRESSIONE E PROTOCOLLO DI COMUNICAZIONE TRA CLIENT E SERVER Progetto 3D CloudWiz Progetto 3D CloudWiz | ATI NICE - DIEE Sommario Sommario..............................................................................................................................................i Obiettivo del documento......................................................................................................................1 Stato dell'arte sulla stima della banda disponibile in una connessione punto-punto............................2 Alcune definizioni fondamentali......................................................................................................3 Un secondo più accurato modello del sistema di trasmissione........................................................4 Alcune considerazioni preliminari e nuove definizioni....................................................................6 Capacità........................................................................................................................................7 Banda disponibile.......................................................................................................................10 Tipologie di traffico sulla rete....................................................................................................12 Tecniche di stima della banda.........................................................................................................12 Tecniche attive............................................................................................................................13 Tools...............................................................................................................................................24 Tool per la stima della capacità degli hop..................................................................................24 Tool per la stima della capacità di un collegamento punto-punto..............................................25 Tool per la stima della banda disponibile...................................................................................25 Qualche25 confronto..................................................................................................................26 Conclusioni.....................................................................................................................................28 Appendice A: Problematiche legate alle reti wireless....................................................................28 Rilevamento delle collisioni (CSMA/CD vs CSMA/CA)..........................................................28 MAC layer retries.......................................................................................................................30 Algoritmi di controllo della frequenza.......................................................................................30 Bibliografia.....................................................................................................................................31 Progettazione dell'architettura del sistema adattativo.........................................................................38 Specifiche implementative.............................................................................................................40 i Progetto 3D CloudWiz | ATI NICE - DIEE Obiettivo del documento Scopo di questo documento è quello di delineare un modello architetturale di un sistema di compressione adattativa, ovvero un sistema di decisione per la selezione dinamica dell'algoritmo di compressione e protocollo di comunicazione tra client e server. Per fare questo nel documento si procederà da prima ad illustrare lo stato dell'arte relativo alla stima della banda disponibile in una connessione punto-punto. In base all'analisi di questo stato dell'arte ed ai risultati illustrati nella relazione R2.2 si procederà alla progettazione di un sistema di decisione adattativo che consenta di adattarsi al contesto operativo anche in funzione di un protocollo di comunicazione fra client e server. 1 Progetto 3D CloudWiz | ATI NICE - DIEE Stato dell'arte sulla stima della banda disponibile in una connessione punto-punto Le reti a commutazione di pacchetto1 (Packet Switching Networks), sono strutture molto complesse e raramente sono interamente sotto il controllo di un'unica organizzazione; più spesso sono costituite dall'insieme di tante sottoreti gestite da organizzazioni ed aziende diverse 2. Per mascherare e rendere gestibile tale complessità vengono spesso caratterizzate attraverso pochi indicatori, i più comuni dei quali sono banda, latenza e capacità di trasmissione (throughput). Sin dalla loro nascita si è sentita l'esigenza di misurare la velocità di trasferimento delle informazioni da un punto ad un altro della rete e di stimare i limiti della rete in tal senso imposti dagli apparati fisici e/o dalle condizioni operative. Da un lato gli utenti (intesi come sviluppatori software) sentivano l'esigenza di poter stimare la banda disponibile per ottimizzare il trasferimento dei dati, dall'altro i gestori delle reti sentivano tale esigenza per poter ottimizzare l'organizzazione del traffico sulla rete ( network routing planning) e migliorare la qualità del servizio offerto ai propri clienti. Ed anche in ambito di ricerca questa esigenza era ed è fortemente sentita sia da parte degli ingegneri che devono progettare i protocolli di comunicazione (network protocols design), sia da quelli che devono progettare e dimensionare gli apparati fisici che costituiscono le reti (capacity planning). Questa varietà di soggetti si traduce in una molteplicità di obiettivi e di approcci al problema, ognuno con un proprio punto di vista e spesso con un gergo specifico che porta ad un'ambiguità nel linguaggio utilizzato per descriverne le carattersitiche. Consideriamo ad esempio il termine banda : • se riferito ad apparati fisici prende il suo significato dall'elettromagnetismo ed indica un intervallo di frequenze nello spettro elettromagnetico; • se riferito alla teoria dell'informazione diventa sinonimo di bitrate, ed indica il numero di bit che un canale può trasportare per unità di tempo; • se riferito alle reti a commutazione di pacchetto indica la capacità di trasferire senza 1 Delle quali Internet è la più nota. Ad esempio un Internet Service Provider. 2 2 Progetto 3D CloudWiz | ATI NICE - DIEE alterazioni una determinata quantità di dati per unità di tempo 3. E' dunque fondamentale definire con precisione • il punto di vista da cui si osserva il problema; • l'obiettivo che ci si prefigge; • ed il significato che si attribuisce ai termini di utilizzo comune: in questo documento si analizzerà il problema della stima della banda disponibile dal punto di vista di un utilizzatore della rete che vede la rete come una scatola nera, che non ha accesso ai dettagli, alle configurazioni e ai protocolli presenti negli apparati interni, e che può solo osservarne il comportamento ai morsetti d'ingresso e di uscita . Nella prima parte del documento, attraverso l'illustrazione di alcuni semplici modelli teorici, verranno definiti con buona precisione i significati dei termini che verranno utilizzati, e verranno illustrati alcuni assunti di base necessari per capire il funzionamento degli tecniche presentate. Verranno tuttavia omesse tutte le tecniche che prevedono interventi sugli apparati fisici 4, modifiche ai protocolli esistenti5, l'introduzione di nuovi protocolli o modifiche all'organizzazione della infrastruttura di distribuzione (Internet Service Provider) perché risulterebbero al di fuori delle possibilità di intervento dell'utente finale. Come anticipato cerchiamo di dare una definizione più precisa ed utile di alcuni termini come connessione, canale, capacità, banda disponibile e via dicendo. Per farlo partiremo da un modello teorico molto semplice che ci consentirà di introdurre facilmente ed in maniera intuitiva alcune importanti nozioni, successivamente usemo un modello lievemente più complesso per poter essere più precisi in alcune definizioni. Alcune definizioni fondamentali In prima approssimazione possiamo rappresentare una connessione punto-punto come un sistema composto da tre elementi 3 Spesso indicato anche come bitrate, ovvero numero di bit al secondo. Ad esempio sull'organizzazione delle antenne di una rete wireless, o su particolari soluzioni hardware da installare negli apparati di un internet service provider o sulle schede di rete di un dispositivo. 5 Ad esempio l'introduzione di nuovi campi negli header di un protocollo, o di nuovi messaggi in un protocollo esistente o delle variazioni nella sequenza e nella frequenza con cui due host si scambiano dei messaggi sia a livello fisico che di protocollo (es. modifiche dello standard IEEE 82.11 WiFi ). 4 3 Progetto 3D CloudWiz | ATI NICE - DIEE • una sorgente che trasmette dei dati • un canale che li trasporta • una destinazione che li riceve La semplicità di questo modello ci consente di concentrarci sulla definizione di alcuni concetti fondamentali come il concetto di canale e di alcune delle sue principali caratteristiche. Nella teoria dell'informazione, e nella conseguente teoria delle telecomunicazioni, con canale6 si indica un mezzo di trasmissione in grado di far propagare delle onde di energia da un punto dello spazio ad un altro punto7. Ogni canale è caratterizzato da una certa capacità, che indica il limite superiore alla quantità di informazioni che possono essere trasmesse su di esso e che, in base alla teoria dell'informazione, può anche definirsi come il numero di bit che possono essere trasmessi per unità di tempo. Nel seguito del documento ci atterremo a questa seconda definizione e indicheremo la banda disponibile come la differenza tra la capacità del canale e la banda occupata in un dato istante , ovvero il numero ulteriore di bit che possono essere trasmessi sul canale per unità di tempo senza saturarne la capacità. Fatte queste precisazioni possiamo definire con più esattezza l'obiettivo di questo documento dicendo che stimare la banda disponibile significa stimare la quantità di ulteriori informazioni che si possono trasmettere efficacemente sul canale senza degradare le comunicazioni esistenti . Un secondo più accurato modello del sistema di trasmissione In realtà possiamo rilassare alcuni assunti sul modello adottato e considerare il canale non come ad una black-box ma come ad una gray-box, ovvero una scatola all'interno della quale possiamo sbirciare per vedere alcune componenti (ma non tutte). 6 Secondo questo modello e secondo il punto di vista adottato, il canale rappresenta infatti la connessione punto-punto tra client e server, ovvero l'intera infrastruttura hardware e software che inizia nell'interfaccia di rete del server e finisce sull'interfaccia di rete del client (internet compresa). 7 Nel caso di onde elettromagnetiche, anche il vuoto (ovvero l'assenza di un mezzo fisico) consente la propagazione delle onde e dunque costituisce un canale valido. 4 Progetto 3D CloudWiz | ATI NICE - DIEE Sappiamo infatti che la gray-box è una rete a commutazione di pacchetto quindi, pur non potendo alterarne la struttura e/o le impostazioni, possiamo definire meglio il modello di riferimento ed essere più precisi nella definizione dei concetti fondamentali. Questo La prima osservazione che si può fare è legata alla suddivisione dell'infrastruttura di networking in diversi livelli funzionali (layer), ognuno dei quali con compiti e scopi ben precisi. Gli obiettivi di questo documento ci consentono di concentrarci sui livelli 8 più bassi di questa infrastruttura, ed in particolare : • il livello 1 (physical layer) in cui troviamo i mezzi fisici di connessione tra apparati, e che comprende inoltre tutte le procedure ed i protocolli necessari a garantire che un segnale elettromagnetico possa arrivare da un apparato ad un altro; • il livello 2 (data-link layer) che aggiunge al precedente tutti i sistemi di controllo del flusso di segnale e di correzione dell'errore necessari a garantire una connessione affidabile; la connessione è indicata con il termine di link, i suoi capi prendono il nome di nodi; • il livello 3 (network layer) che introduce il concetto di rete come insieme di nodi interconnessi da mezzi fisici, fornisce ad ogni nodo un indirizzo univoco e tutte le funzionalità necessarie per trovare il percorso migliore 9 (routing) per arrivare da un nodo all'altro e per trasferire sequenze di dati di lunghezza variabile ( datagrams); a questo livello il trasporto dei dati è considerato ancora inaffidabile; • il livello 4 (transport layer) che introduce i principali protocolli di trasporto10 che definiscono le regole per un trasporto affidabile dei pacchetti da un nodo ad un altro. Sfruttando questa suddivisione in livelli e focalizzando l'attenzione sul livello 3, possiamo pensare ad una connessione punto-punto come ad una sequenza di nodi collegati tra loro , in cui ogni 8 Nella numerazione dei livelli si farà riferimento al modello ISO/OSI perché suddivide i livelli in base ad alle funzionalità logiche. Tuttavia nella pratica si fa spesso riferimento al modello detto TCP/IP (che deve il suo nome ai principali protocolli utilizzati) perché suddivide i livelli in base alle funzionalità implementative. I due modelli sono di fatto equivalenti. 9 Il protocollo IP (Internet Protocol). 10 I due principali protocolli di trasporto sono il TCP (Transmission Control Protocol) che instaura una connessione stabile tra i due capi (connection-oriented) e l'UDP (User Datagram Protocol) che invece non necessita di una connessione stabile (connectionless). 5 Progetto 3D CloudWiz | ATI NICE - DIEE collegamento viene indicato con il termine hop e rappresenta un collegamento logico, ovvero un numero arbitrario di link tra apparati di livello 2. HOP Node Node Node Link Alcune considerazioni preliminari e nuove definizioni Per definizione nelle reti a commutazione di pacchetto i dati non vengono inviati come un unico blocco monolitico, bensì che vengano suddivisi in piccoli blocchi inviati singolarmente 11 e solo a destinazione questi vengono ricombinati per ricostruire i dati originali. Nel suo percorso ciascun pacchetto deve inoltre attraversare i livelli logici illustrati precedentemente, dall'alto verso il basso in uscita dalla sorgente e dal basso verso l'alto in ingresso verso la destinazione. Ad ogni passaggio di livello verso il basso ai dati provenienti dal livello superiore viene aggiunto un header all'inizio e, opzionalmente, un footer in coda contenenti informazioni necessarie al protocollo in uso e per l'adempimento delle funzionalità previste dal livello che si sta attraversando. Ad esempio al livello 3 verranno aggiunti gli indirizzi IP della macchina sorgente e di quella di destinazione mentre al livello 2 i MAC-Address delle schede di rete e i codici per il controllo dell'errore. Tali informazioni verranno utilizzate dall'infrastruttura di network (la gray-box) per poter instradare e consegnare il pacchetto a destinazione, dove verranno estratte durante la risalita dei livelli consegnando all'applicazione di destinazione i soli dati inviati dalla sorgente. 11 Ogni pacchetto può seguire un percorso diverso da quello degli altri. 6 Progetto 3D CloudWiz | ATI NICE - DIEE Questo processo di incapsulamento dei pacchetti è quello che garantisce la grande flessibilità delle reti a commutazione di pacchetto ma ha delle conseguenze dirette su alcune delle grandezze di interesse per il problema in esame. Capacità La banda di un link (livello 1) è legata alla capacità tipica del mezzo fisico che lo costituisce (cavi in rame, fibre ottiche, aria, vuoto, ....) e/o alle caratteristiche hardware dei trasmettitori/ricevitori elettronici o ottici e come tale non può essre modificata. Il processo di incapsulamento prevede, ad ogni attraversamento di livello, l'aggiunta di un header e di un footer ai dati provenienti dai livelli superiori; riportiamo di seguito la struttura degli header IP ed Ethernet II aggiunti rispettivamente nell'attraversamento dei livelli 3 e 2: Illustrazione 1: Incapsulamento al livello 3 - Header IP Illustrazione 2: Incaspsulamento al livello 2: Header Ethernet II E' quindi naturale che, essendo fissato il numero massimo di bit per secondo che può attraversare link fisico, l'aggiunta di nuovi bit si traduca in una riduzione del numero di bit utili12 per secondo che possono attraversare il link e della banda apparente vista dai livelli superiori. 12 I bit di interesse per l'applicazione e l'utente. 7 Progetto 3D CloudWiz | ATI NICE - DIEE Dunque, salendo di un livello logico 13, la banda di un hop risulta inferiore rispetto a quella nominale dei link che lo compongono. Inoltre le dimensioni degli header e dei footer sono determinate dai particolari protocolli in uso e dunque fuori dal controllo di un utente che vede l'infrastruttura di rete come una gray-box. Proviamo a stimare la differenza di capacità percepita al livello 3 rispetto alla capacità nominale di un link fisico dovuta all'utilizzo dell'incapsulamento di tipico del frame Ethernet II. Se indichiamo con • L3 la lunghezza di un pacchetto proveniente dal livello 3; • H2 la dimensione dell'header introdotto al livello 2; • C2 la capacità al livello 2 possiamo stimare che il tempo necessario per trasmettere il pacchetto proveniente dal livello 3 tenuto conto dell'overhead dovuto all'incapsulamento sarà: T L3= L L3 + H L2 C L2 e dunque la capacità percepita al livello 3 sarà : C L3=C L2 1 H 1+ L2 L L3 che evidenzia come la “riduzione” di capacità sia proporzionale al rapporto tra la dimensione dell'header e la dimensione dei dati provenienti dal livello superiore( nel nostro caso la lunghezza 14 del pacchetto IP). Facciamo qualche esempio numerico. L'overhead del framing di tipo Ethernet II è di 26 byte. Se consideriamo un link da 10 Mb/sec e pacchetti IP di dimensione di 100 bytes otteniamo : 13 Al livello 2 un blocco di dati viene indicato con il termine frame mentre al livello 3 si usa il termine packet. Tale lunghezza non è fissata a priori da nessuno standard, ma viene solitamente concordata tra gli apparati per ottimizzare l'utilizzo del link. Il protocollo IP ha un parametro, detto maximum transmission unit o MTU che definisce la dimensione massima dei pacchetti che possono essere inviati in un dato link. Il valore minimo di questo valore è intorno ai 100 byte, mentre il valore massimo dipende dal tipo di mezzo che costituisce il link fisico, il valore di default di questo valore è pari a 1500 bytes. 14 8 Progetto 3D CloudWiz | ATI NICE - DIEE C100b =10∗ 1 Mb / s=7,94 Mb/ s 26 1+ 100 con una perdita netta superiore al 20%; tuttavia utilizzando il valore tipico della dimensione dei pacchetti IP pari a 1500 bytes, otteniamo C1500b=10∗ 1 Mb/ s=9,83 Mb / s 26 1+ 1500 con una riduzione della capacità inferiore al 2%. Sulla base di queste osservazioni possiamo dare una definizione operativa della capacità C di un hop come il bit-rate, misurato al livello IP15, con cui un hop può trasferire dei pacchetti IP di dimensione pari al MTU. In una connessione punto-punto ogni hop avrà una sua capacità Ci , dunque l'hop con la capacità minima costituirà un collo di bottiglia e determinerà la capacità dell'intera connessione : C path = min Ci i=1,…,H In altri termini stimare la capacità di una connessione punto-punto significa stimare la capacità dell'hop che opera da collo di bottiglia, ovvero quello a capacità minima. 15 E' importante ricordarsi che questa misura è fatta a livello IP e dunque tiene conto solo dell'overhead del framing Ethernet II (o comunque di livello 2), salendo di un ulteriore livello logico (ad esempio a livello TCP) dovremmo considerare anche l'overhead legato all'incapsulamento di protocollo IP. 9 Progetto 3D CloudWiz | ATI NICE - DIEE Banda disponibile Inizialmente abbiamo definito la banda disponibile come la misura della porzione di capacità di un link non ancora utilizzata. Una prima conseguenza di questa definizione è che la banda disponibile dipende dalla quantità di pacchetti che attraversano il link istante per istante e dunque è un parametro che varia nel tempo. Per illustrare meglio questo aspetto facciamo alcune osservazioni assiomatiche. Oss. 1: Il link è un mezzo fisico. E' bene ricordare che un link è un mezzo fisico (filo di rame, fibra ottica, aria) che collega due apparati e come tale in ogni istante può trovarsi solo in uno di due stati (che per praticità possiamo modellare con i valori binari 0 e 1 ): • inattivo : nessun segnale fisico lo attraversa; • in trasmissione : un segnalo lo attraversa alla massima velocità possibile consentita dalla natura del mezzo. In altri termini, a livello fisico e in un particolare istante, la banda disponibile è pari alla capacità del mezzo fisico oppure è nulla. E' naturale che senza ulteriori precisazioni la banda disponibile risulta un parametro di scarso interesse; per renderla più interessante ed utile occorre ragionare in termini statistici e considerarla la differenza tra la capacità e l'utilizzo medio del canale in un intervallo di tempo significativo : 1 ū (t−τ ,t ) = τ 1,2 lato che riporta un utilizzo ipotetico per un 1 Utilizzo calcolo del tempo medio di utilizzo risulta u(x )dx Utilizzo di un link in un periodo T Ad esempio, facendo riferimento al grafico a intervallo T pari a 20 istanti di tempo, il t ∫t− τ ū i =0.4 → BD=1−0.4=0.6 0,8 0,6 0,4 0,2 0 Tempo 10 Progetto 3D CloudWiz | ATI NICE - DIEE Estendendo questo ragionamento ad un Hop (sequenza di link) e ad un collegamento (sequenza di Hop) avremo che la banda disponibile per l'intero collegamento sarà determinata dal link con banda disponibile minore (ovvero il collo di bottiglia dell'intero collegamento) BD i =(1−u i )C i BD path= min BD i → 1, …, H Oss. 2: il collo di bottiglia di un collegamento può variare istante per istante Ovvero, poiché la banda disponibile su ciascun link dipende dal traffico presente in un dato periodo sul link stesso e poiché tale traffico non è costante, anche la posizione del collo di bottiglia sul collegamento può variare nel tempo16. Per illustrare meglio questo concetto possiamo paragonare il collegamento punto-punto ad una sequenza di tubi di una condotta idrica: C1 A1 C2 A2 C3 A3 Disegno 1: Capacità Nominale e Banda Disponibile: Non esiste una correlazione diretta tra queste due grandezze, bensì la banda disponibile è una quantità che varia nel tempo in funzione del traffico sui singoli hop. Nel grafico il tratto 1 è quello a capacità nominale minore, ma il collo di bottiglia corrisponde al tratto 3 a causa del maggior traffico che lo attraversa. Questa estrema variabilità renderebbe il problema della stima della banda disponibile impraticabile, per tale ragione tutti gli algoritmi partono dall'assunto che il traffico si mantenga stazionario sui singoli link/hop almeno per tutta la durata della misura . Dunque l'attendibilità della stima fornita dai vari algoritmi sarà tanto maggiore quanto minore sarà il tempo di stima. L'ipotesi di stazionarietà del traffico è infatti ragionevole per brevi intervalli di tempo (nell'ordine di qualche secondo) ma perde progressivamente di validità all'estendersi dell'intervallo di osservazione. 16 In linea teorica il link che costituisce il collo di bottiglia di un collegamento potrebbe variare ad ogni intervallo T. 11 Progetto 3D CloudWiz | ATI NICE - DIEE Tipologie di traffico sulla rete E' importante suddividere il traffico presente sulla rete in diverse tipologie perché, come vedremo in seguito, alcune tipologie di traffico possono avere un impatto diretto e significativo sulle misure e quindi sull'affidabilità delle tecniche che verranno illustrate. In particolare sono tre le principali tipologie di traffico di interesse per la stima della banda disponibile: • probing traffic : i pacchetti inviati sulla connessione per stimarne le caratteristiche fondamentali; • crossing traffic : i pacchetti che attraversano uno o più link nella stessa direzione del probing traffic; • contending traffic : i pacchetti che attraversano uno o più link in direzione opposta a quella del probing traffic. Queste tipologie di traffico sono illustrate nella figura seguente Tecniche di stima della banda Le tecniche attualmente disponibili per la stima della banda sono tutte accomunate dal fatto di inviare sulla rete dei pacchetti di dati nella rete per sondarne le caratteristiche. Tuttavia l'avvento delle reti wireless ha evidenziato alcuni limiti di queste tecniche e del modello su cui si basavano ed ha dato vita ad un nuovo filone di ricerca. Questo a sua volta ha portato ad una prima suddivisione logica delle teorie di misura in due grandi famiglie: • le tecniche attive, caratterizzate dall'immissione di pacchetti nel collegamento e basate su un modello teorico creato per le reti cablate (e che si sta cercando di adattare alle 12 Progetto 3D CloudWiz | ATI NICE - DIEE reti wireless e mobile); • le tecniche passive, che si limitano a monitorare il traffico in ingresso/uscita su uno o più nodi e che sono alla ricerca di un nuovo modello che ben si adatti anche alle nuove tipologie di rete . Al momento, la ricerca sulle tecniche passive di misura non è ancora arrivata al punto di avere un unico ed efficace modello di riferimento e, conseguentemente, ad avere almeno un algoritmo di riferimento. Sono diverse le idee promettenti legate, ad esempio, a modifiche sull'infrastruttura fisica, a modifiche dei protocolli esistenti e/o all'introduzione di nuovi protocolli; ma nessuna ha ancora raggiunto una maturità ed un'affidabilità tale da diventare un punto di riferimento17. Quindi non essendo disponibili soluzioni passive implementabili ed utilizzabili dall'utente finale, concentreremo la nostra attenzione sulle tecniche attive di misura. Tecniche attive Le tecniche attive si basano sull'invio di pacchetti da un estremo all'altro del collegamento e si differenziano tra loro sia per il numero di pacchetti che per la modalità con cui questi vengono inviati. Le prime tecniche attive sono nate con la nascita di internet e si sono evolute in simbiosi con l'evoluzione degli apparati fisici che ne costituivano l'infrastruttura. E' accaduto spesso che le misure evidenziate da una tecnica suggerissero migliorie sull'hardware o sui protocolli e che, successivamente, l'attuazione di tali migliorie abbia richiesto un'evoluzione delle tecniche di misura o l'introduzione di una nuove tipologie di misura. Per tale ragione nel proporre le principali tecniche cercheremo di seguire un'ordine logico/cronologico che evidenzi le evoluzioni che ciascuna di esse ha introdotto. Ricordiamo che alla base di tutte le tecniche c'è l'assunto che: 17 La maggior parte di esse è stata sviluppata solo attraverso simulazioni teoriche ma non è stata testata su apparati reali o su larga scala, ad esempio una di esse (iBE = intelligent Bandwidth Estimation) si basa sulla coppia di messaggi RTS/CTS (Ready to Send, Clear To Send) previsti dallo standard IEEE 802.11. Secondo quanto previsto ciascun apparato prima di mandare un pacchetto dovrebbe segnalare la sua intenzione con un messaggio RTS, cui deve seguire una conferma da parte della destinazione attraverso il messaggio CTS. Nel frattempo tutti gli altri dispositivi dovrebbero interrompere le trasmissioni per evitare conflitti. Tuttavia è stato dimostrato che l'uso di questi messaggi degrada le performance dell'intero sistema e dunque sono stati declassati a “configurazione opzionale” e disabilitati per default in tutti i dispositivi. Questo rende di fatto inutilizzabile l'algoritmo citato. In un altro caso l'algoritmo si basa su una modifica ad un driver open-source per una scheda di rete wireless il cui utilizzo e funzionamento non mai andato oltre il semplice test effettuato per la pubblicazione esaminata. 13 Progetto 3D CloudWiz | ATI NICE - DIEE durante il tempo di misura la capacità fisica, il traffico (e dunque la banda disponibile) in tutti i link del collegamento si mantengano costanti. Invio di pacchetti di lunghezza variabile (VPS) Questa fu una delle prime tecniche 18 per la misura della capacità e della latenza di ogni hop lungo tutto il collegamento. Sfruttando una profonda conoscenza dei protocolli, utilizza in modo originale il campo TTL (Time To Live) dell'header di un pacchetto IP per acquisire le informazioni desiderate. Il campo TTL indica il numero massimo di hop che un pacchetto può attraversare e ad ogni attraversamento viene decrementato, quando raggiunge lo zero il pacchetto viene scartato 19. Il protocollo IP prevede che il router che scarta un pacchetto deve segnalare l'evento al mittente inviando un messaggio di notifica (ICMP Time-Exceeded). L'idea è quella di calcolare il RTT ( Round Trip Time) forzando questo meccanismo attraverso l'invio nella rete di pacchetti con un TTL crescente (da 1 a N); in questo modo l'n-esimo router nel percorso sarà costretto a scartare il pacchetto e ad indentificarsi mandando il messaggio di notifica. Le principali componenti temporali del RTT (in entrambe le direzioni) sono tre: • il tempo di serializzazione, cioé il tempo richiesto per trasferire un pacchetto di lunghezza L da un link di capacità C e può essere indicato con L/C; • il tempo di propagazione, è il tempo richiesto ad ogni bit del pacchetto per attraversare il link ed è indipendente dalle dimensioni del pacchetto; • il tempo di attesa in coda, misura il tempo che un pacchetto può restare fermo in un buffer di un router o di uno switch. Per stimare questi parametri ad ogni dispositivo di livello 3 (router) lungo il percorso vengono inviati più pacchetti della stessa dimensione assumendo che almeno uno di essi 20 non subisca alcun ritardo dovuto a problemi di accodamento. Con questo assunto nel minimo degli RTT misurati si potranno considerare solo le due componenti 18 Uno tra i primi a proporre questa tecnica ed una sua implementazione (pathchar) fu Van Jacobson autore, tra le altre cose, della prima versione del tool traceroute,ancora oggi disponibile su tutti i sistemi linux/unix e Windows. 19 Questo campo è stato introdotto nell'header dei pacchetti IP per evitare che se in una rete si dovesse creare un loop un pacchetto possa restare indefinitamente in circolo, ad esempio per un guasto o un errore di configurazione. sovraccaricando gli apparati e degradando le performance generali. 20 Si assume inoltre che il pacchetto ICMP di risposta, essendo molto più piccolo degli altri, non subisca alcun ritardo dovuto a code nel percorso di ritorno. 14 Progetto 3D CloudWiz | ATI NICE - DIEE di propagazione e serializzazione; di cui • la prima indipendente dalla dimensione del pacchetto e legata solo alla velocità di propagazione dei segnali nei vari link • e la seconda proporzionale alla lunghezza del pacchetto e dovuta alla serializzazione dello stesso nei vari link. In formule il minimo RTT per un pacchetto di dimensione L all'hop i-esimo può essere espresso dalla formula: i L = α+βi L k =1 C k T i ( L) = α+∑ dove • Ck • α è la capacità del k-esimo hop è la componente di ritardo fino all'hop i-esimo che non dipende dalla dimensione del pacchetto • βi è la pendenza all'i-esimo hop del rapporto tra il minimo RTT e la dimensione del pacchetto (vedi figura). Dunque la misura del minimo RTT per ogni dimensione del pacchetto stima il termine βi per tutti gli hop, da cui si può stimare la capacità dell'i-esimo hop attraverso la formula 1 C i = β −β i i−1 Questa tecnica può significativamente sottostimare la capacità del collegamento se lungo il 15 Progetto 3D CloudWiz | ATI NICE - DIEE percorso i pacchetti devono attraversare dispositivi di tipo store-and-forward21 (ad esempio switch). Dispersione di coppie/treni di pacchetti (PPTD) Per superare i limiti legati all'invio di un solo pacchetto, si è passati all'invio di una coppia di pacchetti, composta da due pacchetti di uguale dimensione leggermente distanziati nel tempo, con l'obiettivo di misurare la variazione (tra sorgente e destinazione) della distanza temporale tra i due pacchetti. E successivamente si è passati da una coppia pacchetti ad una serie di pacchetti, detta treno di pacchetti. L'idea alla base di questa tecnica è che tale variazione della distanza tra i due pacchetti sia proporzionale alla capacità del tratto di percorso che opera come collo di bottiglia nel collegamento. Questo concetto è illustrato qualitativamente nella figura seguente: Illustrazione 3: Dispersione di una coppia di pacchetti che attraversa un collo di bottiglia in cui l'asse orizzontale rappresenta il tempo e quello verticale la banda. Nel complesso è raffigurato un collegamento composto da tre hop, in cui quello centrale ha una banda molto inferiore agli altri due. Ogni rettangolo in grigio rappresenta un pacchetto, la cui area (pari al numero di bit) non può cambiare lungo l'intero percorso. Durante l'attraversamento dell'hop centrale a banda stretta il pacchetto subirà uno “schiacciamento” lungo l'asse verticale (banda) e quindi dovrà allargarsi orizzontalmente (nel tempo) e, dualmente, arrivando nuovamente ad un hop a banda larga verrà “stirato” verticalmente 21 La metodologia store-and-forward è una metologia di instradamento dei pacchetti che prevede che il primo bit di un pacchetto venga inviato solo dopo che l'ultimo bit sia stato ricevuto. In particolare se il dispositivo è uno switch questa tecnica prevede che al frame conservato nel buffer venga applicata una verifica d'integrità, cosa che introduce in ogni caso una latenza che altera le stime VPS. Inoltre se tale verifica fallisce il frame viene scartato e lo switch (essendo un dispositivo di livello 2) non genera il messaggio di notifica ICMP danneggiando ulteriormente le stime. Per approfondimenti http://www.cisco.com/en/US/prod/collateral/switches/ps9441/ps9670/white_paper_c11-465436.html 16 Progetto 3D CloudWiz | ATI NICE - DIEE e subirà una compressione lungo l'asse orizzontale. La spaziatura Pb tra i due pacchetti creata nel link a banda più stretta (collo di bottiglia) rimane invariata22 anche quando i pacchetti raggiungono i link a banda più elevata, perciò la spaziatura tra i pacchetti in ricezione sarà pari alla distanza nel link a banda più stretta: P r =P b . Possiamo schematizzare ciò che accade in ogni apparato in questo modo ed indicare la dispersione tra due pacchetti di lunghezza L al termine di un link con capacità C come ( Δ out = max Δ in , L Ci ) sotto l'assunto che in quel periodo temporale non ci sia altro traffico sul link. In definitiva la dispersione della coppia di pacchetti al termine del collegamento sarà: Δ R = max i=0,…, H ( ) L Ci = L L = min C i C i=0,… , H → L C = Δ R Tuttavia l'ipotesi di assenza di altro traffico sull'intero collegamento è piuttosto irrealistica e risulta particolarmente rilevante la presenza di cross traffic che può condurre a: • sottostimare la capacità, se i pacchetti estranei ritardano il secondo pacchetto e non il primo, aumentando la dispersione di un valore superiore a L/C; • sovrastimare la capacità, se i pacchetti estranei ritardano la propagazione, sul link successivo al collo di bottiglia, del primo pacchetto e non quella del secondo. 22 E' stato dimostrato che in questa situazione la rete “satura” e si comporta in maniera equivalente ad un sistema storeand-forward, ovvero non invia un pacchetto fino a che non sia stato completamente ricevuto. 17 Progetto 3D CloudWiz | ATI NICE - DIEE Per cercare di limitare questi errori sono state proposte varie metodologie accessorie: • l'uso di parametri statistici come la media o la mediana; • l'uso di pacchetti di dimensione variabile; • l'uso di distanze variabili tra pacchetti; • l'uso della varianza tra i ritardi di diverse coppie di pacchetti; • l'uso dei valori di picco della distanza tra pacchetti. Treni di pacchetti Una delle più naturali estensioni all'uso di una coppia di pacchetti è l'uso di un treno di pacchetti23, la cui dispersione è definita come la distanza temporale tra l'ultimo bit del primo pacchetto e l'ultimo bit dell'ultimo pacchetto . Misurando la dispersione Δ R (N ) di un treno di N pacchetti di lunghezza L, si può stimare la banda con la seguente equazione: B = (N −1) L ΔR ( N ) che se non ci fosse cross traffic coinciderebbe con la capacità del canale. In generale l'uso di un treno di pacchetti dovrebbe rendere più robusta la misura, tuttavia al crescere della lunghezza del treno di pacchetti aumenta la probabilità che sia presente del cross traffic durante la misura e quindi la probabilità di sottostima (anche significativa) della capacità del collegamento. Per avere una stima più precisa della banda utilizzando un treno di pacchetti è stato introdotto l'operatore ADR (Asymptotic Dispersion Rate) che nel caso di un collegamento con un singolo hop P {C 0 ,C 1 } , C 0 >C 1 , assume la seguente forma: ADR Δ = C1 ⩽ C1 RC 1− C0 23 Un treno di pacchetti consente misure statistiche più accurate e si rende addirittura necessario se nel collegamento sono presenti dei multi-channel link, ovvero quando più link fisici sono accorpati per formare un unico link logico con una banda maggiore. 18 Progetto 3D CloudWiz | ATI NICE - DIEE dove C 0 , C 1 sono le capacità dei due hop e R C è la quantità di cross-traffic che arriva sul secondo link. Si possono notare alcune caratteristiche: • la lunghezza del treno di pacchetti non influenza l'ADR (tuttavia ne limita la varianza); • se • l'ADR non è legata alla banda disponibile ed anzi è più ampia: R C >0 → ADR < C ADR > A = C 1−RC Purtroppo l'ADR richiede la conoscenza del cross-traffic presente su tutti i link. Stream Periodici (SloPS) Questa tecnica nasce dall'osservazione che inviando un treno di K pacchetti di lunghezza L con una frequenza R superiore alla banda disponibile A, a destinazione la distanza tra due pacchetti consecutivi di uno stesso treno crescerà in maniera lineare. Osservando la figura seguente possiamo notare facilmente che fintanto che R<A il ritardo rilevato si mantiene quasi costante, mentre quando R>A i pacchetti continueranno ad accumularsi nella coda del link a banda più stretta ed il ritardo misurato a destinazione aumenterà proporzionalmente. Illustrazione 4: Andamento del ritardo rilevato nei casi in cui R<A o R>A Per trovare il valore R=A per cui i pacchetti iniziano ad accodarsi l'algoritmo prevede che la sorgente invii alla destinazione diversi treni di pacchetti a frequenze diverse, aumentando o diminuendo la frequenza in base alle stime effettuate dal ricevente secondo lo schema di una ricerca binaria. 19 Progetto 3D CloudWiz | ATI NICE - DIEE Treni di coppie di pacchetti (TOPP) Questa tecnica è simile alla SloPS e differisce principalmente per le analisi statistiche sulle misure raccolte. La tecnica TOPP prevede di inviare delle coppie di pacchetti dalla sorgente alla destinazione, incrementando progressivamente la frequenza con cui le coppie vengono inviate. Se la frequenza di invio R0 dei pacchetti è tale da non saturare la banda disponibile A allora la frequenza di arrivo, misurata a destinazione, appena R 0> A → R m , sarà uguale a quella di invio. Tuttavia, non Rm < R 0 . Consideriamo un percorso di capacità C e banda disponibile A, in presenza di cross-traffic pari a R C =C−A , se tracciamo l'andamento del rapporto tra frequenza di ricezione e frequenza di invio R0 / Rm certo valore di al crescere della frequenza di invio, avremo un andamento orizzontale fino ad un R0 e poi una crescita lineare dovuta all'effetto dell'accodamento dei pacchetti. Il punto in cui cambia la pendenza coincide con la banda disponibile: Per capire meglio come funziona osserviamo che non appena frequenza misurata non sarà più pari a Rm = R 0 supera la banda disponibile la R 0 ma R0 C R 0+ R C → R0 R +R = 0 C Rm C TOPP stima la banda disponibile come il valore massimo di R 0 per il quale R m ≈ R0 . L'ultima relazione ci consente di stimare la capacità in funzione della pendenza del rapporto R 0 / R m , inoltre nel caso di collegamenti con più link è possibile che la curva R 0 / R m presenti diverse pendenze dovute alla saturazione di diversi link 24 24 Questo è vero se e solo se i link che hanno via via una banda disponibile superiore si trovano prima del precedente 20 Progetto 3D CloudWiz | ATI NICE - DIEE Sequenze di coppie di pacchetti e Kalman Filters Un'altra tecnica simile a TOPP e SloPS prevede l'uso di filtri di Kalman per la stima della banda disponibile e si basa sulla definizione di una nuova misura: la deformazione della distanza tra due pacchetti. Vediamo di darne una definizione precisa. Consideriamo la i-esima coppia di pacchetti di una sequenza ed indichiamo: • con τ i1 , τi2 i tempi di arrivo dei due pacchetti ad un generico hop; • con τ *i1 , τ*i2 i loro tempi di arrivo all'hop successivo. Non siamo interessati tanto al loro valore assoluto quanto alla differenza del tempo di arrivo tra i due pacchetti t i = τ i2 −τ i1 t *i = τ *i2 −τ *i1 e alla differenza tra questi due valori δ = t *i −t i che ci consente di definire la deformazione della distanza tra due pacchetti come 1+εi = t *i ti → εi = Indicando infatti • con s la dimensione dei pacchetti; • con u= t la frequenza di invio dei pacchetti; i • e con r = s s t *i quella di ricezione; possiamo ricavare la relazione collo di bottiglia (altrimenti non potrebbero giungere a saturazione). 21 δi ti Progetto 3D CloudWiz | ATI NICE - DIEE s / ti t *i u = 1+εi = = r ti s / t *i La deviazione di questo rapporto dall'unità è pari alla deviazione di ε dallo zero. Tracciando il grafico di ε in funzione della frequenza di invio dei pacchetti si nota subito l'analogia con la tecnica TOPP: L'idea è dunque quella di utilizzare i filtri di Kalman per stimare a quale frequenza di invio ε inizia a discostarsi dallo zero. Per farlo si considera il collegamento come una black-box descritta da un vettore di stato x, si indica con u la frequenza di invio dei pacchetti, con z la deformazione della distanza tra i pacchetti, con w il rumore presente nel sistema e con v il rumore di misura. In questo modo si possono indicare l'evoluzione nel tempo del sistema e delle misure rispettivamente con x k +1 = g (x k , u k , w k ) = x +w zk { = f (x k , u k , v k ) = v + 0 α u +β Un filtro è una procedura che prende in ingresso x̂k e produce una stima del prossimo stato stimare la banda con la relazione } (u⩽B) (u> B) u k , z k ed una stima dello stato del sistema x ̂k +1 . Ottenendo delle stime α̂ , β̂ è possibile β̂ . ̂ B=− α̂ Dunque a partire da una stima iniziale il modello viene via via aggiornato e dopo un tempo iniziale di convergenza è in grado di fornire una stima in tempo reale della banda disponibile. 22 Progetto 3D CloudWiz | ATI NICE - DIEE Treni di pacchetti esponenzialmente distanziati (chirp) L'ultima variante al treno di pacchetti prevede l'uso di pacchetti con spaziatura esponenzialmente decrescente (denominati chirp): In maniera simile a TOPP, l'idea è di raggiungere progressivamente la saturazione della rete e verificare a quale frequenza di invio dei pacchetti la distanza di ricezione di discosta da quella in invio. Tuttavia in questo caso si può sfruttare la spaziatura esponenziale per ottenere lo stesso risultato con un numero molto inferiore di pacchetti, riducendo così sia l'intrusività dell'algoritmo che i tempi di convergenza. La sorgente invia m treni di pacchetti (chirp) composti ognuno da N pacchetti di dimensione P. I pacchetti hanno tutti la stessa dimensione e la stessa spaziatura all'interno dei vari chirp, per cui i valori associati ad ogni pacchetto sono calcolati come media dei valori rilevati sugli m chirp ricevuti. Possiamo indicare • con γ il fattore di distanza tra pacchetti; • con qk quello dovuto alle code per il pacchetto k-esimo; • con Δ k la distanza temporale tra pacchetto consecutivi; • con R k = Δ k P la frequenza istantanea del chirp al pacchetto k-esimo. Assumendo che il cross-traffic sia stazionario abbiamo che 23 Progetto 3D CloudWiz | ATI NICE - DIEE q k =0 q k >q k −1 0 da cui si può stimare la banda disponibile se se R k ⩽B Rk > B ̂ B=R k * dove k* è il pacchetto in cui inizia la crescita del fattore di accodamento. Illustrazione 5: Tipica traccia dei ritardi di accodamento dei pacchetti di un chirp Osservando l'illustrazione 3 si può notare come ad un certo punto il fattore di accodamento cresca per un breve periodo per poi ritornare allo zero; questo fenomeno, detto escursione, è legato all'insorgere in un link del collegamento di un traffico extra di tipo burst (cioè intenso ma di breve durata). Tuttavia essendo ancora il rate di invio inferiore alla banda disponibile, dopo un breve periodo le code si svuotano e i valori di accodamento ritornano alla normalità. Per individuare la banda disponibile il client tiene dunque conto di questa eventualità e non si limita a considerare il primo valore per cui q k <q k −1 (che potrebbe corrispondere ad una escursione) ma cerca quel valore di k a partire dal quale il valore di q k non decresce più. Tools Originariamente ad ogni tecnica corrispondeva un tool che la implementava tale e quale. Con il passare del tempo sempre più spesso sono stati sviluppati tool che implementavano più di una delle tecniche disponibili e/o le fondevano assieme per cercare di superare i limiti di ciascuna. Riportiamo di seguito un breve resoconto dei principali tool disponibili per la stima della banda disponibile attraverso tecniche attive. Tool per la stima della capacità degli hop Sono sostanzialmente tool che utilizzano la tecnica VPS. Il primo tool ad implementarla fu pathchar, scritto dallo stesso Van Jacobson (ideatore di questa tecnica) nel 1997. Altri tool ad implementare questa tecnica sono Clink e Pchar che tuttavia non introdussero sostanziali 24 Progetto 3D CloudWiz | ATI NICE - DIEE innovazioni. Tool per la stima della capacità di un collegamento punto-punto Questi tool tentano di stimare la capacità del collo di bottiglia dell'intero collegamento; la maggior parte di essi utilizza la dispersione di una coppia di pacchetti. Bprobe usa coppie di pacchetti di dimensione variabile per cercare di aumentare la precisione e applica dei filtri per cercare di rigettare i pacchetti le cui misure presentano un'elevata probabilità di esser state influenzate da cross-traffic. Nettimer utilizza una sofisticata tecnica statistica, denominata kernel density estimation, per stimare il modo dominante nella distribuzione delle misure dei pacchetti e cercare di superare i limiti tipici delle tecniche basate su istogrammi. Pathrate usa diverse misure, ottenute mediante coppie di pacchetti di diversa dimensione, per stimare tutti i modi locali (uno dei quali corrisponde alla capacità del collegamento). Successivamente utilizza dei lunghi treni di pacchetti per stimare la frequenza media di dispersione (Average Dispersion Rate ADR) che risulta sempre inferiore o uguale alla capacità e quindi può essere considerato un limite inferiore della capacità del collegamento. Sprobe sfrutta le caratteristiche del protocollo TCP per stimare la banda. La sorgente invia alcune coppie di pacchetti TCP SYN (cui aggiunge un payload superiore al MTU, per aumentare la probabilità di accodamento). Il protocollo TCP prevede che la destinazione che risponda ai pacchetti SYN con dei pacchetti TCP RST (che occupano 40 bytes ed hanno una bassa probabilità di essere accodati nel cammino di rientro). In questo modo la sorgente riesce a stimare la dispersione sul collegamento e dunque la capacità. In alcuni casi può stimare anche la banda in direzione inversa (dalla destinazione alla sorgente) attraverso l'invio di un piccolo file. AdHoc Probe è una variante del tool CapProbe (vedi sotto) orientato alla stima della massima velocità di trasferimento in un collegamento punto-punto che includa componenti wireless, ma in assenza di competing-traffic. A differenza di CapProbe è unidirezionale e i pacchetti vengono inviati dalla sorgente alla destinazione e qui vengono effettuate le stime. Tool per la stima della banda disponibile Il primo tool a cercare di stimare la banda disponibile è stato Cprobe che utilizza un treno di 8 pacchetti di dimensione pari al MTU. Tuttavia è stato dimostrato che questo approccio misura la 25 Progetto 3D CloudWiz | ATI NICE - DIEE frequenza di dispersione che è diversa dalla banda disponibile in quanto la prima dipende dall'intero collegamento e dalla frequenza iniziale del treno di pacchetti, mentre la banda disponibile è legata solo al link più “stretto”. CapProbe utilizza delle coppie di pacchetti inviati dalla sorgente alla destinazione e poi rimandati indietro (round-trip), ma oltre a considerare la dispersione dei pacchetti utilizza anche i ritardi complessivi per identificare (e scartare) i pacchetti che sono stati influenzati da cross-traffic. Pathload invece utilizza la tecnica SloPS e restituisce un intervallo di valori, il cui centro indica il valor medio della banda disponibile durante l'intervallo di misura, mentre gli estremi danno una stima della variabilità di questa misura. Altri tool come IGI, che usa la tecnica TOPP, o pathchirp, che usa sequenze di chirp, hanno cercato di modificare la tipologia di pacchetti e la modalità di invio per ottenere la stessa precisione di Pathload ma con un numero minore di pacchetti e/o un tempo di convergenza inferiore. BART fa uso dei filtri di Kalman per fornire una stima in tempo reale della banda disponibile sul collo di bottiglia del collegamento; esiste anche una sua variante, denominata Multi-rate Bart o MR-BART, che varia la frequenza di invio delle coppie di pacchetti anche all'interno di una stessa sequenza per aumentare la precisione della stima. WBest, è un algoritmo suddiviso in due fasi ed ottimizzato per massimizzare l'accuratezza minimizzando il tempo di convergenza e l'intrusività (cioè il numero di pacchetti da inviare sul canale). Nella prima fase vengono inviate N coppie di pacchetti per stimare la capacità del canale, successivamente viene inviato un treno di pacchetti alla massima velocità stimata per calcolare il trhoughput reale e la banda disponibile. Qualche25 confronto Per completare il panorama dei tool presentati riportiamo in alcune tabelle alcuni valori di confronto tra le stime dei principali algoritmi in diverse condizioni operative. I valori riportati sono tratti da alcuni degli articoli riportati in bibliografia, in quanto non sarebbe stato possibile effettuare tutte le necessarie simulazioni (sia per la non disponibilità degli eseguibili 25 Non per tutti gli algoritmi erano disponibili dati utili per un confronto perché in molti casi le pubblicazioni riportavano risultati di simulazioni effettuate per verificare la capacità di un dato algoritmo di stimare la banda in un ambiente simulato ma quest'ultimo non veniva testato in un contesto reale e/o confrontato con altri algoritmi che potessero fornire dei riferimenti. Abbiamo dunque riportato i dati disponibili sugli algoritmi che abbiamo ritenuto più interessanti (perché citati come modello o termine di paragone in molte pubblicazioni). 26 Progetto 3D CloudWiz | ATI NICE - DIEE di molti dei tool citati, sia per la difficoltà oggettiva di ricreare un'infrastruttura di test in grado di riprodurre tutte le condizioni operative richieste per evidenziare le diverse criticità di funzionamento). Precisione della stima Riportiamo di seguito alcuni test effettuati 26 di diversi algoritmi, in condizioni operative diverse (canale libero, cross-traffic, contending-traffic (UDP/TCP) ), su uno stesso collegamento composto da reti cablate ed avente come ultimo hop un collegamento wireless. Tutti i valori riportati sono corrispondono al valor medio su 30 misure. Banda Reale IGI/PTR PathLoad PatChirp WBest 1 Idle channel 28.94 8.11 6.78 30.15 28.47 2 Cross traffic 24.39 8.74 6.81 28.89 23.24 3 Contending traffic 20.52 10.06 6.91 27.59 15.76 4 Saturated 0.0 1.92 1.95 5.00 1.01 5 Rate adapation 15.26 5.99 6.47 16.79 13.99 Intrusività e tempo di convergenza Riportiamo di seguito i tempi di convergenza (in secondi) e l'intrusività (rapporto tra pacchetti di misura e pacchetti utili inviati) relativi agli esempi precedenti IGI/PTR PathLoad PatChirp WBest intrus. tempo intrus. tempo intrus. tempo intrus. tempo 1 0.56 1.55 1.18 14.88 0.45 17.43 0.13 0.41 2 0.56 1.42 1.55 20.22 0.45 17.58 0.13 0.42 3 0.47 1.29 1.53 17.04 0.45 17.62 0.13 0.42 4 2.54 17.21 1.22 42.06 0.46 17.24 0.13 0.67 5 0.66 1.86 1.66 23.73 0.45 17.48 0.13 0.42 26 Un algoritmo interessante e promettente era BART (soprattutto nella sua variante MR-BART), purtroppo nelle pubblicazioni di presentazione degli algoritmi non erano presenti test comparativi che consentissero un facile confronto con altri algoritmi e non si è trovata un'implementazione da testare per stimarne il reale comportamento. 27 Progetto 3D CloudWiz | ATI NICE - DIEE Conclusioni Osservando i dati in tabella si nota subito come sia IGI/PTR che Pathload sottostimino significativamente l'ampiezza di banda in caso di canale libero, mentre sia Patchirp che Wbest rescono a dare una stima piuttosto accurata. Una possibile ragione di questo può essere che l'overhead dovuto all'invio di pacchetti di test su reti wireless è maggiore rispetto a quello che si ha in reti cablate (a testimonianza delle problematiche introdotte da questo tipo di reti su algoritmi basati sul modello teorico studiato per reti cablate); inoltre la dimensione dei pacchetti usata da questi tool è piccola rispetto al MTU (500 bytes IGI, 200 bytes Pathload). Osservando la seconda tabella si può notare che PathChirp e PathLoad hanno tempi di convergenza piuttosto lunghi. Questo può causare dei problemi in situazioni come il caso 5 di banda variabile (ad esempio per disturbi sulla rete wireless). In questo caso Pathchirp tende a sovrastimare la banda disponibile ed anche se la differenza in valore assoluto è simile a quella di Wbest l'errore è più grave perché potrebbe portare ad una saturazione del collegamento e ad un crollo della Quality Of Services. In base a queste osservazioni, considerando la minore intrusività, i bassi tempi di convergenza e la disponibilità del codice sorgente riteniamo che Wbest sia il miglior candidato tra i tool disponibili per l'implementazione di un sistema network-aware con monitoraggio attivo della banda disponibile. Appendice A: Problematiche legate alle reti wireless Le reti wireless hanno un'infrastruttura ed un funzionamento più complessi rispetto alle tradizionali reti cablate, per cui molte delle idee che costituiscono il fondamento delle tecniche precedenti possono risultare inadeguate se applicate direttamente, senza opportuni accorgimenti. Vediamo alcuni problemi legati all'applicazione di queste tecniche alle reti wireless. Rilevamento delle collisioni (CSMA/CD vs CSMA/CA) Una generica interfaccia di rete (cablata o wireless) prima di inviare un frame si mette in ascolto sul canale di trasmissione per capire se questo è libero o meno. Se c'è una trasmissione in corso si mette in attesa e non appena il canale si libera inizia l'invio del proprio frame. Questa fase viene indicata dalle lettere CS (Carrier Sense) degli acronimi precedenti ed è comune 28 Progetto 3D CloudWiz | ATI NICE - DIEE ad entrambe le tipologie di rete. In una rete complessa dove ci sono più di due macchine collegate è possibile (anzi probabile) che più dispositivi possano inviare frame e pacchetti sullo stesso canale (MA = Multiple Access). Questa condizione può dare origine a delle collisioni, infatti quando un'interfaccia di rete, dopo aver atteso che il canale si liberasse, inizia a trasmettere il proprio frame c'è il rischio che un'altra interfaccia abbia seguito lo stesso iter ed inizi a sua volta una trasmissione 27. Quando questo accade si ha una collisione, ovvero i due segnali (elettrici, ottici, elettromagnetici) si sovrappongono sul mezzo fisico distruggendo le informazioni portate da entrambe i segnali e i frame andranno ritrasmessi. Qui le due tipologie di rete si differenziano. Nelle reti cablate l'interfaccia di rete può mettersi in ascolto sul canale anche durante la trasmissione, accorgersi di una collisione (che si manifesta con dei picchi di segnale) e intervenire immediatamente28 (CD = Collision Detection). In una rete wireless la scheda di rete non è in grado di mettersi in ascolto durante la trasmissione e quindi non potendo accorgersi di una eventuale collisione può solo cercare di evitarla 29 (CA = Collision Avoidance). Questo limite diventa ancora più significativo se si considera che nelle reti cablate il canale è un filo elettrico isolato dal resto del sistema e quindi le possibilità di collisione sono dovute esclusivamente ad una trasmissione concorrente; di contro in una rete wireless il canale è condiviso e conteso da altre reti ed altri sistemi, dunque la probabilità di collisioni dovute anche ad 27 Per minimizzare la probabilità di collisioni lo standard 802.11 prevede l'uso di una coppia di messaggi RTS/CTS (Ready-To-Send / Clear-To-Send). Quando un terminale è pronto ad inviare sul canale un frame, invia preventivametne al router un pacchetto RTS. Il router seleziona (in caso di più RTS) un dispositivo e invia una risposta CTS in broadcast a tutti i dispositivi indicando quale dispositivo è abilitato all'invio. Il dispositivo selezionato invierà il frame mentre gli altri attenderanno che il canale torni libero. Tuttavia è stato dimostrato che in molti casi l'overhead imposto da questo protocollo ha un effetto negativo sulle performance del sistema e di conseguenza questo meccanismo è quasi sempre disabilitato. 28 Il protocollo prevede che venga inviato un segnale con una codifica particolare, detto JAM signal, per avvisare tutte le reti in ascolto dell'avvenuta collisione. A seguito di un segnale di JA tutte le interfacce di rete iniziano un periodo backoff (silenzio) la cui durata è determinata casualmente da ogni scheda per minimizzare il rischio di ulteriori collisioni. 29 In questo caso il protocollo prevede che il ricevente dopo aver ricevuto e verificato il frame invii un segnale di ACK (acknowledgment) al mittente. In caso di mancato ricevimento dell'ACK il mittente suppone che vi sia stata una collisione, inizia un periodo di backoff preventivo (la cui durata è stabilita casualmente nell'intervallo [0..CW), CW = Contention Window ed è una stima del livello di contesa sul canale) e poi reinvia il frame. In caso di collisioni successive il valore di CW viene raddoppiato e dunque anche la durata del backoff ha una crescita esponenziale. 29 Progetto 3D CloudWiz | ATI NICE - DIEE interferenze esterne è molto più elevata30. MAC layer retries Per mascherare parzialmente questa fragilità delle reti wireless lo standard 802.11 definisce un meccanismo denominato MAC layer retries che prevede che sia l'hardware stesso ad effettuare un certo numero di tentativi di ritrasmissione dei frame prima di notificare ai layer superiori il fallimento dell'invio. Questo da un lato minimizza il numero di frame persi aumentando l'affidabilità della rete, ma dall'altro aumenta la varianza associata al ritardo di trasmissione, avvicinando questa grandezza ad una variabile aleatoria, e rischia di rendere inconsistenti le misure della dispersione su coppie di pacchetti. Infatti la dispersione in una coppia di pacchetti, a causa di questo fenomeno, può essere contratta od espansa durante l'attraversamento di un link wireless anche in assenza di congestione sulla rete (ad esempio per la presenza momentanea di contending traffic). Algoritmi di controllo della frequenza Un ulteriore elemento di aleatorietà delle reti wireless è dovuto al fatto che lo standard 802.11 prevede che i dispositivi siano in grado di negoziare automaticamente la velocità di trasmissione (e dunque la capacità di un collegamento) tuttavia non definisce un algoritmo RCA ( Rate Control Algorithm), ovvero non specifica le misure (ad esempio la potenza di segnale, il numero di ritrasmissioni, il numero di errori di trasmissione o altro) e le regole con cui variarla, lasciando ogni costruttore libero di implementare il proprio algoritmo31. Questo aumenta l'aleatorietà delle stime perché non si sa a priori quale algoritmo stia operando e soprattutto perché viola il presupposto che la capacità del canale rimanga costante per tutto il 30 Le possibili cause di interferenza e disturbo di una rete wireless sono innumerevoli, a partire dal movimento di un dispositivo (router o PC) che aumentando la distanza può ridurre la potenza del segnale e di conseguenza la capacità del canale, o equivalentemente al passaggio di persone od oggetti che possono frapporsi tra il trasmittente ed il ricevemente, all'attivazione di altri router nelle vicinanze che pur appartenendo a reti diverse occupano la stessa porzione dello spettro elettromagnetico, all'attivazione di oggetti che pur non essendo specificamente pensati per l'invio/ricezione di segnali sono in grado di generare interferenze elettromagnetiche, e via dicendo. La maggior parte di questi “disturbi” non sono sotto il nostro controllo e sono pertanto assolutamente imprevedibili. 31 Uno dei più diffusi algoritmi commerciali è l'ARF (Auto Rate Fallback) che in condizioni normali è in grado di migliorare notevolmente le performance rispetto ad una installazione 802.11 a banda fissa, tuttavia è stato dimostrato che in caso di link congestionati questo algoritmo ha un impatto negativo sulle performance complessive. Un altro algoritmo è lo RBAR (Receiver Based Auto Rate) che però si basa sulla coppia di messaggi RTS/CTS e quindi raramente è applicabile. 30 Progetto 3D CloudWiz | ATI NICE - DIEE periodo della stima. Bibliografia 1. V. Jacobson, “Congestion Avoidance And Control”, in SIGCOMM Computer Communication Review, ACM, 1988 2. K.Bala, I.Cidon, K.Sohraby, “Congestion control for high speed packet switched networks” in IEEE Proceedings, 9 Annual Conference of the IEEE Computer and Communication Societies (INFOCOM), 1990 3. S.Shenker, “A theoretical analysis of feedback flow control”, in Proceedings of the ACM Symposium on Communications Architectures & Protocols (SIGCOMM), 1990 4. S.Keshav, “A control theoretic approach to flow control” in SIGCOMM Computer Communication Review, ACM, 1991 5. S.Floyd, V.Jacobson, “On Traffic Phase Effects in Packet-switched Gateways”, in Internetworking Research and Experience, vol.3 pages 115-126, 1992 6. JC Bolot, “Characterizing End-to-End Packet Delay and Loss in the Internet” in Journal of High Speed Networks, IOS Press, 1993 7. I. Cidom, A. Khamisy, M.Sidi, “Analysis of Packet Loss Processes in High-speed Networks”, in IEEE Transactions on Information Theory, vol. 39, no.1, 1993 8. V.Paxson, “Empirically derived analytic models of wide-area TCP connections”, IEEE/ACM Transactions on Networking (TON) vol.2, issue 4, pages 316-336, 1994 9. R.L. Carter, M.E.Crovella, “Measuring bottleneck link speed in packet-switched networks” in Performance Evaluation Vol 27–28, Pages 297–318, 1996 10. B.P. Crow, “IEEE 802.11 Wireless Local Area Networks” in IEEE Communications Magazine, vol.35 iss. 9 pag.116, 1997 11. V. Paxson, “Measurements and Analysis of an end-to-end Internet Dynamics”, Phd Thesis in Computer Science Division of University of California, Berkeley, 1997 12. V. Paxson, “End to End Internet Packet Dynamics”, in SIGCOMM Computer Communication Review, ACM, 1997 13. V. Jacobson, “Pathchar A Tool to Estimate Internet Link Characteristics”, slides, link, 1997 31 Progetto 3D CloudWiz | ATI NICE - DIEE 14. K.Lai, M.Baker, “Measuring Bandwidth” in Proceedings of IEEE INFOCOM, pages 235-245, 1999 15. R.Rejaie, M.Handley, D. Estrin, “RAP - And end to end Rate-based Congestion Control Mechanism for Realtime Streams in Internet” in Proceedings of IEEE INFOCOM, vol. 3, pages 1337-1345, 1999 16. M.Allan, V. Paxson, “On Estimating end-to-end Network Path Characteristics” in ACM SIGCOMM Computer Communication Review, vol 29, issue 4, 1999 17. K.Lai, M.Baker, “Measuring Link Bandwidth using a Deterministic Model of Packet Delay” in Proceedings of ACM SIGCOMM, pages 283-294, 2000 18. A.B.Downey, “Using Patchar to estimate Internet Link Characteristics”, in SIGCOMM Computer Communication Review, ACM, 2000 19. B.Melander, M.Bjorkman, P.Gunningber, “A new end-to-end probing and analysis method for estimating bandwidth bottlenecks” in Global Internet Symposium, 2000 20. S.Banerjee, A.K.Agrawala, “Estimating available capacity of a network connection” in Proceedings of IEEE International Conference on Networks(ICON), 2000 21. Y.Zhang, N.Duffield, V.Paxson, S.Shenker, “On the Constancy of Internet Path Properties” in Proceedings of the ACM SIGCOMM Workshop on Internet Measurement, pages 197-211, 2001 22. K.Lai, M.Baker, “Nettimer: A tool for measuring bottleneck link bandwidth” in Proceedings of the 3rd USENIX Symposium on Internet Technologies and Systems, 2001 23. S. Alouf, P. Nain, and D. Towsley, “Inferring Network Characteristics via Moment-Based Estimators” in Proceedings of IEEE INFOCOM, 2001 24. C.Dovrolis, P. Ramanathan, “What Do Packet Dispersion Techniques Measure?” in Proceedings of IEEE INFOCOM, pages 905-914, 2001 25. M.Jain, C.Dovrolis, “End To End Available Bandwidth: Measurements, Metodology, Dynamics and Realtion with TCP Throughput” in SIGCOMM Computer Communication Review, ACM, 2002 26. A. Pasztor, D. Veitch, “The Packet size dependece of packet pair like methods” in IEEE 32 Progetto 3D CloudWiz | ATI NICE - DIEE International Workshop of Quality Of Service (IWQoS), 2002 27. A.Pasztor, D.Veitch, "On the Scope of End-to-end Probing Methods" in IEEE Communications Letters, vol.6, issue 11, pages 509-511, 2002 28. B. Melander, M. Bjorkman, and P. Gunningberg, “Regression-Based Available Bandwidth Measurements,” in International Symposium on Performance Evaluation of Computer and Telecommunication Systems, 2002 29. M. Jain, C. Dovrolis, “Pathload: A Measurement tool for end-to-end available bandwidth” in Proceedings of Passive and Active Measurements (PAM) Workshop, pages 14-25, 2002 30. N. Hu, P. Steenkiste, “Estimating available bandwidth using packet pair probing”, [Online], link, 2002 31. N. Hu, P. Steenkiste, “Evaluation and Characterizaion of Available Bandwidth Probing Techniques”, in IEEE Journal on Selected Areas In Communications, vol. 21, no.6, 2003 32. R.S.Prasad, C.Dovrolis, B.A.Mah, “The effect of layer-2 store-and-forward devices on perhop capacity estimation” in IEEE Annual Joint Conference of the IEEE Computer and Communications (INFOCOM), vol.3, pages 2090-2100, 2003 33. K. Harfoush, A. Bestavros, J. Byers, “Measuring Bottleneck Bandwidth of Targeted Path Segments” in Proceedings of IEEE INFOCOM, 2003 34. V. Ribeiro et al., “pathChirp: Efficient Available Bandwidth Estimation for Network Paths” in Proceedings of Passive and Active Measurements (PAM) Workshop, 2003 35. R.S.Prasad, M.Murray, C.Dovrolis, K. Claffy, “Bandwidth estimation: metrics, measurement techniques, and tools,” in IEEE Network,vol. 17, pp. 27–35, 2003 36. J. Strauss, D. Katabi, F. Kaashoek, "A Measurement Study of Available Bandwidth Estimation Tools" in Proceedings of ACM SIGCOMM Conference on Internet Measurement, 2003 37. J.Navratil, "ABwE: A Practical Approach to Available Bandwidth Estimation" In Proceedings of the PAM, 2003 38. S.Shah, " Available bandwidth estimation in IEEE 802.11-based wireless networks"in Final Report of Bandwidth Estimation ISMA Workshop, 2003 39. S. R. Kang, X. Liu, M. Dai, D. Loguinov, “Packet-pair bandwidth estimation: Stochastic 33 Progetto 3D CloudWiz | ATI NICE - DIEE analysis of a single congested node,” in Proceedings of IEEE International Conference on Network Protocols(ICNP), pp. 316–325, 2004 40. M.Jain, C.Dovrolis, “Ten fallacies and pitfalls on end-to-end available bandwidth estimation,” in Proceedings of the 4th ACM SIGCOMM conference on Internet measurement, 2004 41. C. Dovrolis, P. Ramanathan, D. Moore, “Packet-dispersion techniques and a capacityestimation methodology” in IEEE/ACMTransactions on Networking, vol. 12, no. 6, pp. 963– 977, 2004 42. X. Liu, K. Ravindran, D. Loguinov, “Evaluating the potential of bandwidth estimators,” in 4th New York Metro Area Networking Workshop (NYMAN), 2004 43. K.Lakshminarayanan, V.N. Padmanabhan, J. Padhye, “Bandwidth estimation in broadband access networks.,” in Proceedings of IMC 2004, 2004 44. R.Kapoor, L.J. Chen, Li Lao, M. Gerla, M. Y. Sanadidi, “Capprobe: a simple and accurate capacity estimation technique,” in SIGCOMM Computer Communication Review, ACM, vol. 34, no. 4, pp. 67–78, 2004 45. D. Kiwior, J. Kingston, A. Spratt, “PATHMON, A Methodology for determining Available Bandwidth over an Unknown Network,” in IEEE Sarnoff Symposium on Advances in Wired and Wireless Communications, pp. 27-30, 2004 46. S. Ekelin, M. Nilsson, "Continuous monitoring of available bandwidth over a network path” in Proceedings of Swedish National Computer Networking Workshop (SNCNW), 2004 47. D.Aguayo, J.P.Bicket, S.Biswas, G.Judd, R.Morris, "Link-level measurements from an 802.11b mesh network" in ACM/SIGCOMM Computer Communication Review, 2004 48. L.J. Chen, T. Sun, G. Yang, M. Y. Sanadidi, M. Gerla, “Adhoc probe: Path capacity probing in ad hoc networks”, in International Conference on Wireless Internet, pages 156–163, 2005 49. L.J. Chen, T. Sun, G. Yang, M. Y. Sanadidi, M. Gerla, “End-to-end asymmetric link capacity estimation” in IFIP Networking, pages 780–791, 2005 50. M. Jain, C. Dovrolis, “End-to-End Estimation of the Available Bandwidth Variation Range,” in Proceedings of ACM SIGMETRICS International Conference on Measurement and Codeling 34 Progetto 3D CloudWiz | ATI NICE - DIEE of Computer Systems, pages 265-276, 2005 51. A. Johnsson, B. Melander, and M. Bjorkman, “Bandwidth measurement in wireless networks” in Proceedings of Mediterranean Ad Hoc Networking Workshop, 2005 52. A. Shriram, M. Murray, Y. Hyun, N. Brownlee, A. Broido, M.Fomenkov, K. Claffy, “Comparison of public end-to-end bandwidth estimation tools on high-speed links,” in Proceedings of Passive and Active Measurement Workshop (PAM), 2005 53. Y.Yang, R.Kravets, “Contention Aware Admission Control for Ad Hoc Network” in IEEE Transactions on Mobile Computing, vol.4, issue 4, pages 363-377, 2005 54. S.Ekelin, M.Nilsson, E. Hartikainen, A. Johnsson, J-E.Mangs, B. Melander, M.Bjorkman, “Real-Time Measurement of End-to-End Available Bandwidth using Kalman Filtering” in Proceedings of 10th IEEE/IFIP Network Operations and Management Symposium, NOMS, pp. 73–84, 2006 55. M. Li, M. Claypool, R. Kinicki, “Modeling and simulating packet dispersion in wireless 802.11 networks,” Technical Report of Computer Science Department at Worcester Polytechnic Institute, 2006 56. M.Li, M.Claypool, R.Kinicki, “Packet Dispersion in IEEE 802.11 Wireless Networks,” in Proceedings of Performance and Management of Wireless and Mobile Networks (P2MNet), 2006. 57. I.Rhee, L.Xu, “Limitations of Equation-based Congestion Control” in IEEE/ACM Transactions on Computer Networking , pages852–865, 2007 58. F.Li, M.Li, R.Lu, H.Wu, M.Claypool, R.Kinicki, “Measuring Queue Capacities of IEEE 802.11 Wireless Access Points,” in Proceedings of the Fourth IEEE International Conference on Broadband Communications, Networks and Systems (BROADNETS), 2007 59. X. Liu, K. Ravindran, D. Loguinov, “A queuing-theoretic foundation of available bandwidth estimation: single-hop analysis” IEEE/ACM Transactions on Networking, vol.15, no. 6, pp. 918-931, 2007 60. A.Shriram, J.Kaur, "Empirical Evaluation of Techniques for Measuring Available Bandwidth" in Proceedings of IEEE International Conference on Computer Communications INFOCOM, 35 Progetto 3D CloudWiz | ATI NICE - DIEE pp. 2162–2170, 2007 61. J. Liebeherr, M. Fidler, S. Valaee, "Min-plus system interpretation of bandwidth estimation" in IEEE International Conference on Computer Communications(INFOCOM), 2007 62. M.Sedighizad, B.Seyfe, K.Navaie, “MR-BART: multi-rate available bandwidth estimation in real-time” in Proceedings of the 3nd ACM workshop on Performance monitoring and measurement of heterogeneous wireless and wired networks, pp. 1–8, 2008 63. C.Sarr, C.Chaudet, G. Chelius, I.G. Lassous, “Bandwidth Estimation for IEEE 802.11 based Ad Hoc Networks”, in IEEE Transactions on Mobile Computing vol. 7, no 10, 2008 64. L.J.Chen, T.Sun, B.C.Wang, M.Y. Sanadidi, M.Gerla, “PBProbe: A Capacity Estimation Tool for High Speed Networks,” in SIGCOMM Computer Communication Review, ACM, vol. 31, no. 17, pp. 3883–3893, 2008 65. M.Li, M.Claypool, R.Kinicki, “WBest: A Bandwidth Estimation Tool for IEEE 802.11 Wireless Networks”, in IEEE Conference on Local Computer Networks (LCN), 2008 66. T. Nadeem, “Network-aware applications in wireless networks,” in Proceedings of Workshop on Research Directions in Situational-aware Self-managed Proactive Computing in Wireless Adhoc Networks, 2009 67. D. Gupta, D. Wu, P. Mohapatra, C.N. Chuah, “Experimental comparison of bandwidth estimation tools for wireless mesh networks,” in Proceedings of IEEE Conference on Computer Communications (INFOCOM ’09), pp. 2891–2895, 2009 68. J. Liebeherr, M.Fidler, S. Valaee, “A system theoretic approach to bandwidth estimation” in IEEE/ACM Transactions on Networking, 2010 69. F.Chen, H.Zhai, Y.Fang, “Available Bandwidth in Multirate and Multihop Wireless adHoc Networks” in IEEE Journal on Selected Areas in Communications, vol 28, no. 3, 2010 70. C.Guerrero, M.Labrador, "Traceband: A fast, low overhead and accurate tool for available bandwidth estimation and monitoring" in Computer Networks, vol 54, issue 6, pages 977990, 2010 71. M.F.Ibrahim, M.Jamal, S.Yahya, M.N.Taib “Available Bandwidth Estimation in NetworkAware Applications for Wireless Campus e-Learning System” in Journal of Computer 36 Progetto 3D CloudWiz | ATI NICE - DIEE Networks and Communications, 2010 72. R.Hou, S.Qu, H.Zeng, KS.Lui, J.Li, “Coding and interference aware path bandwidth estimation in multi-hop wireless networks” in IEEE Global Telecommunications Conference (GLOBECOM), p. 1-5, 2011 73. H.Liu, L. Cheng, “Available Bandwidth Estimation Strategy Based on the Network Allocation Vector” in Journal of Networks, vol.7, no.12, 2012 74. Z.Yuan, H.Venkataraman, and G.M. Muntean, "MBE:Model-based Bandwidth Estimation for IEEE 802.11 DataTransmissions" in IEEE Transactions on Vehicular Technology, vol. 61, no. 5, pp. 2158-2171, 2012 75. J.Guerin, S. Glass, P.Hu, W.L.Tan, M. Portmann, “Time-based and low-cost bandwidth estimation for IEEE 802.11 links” in International Wireless Communications and Mobile Computing Conference (IWCMC), 2012 76. D.S.Kayange, R.Sinde, A. San, “Available Bandwidth Estimation Techniques (ABETS) For An Efficient Telemedicine Content Transport Network” in International Journal of Engineering Research & Technology (IJERT), vol.2, issue 7, 2013 77. P.Zhao X.Yang, W.Yub, C.Dong, S.Yang, S.Bhattarai, “Toward Efficient Estimation Of Available Bandwidth for IEEE 802.11- based Wireless Networks” in Journal of Network and Computer Applications, 2013 78. R.Lubben, M.Fidler, J.Liebeherr, “Stochastic Bandwidth Estimation in Networks With Random Service” in IEEE/ACM Transactions on Networking, vol.22 , issue.2, 2014 37 Progetto 3D CloudWiz | ATI NICE - DIEE Progettazione dell'architettura del sistema adattativo Il sistema adattativo è composto da tre moduli principali: un server, un client ed un monitor per la misurazione della network performance. Ognuno dei moduli implementa dei comportamenti specifici e ben definiti del sistema adattativo. Il Server si occuperà di: • Catturare il flusso video dell'applicazione da remotizzare (nel caso attuale, l'intero desktop); • Selezionare il codec più adatto allo stato della rete per ottenere la qualità migliore (in base all'input del network performance monitor); • Scambiare col client informazioni sui codec da utilizzare; • Comprimere ciascun frame in base al codec selezionato; • Inviare al client i frame catturati. 38 Progetto 3D CloudWiz | ATI NICE - DIEE Il Client si occuperà di: • Decodificare i dati in arrivo dal server per la loro visualizzazione; • Visualizzare i frame decodificati; • Inviare al server eventuali informazioni sulla perdita di frame inviati. Il Network Performance Monitor si occuperà di: • Monitorare periodicamente lo stato della rete; • Comunicare al server lo stato della rete affinché venga selezionato il codec più adatto. Grabber Viewer Codec-1 Encoder Codec-2 Codec-1 Decoder Codec-2 selector Network performance monitor Codec-N selector Selected codec ID Selected codec ID Codec-N Socket Socket Server Client A seconda della tipologia del monitor che verrà selezionata in fase di realizzazione potrebbero essere previste interazioni più o meno implicite oltre che col server anche col client. Come indicato in precedenza il monitor potrà effettuare la verifica della banda con cadenza 39 Progetto 3D CloudWiz | ATI NICE - DIEE prefissata in modo da evitare di aggiungere un overhead continuo alla trasmissione dati, dovuto alle operazioni di misurazione. Questa frequenza di verifica dipende sia dalla rete a disposizione (es. una rete in fibra potrebbe permettere anche una misurazione puntuale dello status della rete) che dall'algoritmo utilizzato per la realizzazione del monitor. Ipotizzando che il monitoraggio venga effettuato ogni N frame inviati, quello che segue è lo schema della sequenza di interazione fra i tre moduli. Specifiche implementative Dal punto di vista implementativo, possiamo già proporre una probabile struttura delle classi del sistema adattativo: • CloudVizServer: incapsula tutte le operazioni eseguite dal server. Attende una nuova connessione. All'arrivo della connessione inizia il ciclo di grabbing, codifica ed invio dei dati codificati in maniera sincrona. La selezione del codec sarà eseguita tramite il CodecSelector 40 Progetto 3D CloudWiz | ATI NICE - DIEE sulla base della banda disponibile individuata tramite un NetMonitor. Il controllo della banda non sarà eseguito ad ogni frame ma periodicamente (es. all'avvio e/o una volta al secondo). Il ciclo di cattura dovrà garantire un flusso di video con frame rate non superiore a 25 fps. Il ciclo di cattura del server sarà terminato alla disconnesisone del client. Il server a quel punto ritornerà nello stato di attesa per una nuova connessione. • CloudVizClient: incapsula tutte le operazioni eseguite dal client. Si connette al server (indicato tramite Ip e Porta) ed attende i dati da visualizzare. Alla ricezione dei dati il client procederà alla loro decodifica tramite il codec opportuno (identificato dall'ID ricevuto insieme ai dati) ed alla visualizzazione. Il ciclo di ricezione/visualizzazione terminerà alla disconnessione del server o alla pressione di un tasto. La visualizzazione dei frame decodificati avverrà alla massima velocità possibile aggiungendo in sovrimpressione eventuali informazioni come FPS e codec utilizzato. • XGrabberSHM: si occupa di catturare lo schermo restituendo il frame corrispondente al Server. • CodecSelector: sulla di un del bitrate disponibile restituirà un ID univoco associato al codec (e configurazione) da utilizzare. La codifica da utilizzare sarà fissata in modo preventivo per diversi intervalli di bitrate. I codec preconfigurati saranno archiviati in un vettore di codec indicizzato tramite l'id. • NetMonitor: fornisce le interfacce per recuperare lo stato della rete. • SocketServer e SocketClient: si occupano di gestire la comunicazione tramite semplici comandi di lettura e scrittura di buffer. 41