sistemi per l`analisi della qualita` percepita in sequenze video
Transcript
sistemi per l`analisi della qualita` percepita in sequenze video
UNIVERSITA’ DEGLI STUDI DI FERRARA FACOLTA’ DI INGEGNERIA Corso di Laurea Specialistica in Ingegneria Informatica e dell’Automazione SISTEMI PER L’ANALISI DELLA QUALITA’ PERCEPITA IN SEQUENZE VIDEO Tesi di Laurea di: MATTEO ZAGATTI Relatore: Chiar.mo Prof. Ing. GIANLUCA MAZZINI ANNO ACCADEMICO 2006-2007 Indice Capitolo 1: Introduzione alla compressione video. . pag. 1 1.1 Acquisizione e campionamento. . . . . . . . . . . . . . » 1 1.2Campionamento temporale. . . . . . . . . . . . . . . . . » 2 1.3Campionamento spaziale . . . . . . . . . . . . . . . . . . » 3 1.4Codifica dei colori. . . . . . . . . . . . . . . . . . . . . . . » 1.4.1 La tricromia RGB . . . . . . . . . . . . . . . . . . . . . » 1.4.2 Lo spazio YCbCr . . . . . . . . . . . . . . . . . . . . . . » 3 4 5 1.5Compressione video . . . . . . . . . . . . . . . . . . . . . . » 8 1.6Esempi dei codecs più diffusi. . . . . . . . . . . . . . . . » 1.6.1 H.261 ed MPEG-1 e 2. . . . . . . . . . . . . . . . . . . . . » 1.6.2 H.263. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . » 1.6.3 MPEG-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . » 9 9 9 10 Effetti di degrado riscontrabili nei flussi compressi » 1.7.1 Blockiness . . . . . . . . . . . . . . . . . . . . . . . . . » 1.7.2 Blurring. . . . . . . . . . . . . . . . . . . . . . . . . . . » 1.7.3 Color bleeding . . . . . . . . . . . . . . . . . . . . . . » 1.7.4 Flickering. . . . . . . . . . . . . . . . . . . . . . . . . . » 1.7.5 Strobing. . . . . . . . . . . . . . . . . . . . . . . . . . . » 10 10 11 11 11 12 1.8 Misurazione della qualità di un video compresso. » 12 1.7 Capitolo 2: Metriche di valutazione della qualità video pag. 13 2.1 Definizione del problema . e classificazione delle metriche. . . . . . . . . . . . » 13 2.2 Metriche tradizionali o statistiche. . . . . . . . . . » 2.2.1 Mean Squared Error . . . . . . . . . . . . . . . . . . . » 2.2.2 Peak Signal to Noise Ratio . . . . . . . . . . . . . . . » 2.2.3 Metrica Minkowski . . . . . . . . . . . . . . . . . . . . » 15 15 16 16 2.3 Metriche HVS-based di tipo bottom-up. . . . . . . . . » 2.3.1 Contrasto isotropo. . . . . . . . . . . . . . . . . . . . » 2.3.2 Just Noticeable Distortion (JND). . . . . . . . . . . » 2.3.3 Perceptual Distortion Metric (PDM). . . . . . . . » 18 18 20 21 2.4 Metriche HVS-based di tipo top-down. . . . . . . . . . » 2.4.1 Visual Information Fidelity (VIF). . . . . . . . . . » 2.4.2 Structural Similarity Index Metric (SSIM). . . . » 25 25 26 Capitolo 3: Test a campione . . . . . . . . . . . . . . . . . . pag. 37 3.1 Modalità di somministrazione del test. . . . . . . . » 37 3.2 Prima fase di test: bikes.bmp . . . . . . . . . . . . . . . . » 39 3.3 Seconda fase di test: ocean.bmp . . . . . . . . . . . . . » 44 Capitolo 4: Applicazione al video. . . . . . . . . . . . . . pag. 49 4.1 Prima fase di test video: street.mpg. . . . . . . . . . . » 49 4.2 Seconda fase di test video: cars.mpg. . . . . . . . . . » 56 4.3 Aspetti critici delle prime fasi di test. . . . . . . . . » 62 Capitolo 5: Motion vectors video-SSIM. . . . . . . . . . pag. 63 5.1 Utilizzo dei motion vectors nella compressione video » 63 5.2 Analisi delle sequenze video con la metrica MVV-SSIM. » 67 5.3 Conclusioni. . . . . . . . . . . . . . . . . . . . . . . . . . . . » 71 Capitolo 6: Conclusioni . . . . . . . . . . . . . . . . . . . . . pag. 73 Appendice: Codice MATLAB delle metriche implementate pag. 75 A.1. “ssim_index_ycbcr_ok.m”. . . . . . . . . . . . . . . . . . » 75 A.2. “ssim_index_calc_ok.m”. . . . . . . . . . . . . . . . . . . » 76 A.3. “psnr_ycbcr.m” . . . . . . . . . . . . . . . . . . . . . . . . . » 77 A.4. “psnr.m”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . » 78 A.5. “psnr2mos2_ycbcr.m”. . . . . . . . . . . . . . . . . . . . . » 79 A.6. “motion_estimation_analysis.m”. . . . . . . . . . . . . » 80 A.7. “motionestARPS.m” . . . . . . . . . . . . . . . . . . . . . . . » 81 A.8. “motion_index.m”. . . . . . . . . . . . . . . . . . . . . . . . » 86 BIBLIOGRAFIA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .pag. 87 Ringraziamenti Desidero ringraziare tutte le persone che hanno contribuito a questa realizzazione, in particolare il Professor Gianluca Mazzini, per il continuo supporto e la disponibilità mostrati durante i periodi di laboratorio e di stesura della tesi. Un grazie di cuore anche ai miei genitori, Paola e Stefano, spero siano orgogliosi di me almeno la metà di quanto io lo sono di loro e a tutti gli amici che mi hanno sopportato in questi mesi. Introduzione Il progetto, realizzato a scopo di dissertazione di tesi di laurea, si propone di definire ed implementare sistemi per l’analisi della qualità percepita in sequenze video. La dissertazione si articola in sezioni distinte, ma consequenziali fra loro, che rispecchiano le fasi principali di evoluzione del progetto: raccolta di informazioni sulle tecniche di digitalizzazione delle immagini e dei video, panoramica sulle principali metriche di valutazione della qualità video, implementazione e test a campione per la metrica scelta sulle immagini statiche, estensione della metrica per la valutazione dei video. La prima sezione, fondamentalmente didascalica, offre una visione generale sul problema dell’acquisizione di video, sulla loro compressione e sulle problematiche legate a questi processi. La seconda parte, incentrata sullo stadio di ricerca del progetto, presenta le più interessanti metriche di valutazione della qualità video, fra cui la Structural Similarity Index Metric, scelta per le successive fasi. Il terzo capitolo, descrive la tecnica ed i risultati dei due round di test a campione realizzati per la verifica della metrica SSIM su immagini statiche. La quarta sezione, descrive l’utilizzo della metrica v-SSIM per la valutazione di sequenze video, partendo da due sequenze ad elevata qualità e comprimendole con algoritmi di codifica diversi. La quinta ed ultima parte, si riferisce all’utilizzo della tecnica MVV-SSIM, che tiene in considerazione anche fenomeni di mascheramento temporale, nella valutazione delle sequenze video; contiene inoltre le considerazioni finali sul progetto nel suo insieme. La dissertazione è corredata infine da un’appendice, che riporta il codice implementato per realizzare la metrica, la bibliografia, l’indice tematico ed i ringraziamenti dell’autore. Capitolo 1: Introduzione alla compressione video Lo scopo di questo capitolo è di presentare le principali tecniche di compressione e codifica dei flussi video e le problematiche di degrado ad esse correlate. Nell’ultimo decennio, la qualità dei contenuti audio-video è cresciuta notevolmente, con conseguente incremento delle dimensioni dei files; la banda delle connessioni di rete e la capacità dei supporti di memorizzazione non hanno avuto evoluzione altrettanto veloce; per rendere fruibili questi nuovi contenuti, si è reso pertanto indispensabile ridurne le dimensioni, senza comprometterne la qualità. Il segnale acquisito può essere compresso ed organizzato sulla base di numerosi standard di codifica, in virtù dell’uso che poi ne verrà fatto, della qualità richiesta, delle dimensioni che potrà occupare, dell’hardware imputato alla sua riproduzione. 1.1Acquisizione e campionamento Il primo passo dell’elaborazione video è il passaggio dal mondo naturale, concettualmente considerato analogico, cioè continuo nei tempi e negli spazi, a quello digitale, in cui è necessario poter esprimere tutto sotto forma di numeri, per consentirne la memorizzazione. La digitalizzazione dei segnali analogici comporta un doppio campionamento, spaziale e temporale, oltre che una quantizzazione dei valori registrati. Il flusso video si compone infatti di una sequenza finita di immagini, chiamate frame, le quali, riprodotte in rapida successione, riprodurranno l’impressione della scena in movimento. Ogni frame poi, è il risultato di un campionamento nello spazio, per permettere di poter essere elaborato: i punti che costituiscono l’immagine infatti sono una matrice di valori, che per effetto della quantizzazione passano dal dominio continuo, a quello discreto e limitato. ~ ~ Matteo Zagatti Per effetto di queste operazioni, il segnale “originale” che potremmo osservare direttamente con i nostri occhi in natura, diviene un segnale discreto a valori discreti, identificabile tramite tre coordinate, una temporale e due spaziali. Il campionamento è un’operazione realizzata dalle componenti ottiche delle moderne videocamere e fotocamere digitali, in cui l’immagine ripresa non viene più impressa su una pellicola, ma tramite un sensore CCD (Charge Coupled Device) ed un convertitore analogico-digitale, viene convertita in un flusso di dati digitali. La quantizzazione è invece l’operazione che permette di limitare il numero di bit necessari alla memorizzazione delle informazioni: dovendo infatti registrare valori discreti infatti, le operazioni di troncamento o di arrotondamento, consentono di suddividere i valori continui registrati in un numero finito di “livelli” prestabiliti. 1.2 Campionamento temporale La prima scelta da operare riguarda il numero di immagini “catturate” in ogni secondo, un frame rate (numero di frame al secondo) troppo basso darà l’impressione di una scena poco fluida o a scatti: a meno di 10 frame al secondo (fps) i movimenti di oggetti e persone risultano a scatti, fra i 10 ed i 20 fps risultano innaturali i movimenti particolarmente veloci nella scena, tra i 25 ed i 30 fps la qualità del movimento è molto buona (questo frame rate è infatti utilizzato nelle trasmissioni televisive), tra 50 e 60 fps si ottiene la migliore qualità percepibile dall’occhio umano, ma in genere si limita l’utilizzo di tale frame rate a causa delle necessità di compressione o limiti stringenti alla banda di trasmissione del segnale. È interessante notare che gli standard di trasmissione televisiva più diffusi al mondo, PAL e NTSC, utilizzino rispettivamente 25 e 30 fotogrammi al secondo (29,97 Hz per la precisione). Un problema molto diffuso è quello della conversione fra frame rates diverse, che spesso introduce evidenti difetti alla fluidità dei movimenti nelle immagini. ~ ~ Introduzione alla compressione video 1.3 Campionamento spaziale Riguardo al campionamento spaziale, la qualità dell’immagine ottenuta dipende direttamente dalle dimensioni della matrice e quindi dal numero di campioni (pixel, picture element) costituenti i vari frames. Riducendo le dimensioni dei frames si ottengono immagini che necessitano di essere “stirate” dai riproduttori, per coprire l’intero schermo, producendo immagini scalettate. La cosiddetta “risoluzione” dei frames dipende non solo dalla qualità che si desidera ottenere, ma anche dal formato utilizzato: dal formato fotografico tradizionale 2:3, al classico 4:3 televisivo, al più moderno 16:9 cinematografico. Per quanto riguarda le immagini digitali, si può parlare di “risoluzione”anche in termini di “densità dell’informazione”, cioè di pixel per pollice: si tratta di informazioni molto usate nella stampa digitale; infatti, se per visualizzare un’immagine sullo schermo di un pc, sono sufficienti 72 pixel/pollice, per ottenere un’adeguata qualità di stampa, in genere, si richiede una risoluzione di almeno 150 pixel/pollice. Ecco per esempio, perché una fotocamera con sensore da 3 Megapixel, non risulta sufficiente per la stampa di ingrandimenti oltre la dimensione 20x30 cm, perché la risoluzione scenderebbe sotto i livelli di qualità richiesti, rendendo l’immagine sgranata a causa dell’interpolazione richiesta. 1.4 Codifica dei colori Mentre un’immagine in scala di grigi (comunemente chiamata in “bianco e nero”), richiede la semplice misurazione dell’intensità luminosa dei pixel, le immagini a colori utilizzano un minimo di tre informazioni per la rappresentazione di un singolo pixel. La scelta di un determinato “spazio colore” fornisce la rappresentazione da utilizzare per la ricostruzione del segnale. È infatti possibile, ricreare la maggior parte dei colori presenti in natura, sovrapponendo tre stimoli usati come base di una mescolanza ~ ~ Matteo Zagatti additiva: questo tipo di mescolanza, applicabile a segnali che si sovrappongono sulla retina senza interferire fisicamente l’uno con l’altro, ma dandoci l’illusione di percepire un terzo segnale, dato dalla risultante dei primi due. Nell’immagine possiamo notare come la sovrapposizione dei tre colori primari (anche se il termine è in genere usato in modo improprio, visto che si tratta solo di una convenzione), restituisca luce bianca. 1.4.1 La tricromia RGB L’uomo percepisce le informazioni cromatiche dal mondo che lo circonda tramite i coni, piccoli recettori situati sulla retina: le curve di assorbimento di questi recettori indicano dei picchi in prossimità di determinate lunghezze d’onda, associate ai colori blu, verde e rosso. Sulla base di questa osservazione fisiologica dell’occhio, possiamo immaginare ogni colore come la composizione di tre componenti dei cosiddetti colori primari. ~ ~ Introduzione alla compressione video 2 Lo standard RGB ha definito le lunghezze d’onda di queste componenti: R=700 nm G= 546,1 nm B= 435,8 nm Pur con la consapevolezza, che dalla combinazione dei tre colori primari, non sia possibile rappresentare completamente lo spettro dei colori in natura, lo spazio RGB è in grado di codificare tutti i colori percepibili dall’occhio umano: infatti, due sorgenti a diversa lunghezza d’onda, ma con stessa proiezione sul sottospazio RGB, verranno percepite allo stesso modo. Lo spazio RGB è però poco performante dal punto di vista della compressione, in quanto tutte le componenti rivestono la stessa importanza e dovranno pertanto essere codificate con un numero di bit equivalente. Ad esempio, un’immagine RGB non compressa di risoluzione 1024x768 pixel, con profondità di 8 bit per canale, occuperà 1024x768x8x3 = 18874368 bit = 2,25 MB. 1.4.2Lo spazio YCbCr Studi sulla fisiologia dell’occhio umano, hanno verificato la maggiore sensibilità della vista all’intensità luminosa rispetto al colore, si è ritenuto pertanto necessario separare le componenti di luminanza e crominanza, per poi risparmiare preziosi bits nella compressione dei segnali crominanza. ~ ~ Matteo Zagatti Nello spazio colore YCbCr la luminanza (Y) e le crominanze sul blu (Cb) e sul rosso (Cr) possono essere ricavate direttamente dal segnale RGB: Y = 0.299R + 0.587G + 0.114 B Cb = B – Y Cr = R – Y Come detto, la vista è più sensibile alla componente luminanza, alla quale verrà pertanto riservata una quantizzazione più precisa. I formati di campionamento vengono identificati da una sequenza di tre numeri, divisi da “:”, ad esempio 4:4:4 significa che le componenti di crominanza avranno stessa risoluzione orizzontale e verticale della luminanza, come nell’RGB, mentre 4:2:2 sta ad indicare che Cb e Cr avranno stessa risoluzione verticale della luminanza ma metà risoluzione orizzontale. Il formato più utilizzato è il 4:2:0 la risoluzione delle crominanze è dimezzata sia in orizzontale che in verticale, in pratica l’immagine creata da ciascuna crominanza ha dimensione un quarto rispetto alla corrispondente luminanza, riducendo nel complesso del 50% le dimensioni di ciascun frame. Riprendendo l’esempio proposto per lo spazio RGB, la stessa immagine che avrebbe occupato 2,25 MB, con un downsampling 4:2:0 occuperebbe [1024x768x8x1] + [(1024/2)x(768/2)x8x2] = 1024x768x8x(1,5) = 9437184 bit = 1,125 MB con una riduzione netta del 50% delle dimensioni, e praticamente nessuna differenza evidente. Questa tecnica è fra i primi passaggi della compressione JPEG (il più noto algoritmo di compressione per immagini statiche). Nelle figure seguenti, mostriamo un confronto fra le informazioni nei due spazi colore presentati: è immediato notare come nello standard RGB, ciascuno dei canali mantenga informazioni fondamentali per il riconoscimento degli oggetti, mentre nello spazio YCbCr le informazioni predominanti si trovino nel solo canale Y (simile ad un’immagine in bianco e nero), lasciando agli altri canali il compito di completare il quadro cromatico. ~ ~ Introduzione alla compressione video Scomposizione RGB dell’immagine Scomposizione YCbCr dell’immagine ~ ~ Matteo Zagatti 1.5 Compressione video Nonostante la banda gestibile dalle reti internet, anche domestiche, sia in continua crescita, non è minimamente pensabile di poter trasferire filmati ad alta qualità senza l’ausilio di un’adeguata compressione. Le strategie di compressione possono essere suddivise in due macro categorie: con o senza perdita. Le tecniche lossless (senza perdita), permettono di rimuovere i dati ridondanti nel segnale, pur consentendo di ricostruire perfettamente il segnale originale, ma proprio per questa caratteristica, ottengono riduzioni del peso dei file decisamente esigui. Al contrario le tecniche lossy (con perdita), permettono livelli di compressione decisamente interessanti, con la consapevolezza di una qualità finale inferiore rispetto alla sequenza originale. Il metodo più immediato e rudimentale per comprimere un flusso video, è dato dalla compressione indipendente di tutti i suoi frame, ad esempio utilizzando lo standard di compressione per immagini più noto, il JPEG. Un codec di questo genere tiene però in considerazione solo le ridondanze spaziali del segnale, mentre sistemi più complessi sono in grado di ridurre le dimensioni dei file video anche sulla base delle dipendenze temporali, molto determinanti, essendo i video costituiti da immagini in sequenza molto simili fra loro. Per tener conto di queste dipendenze temporali i frame sono classificati secondo la loro tipologia: frame “I”: indipendenti, codificati separatamente dagli altri, nella maggior parte dei casi per motivi di risincronizzazione del codec e per impedire la propagazione degli errori; essendo codificati in semplice JPEG permettono un livello di compressione del 10-20%; frame “P”: predetti, codificati in modo differenziale rispetto al più recente frame I o P; permettono un grado di compressione del 20-30%; frame “B”: bidirezionali, codificati rispetto al più vicino I o P precedente e al successivo I o P; necessitano pertanto la codifica del frame successivo per poter essere elaborati, ma consentono una compressione che può arrivare anche al 30-50%; frame “D”: a bassa risoluzione, utilizzati per la decodifica veloce ed il tracking. ~ ~ Introduzione alla compressione video 1.6Esempi dei codecs video più diffusi 1.6.1 H.261 ed MPEG-1 e 2 Ha gettato le basi per i più noti MPEG ed è stato il primo codec a larga diffusione nelle applicazioni (videoconferenza, videotelefono ecc.). I frame sono costituiti da macroblocchi (MB) di 16x16 pixel, ognuno dei quali caratterizzato da un identificatore (address), un tipo (type), una soglia di quantizzazione (quantization value), un vettore di moto (motion vector), il numero di blocchi validi (good block pattern) ed, ovviamente, dalle matrici di luminanza (Y) e crominanza (Cb e Cr). I macroblocchi sono poi raggruppati in gruppi di macroblocchi (GOB) i quali costituiscono i frame nella loro interezza. I frame utilizzati sono di tipo I e P. Lo standard noto come MPEG-1 utilizza una struttura molto simile, con la sola aggiunta dei frame B: viene utilizzato un frame I ogni mezzo secondo e vengono alternati due frame B ad uno di tipo P. L’MPEG-2 aggiunge il supporto alla tecnica di interlacciamento, che permette di effettuare la scansione solo fra righe dello stesso tipo (pari o dispari); i profili più usati di questo codec, quelli ad alto bit-rate sono utilizzati nella codifica dei DVD-video. 1.6.2 H.263 Rispetto al suo predecessore, questo standard introduce l’utilizzo dei frame di tipo B e di tipo PB (due frame, uno di tipo P e l’altro B, codificati in coppia). Con l’aumentare del livello di compressione il rischio maggiore è di incorrere in cosiddetti “burst” di errori: dal momento che la codifica e decodifica dei frame avviene in modo dipendente dai frame vicini, l’errore presente nei frame precedenti o successivi finisce con l’influenzare anche altre aree della sequenza. Per questo motivo, oltre al miglioramento delle tecniche di codifica, il codec H.263 implementa anche tecniche di recupero degli errori, principalmente utilizzando gli “start code” dei GOB come segnali di risincronizzazione e con una tecnica di mascheramento ~ ~ Matteo Zagatti dell’errore detta “error concealment scheme”, che prevede il recupero del GOB dal frame precedente in caso di errata decodifica del GOB dal frame attuale. Questo standard vede largo impiego nei sistemi di videoconferenza. 1.6.3MPEG-4 Un grosso balzo tecnologico è stato rappresentato dall’introduzione dei primi codec di tipo MPEG-4, dove per la prima volta, le sequenze video non sono interpretate come una sequenza di immagini, ma tramite un’analisi semantica, come un insieme di “oggetti” in movimento. La compressione è perciò attuata cercando di riconoscere e separare questi oggetti: ad esempio riconoscendo il cosiddetto “sfondo” della scena, che subirà variazioni minime rispetto agli altri oggetti. Le possibilità di compressione sono notevolmente incrementate da questo nuovo approccio, ma di contro, la complessità degli algoritmi e la probabilità di errore aumentano a loro volta. 1.7Effetti di degrado riscontrabili nei flussi compressi Per effetto della compressione, in virtù dell’eliminazione di alcuni frammenti dell’informazione, le sequenze possono presentare alcuni difetti, dovuti al tipo di codifica ed al grado di compressione richiesto; il grado di imperfezione può variare da un livello appena percettibile, fino ad un disturbo importante, in relazione alla consistenza della compressione ed alla qualità dell’algoritmo di codifica. Analizziamo in breve i più comuni artefatti dovuti alla codifica. 1.7.1 Blockiness L’immagine presenta delle strutture a blocchi non presenti nell’originale, dando l’impressione che l’immagine sia costituita da un insieme di aree rettangolari adiacenti. La causa di questo “impairment” è nella codifica indipendente di ~ 10 ~ Introduzione alla compressione video blocchi adiacenti, specie nell’applicazione della trasformata DCT (discrete cosine transform, fa parte del processo di compressione JPEG): infatti, la quantizzazione dei coefficienti a bassa frequenza di tale trasformata, operata in modo indipendente nei blocchi adiacenti, crea talvolta differenze di luminosità o cromatiche evidenti. In genere risulta più evidente in aree che dovrebbero presentare tinta e luminosità uniformi, come uno sfondo nero, o un oggetto di grosse dimensioni. 1.7.2 Blurring Un diffuso effetto di sfocatura, che provoca quindi una pesante perdita di definizione degli oggetti è dovuta alla soppressione delle alte frequenze durante il processo di quantizzazione (tipico ad esempio della compressione JPEG). È noto infatti che l’occhio umano sia meno sensibile alle alte frequenze spaziali, ma abusare di questa caratteristica per ottenere maggiore compressione porta talvolta ad eliminare informazioni preziose per la ricostruzione corretta del segnale. Per ovviare a questo “artifact” è possibile filtrare il segnale con un filtro di sharpening (effetto inverso del blurring). 1.7.3 Color bleeding È caratterizzato dalla contaminazione di colori fra zone contigue ed è dovuto in particolare al taglio delle alte frequenze dalle matrici che rappresentano le crominanze. Risulta più evidente qualora le matrici di crominanza abbiano dimensione inferiore rispetto alle corrispondenti matrici di luminanza (ad esempio sfruttando la sottocampionatura di tipo 4:2:0). 1.7.4Flickering Noto in genere con il termine “sfarfallio”, è tipico di scene caratterizzate da fitte texture ed è causato da un’eccessiva variabilità dei coefficienti di quantizzazione. Le ~ 11 ~ Matteo Zagatti texture infatti nel dominio delle frequenze, sono aree ad elevata frequenza spaziale, pertanto vengono spesso soppresse durante le operazioni di compressione. 1.7.5Strobing Qualora il frame rate, ovvero il numero di immagini per secondo, scendesse sotto una certa soglia, la sequenza perderebbe la sua fluidità di movimento e si avrebbe l’impressione di un avanzamento a scatti. L’effetto di staticità è dovuto proprio alla scelta di frame rate inadeguati al tipo di scena. 1.8Misurazione della qualità di un video compresso Il bisogno di quantificare questi effetti di degrado, ha portato, parallelamente all’evoluzione degli algoritmi di codifica, alla nascita di metriche specifiche per la misurazione della qualità video. Gli approcci tentati sono molteplici, tanto dal punto di vista della teoria, quanto dal punto di vista dell’implementazione. Alcuni infatti prendono in esame caratteristiche tipiche di questi artifacts, per identificarne la presenza nelle immagini, altri si basano sul confronto dell’immagine originale e della sua versione compressa, altri ancora si propongono di analizzare l’immagine come farebbe un osservatore in carne ed ossa, per ottenerne una misura della qualità assoluta. Nei prossimi capitoli analizzeremo le principali caratteristiche di queste metodologie e cercheremo di dare la definizione di una nuova metrica per la valutazione della qualità “percepita”. ~ 12 ~ Capitolo 2: METRICHE DI VALUTAZIONE DELLA QUALITÀ VIDEO 2.1Definizione del problema e classificazione delle metriche La ricerca di uno strumento automatico per la valutazione della qualità di un flusso video compresso, è attualmente uno dei problemi più discussi in diversi campi della scienza, in quanto, non coinvolge soltanto aspetti tecnologici, ma anche e soprattutto problematiche legate alla fisiologia umana. Quando ci si interroga sulla qualità di un contenuto audio-visivo infatti, non ci si riferisce alla qualità assoluta, ma a quella relativa al destinatario del segnale in questione. Attualmente, la quasi totalità del materiale audio-video prodotto, ha come ricevente finale l’essere umano, perché è destinato ad essere “consumato” da un pubblico. Il panorama delle codifiche audio-visive è in continua evoluzione, sia per il naturale evolversi delle tecnologie, ma anche perché lo studio del sistema visivo umano è ben lontano dalla conclusione; ci sono in effetti teorie discordanti e processi che risultano ancora oscuri per quanto riguarda i meccanismi di acquisizione e comprensione delle immagini da parte del nostro cervello, di conseguenza, i modelli matematici che ne derivano sono molteplici. Con questa consapevolezza, vengono progettati pertanto gli algoritmi di codifica e compressione dei contenuti multimediali: lo studio di questi strumenti parte proprio dalla fisiologia dei nostri sensi, per coglierne aspetti favorevoli alla codifica; dove i nostri sensi presentano sensibilità minore o nulla, significa che ci si può permettere di scartare quelle informazioni che comunque non coglieremmo, con un elevato risparmio in termini di banda (o di spazio occupato) e senza una perdita di qualità apprezzabile dall’utente. Mentre però le tecniche di codifica sono un argomento ampiamente sviscerato e sviluppato, il problema diametralmente opposto, cioè quello della loro valutazione, è rimasto a lungo inesplorato, in quanto la prassi suggeriva di effettuare dei test a campione, utilizzando dei volontari in carne ~ 13 ~ Matteo Zagatti ed ossa per valutare l’operato degli algoritmi. Lo scoglio maggiore, nella creazione di uno strumento in grado di sostituire l’uomo, in un’operazione complessa, quale la valutazione della qualità di un contenuto multimediale, è sicuramente quello di comprendere quali siano gli aspetti e le caratteristiche più rilevanti sui quali un osservatore pone la sua attenzione per definire la qualità, di modo da attribuirvi maggior peso in fase di calcolo dei risultati finali. In questo senso, un argomento relativamente nuovo, è quello della valutazione della qualità visuale “percepita” dallo spettatore, quindi una misura della fedeltà dell’immagine, compressa e poi ricostruita, all’originale non compresso. Esattamente perseguendo questo obiettivo, negli ultimi anni sono state sviluppate architetture di valutazione via-via più complesse e più “aderenti” agli studi psicovisuali, per abbandonare le metriche di qualità assoluta e predire sempre con maggior precisione, quella che sarà la qualità colta dall’osservatore. Oltre che per il tipo di approccio teorico, le metriche di valutazione possono essere suddivise in categorie anche sulla base di altri aspetti. Una classificazione “a monte” delle tecniche per esempio, può essere effettuata in base agli input che queste richiedono: si parla infatti di full-reference se sono necessari entrambi i segnali (di riferimento e di test) in forma completa, di reducedreference, se per quanto riguarda il segnale originale, ne basta una descrizione minima, attraverso indici statistici calcolati in precedenza (caratteristica molto utile se la valutazione viene fatta in ambiente distribuito, con elevato risparmio di banda nel trasferimento di “pochi numeri” al posto dell’intera sequenza), fino ad arrivare al no-reference, in cui la valutazione viene fatta basandosi solo sulla qualità percepita del flusso codificato. Attualmente i metodi più usati sono quelli full-reference, ci sono alcuni approcci di reduced-reference e ben pochi esempi di no-reference, anche per la difficoltà di stabilire caratteristiche generali di qualità dei segnali: mentre risulta piuttosto semplice, ad un essere umano, dare un giudizio ad un’immagine o un video, senza necessità di confronto con l’originale, è ben più complicato istruire un sistema automatico per fare lo stesso. Vediamo ora in breve una panoramica delle metriche maggiormente diffuse. ~ 14 ~ Metriche di valutazione della qualità video 2.2Metriche tradizionali o statistiche Si tratta di metodologie tradizionali, di tipo full-reference che confrontano i due segnali campione su campione (in questo caso pixel-a-pixel) e creano una “misura” della qualità o della “distanza” fra i due segnali, di tipo assoluto. Costituiscono la base di partenza per la valutazione della bontà e della precisione delle altre metriche, in quanto sono di semplice implementazione e di bassa complessità di calcolo. Sono invece poco efficaci quando si richiede di misurare la qualità “percepita” dall’utente, in quanto, lavorando direttamente sui segnali, non tengono in considerazione le caratteristiche del tipo di informazioni in questione, quindi sono misure completamente estranee alla semantica dei dati; inoltre non prevedono nessun adattamento della misurazione al tipo di osservatore. Lavorano sostanzialmente per confronto diretto dei segnali, senza dare “peso” diverso alle diverse tipologie di distorsione che questi possano subire. 2.2.1 Mean Squared Error La prima metrica in esame è il Mean Squared Error (MSE), che misura la differenza dei segnali per ogni istante t, in posizione (x,y) e ne fa una media: Nella formula, T è il numero di istanti temporali, X ed Y le dimensioni spaziali, quindi t, x ed y individuano un preciso campione del segnale (nel caso di un video, un preciso pixel all’interno di un frame). All’interno della sommatoria troviamo I a rappresentare il segnale originale ed I segnato per quello in esame. Il Root Mean Squared Error (RMSE), ovvero la radice quadrata dell’MSE, è anche utilizzato. ~ 15 ~ Matteo Zagatti 2.2.2 Peak Signal to Noise Ratio Un’altra tecnica molto diffusa nel campo della valutazione dei segnali è la cosiddetta Peak Signal to Noise Ratio (PSNR), basata sul calcolo del MSE e così ottenuta: dove m rappresenta il massimo valore assumibile da un campione, cioè il massimo valore attribuibile ad un pixel, nel caso di video o immagini: in pratica dipende dalla profondità dei bit delle immagini. Ad esempio, se l’immagine ha profondità di colore pari ad 8 bit, questo valore può variare fra 0 e 255 (tutti i numeri interi positivi esprimibili con 8 cifre in binario, ovvero 28-1), pertanto m varrà 255. 2.2.3Metrica Minkowski Un ultimo ma interessante esempio è quello di una famiglia di metriche introdotte dallo studioso tedesco Hermann Minkowski, che assume la seguente forma generale: Dove il prodotto TXY è il numero totale di campioni confrontati (come nel calcolo dell’MSE) e β il parametro che può variare da 1 a +∞. Come in precedenza, I ed I segnato rappresentano i segnali da confrontare; in pratica è un’estensione del RMSE ad un esponente qualunque, infatti la differenza dei segnali viene posta in valore assoluto nell’eventualità di utilizzo di esponenti dispari. Le misure ottenute prendono anche il nome di distanze Minkowski. Caratteristica comune a tutte queste metriche è l’approccio statistico, l’incapacità cioè di discernere fra differenze macroscopiche, percepibili all’occhio umano e modifiche che non alterino in modo pesante la qualità dell’immagine in esame. Un esempio classico di questo limite è la serie di immagini di pagina seguente, dove ~ 16 ~ Metriche di valutazione della qualità video alla stessa immagine di partenza (a), sono stati applicati “difetti” di tipo diverso: rispettivamente stiramento del contrasto (b), spostamento del valor medio (c), compressione JPEG a bassa qualità (d), blurring o sfocatura (e), rumore impulsivo sale-pepe (f). Si noti come la qualità “percepita” sia profondamente variabile percorrendo la sequenza con lo sguardo, mentre la misura del MSE sia praticamente identica per tutte le immagini di test. (a) Immagine originale: MSE=0; (b) Stiramento del contrasto: MSE=144; (c) Spostamento del valor medio: MSE=144; (d) Compressione JPEG bassa qualità: MSE=142; (e) Blurring: MSE=144; (f) Rumore salt&pepper: MSE=144. Scopo delle successive metriche che presenteremo è di superare questo pesante limite e di fornire una misura più coerente con la valutazione percettiva della qualità, che ciascuno di noi può compiere in pochi istanti, attribuendo punteggi migliori alle immagini (b) e (c) e relegando senz’altro agli ultimi posti le immagini (e) e (d). Un notevole passo avanti, nella creazione di metriche per la valutazione della qualità, è invece stato fatto nel momento in cui ci si è resi conto della diversa sensibilità dell’occhio umano alle diverse tipologie di distorsione. ~ 17 ~ Matteo Zagatti 2.3Metriche HVS-based di tipo bottom-up Il gruppo di metriche descritte in questo paragrafo, sono basate su modelli del sistema visivo umano (Human Visual System, HVS), prendono cioè in esame le principali caratteristiche e proprietà che determinano la nostra percezione visiva, per crearne modelli matematici da applicare alla costruzione degli strumenti di valutazione della qualità. La definizione di tipo bottom-up deriva proprio dal fatto che queste metriche, partono da considerazioni di tipo psico-visuale, per ricavare modelli e metriche che riproducano le caratteristiche dello HVS. Quando ancora si riteneva plausibile una descrizione del processo visivo, basata su un singolo canale di comunicazione, sono nati diversi studi sulle funzioni di sensitività al contrasto (Contrast Sensitivity Functions), ad evidenziare che la nostra percezione non è ugualmente sensibile in condizioni ambientali variabili. Il sistema visivo è in grado di adattarsi infatti ad un enorme range di intensità luminose. L’adattamento alla luce ci permette di discernere meglio le variazioni di luminanza ad ogni livello di luce. La visione scotopica e fotopica insieme coprono 12 ordini di magnitudine in intensità, da pochi fotoni, alla piena luce solare. Ad ogni modo, ad ogni dato livello di adattamento, possiamo solo discriminare entro un range di intensità di 2-3 ordini di grandezza. Tre meccanismi di adattamento alla luce possono essere distinti nello HVS: la variazione meccanica dell’apertura pupillare, i processi chimici nei fotorecettori, l’adattamento a livello neurale. I tempi e le capacità di adattamento di questi sistemi sono molto variabili: si parla di pochi secondi per l’apertura della pupilla, mentre è necessaria anche un’ora per l’adattamento alla piena oscurità dei fotorecettori. 2.3.1 Contrasto isotropo Da tempo si ritiene che lo HVS sia particolarmente sensibile alle informazioni di luminanza e meno focalizzato sugli aspetti di crominanza. La risposta del sistema visivo dipende inoltre molto meno dalla luminanza assoluta che dalla relazione delle sue variazioni locali alla luminanza che le attornia. Questa proprietà è nota ~ 18 ~ Metriche di valutazione della qualità video come legge Weber-Fechner. Il contrasto è una misura di questa variazione relativa di luminanza. Lavorare sul contrasto anziché sulla luminanza può facilitare numerosi compiti di processamento ed analisi delle immagini. Sfortunatamente, non esiste una definizione comune di contrasto adatta a tutte le applicazioni. Vediamo in breve alcune definizioni di contrasto per stimoli artificiali ed arriviamo ad una misura isotropia di contrasto locale per immagini naturali. Matematicamente la legge di Weber può essere formalizzata come: Questa definizione è spesso usata per stimoli consistenti in ristrette aree con scarto ΔL su uno sfondo uniforme di luminanza L. In caso di sinusoidi o altri pattern periodici con variazioni simmetriche fra Lmin (valore minimo della luminanza) e Lmax (valore massimo), che sono altrettanto comuni in esperimenti visivi, il contrasto di Michelson è invece di maggiore aiuto: Queste due definizioni non sono equivalenti e né hanno in comune il range di valori che coprono: il contrasto di Michelson è limitato fra 0 e 1, mentre quello secondo Weber può variare fra -1 e + ∞. Pur essendo dei buoni predittori del contrasto percepito per uno stimolo semplice, falliscono quando gli stimoli diventano più complessi e coprono un campo di frequenze più ampio. È anche evidente che nessuna di queste definizioni globali è appropriata per misurare il contrasto nelle immagini naturali. Questo perché pochi punti molto luminosi o molto scuri determinerebbero il contrasto dell’immagine nella sua interezza, mentre la percezione umana varia invece con la luminanza locale media. ~ 19 ~ Matteo Zagatti Con l’evoluzione delle teorie sulla vista, verso un approccio multicanale, anche le metriche si sono evolute in quella direzione, cercando di incorporare e di integrare nei modelli i diversi aspetti legati alla percezione visiva; primo esempio di questa filosofia è la JND (Just Noticeable Distortion). 2.3.2 Just Noticeable Distortion (JND) Si tratta di una metrica che integra il modello di contrasto proposto da Weber, con un sistema di riconoscimento dei bordi, che opera separatamente sui diversi piani che compongono le immagini a colori (Y = luminanza, Cb = crominanza sul blu, Cr = crominanza sul rosso). Scopo della JND è di determinare, se in una determinata zona dell’immagine, la differenza riscontrabile fra il campione di riferimento e quello di test, sia percettibile o meno. Il sistema JND è poi integrabile in un calcolo di PSNR, per realizzare un cosiddetto Peak Signal to Perceptible Noise Ratio (PSPNR), andando a sopprimere quelle differenze sotto la soglia imposta localmente dal calcolo della JND. Riportiamo una schematizzazione del calcolo delle JND per immagini a colori: ~ 20 ~ Metriche di valutazione della qualità video Gli input del sistema sono i piani che compongono l’immagine: Y, Cb, Cr. Al piano della luminanza (Y) è applicato il calcolo per il contrasto secondo il modello di Weber, mentre da tutti i piani vengono estratti i bordi degli oggetti, per applicare il concetto del mascheramento spaziale. Gli effetti del contrasto e del riconoscimento dei bordi vengono poi combinati secondo un modello non lineare detto NAMM, per creare le mappe JND, da applicare poi al calcolo del PSPNR. Recentemente sono state proposte diverse implementazioni della JND che integrino anche il fenomeno del mascheramento temporale, per quanto riguarda il piano della luminanza. Si tratta, pur con numerosi accorgimenti HVS-aware, di uno strumento realizzato per sopperire alle mancanze delle metriche statistiche. Ha il merito di tenere conto dei molteplici aspetti del sistema visivo umano, di integrarli per giungere ad una misura unica della qualità delle immagini analizzate, ma per raggiungere un maggior grado di successo nella predizione della qualità percepita, si è reso necessario cambiare completamente approccio. La tecnica che andremo ora ad analizzare è la cosiddetta Perceptual Distortion Metric, di tipo full-reference e multicanale. 2.3.3 Perceptual Distortion Metric (PDM) La metrica di distorsione percepita (PDM) è basata sul modello di controllo del guadagno in contrasto del sistema visivo umano, che incorpora aspetti spaziali e temporali della vista e della percezione del colore. Il modello è fondato su una metrica sviluppata da Lindh e van der Branden Lambrecht ed è un’estensione di un modello esistente per immagini statiche e si focalizza sui seguenti aspetti della vista umana: - percezione del colore, in particolare la teoria dei colori complementari; - la rappresentazione multicanale dei meccanismi temporali e spaziali; - sensitività spazio-temporale al contrasto e modelli di mascheramento; - proprietà della risposta dei neuroni nella corteccia visuale primaria. ~ 21 ~ Matteo Zagatti Le due sequenze in esame, vengono convertite ad uno spazio-colore che tenga conto della percezione umana, basata sui colori complementari: un canale bianconero (W-B), un canale rosso-verde (R-G) ed un terzo blu-giallo (B-Y). I segnali così ottenuti, vengono poi processati da un blocco di cosiddetta “scomposizione percettiva”, ovvero filtrati opportunamente tramite maschere che simulano la separazione multi-canale del processo visivo umano: vengono pertanto applicati modelli di mascheramento temporale e spaziale oltre che di sensitività al contrasto. Infine i risultati di questo filtraggio, vengono analizzati da un modello di controllo del guadagno di contrasto. Modellare il mascheramento è una delle operazioni più delicate in fatto di valutazione della qualità video, poiché la visibilità delle distorsioni è altamente dipendente dallo sfondo locale. Il mascheramento si ha quando uno stimolo che è visibile se presentato indipendentemente non può essere rilevato a causa della presenza di un altro. Il mascheramento spiega perché artefatti di codifica simili, creino disturbo in certe regioni di un’immagine mentre siano difficilmente apprezzabili in altre. Il mascheramento è più forte fra stimoli localizzati nello stesso canale percettivo e molti modelli della vista sono limitati a questo mascheramento intra-canale. Ad ogni modo, esperimenti psicofisici mostrano che il mascheramento si verifica anche fra canali di diverso orientamento, fra canali di differente frequenza spaziale e fra canali di crominanza e di luminanza. Si ritiene che l’informazione rappresentata nei vari canali all’interno della corteccia visiva primaria sia integrata nelle aree del cervello sottostanti. Questo processo può essere approssimato raccogliendo i dati da questi canali in accordo a regole di probabilità e somma vettoriale, realizzando il cosiddetto pooling. Il modello contiene numerosi parametri che necessitano di essere ottimizzati per poter rappresentare accuratamente lo HVS (vedi figura nella pagina seguente). ~ 22 ~ Metriche di valutazione della qualità video Il costo di questa elevata capacità di adattamento risiede però nell’elevata, talvolta eccessiva, specificità di una singola implementazione del sistema PDM. Adattando infatti i parametri ad una certa tipologia di scena, si approssima con estrema precisione il comportamento del sistema visivo umano, a scapito della flessibilità di adattamento e precisione per altre scene, con caratteristiche diverse. Ulteriori migliorie sono state apportate allo schema della PDM, introducendo meccanismi specifici per il riconoscimento di artefatti dovuti alla codifica, ad esempio blockiness, giungendo alla formulazione di uno schema di Perceptual Blocking Distortion Metric (PBDM), oppure focalizzando l’attenzione sulla segmentazione degli oggetti. Si tratta di una tematica di più alto livello rispetto a quelle trattate in precedenza, in quanto coinvolge aspetti cognitivi e più strettamente “semantici” delle immagini. La nuova metrica, detta segmentation-supported-PDM, pone l’accento sul fatto che un osservatore, sarà portato a soffermare la propria attenzione e di conseguenza a notare con maggiore probabilità, distorsioni in certe aree delle immagini piuttosto che in altre. Un esempio per tutti, i volti delle persone ritratte nelle immagini. La forte abitudine alla vista del volto umano e l’elevata “esperienza” che ne consegue, incrementa la nostra sensibilità ad artefatti presenti in queste aree. Sono stati sviluppati numerosi algoritmi di riconoscimento dei volti nelle immagini, basati sul ristretto range di crominanze coperto dai colori della pelle umana. I risultati di questo stadio di supporto alla segmentazione, vengono poi integrati nel processo di pooling già descritto in precedenza, contribuendo così alla creazione di una misura di distorsione unitaria. È inoltre possibile inserire nel modello alcune considerazioni riguardo all’attrattiva delle immagini, la cosiddetta “image appeal”. ~ 23 ~ Matteo Zagatti Si tratta di un ulteriore accorgimento, utile in quanto un osservatore umano, sarà portato a sopravvalutare, fra due immagini di pari qualità, quella con caratteristiche di maggior nitidezza (sharpness) o di maggior impatto cromatico (colorfulness). Questo livello di affinamento introduce lievi migliorie di prestazioni, al costo di un sensibile incremento di complessità computazionale; a seconda dell’applicazione della metrica pertanto è consigliabile una valutazione specifica dell’impatto effettivo di queste considerazioni. Abbiamo visto come gli approcci tradizionali alla valutazione della qualità delle immagini, utilizzino un approccio bottom-up, partendo da modelli del sistema visivo umano ed usandoli per derivare metriche di qualità. Gli approcci bottom-up sono quelli che combinano modelli diversi, ognuno dei quali rispecchia diverse proprietà dello HVS, per la definizione delle metriche. La risposta dello HVS alle variazioni in luminanza è una funzione non lineare della luminanza media locale ed è in genere chiamata mascheramento in luminanza. Il termine mascheramento è dovuto al fatto che variazioni nel segnale distorto sono mascherate dalla luminanza di base dell’immagine di riferimento. In secondo luogo, il sistema visivo ha una caratteristica di passa-banda e la sua risposta in frequenza può essere caratterizzata dalla funzione di sensitività al contrasto (CSF, contrast sensitivity function). Questa funzione è stata ricavata da esperimenti condotti per determinare la soglia di visibilità di onde sinusoidali a differenti frequenze. Il mascheramento in contrasto è riferito al mascheramento subito dalle informazioni a certe frequenze o con determinati orientamenti a causa della presenza di altre componenti con frequenza od orientamento simili. Le metriche bottom-up usano diversi modelli per tenere conto del mascheramento in luminanza o in contrasto e della sensibilità al contrasto e normalizzano gli errori alle soglie corrispondenti. Il passo finale richiede di combinare questi errori normalizzati per ottenere una mappa della qualità dell’immagine oppure un numero, che rappresenti la qualità generale dell’immagine nella sua interezza. ~ 24 ~ Metriche di valutazione della qualità video 2.4 Metriche HVS-based di tipo top-down Un approccio di tipo diametralmente opposto alle tecniche viste sinora, è quello delle metriche basate sul sistema visivo, ma che partono da considerazioni percettive di alto livello. Da un elevato grado di astrazione si cerca poi di trarre conclusioni sulle caratteristiche di risposta del sistema visivo da introdurre negli schemi di misura. Questo approccio, si propone di modellare il problema della valutazione della qualità, come un problema di fedeltà dell’informazione, anziché come un problema di fedeltà ad un segnale. Abbiamo infatti mostrato che, a parità di “errore”, l’informazione può subire pesanti perdite o rimanere praticamente intatta, a seconda del tipo di errore. Se fosse possibile estrarre le informazioni dalle immagini, o identificare le aree di maggior interesse per attribuirvi peso superiore, in fase di valutazione, si otterrebbe senz’altro una misura più precisa della qualità percepita. La difficoltà risiede nel fatto che il sistema visivo è ancora in larga parte un mistero e di conseguenza è difficile enunciarne le proprietà e riprodurle fedelmente. 2.4.1Visual Information Fidelity (VIF) Un primo esempio di questa strategia è rappresentato dalla metrica VIF. L’ambiente naturale viene ritenuto fonte di entrambi i flussi da analizzare, solo che l’immagine di test viene modificata da un canale (distorsione) prima di essere processata dallo HVS e pertanto giunge al destinatario in una forma differente. Questo modello richiede un accurata rappresentazione della fonte e del canale di comunicazione per quantificare l’informazione condivisa fra la le due immagini. È inoltre richiesto, come per le precedenti metriche viste un modello del sistema visivo, in grado di estrarre dalle immagini quelle che saranno le informazioni più rilevanti. ~ 25 ~ Matteo Zagatti Mentre lo schema e la struttura teoretica alla base di questa metrica sono definiti in modo rigido, rimangono molto libere da vincoli e pertanto non standardizzate le implementazioni e la scelta dei parametri. Affrontiamo ora invece il caso di un modello di tipo full-reference e con approccio top-down, che sta trovando larga applicazione per la sua generalità e per le performances dimostrate. 2.4.2Structural Similarity Index Metric (SSIM) Questo modello parte dall’osservazione che le immagini da analizzare, ritraggono nella maggior parte dei casi, oggetti e forme con una struttura organizzata, mentre è decisamente più raro, che si tratti di una sequenza casuale di pixel. Viene inoltre enfatizzato il fatto che le distorsioni a cui vanno incontro le immagini, non hanno tutte lo stesso effetto sulla qualità percepita dall’osservatore. Si richiede quindi che il sistema di misura, sia in grado di cogliere i diversi piani su cui queste distorsioni operano, per poter predire con sempre maggiore accuratezza la sensazione che giungerà al sistema visivo. Il modello SSIM cerca di dividere pertanto distorsioni sul piano della luminanza, del contrasto e della struttura. In particolare l’ultimo concetto, che dà il nome alla metrica, è particolarmente innovativo e di “alto livello” sensoriale. Le immagini digitali sono tipicamente rappresentate come arrays bidimensionali di campioni di segnali discreti. Se invece rimodelliamo i campioni del segnale in un vettore, ogni immagine diviene un singolo punto in uno spazio delle immagini ad elevato numero di dimensioni. È stato valutato che i segnali rappresentanti le immagini naturali occuperebbero una porzione estremamente limitata di uno spazio così definito. È largamente diffusa la convinzione che le proprietà dell’ambiente naturale giochino un ruolo fondamentale nell’evoluzione, nello sviluppo e nell’adattamento del sistema visivo. Durante la sua lunga evoluzione ed i suoi processi di sviluppo, il sistema visivo umano e stato esposto in modo estensivo alla vista dell’ambiente ~ 26 ~ Metriche di valutazione della qualità video naturale ed una varietà di prove ha mostrato che lo HVS è fortemente adattato ad estrarre informazioni utili dalle scene naturali. Una metrica di qualità dell’immagine, con lo scopo di predire il comportamento di valutazione del HVS, dovrebbe allo stesso modo essere “adattata” alle proprietà dei segnali contenenti informazioni “naturali”. Un aspetto caratterizzante le immagini naturali, che le rende profondamente differenti da immagini prese a caso dallo spazio di tutte le possibili immagini random, è che le prime sono estremamente strutturate: i campioni del segnale mostrano forti dipendenze fra di loro e le dipendenze sono tanto più forti quanti più i campioni sono prossimi spazialmente. Queste dipendenze trasportano importanti informazioni riguardo le strutture degli oggetti nella scena visuale. Una metrica che ignori queste dipendenze potrebbe fallire nel tentativo di predire l’effettiva qualità delle immagini. Una metrica basata su queste considerazioni è differente e complementari agli approcci bottom-up visti in precedenza. Nei metodi full-reference, la qualità dell’immagine di test è valutata confrontandola con un’immagine di riferimento, che si assume avere qualità perfetta. L’obiettivo della ricerca, in campo di valutazione di qualità delle immagini, è di progettare metodi che quantifichino la forza della similarità (o differenza) strutturale fra le immagini di test e di riferimento. La domanda giusta da porsi è perciò: “Cosa costituisce informazione importante, che riflette la struttura degli oggetti rappresentati nell’immagine?”. Questa è la questione chiave, che definirà la specifica implementazione dell’algoritmo. Mentre è difficile definire in breve che cosa sia struttura nell’immagine, è conveniente invece considerare il suo opposto: quale informazione in un immagine non è importante per rappresentare la struttura degli oggetti? Una risposta semplice ci viene dalla teoria della formazione delle immagini. Sappiamo che la luminanza della superficie di un oggetto che osserviamo è il prodotto della illuminazione e della riflessione, ma le strutture degli oggetti nella scena sono indipendenti dall’illuminazione. Di conseguenza, desideriamo separare l’influenza dell’illuminazione dalle informazioni che riteniamo più importanti ~ 27 ~ Matteo Zagatti per rappresentare le strutture degli oggetti. Intuitivamente, il maggior impatto del cambiamento di illuminazione, è la variazione della luminanza media del contrasto in un’immagine. Poiché la luminanza ed il contrasto possono variare nella scena, è preferibile misurarle localmente. Questo conduce a misurazioni localizzate della similarità che separino (e possibilmente rimuovano) l’influenza della luminanza e del contrasto dai rimanenti attributi della regione in esame. Il diagramma del sistema SSIM è mostrato nella figura sottostante. Supponendo che x e y siano due segnali non negativi, che siano stati allineati, il fine del sistema è di fornire una misura della somiglianza fra loro. La misura può servire come indicazione quantitativa della qualità di un segnale, se si considera l’altro come “originale”. Il sistema separa il compito della misurazione in tre confronti: luminanza, contrasto e struttura. Vorremmo inoltre che la metrica soddisfi le seguenti condizioni: 1) Simmetria: S(x,y) = S(y,x). Poiché il nostro scopo è di quantificare la similarità fra due segnali, un’inversione nell’ordine degli inputs, non dovrebbe compromettere la misurazione. 2) Limitatezza: S(x,y) <= 1. La limitatezza è una proprietà utile per una metrica di similarità, poiché un limite superiore fornisce una chiara indicazione di quanto vicini siano i due segnali, all’essere perfettamente identici. Questo è in contrasto con la maggior parte delle misurazioni segnale-rumore, che sono tipicamente non limitati. ~ 28 ~ Metriche di valutazione della qualità video 3) Unicità del massimo: S(x,y) = 1 se e solo se x = y (in senso discreto, xi = yi per tutti gli i). In altre parole, la misura di similarità dovrebbe quantificare qualunque variazione che possa esistere fra i segnali di input. Il punteggio perfetto è raggiunto solo quando i segnali confrontati sono esattamente identici. Il primo passaggio prende in esame la luminanza dei segnali. Assumendo ovviamente di lavorare con segnali discreti, l’intensità media è così definita: Dove μx e μy rappresentano la luminanze medie delle immagini (valor medio), N è il numero totale di campioni che compongono i segnali (ovviamente devono essere uguali in entrambe le immagini), e xi ed yi sono i singoli campioni (pixel delle immagini). L’operatore l(x,y) per il confronto in luminanza, in realtà dipende solo dai valori di μx e μy appena calcolati secondo la relazione: Dove la costante C1 è introdotta per evitare instabilità qualora la somma dei quadrati di μx e μy sia molto vicina a zero: si tratta di un’eventualità altamente improbabile nel caso delle immagini; potrebbe capitare soltanto con immagini quasi completamente ~ 29 ~ Matteo Zagatti nere. In quel caso sia μx che μy sarebbero molto prossimi a zero, quindi la misura di l(x,y) tenderebbe a C1/C1 e quindi ad 1. In tutti gli altri casi, l’entità di C1 risulta ininfluente rispetto alle quantità μx e μy. Per convenzione viene scelto: dove L è il range dinamico dei valori dei pixel (vale 255 per immagini in scala di grigio a 8 bit), e K1 « 1 è una costante molto piccola, convenzionalmente dell’ordine di 10-2. Ora che abbiamo ottenuto la misura del confronto delle immagini per il fattore luminanza, possiamo “eliminare” questa informazione. Ci si propone in pratica di proiettare l’immagine (intesa come punto di questo ipotetico spazio a N dimensioni) nell’iperpiano in cui μx è nullo. Nella pagina seguente viene mostrata un’immagine di test, dalla quale viene poi sottratta la componente di luminanza. Per semplicità viene mostrato l’effetto su un ~ 30 ~ Metriche di valutazione della qualità video unico canale (Y) dell’immagine, ma durante le elaborazioni, lo stesso algoritmo viene applicato a tutti e tre i canali delle immagini bitmap. Immagine originale, canale Y. Immagine privata della luminosità, pronta per la misurazione del contrasto. ~ 31 ~ Matteo Zagatti Per confrontare le immagini sotto il profilo del contrasto, procediamo come per la luminanza: calcoliamo separatamente la misura del contrasto delle immagini (usiamo la deviazione standard come stima del segnale contrasto) ed infine definiamo l’operatore c(x,y) come misura della fedeltà del contrasto della seconda immagine rispetto alla prima. Una misura in forma discreta per il contrasto ci è fornita da: Il confronto in contrasto, realizzato dall’operatore c(x,y) e qui di seguito definito, sarà pertanto funzione delle variabili σx e σy: Dove C2 è una costante non negativa definita in modo simile e per le stesse motivazioni di C1: Come specificato in precedenza L è il range dinamico dei valori dei pixel, e K2 una costante non negativa molto piccola, in genere dell’ordine di 10-2. Una caratteristica importante di questa funzione è che una variazione di contrasto è percepita maggiormente in regioni di basso contrasto, rispondendo al fenomeno di mascheramento in contrasto del sistema visivo umano. Per la terza fase, il segnale viene normalizzato (diviso) per la sua deviazione standard, di modo che i due segnali confrontati abbiano deviazione unitaria. Mostriamo ~ 32 ~ Metriche di valutazione della qualità video pertanto l’effetto della rimozione del contrasto dall’immagine già privata della componente luminanza. Immagine privata di luminosità e contrasto, pronta per il confronto strutturale. Sono ancora distinguibili i soggetti attraverso i loro contorni, mentre le sfumature e le differenze “cromatiche” sono state eliminate. Il confronto di struttura è pertanto condotto dopo aver sottratto la luminanza e normalizzato il contrasto delle immagini in esame. In particolare, associamo la “direzione” dei due vettori (ora unitari) con le strutture delle due immagini. Lo strumento più immediato per confrontare queste direzioni, che associamo al concetto di struttura, è la misura della correlazione fra loro. Si noti che la correlazione fra (x μx)/ σx e (y - μy)/σy è equivalente al coefficiente di correlazione fra gli stessi x e y. In forma discreta σxy viene stimata come: ~ 33 ~ Matteo Zagatti Ora abbiamo tutti gli strumenti per definire l’operatore s(x,y) imputato a fornire la misura della similarità strutturale fra le immagini: Come per le misurazioni del contrasto e della luminanza, viene introdotta una piccola costante C3. Geometricamente, la correlazione corrisponde al coseno dell’angolo fra i vettori x - μx e y - μy . Si noti inoltre che s(x,y) può assumere valori negativi. Un punto importante è che queste tre componenti rimangono relativamente indipendenti. Per esempio, il cambio di luminanza e/o contrasto ha un lieve impatto sulla struttura delle immagini. L’ultimo passaggio richiede di combinare le tre equazioni di confronto per ottenere una singola misura che chiameremo Similarità Strutturale (SSIM) fra i segnali x ed y: dove α, β e γ, tutti maggiori di zero, sono parametri utilizzati per regolare il peso relativo delle tre componenti. È semplice verificare che questa definizione soddisfa le condizioni date. In particolare, settando tutti gli esponenti ad uno, attribuendo cioè la stessa rilevanza alle componenti, e supponendo C3 = C2/2, otteniamo una forma semplificata di indice SSIM: L’utilizzo di questa formula ridotta però non sembra dare il giusto peso alla “struttura” delle immagini, pertanto nell’implementazione scelta sono stati attribuiti valori specifici agli esponenti. ~ 34 ~ Metriche di valutazione della qualità video Volendo dare maggiore risalto possibile alla misura della compatibilità strutturale sono stati posti rispettivamente α = 1/4, β = 1/4 e γ = 8. Gli altri parametri necessari al corretto funzionamento dell’algoritmo sono L = 255, come richiesto per immagini con 8 bit di profondità, K1 = 0.01 e K2 = 0.03. Si è infine scelto di porre C3 = C2/2. ~ 35 ~ Capitolo 3: Test a Campione Al fine di verificare il grado di precisione della metrica implementata, si è scelto di sottoporre un test di qualità ad un campione di venti soggetti, per poi confrontare il loro giudizio “soggettivo” con le misure di qualità espresse dal sistema automatico. 3.1Modalità di somministrazione del test Il campione utilizzato è composto da 20 soggetti volontari di ambo i sessi, di età compresa fra i 16 ed i 60 anni di età, alcuni dei quali privi di conoscenze specifiche in campo informatico, altri con una buona familiarità all’uso del computer e della fotografia digitale. Le immagini scelte per il test sono 13 in totale, una utilizzata come originale, a qualità massima e 12 affette da diverse tipologie di distorsione: blurring (sfocatura), white noise (rumore bianco) e compressione JPEG. Alcuni impairments sono ad un livello appena percettibile, altri sono in quantità tale da ledere irreparabilmente la semantica dell’immagine, impedendo perfino il riconoscimento dei soggetti inquadrati. Alcuni di questi artifacts sono stati applicati all’intera immagine, altri solo ad una metà di essa, per verificare che il sistema non si comporti come i tradizionali indici statistici, attribuendo all’intera immagine, la qualità “media” delle due parti. Il test è stato somministrato con l’ausilio di un computer portatile, provvisto di uno schermo di 15”, con una risoluzione di 1280x1024 pixels ed una profondità di colore di 32 bits. I soggetti sono stati posti ad una distanza di circa un metro dallo schermo, in una stanza in condizione di media illuminazione, avendo cura di evitare riflessi sullo schermo. La modalità di somministrazione del test è stata un DSIS (Double Stimulus Impairment Scale), pertanto, l’immagine di riferimento è sempre stata mostrata ~ 37 ~ Matteo Zagatti prima della relativa immagine di test. Ai soggetti è richiesto di quantificare la qualità dell’immagine di test su una scala discreta a cinque livelli: pessima (1), scarsa (2), sufficiente (3), buona (4), eccellente (5); dove pessima sta a significare la perdita totale dell’informazione e ottima indica che non è possibile distinguere le due immagini. Per la raccolta dei dati sono state utilizzate schede di valutazione come quella riportata in figura. Come si può notare, le immagini da valutare sono solo quelle contraddistinte da numeri pari, mentre quelle dispari erano quelle di riferimento. IMMAGINE Pessima 1 Scarsa 2 Sufficiente 3 Buona 4 Ottima 5 2 O O O O O 4 O O O O O 6 O O O O O 8 O O O O O 10 O O O O O 12 O O O O O 14 O O O O O 16 O O O O O 18 O O O O O 20 O O O O O 22 O O O O O 24 O O O O O Qualora richiesto è stata data la possibilità ai soggetti di riesaminare l’immagine originale dopo aver visualizzato quella distorta, per porre maggiore attenzione alle piccole variazioni di qualità. Non è invece stato permesso di modificare il giudizio su immagini già valutate, alla luce delle successive immagini distorte. I giudizi raccolti creano un giudizio medio e normalizzato in una scala da 1 a 5, per poter essere comparati con la misura di SSIM in output del sistema automatico implementato. ~ 38 ~ Test a campione La misura di qualità ottenuta dal MOS è stata dapprima confrontata con la metrica statistica del PSNR (peak signal to noise ratio), presentata nel capitolo precedente. Una prima stima dell’efficacia della Structural Similarity Index Metric, sarà pertanto il confronto delle sue performances rispetto al tradizionale PSNR. Poiché il PSNR esprime il grado di qualità relativa di due immagini in decibel (dB) è stato necessario uniformare le due misure. La tabella seguente mostra i valori più utilizzati per questa conversione, suggeriti, fra gli altri, da J-R. Ohm (Bildsignalverarbeitung fuer Multimedia-Systeme). PSNR (dB) >37 31-37 25-31 20-25 <20 MOS 5 (eccellente) 4 (buono) 3 (sufficiente) 2 (scarso) 1 (pessimo) 3.2 Prima fase di test: bikes.bmp Le immagini usate per i test, sono prelevate dal Database Release 2, gentilmente concesso dal “LIVE” (Laboratory for Image and Video Processing) dell’Università di Austin, Texas. Riportiamo alcuni esempi, partendo da quella di riferimento, l’originale: si tratta di una bitmap, di dimensioni 768x512 pixel, con profondità di colore di 8 bit, particolarmente interessante per la quantità di dettagli e di alte frequenze, oltre che per la vasta gamma cromatica. ~ 39 ~ Matteo Zagatti Immagine originale: bikes.bmp A questa immagine è stato applicato un diffuso rumore bianco (white noise) di entità medio-bassa, che ne abbassa senza dubbio la qualità, pur preservando gran parte del contenuto informativo, in termine di colori, linee e strutture. Nelle tabelle è identificata dal numero 1. ~ 40 ~ Test a campione Questa invece (numero 7) è stata compressa con algoritmo JPEG, ma gli effetti di questa perdita di qualità sono stati applicati solo alla metà sinistra, lasciando l’altra metà in originale. Nella tabella seguente sono riportati i valori del MOS, del PSNR (prima in dB poi in scala MOS), dell’errore assoluto e percentuale del PSNR rispetto al MOS. Immagine numero PSNR (dB) PSNR convertito MOS Errore assoluto Errore % 1 26,4427 3,0000 3,0000 0,0000 0,00% 2 39,8199 5,0000 4,8500 0,1500 3,75% 3 38,8532 5,0000 4,1000 0,9000 22,50% 4 39,1066 5,0000 4,8500 0,1500 3,75% 5 37,1979 5,0000 4,3500 0,6500 16,25% 6 34,0509 4,0000 4,7000 0,7000 17,50% 7 37,0908 5,0000 4,7000 0,3000 7,50% 8 42,1356 5,0000 4,8000 0,2000 5,00% 9 43,1785 5,0000 4,9000 0,1000 2,50% 10 29,5167 3,0000 3,4500 0,4500 11,25% 11 33,9946 4,0000 4,0000 0,0000 0,00% 12 11,2986 1,0000 1,0000 0,0000 0,00% Medie 34,3905 4,1667 4,0583 0,3000 7,50% ~ 41 ~ Matteo Zagatti Questi primi risultati rivelano una forte variabilità dell’accuratezza del PSNR, in grado di identificare in alcune occasioni con precisione assoluta il giudizio del MOS, ma talvolta produce un errore di oltre il 20% (pari quasi ad un punto di scarto sulla scala MOS). Di seguito sono presentate le tabelle di confronto fra la misura di similarità strutturale basata soltanto sulla componente Y delle immagini ed i dati del campione MOS. Oltre alle misure, come per il PSNR, vengono presentati gli errori assoluti e in percentuale. Immagine numero SSIM Y MOS Errore assoluto Errore % 1 3,7048 3,0000 0,7048 17,62% 2 4,8448 4,8500 0,0052 0,13% 3 4,7776 4,1000 0,6776 16,94% 4 4,812 4,8500 0,0380 0,95% 5 4,7204 4,3500 0,3704 9,26% 6 4,6132 4,7000 0,0868 2,17% 7 4,808 4,7000 0,1080 2,70% 8 4,9112 4,8000 0,1112 2,78% 9 4,9296 4,9000 0,0296 0,74% 10 4,3588 3,4500 0,9088 22,72% 11 4,3928 4,0000 0,3928 9,82% 12 1,1412 1,0000 0,1412 3,53% Medie 4,3345 4,0583 0,2979 7,45% L’errore massimo è equivalente in questo test a quello del PSNR e l’errore medio è di pochissimo inferiore. La tabella riportata di seguito invece, riporta i risultati del test con l’implementazione completa della misura SSIM, che tiene in considerazione anche le matrici di crominanza dell’immagine: sono rappresentati, oltre al MOS, la SSIM YCbCr, l’errore assoluto e percentuale. ~ 42 ~ Test a campione Immagine numero SSIM YCbCr MOS Errore assoluto Errore % 1 3,2967 3,0000 0,2967 7,42% 2 4,8678 4,8500 0,0178 0,44% 3 4,8375 4,1000 0,7375 18,44% 4 4,8211 4,8500 0,0289 0,72% 5 4,7630 4,3500 0,4130 10,32% 6 4,4221 4,7000 0,2779 6,95% 7 4,7143 4,7000 0,0143 0,36% 8 4,9133 4,8000 0,1133 2,83% 9 4,9386 4,9000 0,0386 0,97% 10 4,1543 3,4500 0,7043 17,61% 11 4,4986 4,0000 0,4986 12,46% 12 1,1073 1,0000 0,1073 2,68% Medie 4,2779 4,0583 0,2707 6,77% Risulta immediato verificare che la misura che utilizza tutte le componenti dell’immagine permetta una più accurata aderenza al giudizio del campione, con un errore medio percentuale del 6,77% anziché del 7,45%. In entrambe le tabelle sono mostrati gli errori assoluti e percentuali delle singole immagini e vengono evidenziate in rosso le immagini che hanno prodotto l’errore più evidente. Si noti come nella prima tabella l’errore massimo superi il 22% (che in termini di valutazione significa uno scarto di quasi un voto sulla scala discreta: infatti le valutazioni possibili erano cinque, distanziate pertanto di 0,25 l’una dall’altra). Un soddisfacente miglioramento si apprezza nel massimo errore riscontrato con la seconda metrica, con un 18% sul campione numero 3. Da un’analisi accurata dei dati ricavati dal primo test, sono stati estrapolati tre dati significativi: 1) la misura SSIM, non sembra fornire dati particolarmente più accurati rispetto ad un tradizionale PSNR, almeno, non abbastanza da giustificare un calcolo così complesso; ~ 43 ~ Matteo Zagatti 2) la misura SSIM YCbCr, seppure più accurata della sola versione con componente Y, non incrementa le prestazioni del sistema in maniera sufficiente da giustificare i tempi di esecuzione maggiori (il calcolo infatti, viene eseguito 3 volte anziché una soltanto); 3) gli errori assoluti, presentati dalle misurazioni SSIM, sono sempre in eccesso, sembra pertanto plausibile, poter tarare meglio il sistema per ottimizzare questo scarto e ridurre l’errore medio. Prima di procedere ad una seconda implementazione, si è ritenuto opportuno condurre una seconda fase di test, impiegando un’immagine diversa, per evitare di trarre conclusioni che derivassero dalla specificità della prima immagine di test e per ovviare alla possibilità che alcune delle considerazioni emerse derivassero dal “caso particolare”. Dalla letteratura infatti, era emerso un errore medio del PSNR ben più elevato di quello riscontrato nei test. 3.3Seconda fase di test: ocean.bmp La seconda immagine originale utilizzata, presenta al contrario della prima, una certa uniformità cromatica, alternando zone ad alta frequenza (onde e nuvole) a zone caratterizzate da tinte uniformi (bassa frequenza), come il cielo. ~ 44 ~ Test a campione Si tratta ancora una volta di una bitmap, in formato RGB con 8 bit di profondità per canale, con una risoluzione di 768 x 512 pixel. All’immagine (numero 10) è stato applicato un filtro di blurring, pertanto gli oggetti sono ancora ben riconoscibili, ma mancano i dettagli tipici delle alte frequenze. ~ 45 ~ Matteo Zagatti L’immagine numero 12 è caratterizzata da una evidente distorsione JPEG, applicata alla metà di destra, si possono notare effetti di blokiness e color bleeding. Il campione interpellato, le modalità di somministrazione e l’elaborazione dei dati ottenuti, sono rimasti i medesimi della prima fase di test. Di seguito riportiamo le tabelle di risultati del PSNR, della SSIM Y (sola componente luminanza) e della SSIM YCbCr (con componenti di crominanza). Immagine numero PSNR (dB) PSNR convertito MOS Errore assoluto Errore % 1 2 3 4 5 6 7 8 9 10 11 12 38,6856 37,9696 40,7346 41,1403 11,5967 34,9734 41,1154 27,9111 40,4272 38,1971 24,9365 37,4561 5,0000 5,0000 5,0000 5,0000 1,0000 4,0000 5,0000 3,0000 5,0000 5,0000 2,0000 5,0000 3,2500 3,5000 3,7000 3,7000 1,0000 2,6000 3,8000 3,0500 4,2500 3,4000 1,8000 3,4500 1,7500 1,5000 1,3000 1,3000 0,0000 1,4000 1,2000 0,0500 0,7500 1,6000 0,2000 1,5500 43,75% 37,50% 32,50% 32,50% 0,00% 35,00% 30,00% 1,25% 18,75% 40,00% 5,00% 38,75% Medie 34,5953 4,1667 3,1250 1,0500 26,25% ~ 46 ~ Test a campione Questo secondo test, ha rivelato pesantissimi limiti del PSNR, come ci si aspettava: l’errore medio supera il 25% (che corrisponde ad un voto intero su scala MOS) e, nonostante permangano alcuni rari casi di corrispondenza completa del MOS con il PSNR calcolato, emerge l’inefficacia di questo indice statistico nella previsione del giudizio soggettivo del pubblico. Il caso peggiore supera il 43% di errore, e sono molti i casi oltre il 30%, mitigati appunto da sporadici elementi vicini allo 0%. Immagine numero SSIM Y MOS Errore assoluto Errore % 1 4,2900 3,2500 1,0400 26,00% 2 4,4200 3,5000 0,9200 23,00% 3 4,4448 3,7000 0,7448 18,62% 4 4,5724 3,7000 0,8724 21,81% 5 1,0636 1,0000 0,0636 1,59% 6 4,1080 2,6000 1,5080 37,70% 7 4,6140 3,8000 0,8140 20,35% 8 3,7832 3,0500 0,7332 18,33% 9 4,6876 4,2500 0,4376 10,94% 10 3,9948 3,4000 0,5948 14,87% 11 2,4960 1,8000 0,6960 17,40% 12 4,5216 3,4500 1,0716 26,79% Medie 3,9163 3,1250 0,7913 19,78% Continua a comportarsi in modo più accurato, il sistema di misura SSIM Y, con un andamento più regolare, anche se con un errore medio che si mantiene di poco al di sotto del 20%. Il caso peggiore tocca un picco di errore del 37%, mentre buona parte degli altri valori sono prossimi alla media. ~ 47 ~ Matteo Zagatti Immagine numero SSIM YCbCr Errore assoluto MOS Errore % Segno dell’errore 1 3,3880 3,2500 0,1380 3,45% + 2 3,3402 3,5000 0,1598 3,99% - 3 4,2217 3,7000 0,5217 13,04% + 4 4,1360 3,7000 0,4360 10,90% + 5 1,0428 1,0000 0,0428 1,07% + 6 3,0837 2,6000 0,4837 12,09% + 7 4,1429 3,8000 0,3429 8,57% + 8 3,1929 3,0500 0,1429 3,57% - 9 4,1249 4,2500 0,1251 3,13% - 10 3,5388 3,4000 0,1388 3,47% + 11 1,4075 1,8000 0,3925 9,81% - 12 3,9923 3,4500 0,5423 13,56% + 3,3010 3,1250 0,2889 7,22% Medie La seconda fase di test ha fornito ottimi dati sul funzionamento della metrica SSIM YCbCr, che mantiene un errore medio percentuale del 7%, come emerso dalla prima sperimentazione, limita l’errore massimo al 13% e si dimostra, il più aderente al giudizio del campione. Al termine dei due rounds di test, possiamo fugare alcune delle preoccupazioni emerse dalla prima analisi: 1) il PSNR si è rivelato uno strumento di base pratico e di facile implementazione, che però non sempre è in grado di prevedere con precisione il valore di MOS atteso; 2) l’utilizzo della SSIM Y, non consente di mantenere la miglior precisione possibile nella previsione del MOS, anche se consente una maggiore velocità di esecuzione; 3) nella tabella che riporta i valori della SSIM YCbCr sono stati riportati anche i segni (eccesso o difetto) degli errori rispetto al MOS; come è possibile notare sono equamente distribuiti, impedendo di fatto di realizzare un’ottimizzazione dei parametri per ridurre ulteriormente l’errore medio. ~ 48 ~ Capitolo 4: Applicazione al video Per applicare le tecniche testate nei capitoli precedenti, alla misurazione della qualità percepita in campo video, si è reso necessario adattare l’algoritmo di calcolo della similarità strutturale per la valutazione di una sequenza di immagini, anziché di un singolo fotogramma; è stato inoltre necessario estrapolare dal flusso video l’intera sequenza dei fotogrammi che lo compongono. In pratica, il metodo più semplice ed intuitivo per estendere le considerazioni fin qui effettuate nell’ambito delle immagini statiche, anche all’utilizzo per la valutazione della qualità di filmati, è proprio quello di applicare ad ogni immagine (frame) dei video, originale e “corrotto”, lo stesso algoritmo, di porre i risultati su un grafico e di restituire il valore medio, come misura della similarità strutturale video, o videoSSIM. 4.1Prima fase di test video: street.mpg I primi test sono stati effettuati da una sequenza video originale della durata di 20”, ripresa con una fotocamera digitale in formato NTSC, con risoluzione 720*480 (4/3), a 30 frames al secondo, per un totale quindi di 600 frames. La fotocamera comprime il filmato secondo lo standard MPEG2 a 9000 kbps (qualità DVD-video). La scena riprende una strada di campagna, con automobili che passano in entrambe le direzioni; in principio la ripresa è fissa, poi inizia ad inseguire il passaggio di un’auto in passaggio: quindi c’è una prima parte che possiamo considerare “statica” ed una seconda particolarmente “dinamica”. La sequenza originale, privata del canale audio, occupa circa 23000 kB. Le sequenze di test sono state ottenute comprimendo il filmato originale in formato Xvid, Divx ed MPEG1, a diverse bitrates, per verificare l’efficacia degli algoritmi e la risposta della metrica implementata. In ogni compressione, framerate e risoluzione dei frames sono stati lasciati invariati, agendo soltanto sull’algoritmo di ~ 49 ~ Matteo Zagatti compressione e sulla bitrate. La prima sequenza di test è una compressione dell’originale in Xvid, realizzata utilizzando il profilo high-quality proposto dallo standard, che prevede una bitrate di 4200 kbps, quindi meno della metà rispetto all’originale: infatti il file risultante è di circa 10700 kB. Riproducendo il file, si ha un’impressione di qualità molto prossima a quella della sequenza originale, gli oggetti, sia statici che in movimento, non danno impressione di blockiness o di jerkiness. La seconda sequenza di test utilizza lo stesso codec (Xvid), ma un profilo di qualità media, con una bitrate di 2550 kbps, fornendo quindi un filmato di dimensioni 6500 kB. La qualità percepita ad occhio nudo è leggermente inferiore rispetto a quella del primo test, alcuni impairments cominciano a presentarsi nelle aree ad alta frequenza e nelle zone in movimento, ciononostante la qualità media della sequenza rimane elevata. Per concludere le valutazioni sul codec Xvid, la terza sequenza è stata ottenuta selezionando il profilo low-quality offerto dallo standard, con una bitrate di 1500 kbps ed una dimensione del file di circa 3950 kB. La qualità di questo terzo filmato è inficiata dalla presenza di artifacts di varia natura, dalla blockiness al color bleeding, pur mantenendo gran parte della “semantica” del filmato originale. Verifichiamo ora la valutazione automatica del sistema, che confronterà una per una, queste tre sequenze video con quella originale, assegnando ad ogni frame un punteggio su scala MOS (da 1 a 5), realizzando un grafico che esprime l’andamento della qualità nel corso della sequenza. Nelle pagine seguenti mostriamo il grafico della qualità percepita, come calcolato dall’algoritmo (linea continua) ed il valore medio (linea tratteggiata), utilizzato come misura generale della qualità del video, rispettivamente per l’algoritmo Xvid ad alta, media e bassa qualità. ~ 50 ~ Applicazione al video ~ 51 ~ Matteo Zagatti Mostriamo infine un raffronto fra le misure della video-SSIM, fra le sequenze Xvid ad alta qualità (linee di colore blu) e bassa qualità (linee di colore rosso). ~ 52 ~ Applicazione al video Come si può notare l’andamento generale delle due curve è simile, in un qualche modo risultano traslate l’una rispetto all’altra, proprio della stessa distanza a cui si trovano le rispettive medie: la qualità media dell’Xvid di alto profilo risulta di 4.337 mentre per il profilo basso è di poco inferiore a 4 (3.998). Passiamo ora ad analizzare le sequenze compresse con codec Divx: la prima, ha una bitrate di circa 1400 kbps (di poco inferiore al profilo low-quality usato per l’Xvid), pertanto, produce un file di 3500 kB. Confrontandolo con l’andamento del filmato Xvid di basso profilo, anche in virtù della bitrate leggermente inferiore, il codec Divx risulta di maggior efficacia per questa specifica sequenza, in quanto mantiene una media leggermente superiore rispetto all’Xvid (4.043 anziché 3.998). Si tratta comunque di differenze quasi impercettibili ad occhio nudo, anche tenendo conto che si tratta di algoritmi di compressione molto simili fra loro. ~ 53 ~ Matteo Zagatti La seconda sequenza ottenuta dal codec Divx è compressa usando solo 270 kbps, producendo un filmato di soltanto 690 kB. Nella figura sottostante notiamo subito come la curva sembri meno “frastagliata”, pur mantenendo un andamento generale simile alle precedenti, non è soltanto traslata fino alla qualità media di 3.573, ma la differenza sostanziale sta piuttosto nella regolarità e nella mancanza di picchi, come se l’algoritmo non potesse più rispondere in modo reattivo alla necessità di qualità imposte dalla variazione della scena. Vediamo invece nella pagina seguente il grafico ottenuto per la sequenza compressa in MPEG1, con bitrate di 500 kbps, quasi il doppio rispetto al precedente Divx. ~ 54 ~ Applicazione al video Andiamo infine a confrontare i grafici di Divx a 270 kbps (in blu) ed MPEG1 a 500kbps (in rosso). ~ 55 ~ Matteo Zagatti Le due curve rimangono molto vicine fra loro, nonostante l’enorme differenza di bitrates, proprio in virtù della maggiore efficacia della compressione Divx rispetto all’MPEG1. Si noti inoltre la regolarità dei picchi nel grafico dell’MPEG1, a qualità pressoché massima, in corrispondenza dei frames di risincronizzazione. 4.2Seconda fase di test video: cars.mpg Il secondo filmato utilizzato per il test della metrica VSSIM, è uno frammento di 24” estratto dal DVD del film di animazione Disney Pixar “Cars”, in formato PAL, con risoluzione 720*576 (16/9), a 25 frames al secondo, per un totale quindi di 600 frames, come nel primo caso analizzato. Come per il primo file, l’originale è un MPEG2 a 9000 kbps; la scena ritrae sia oggetti statici, che dettagli in veloce movimento. Le sequenze di test analizzate sono, come per la prima fase di test, versioni compresse in Xvid, Divx ed MPEG1, a diversi livelli di qualità, sempre mantenendo fissa la risoluzione dei frames ed il numero di frames al secondo, agendo solo sulle bitrates. I primi files analizzati sono risultato della compressione Xvid rispettivamente ad alta qualità (4200 kbps), media qualità (2550 kbps) e bassa qualità (1500 kbps), nelle pagine seguenti vediamo i corrispondenti grafici della VSSIM. Utilizzando il valore medio come indicazione di massima della qualità riscontrata, notiamo che la qualità di queste sequenze è rispettivamente di 4.2, di 3.9 e di 3.7 su scala MOS. I grafici successivi mostrano i risultati dell’analisi delle sequenze compresse in Dixv a bassa qualità (660 kbps), Windows Media Video di bassa qualità (WMV a 738 kbps) ed MPEG1 a bassa qualità (915 kbps), procederemo poi a confrontare e commentare i risultati. ~ 56 ~ Applicazione al video ~ 57 ~ Matteo Zagatti ~ 58 ~ Applicazione al video ~ 59 ~ Matteo Zagatti Possiamo notare che Divx e WMV ottengono risultati comparabili, con una media intorno al 3.3, mentre l’MPEG1 si attesta su un valore medio di 3.5. Tenendo conto della maggiore bitrate concessa all’MPEG1, siamo consapevoli dell’inferiorità assoluta di questo algoritmo rispetto agli altri due, ma, unendo questi risultati con quelli emersi dalla prima fase di test, possiamo trarre indicazioni più generali: in questa seconda sequenza, l’MPEG1 ottiene risultati comparabili agli altri algoritmi, senza necessità di una bitrate doppia, quindi probabilmente, si adatta maggiormente alla compressione delle forme e colori artificiali tipici dell’animazione, o alla particolare scena di questa sequenza, piuttosto che allo scenario di immagini naturali scelto per la prima. Per quanto riguarda l’inviluppo delle curve notiamo che l’andamento generale è costante per ogni algoritmo, anche se, come per il caso precedente, il Divx ha una struttura più regolare, mentre l’MPEG1 ha un’elevatissima variabilità. I picchi di qualità massima, si presentano però con meno frequenza, inframezzati da picchi di qualità intermedia (intorno al valore 4 della scala MOS). ~ 60 ~ Applicazione al video Nel grafico sottostante visualizziamo il confronto fra WMV, rappresentato in blu ed MPEG1 in rosso. Proponiamo inoltre un grafico riassuntivo per le due sequenze analizzate, con una panoramica sulle qualità medie riscontrate nei vari algoritmi. ~ 61 ~ Matteo Zagatti Possiamo notare la qualità decrescente registrata con la diminuzione delle bitrates, con una risalita nel caso dell’MPEG1 solo in virtù della doppia bitrate utilizzata in quel caso, rispetto al Divx o WMV di bassissima qualità. Registriamo inoltre una qualità generale inferiore nella codifica della sequenza “Cars.mpg”, dovuta probabilmente alla maggior quantità di dettagli e colori rispetto a “Street.mpg”. Dal confronto diretto fra codec Xvid e Divx, a bitrate molto simili (1500 e 1400 kbps rispettivamente), possiamo inoltre notare come questi algoritmi si adattino in maniera diversa alle due sequenze, con una migliore prestazione del Divx per la prima ed una notevole differenza a favore dell’Xvid invece per la seconda (colonne 4 e 5 del grafico). 4.3Aspetti critici delle prime fasi di test Questa prima fase di test, pur rispondendo alle aspettative, non ha fornito dati che tenessero in considerazione aspetti legati al mascheramento temporale. È noto infatti, che la qualità media percepita dall’occhio umano, durante la visione di una sequenza video, non sia legata solamente alla qualità dei singoli frames riprodotti, ma dipenda anche dalla velocità di cambiamento della scena. Ad esempio, oggetti in veloce movimento, necessitano di una definizione minore di oggetti in ripresa statica. Per affinare ulteriormente la previsione sulla qualità percepita, si è reso pertanto necessario elaborare ad integrare nel sistema di misurazione videoSSIM, un algoritmo di estrazione e calcolo dei motion vectors, cioè di quei vettori che indicano lo spostamento di blocchi di pixel fra un frame ed il successivo. I motion vectors, sono usati dagli algoritmi di codifica e decodifica per esprimere frames successivi in termini “differenziali” anziché inviare i frames nella loro interezza. Sono pertanto un buon indicatore della quantità di moto presente nella scena. Calcolando i motion vectors relativi alle due sequenze in esame e confrontandoli, è pertanto possibile migliorare la risposta del sistema al fenomeno del mascheramento temporale. Nel capitolo successivo, analizzeremo nel dettaglio il metodo utilizzato per la ricerca dei motion vectors ed il loro utilizzo nel sistema video-SSIM. ~ 62 ~ Capitolo 5: Motion vectors video-SSIM 5.1 Utilizzo dei motion vectors nella compressione video Nel primo capitolo abbiamo accennato all’utilizzo di frames di tipo differenziale P o B come parte del meccanismo di compressione. Per la costruzione di questi frames, lo strumento principale è l’utilizzo dei motion vectors: per ogni macroblocco di un frame, in un suo intorno di dimensione prefissata, viene cercata la posizione in cui il macroblocco si è spostato all’interno dei frames successivi o precedenti. Come già accennato i frames di tipo P utilizzano la sola predizione in avanti, cioè si basano sul più recente frame di tipo I, codificato in modo indipendente; in modo differente i frames B sono costruiti con predizione bidirezionale, basandosi sui più vicini frames I e P, precedenti o successivi ad essi. Nell’immagine successiva diamo un esempio di codifica che utilizza frames I (indipendenti), P (predetti) e B (bidirezionali). ~ 63 ~ Matteo Zagatti Nella parte alta dell’immagine è evidenziato il meccanismo di predizione in avanti, “forward prediction”, mentre nella parte sottostante, la tecnica di “bidirectional prediction”, in entrambe le direzioni. Risulta evidente che per la codifica/decodifica dei frames B è necessario attendere dati provenienti dall’elaborazione di frames successivi, tramite meccanismi di bufferizzazione. Nell’immagine successiva sono visualizzati i motion vectors calcolati per i macroblocchi che compongono il frame, utilizzati per la predizione del successivo. Possiamo notare come oggetti di grandi dimensioni, spostandosi in modo rigido, creino aree di motion vectors paralleli. La necessità di introdurre considerazioni riguardanti i motion vectors, nella metrica video-SSIM, si è scontrata con il bassissimo grado di standardizzazione nel loro utilizzo, dovuto alla flessibilità dei diversi algoritmi di compressione, oltre che con l’elevata difficoltà di estrazione di queste informazioni dai filmati compressi, in quanto come sappiamo, i diversi standard posizionano diversamente le informazioni nello stream video. ~ 64 ~ Motion vectors video-SSIM Per ovviare contemporaneamente ad entrambe le problematiche, si è preferito ricavare i motion vectors direttamente dai frames già estratti per il calcolo della video-SSIM: anziché estrapolare queste informazioni dai video compressi, cercare di “allineare” i dati, per confrontare solo motion vectors destinati a frames dello stesso tipo ed ottenere probabilmente risultati frammentari, si è preferito aggredire il problema dal fronte diametralmente opposto, cioè dai frames, calcolando i motion vectors come se si trattasse di un’intera sequenza di frames P. Per fare questo si è scelto uno fra gli algoritmi di ricerca per motion estimation attualmente più diffusi nella codifica video, l’ARPS (Adaptative Root Pattern Search), molto efficace e performante, che prevede una prima fase di ricerca del miglior punto di partenza, per dare poi il via alla seconda fase, chiamata di affinamento, o ricerca locale. Per ciascuna delle sequenze video analizzate nel capitolo precedente, i dati emersi dalla ricerca dei motion vectors sono stati memorizzati per la fase successiva, cioè quella di confronto con il calcolo degli stessi motion vectors, effettuato sulla sequenza originale. Dal confronto dei motion vectors dei frames corrispondenti nel video originale ed in quello da valutare, è stato ricavato un indice di fedeltà con valori compresi fra zero ed uno. Il valore massimo, viene raggiunto qualora ogni motion vector venga codificato esattamente allo stesso modo nelle due sequenze, mentre il valore minimo viene assegnato nel caso in cui tutti i motion vectors, analizzati nella sequenza di test, abbiano direzione e modulo opposti all’originale. Mostriamo ad esempio, nella pagina seguente, l’andamento degli indici ricavati da questa analisi per il video “Street” in formato Xvid ad alta qualità: notiamo come l’indice di aderenza dei motion vectors non scenda mai sotto lo 0,9. ~ 65 ~ Matteo Zagatti Vediamo ora invece il grafico corrispondente alla versione MPEG1 della stessa sequenza video, gli indici relativi ad i motion vectors in questo caso raggiungono minimi dello 0,82 oltre ad essere meno regolari dei precedenti. ~ 66 ~ Motion vectors video-SSIM Applicando queste informazioni al calcolo della video-SSIM, usando gli indici di movimento a prodotto con i valori ottenuti dall’analisi frame-a-frame otterremo perciò misure più basse di quelle registrate in precedenza e tanto più distanti quanto più bassi saranno i relativi motion indexes. In pratica, qualora tutti i motion vectors analizzati corrispondano a quelli della sequenza originale, la misura della video-SSIM e della MVV-SSIM (motion vector video SSIM) forniranno il medesimo risultato, in tutti gli altri casi, i motion indexes ridurranno i valori di qualità dei frames calcolati in precedenza. Ovviamente, qualora i motion indexes siano prossimi all’unità, otterremo un andamento generale simile a quello già mostrato, mentre, in caso di indici più bassi, come ad esempio nell’MPEG1, la curva di qualità percepita verrà modificata e rimodellata dagli specifici valori ricavati dai motion vectors. Nelle porzioni di video caratterizzate da maggiore staticità ci aspettiamo migliore aderenza dei motion vectors e valori più bassi in caso di elevata compressione, nelle parti di sequenza ad elevata quantità di moto: i grafici relativi a “Street.mpg” rispondono a questa previsione. 5.2 Analisi delle sequenze video con la metrica MVV-SSIM Nella pagina seguente sono riportati i grafici di qualità percepita secondo la nuova metrica MVV-SSIM, evidenziando l’apporto fornito dal calcolo dei motion vectors e la differenza rispetto ai risultati precedenti. ~ 67 ~ Matteo Zagatti Relativamente alla sequenza “Cars.mpg” visualizziamo il confronto fra i motion indexes di Xvid high quality ed MPEG1 low quality. ~ 68 ~ Motion vectors video-SSIM Mostriamo inoltre come l’utilizzo della nuova metrica modifichi la qualità versione in MPEG1 per entrambe le sequenze. ~ 69 ~ Matteo Zagatti Il seguente grafico mostra l’applicazione della nuova metrica MVV-SSIM alle sequenze analizzate nel capitolo precedente. Notiamo come la qualità riscontrata sia nettamente inferiore rispetto a quanto evidenziato dalla sola metrica v-SSIM e quanto, la diminuzione della valutazione sia maggiore per i codecs a maggiore compressione (minore bitrate). Come nel caso della v-SSIM, gli algoritmi di codifica producono risultati migliori sul filmato “Street.mpg” piuttosto che su quello “Cars.mpg”, come in precedenza, i filmati compressi a livelli decrescenti di bitrate in Xvid creano una scala di qualità discendente piuttosto regolare, mentre si registrano pesanti cali delle prestazioni per il codec Divx. Ricordiamo che, per quanto riguarda il filmato “Street.mpg” ad una bitrate di circa 1400-1500 kbps, il filmato in Divx produceva una qualità migliore di quello in Xvid, mentre ora, nelle colonne 4 e 5 dell’istogramma registriamo una lieve inversione di tendenza. Ciò significa che la diminuzione della qualità media del filmato in Divx a bassa qualità, sarà stata decisamente superiore di quella subita dall’Xvid, nel passaggio dalla metrica v-SSIM a quella MVV-SSIM. ~ 70 ~ Motion vectors video-SSIM Visualizziamo infine il confronto fra le due metriche presentate per poter meglio apprezzare queste variazioni. Le barre a colorazione piena rappresentano i risultati dell’analisi MVV-SSIM sulle due sequenze codificate con i codec proposti, mentre le barre sovrapposte ad esse, con colorazione in trasparenza maggiore, sono i precedenti valori, calcolati sugli stessi stream video ad opera della v-SSIM, possiamo così verificare quali sono i codec e le bitrates che soffrono maggiormente di distorsioni in fatto di motion vectors. 5.3 Conclusioni Dal quadro d’insieme possiamo estrapolare alcune informazioni importanti: nella sequenza “Cars.mpg”, dove la quantità di movimento è ridotta, tutte le compressioni subiscono distorsioni di motion indexes e di conseguenza riduzioni della qualità medio-basse; situazione diversa ha creato la sequenza “Street.mpg”, specie per l’algoritmo Divx a bassa qualità. ~ 71 ~ Matteo Zagatti In generale appare evidente che il video “Cars.mpg” abbia messo a dura prova i codecs sotto il profilo della compressione dei frames, producendo già valori di qualità percepita relativamente bassi, prima ancora di introdurre la metrica che si avvale dei motion vectors; al contrario, il video “Street.mpg”, produce frames compressi di qualità medio-alta, ma stressa i codecs a bitrates minori sotto il profilo della quantità di moto e quindi di aderenza dei motion vectors, a causa della velocità degli oggetti in movimento in esso contenuti. Le metriche presentate hanno risposto alle aspettative, in particolare la MVV-SSIM, incorporando sia le considerazioni di carattere spazio-frequenziale, ricavate dalla teoria della SSIM, che le proprietà di tipo temporale, estratte dall’analisi dei Motion Vectors, rappresenta un ottimo traguardo nella costruzione di una metrica di qualità percepita. La metrica è ulteriormente affinabile, ad esempio possono essere introdotte considerazioni legate alla Motion Compensation, per aumentare il grado di aderenza della qualità misurata a quella percepita dall’osservatore, a carico però di un notevole incremento della complessità computazionale. ~ 72 ~ Capitolo 6: Conclusioni Il progetto di realizzazione di un sistema per l’analisi della qualità percepita in sequenze video, è stimolante ed interessante sotto molteplici aspetti: è un problema relativamente recente, ci sono molteplici punti di vista e quindi direzioni intraprese per la sua soluzione, si propone di rispondere ad un’esigenza affatto banale e coinvolge numerosi aspetti tecnici e non. Lo stato dell’arte delle metriche già presenti sul mercato è in continua evoluzione, ma si è ancora lontani da una standardizzazione, al punto che, gran parte degli articoli sull’argomento, terminano con la lista di ciò che ci si prefigge di implementare, nelle le successive versioni delle metriche di cui trattano. Il sistema di misura realizzato, basato sulla Structural Similarity Index Metric, prima per immagini statiche e poi esteso, con accorgimenti temporali, alla qualità video percepita, è uno strumento efficace e versatile: bastano pochi minuti per modificare i parametri richiesti ed i pesi attribuiti alle proprietà delle sequenze che si preferisce evidenziare (luminosità, contrasto, struttura, movimento ecc. ). La scelta di MATLAB, come ambiente di sviluppo, è nata principalmente dalla forte integrazione del sistema con le risorse multimediali: facilità di importazione, gestione e salvataggio di immagini e video e, non ultima, la produzione di grafici per l’analisi riassuntiva di dati, altrimenti di difficile interpretazione. Resta beninteso che gli stessi algoritmi implementati in questo linguaggio siano riproducibili in altri, di maggiore efficienza, è nota la somiglianza per molti versi, del linguaggio MATLAB con il C, ma si è preferito, in questa dissertazione, porre l’accento sul “cosa” fare, piuttosto che sul “come”. La parte implementativa è stata più che altro, un metodo di verifica delle assunzioni teoriche fatte, per valutare se e in che misura, le scelte concettuali, avessero riscontro nell’uso della metrica e fossero realizzabili. ~ 73 ~ Matteo Zagatti Da quanto emerso dalla sperimentazione nell’utilizzo della metrica, c’è una forte corrispondenza fra qualità percepita, intesa come misura espressa dalla MVV-SSIM (Motion Vectors Video SSIM) e la bitrate utilizzata per la codifica, a parità di codec, o quantomeno di “famiglia” di codec, mentre questa relazione viene a mancare, qualora si confrontino algoritmi di compressione differenti. Selezionando un buon bouquet di video originali, caratterizzato da scene a bassa quantità di movimento, altre con maggiore dinamicità, sequenze contraddistinte da un grande numero di dettagli e colori ed altre invece con grandi elementi monocromatici, è pertanto possibile realizzare una misurazione della bontà di un algoritmo di codifica specifico. Fissando invece una bitrate, ed applicando codecs diversi alle stesse sequenze di riferimento, è invece immediato confrontarne le capacità risultanti, dando una misura delle rispettive qualità video percepite. La necessità di non basare il giudizio, riguardante un determinato codec, soltanto su una sequenza di esempio, deriva dal fatto che taluni algoritmi sono particolarmente predisposti a codificare certi tipi di filmati e sono molto efficaci a ben determinate bitrates: per poter creare una panoramica sulle peculiarità di questi codecs pertanto, è necessario scegliere una buona base di sequenze video originali ed effettuare la sperimentazione a diversi livelli di bitrates. L’intento di questo progetto è proprio di fornire uno strumento per studi di questo genere, prescindendo dalla specificità dell’algoritmo di compressione e tenendo in considerazione soltanto aspetti percettivi legati alla qualità. Il grosso limite tecnologico presentato da metriche di questo genere, è la necessità di “confrontare” due segnali (full-reference) fornendone una misura della qualità relativa, mentre l’occhio umano è capace di valutare la qualità assoluta di una sequenza. Purtroppo, per poter definire metriche indipendenti dal segnale originale sarebbe necessaria una conoscenza completa delle caratteristiche del sistema visivo, oltre che la capacità di realizzarne un modello matematico ed implementativo fedele. ~ 74 ~ Appendice: Codice MATLAB delle metriche implementate A.1. “ssim_index_ycbcr_ok.m” function [mssim, ssim_map] = ssim_index_ycbcr_ok(imgA, imgB) %controllo degli argomenti passati alla funzione if (nargin ~= 2) mssim = -Inf; ssim_map = -Inf; return; end %lettura delle immagini di imput img1= imread(imgA); img2= imread(imgB); [M N] = size(img1); if ((M < 11) || (N < 11)) mssim = -Inf; ssim_map = -Inf; return end %preparazione dei parametri window = fspecial(‘gaussian’, 11, 1.5); K(1) = 0.01; K(2) = 0.03; L = 255; ~ 75 ~ Matteo Zagatti %conversione spazio colore img1Y = .2989*img1(:,:,1)+.5870*img1(:,:,2)+.1140*img1(:,:,3); img2Y = .2989*img2(:,:,1)+.5870*img2(:,:,2)+.1140*img2(:,:,3); img1Cb = -.1687*img1(:,:,1)-.3310*img1(:,:,2)+.5000*img1(:,:,3); img2Cb = -.1687*img2(:,:,1)-.3310*img2(:,:,2)+.5000*img2(:,:,3); img1Cr = .5000*img1(:,:,1)-.4190*img1(:,:,2)-.0810*img1(:,:,3); img2Cr = .5000*img2(:,:,1)-.4190*img2(:,:,2)-.0810*img2(:,:,3); %invocazione della funzione di calcolo della SSIM [mssimY, ssim_mapY] = ssim_index_calc_ok(img1Y, img2Y, K, window, L); [mssimCb, ssim_mapCb] = ssim_index_calc_ok(img1Cb, img2Cb, K, window, L); [mssimCr, ssim_mapCr] = ssim_index_calc_ok(img1Cr, img2Cr, K, window, L); %unificazione dei risultati con media pesata mssim = mssimY*.50+mssimCb*.25+mssimCr*.25; ssim_map = ssim_mapY*.50+ssim_mapCb*.25+ssim_mapCr*.25; return A.2. “ssim_index_calc_ok.m” function [mssim, ssim_map] = ssim_index_calc_ok(img1, img2, K, window, L) %preparazione parametri C1 = (K(1)*L)^2; C2 = (K(2)*L)^2; window = window/sum(sum(window)); img1 = double(img1); img2 = double(img2); ~ 76 ~ Appendice %calcolo degli indici statistici necessari mu1 = filter2(window, img1, ‘valid’); mu2 = filter2(window, img2, ‘valid’); mu1_sq = mu1.*mu1; mu2_sq = mu2.*mu2; mu1_mu2 = mu1.*mu2; sigma1_sq = filter2(window, img1.*img1, ’valid’) - mu1_sq; sigma1 = sqrt(sigma1_sq); sigma2_sq = filter2(window, img2.*img2, ’valid’) - mu2_sq; sigma2 = sqrt(sigma2_sq); sigma12 = filter2(window, img1.*img2, ’valid’) - mu1_mu2; %calcolo di luminosità, contrasto e struttura l= (((mu1.*mu2).*2)+ C1)./((mu1_sq + mu2_sq)+ C1); c= (2.*sigma1.*sigma2 + C2)./(sigma1_sq + sigma2_sq + C2); s= (sigma12 + C2/2)./(sigma1.*sigma2 + C2/2); %settaggio dei pesi da attribuire alle varie proprietà alpha = 0.25; beta = 0.25; gamma = 8.0; %calcolo della ssim ssim_map = (l.^alpha).*(c.^beta).*(s.^gamma); mssim = real(mean2(ssim_map)); return A.3. “psnr_ycbcr.m” function I = psnr_ycbcr(imgA,imgB) %lettura immagini di ingresso img1= imread(imgA); img2= imread(imgB); ~ 77 ~ Matteo Zagatti %cambio del piano colore img1Y = .2989*img1(:,:,1)+.5870*img1(:,:,2)+.1140*img1(:,:,3); img2Y = .2989*img2(:,:,1)+.5870*img2(:,:,2)+.1140*img2(:,:,3); img1Cb = -.1687*img1(:,:,1)-.3310*img1(:,:,2)+.5000*img1(:,:,3); img2Cb = -.1687*img2(:,:,1)-.3310*img2(:,:,2)+.5000*img2(:,:,3); img1Cr = .5000*img1(:,:,1)-.4190*img1(:,:,2)-.0810*img1(:,:,3); img2Cr = .5000*img2(:,:,1)-.4190*img2(:,:,2)-.0810*img2(:,:,3); %invocazione della funzione psnr i_Y = psnr(img1Y,img2Y); i_Cb = psnr(img1Cb, img2Cb); i_Cr = psnr(img1Cr, img2Cr); %unificazione dei risultati I= (i_Y+i_Cb+i_Cr)/3; return A.4. “psnr.m” function i = psnr (imgA,imgB) %lettura dati di infresso img1=double(imgA); img2=double(imgB); [M N] = size(img1); %calcolo iterativo del mean square error MSE=0.0; for a=1:1:M for b=1:1:N MSE= MSE+(img1(a,b)-img2(a,b)).^2; end end ~ 78 ~ Appendice %calcolo del psnr MSE= MSE./(M*N); arg=255^2/MSE; i= 10*log10(arg); return A.5. “psnr2mos2_ycbcr.m” function I = psnr2mos2_ycbcr(imgA,imgB) %lettura dati di ingresso img1= imread(imgA); img2= imread(imgB); %cambio del piano colore img1Y = .2989*img1(:,:,1)+.5870*img1(:,:,2)+.1140*img1(:,:,3); img2Y = .2989*img2(:,:,1)+.5870*img2(:,:,2)+.1140*img2(:,:,3); img1Cb = -.1687*img1(:,:,1)-.3310*img1(:,:,2)+.5000*img1(:,:,3); img2Cb = -.1687*img2(:,:,1)-.3310*img2(:,:,2)+.5000*img2(:,:,3); img1Cr = .5000*img1(:,:,1)-.4190*img1(:,:,2)-.0810*img1(:,:,3); img2Cr = .5000*img2(:,:,1)-.4190*img2(:,:,2)-.0810*img2(:,:,3); %chiamata della funzione psnr.m i_Y = psnr(img1Y,img2Y); i_Cb = psnr(img1Cb, img2Cb); i_Cr = psnr(img1Cr, img2Cr); Idb= (i_Y+i_Cb+i_Cr)/3; % conversione da psnr a scala mos if Idb<20 I=1; return ~ 79 ~ Matteo Zagatti elseif (20<=Idb && Idb<25) I=2; return elseif (25<=Idb && Idb<31) I=3; return elseif (31<=Idb && Idb<37) I=4; return else I=5; end return A.6. “motion_estimation_analysis.m” %settaggio dei parametri di ricerca mbSize = 16; p = 7; %preparazione variabili di ritorno ... motionVect1= zeros(2,1620,600); ... %ricerca dei motion vector fra frames adiacenti for i = 1:1:600 imgIFile = strcat(‘C:\video1-’,num2str(i),’.jpg’); imgPFile = strcat(‘C:\video1-’,num2str(i+1),’.jpg’); imgI = double(imread(imgIFile)); imgP = double(imread(imgPFile)); ~ 80 ~ Appendice %utilizzo del solo piano colore Y imgIY = .2989*imgI(:,:,1)+.5870*imgI(:,:,2)+.1140*imgI(:,:,3); imgPY = .2989*imgP(:,:,1)+.5870*imgP(:,:,2)+.1140*imgP(:,:,3); %invocazione del metodo di ricerca ARPS �������������������������������������������������������������� [motionVect1s(:,:,i), computations] = motionEstARPS(imgPY,imgI Y,mbSize,p); end ... %ripetizione per tutte le sequenze da analizzare A.7. “motionestARPS.m” % Computes motion vectors using Adaptive Rood Pattern Search method % Based on the paper by Yao Nie, and Kai-Kuang Ma % IEEE Trans. on Image Processing % Volume 11 Number 12, December 2002 : Pages 1442:1448 % Input % imgP : The image for which we want to find motion vectors % imgI : The reference image % mbSize : Size of the macroblock % p : Search parameter (read literature to find what this means) % Ouput % motionVect : the motion vectors for each integral macroblock in imgP % ARPScomputations: The average number of points searched for a macroblock % Written by Aroh Barjatya ~ 81 ~ Matteo Zagatti function [motionVect, ARPScomputations] = motionEstARPS(imgP, imgI, mbSize, p) [row col] = size(imgI); vectors = zeros(2,row*col/mbSize^2); costs = ones(1, 6) * 65537; % The index points for Small Diamond search pattern SDSP(1,:) = [ 0 -1]; SDSP(2,:) = [-1 0]; SDSP(3,:) = [ 0 0]; SDSP(4,:) = [ 1 0]; SDSP(5,:) = [ 0 1]; % We will be storing the positions of points where the checking has been % already done in a matrix that is initialised to zero. As one point is % checked, we set the corresponding element in the matrix to one. checkMatrix = zeros(2*p+1,2*p+1); computations = 0; % we start off from the top left of the image % we will walk in steps of mbSize % mbCount will keep track of how many blocks we have evaluated mbCount = 1; for i = 1 : mbSize : row-mbSize+1 for j = 1 : mbSize : col-mbSize+1 % the Adapive Rood Pattern search starts % we are scanning in raster order x = j; y = i; costs(3) = costFuncMAD(imgP(i:i+mbSize-1,j:j+mbSize-1), imgI(i:i+mbSize-1,j:j+mbSize-1),mbSize); ~ 82 ~ Appendice checkMatrix(p+1,p+1) = 1; computations = computations + 1; % if we are in the left most column then we have to make sure that % we just do the LDSP with stepSize = 2 if (j-1 < 1) stepSize = 2; maxIndex = 5; else stepSize = max(abs(vectors(1,mbCount-1)), abs(vectors(2,mbCount-1))); % now we have to make sure that if the point due to motion % vector is one of the LDSP points then we dont calculate it % again if ( (abs(vectors(1,mbCount-1)) == stepSize && vectors(2,mbCount-1) == 0) || (abs(vectors(2,mbCount-1)) == stepSize && vectors(1,mbCount-1) == 0)) maxIndex = 5; % we just have to check at the rood pattern 5 points else maxIndex = 6; % we have to check 6 points LDSP(6,:) = [ vectors(2, mbCount-1) vectors(1, mbCount-1)]; end end % The index points for first and only Large Diamond search pattern LDSP(1,:) = [ 0 -stepSize]; LDSP(2,:) = [-stepSize 0]; LDSP(3,:) = [ 0 0]; �������������������������� LDSP(4,:) = [stepSize 0]; LDSP(5,:) = [ 0 stepSize]; ~ 83 ~ Matteo Zagatti % do the LDSP for k = 1:maxIndex refBlkVer = y + LDSP(k,2); % row/Vert co-ordinate for ref block refBlkHor = x + LDSP(k,1); % col/Horizontal co-ordinate if ( refBlkVer < 1 || refBlkVer+mbSize-1 > row || refBlkHor < 1 || refBlkHor+mbSize-1 > col) continue; % outside image boundary end if (k == 3 || stepSize == 0) continue; % center point already calculated end costs(k) = costFuncMAD(imgP(i:i+mbSize-1,j:j+mbSize-1), imgI(refBlkVer:refBlkVer+mbSize-1, refBlkHor:refBlkHor+mbSize-1), mbSize); computations = computations + 1; checkMatrix(LDSP(k,2) + p+1, LDSP(k,1) + p+1) = 1; end [cost, point] = min(costs); % The doneFlag is set to 1 when the minimum % is at the center of the diamond x = x + LDSP(point, 1); y = y + LDSP(point, 2); costs = ones(1,5) * 65537; costs(3) = cost; doneFlag = 0; while (doneFlag == 0) for k = 1:5 refBlkVer = y + SDSP(k,2); ~ 84 ~ Appendice % row/Vert co-ordinate for ref block refBlkHor = x + SDSP(k,1); % col/Horizontal co-ordinate if ( refBlkVer < 1 || refBlkVer+mbSize-1 > row || refBlkHor < 1 || refBlkHor+mbSize-1 > col) continue; end if (k == 3) continue elseif (refBlkHor < j-p || refBlkHor > j+p || refBlkVer < i-p || refBlkVer > i+p) continue; elseif (checkMatrix(y-i+SDSP(k,2)+p+1 , x-j+SDSP(k,1)+p+1) == 1) continue end costs(k) = costFuncMAD(imgP(i:i+mbSize-1,j: j+mbSize-1), imgI(refBlkVer:refBlkVer+mbSize-1, refBlkHor: refBlkHor+mbSize-1), mbSize); checkMatrix(y-i+SDSP(k,2)+p+1, x-j+SDSP(k,1)+p+1) = 1; computations = computations + 1; end [cost, point] = min(costs); if (point == 3) doneFlag = 1; else x = x + SDSP(point, 1); y = y + SDSP(point, 2); costs = ones(1,5) * 65537; ~ 85 ~ Matteo Zagatti costs(3) = cost; end end % while loop ends here vectors(1,mbCount) = y - i; % row co-ordinate for the vector vectors(2,mbCount) = x - j; % col co-ordinate for the vector mbCount = mbCount + 1; costs = ones(1,6) * 65537; checkMatrix = zeros(2*p+1,2*p+1); end end motionVect = vectors; ARPScomputations = computations/(mbCount-1) ; A.8. “motion_index.m” function v = motion_index (a,b) size_a= size(a); %calcolo delle differenze fra motion vector di due sequenze for i=1:1:size_a(3) diff1=0.0; diff2=0.0; for j=1:1:size_a(2) diff1=diff1+abs(a(1,j,i)-b(1,j,i)); diff2=diff2+abs(a(2,j,i)-b(2,j,i)); end v(i)= 1-((sqrt(diff1^2+diff2^2))/(size_a(2)*14*sqrt(2))); end ~ 86 ~ Bibliografia • “Handbook of imag e & video processing” di Jerry D. Gibson ed. Al Bovik, 2000 • “Multimedia image and video processing” di Ling Guan, Sun-Yuan Kung, Jan Larsen ed. CRC Press, 2001 • “Handbook of image quality” di Brian W. Keelan ed. Marcel Dekker Inc., 2002 • “Image quality assessment: from error visibility to structural similarity” di Zhow Wang, Alan C. Bovik, Hamid R. Sheikh and Eero P. Simoncelli ed. University of Texas at Austin, 2004 • “Digital video image quality and perceptual coding” di Zhou Wang, Alan C. Bovik and Hamid R. Sheikh ed. Marcel Dekker Inc., 2005 • “Video quality vision models and metrics” di Stefan Winkler ed. Wiley, 2005 • “A structural similarity metric for video based on motion models” di K. Seshadrinathan and Alan C. Bovik ed. University of Texas at Austin, 2006 ~ 87 ~