I
RINGRAZIAMENTI
Ringrazio il Prof. Luca Fanucci, il Prof. Pierangelo Terreni e il Prof.Roberto Saletti per la disponibilità offerta durante questo lavoro di tesi e l’Ing. Sergio Saponara per la sua continua, incondizionata cura e meticolosa attenzione.
Un’attenzione speciale va ai miei familiari per aver creduto in me fino alla fine e ai miei più cari amici: Andrea, Denny, Matteo, Maddalena e in particolare Duccio per avermi sostenuto in ogni momento.
Sommario
II
Introduzione ... 1
Capitolo 1... 3
1.1 Introduzione ... 3
1.2 la codifica video e il suo ruolo nelle applicazioni multimediali ... 5
1.2.1 Standard internazionali ... 5
1.2.2 Principi di compressione di immagini ... 5
1.2.2.1 codifica di immagini statiche... 6
1.2.2.2 codifica di immagini in movimento... 8
1.2.3 Misure di distorsione ... 10
1.3 Storia degli standard precedenti... 11
1.4 Descrizione dello standard H.264/AVC ... 13
1.4.1 Network Abstraction Layer ... 13
1.4.2 Video coding Layer ... 14
1.4.3 Suddivisione dell’immagine in macroblocchi ... 16
1.4.4 Predizione di un intra-frame ... 16
1.4.5 Compensazione e stima del moto ... 17
1.5 Metodologia di valutazione di complessità e prestazioni ... 20
1.6 Analisi tool-by-tool del codice JM2.1 ... 22
1.7 Descrizione della stima del moto Full Search ... 23
Capitolo 2... 26
2.1 Introduzione ... 26
2.2 Ambiente di test ... 27
2.2.1 Sequenze di test ... 27
2.2.2 Configurazioni di test... 28
2.3 Confronto tra la versione 2.1 e la versione 6.1d ... 29
2.3.1 Analisi con MOTHER&DAUGHTER ... 29
2.3.2 Analisi Con FOREMAN QCIF... 31
2.3.3 Analisi con FOREMAN CIF ... 33
2.3.4 Analisi Con STEFAN CIF... 35
2.3.5 Conclusioni ... 36
2.4 Confronto tre la versione 6.1d e la AHM20 ... 37
2.4.1 AHM20: evoluzione della 6.1d... 37
2.4.2 Analisi Con MOTHER&DAUGHTER ... 39
2.4.3 Analisi Con FOREMAN QCIF... 41
2.4.4 Analisi Con FOREMAN CIF ... 43
2.4.5 Analisi Con STEFAN CIF... 45
2.4.6 Conclusioni ... 46
2.5 Analisi della versione AHM20 disattivando il rate control ... 47
2.5.1 Motivazione dell’analisi ... 47
2.5.2 Analisi Con MOTHER&DAUGHTER ... 47
2.5.3 Analisi Con FOREMAN QCIF... 49
2.5.4 Analisi Con FOREMAN CIF ... 51
2.5.5 Analisi Con STEFAN CIF... 53
2.5.6 Conclusioni ... 55
2.6 Peso della stima di moto all’interno dell’encoder ... 55
Capitolo 3... 58
3.1 Ambiente di test ... 58
3.2 Algoritmi di stima del moto a bassa complessità ... 59
3.3 Stima del moto e ricerca adattiva... 61
3.3.1 Approccio Window Follower ... 61
III
3.3.2 Algoritmo JVT-C065... 62
3.3.3 Algoritmo Enhanced Window Follower per H.263... 64
3.4 Algoritmo enhanced window follower ... 67
3.4.1 Struttura del codice sorgente... 67
3.4.2 Studio del comportamento della SAD al variare di QP ... 68
3.4.3 Descrizione dell’algoritmo proposto ... 74
3.5 Confronto dell’ algoritmo proposto con la FS e JVT-C065 ... 77
3.5.1 Risultati di simulazioni relative ai tre algoritmi ... 77
3.5.1.1 Considerazioni sulle prestazioni ... 77
3.5.1.2 Considerazione sui tempi di codifica... 82
3.5.1.3 Conclusioni ... 91
3.5.2 Comportamento rispetto all’introduzione di tools ... 91
3.5.2.1 Analisi di Mother&Daughter QCIF... 92
3.5.2.2 Analisi di Mobile&Calendar SIF... 94
3.5.2.3 Analisi con Stefan CIF... 96
3.5.2.4 Conclusioni ... 98
3.5.3 Esempi di codifica fissando il bit-rate ... 98
3.6 Considerazioni sulla architettura hardware... 105
3.6.1 Risultati di simulazione dell’algoritmo con search area fissa... 106
3.6.1.1 Analisi con Mother&Daughter ... 107
3.6.1.2 Analisi con Foreman QCIF... 108
3.6.1.3 Analisi con Foreman CIF... 109
3.6.1.4 Analisi con Stefan CIF... 110
3.6.1.5 Analisi con Mobile&Calendar SIF ... 111
3.6.1.6 Analisi con Mobile&Calendar CCIR... 112
3.6.1.7 Conclusioni ... 113
3.7 Stima del moto multiframe ... 114
3.7.1 Analisi di prestazioni utilizzando il controllo sui frames di riferimento 115 3.7.1.1 Analisi con Mother&Daughter QCIF ... 115
3.7.1.2 Analisi con Mobile &Calendar CIF... 117
3.7.1.3 Analisi con Stefan CIF... 119
3.7.1.4 Conclusioni ... 121
3.8 Conclusioni ... 122
Capitolo 4... 123
4.1 Descrizione dello schema generale... 123
4.2 Descrizione di N_frame ... 125
4.3 Descrizione di determine_range... 127
4.3.1 Descrizione di MV_P generator ... 130
4.3.2 Descrizione di max_mv generator ... 131
4.3.3 Descrizione di new_range generator... 132
4.3.4 Descrizione di thresholds... 134
4.4 Descrizione di mv_temp... 135
4.5 Descrizione di control_unit ... 136
4.6 Esempi di simulazione ... 138
4.7 Sintesi del circuito ... 142
4.7.1 Risultati riguardanti occupazione di area... 143
4.7.2 Risultati riguardanti tempo di propagazione dei dati... 145
4.7.3 Dipendenza dei risultati dalle specifiche di sintesi... 146
4.8 Considerazioni sulla potenza ... 149
Sommario
IV Capitolo 5 Conclusioni ... 151
V
Figura 1.1: schema di base di un encoder per immagini statiche ... 6
Figura 1.2: scansione a zig-zag della matrice dei coefficienti... 7
Figura 1.3: schema di base di un decodificatore per immagini statiche ... 8
Figura 1.4: schema di base di un encoder ibrido ... 9
Figura 1.5: esempio di predizioni I, P e B di una sequenza video... 10
Figura 1.6: struttura di base di un VCL per H.264/AVC per un macroblocco... 15
Figura 1.7: segmentazione di un macroblocco per la compensazione del moto... 17
Figura 1.8: compensazione di moto su più frame... 19
Figura 1.9: co-valutazione di prestazioni algoritmiche e di complessità per un effettivo costo di un sistema... 21
Figura 1.10: algoritmo di Full search... 24
Figura 2.1: tempo di codifica per i vari casi (MD test)... 29
Figura 2.2: rapporto segnale/rumore per i vari casi (MD test) ... 30
Figura 2.3: bit-rate per i vari casi (MD test) ... 30
Figura 2.4: tempo di codifica per i vari casi (FOR1 test) ... 31
Figura 2.5: rapporto segnale/rumore per i vari casi (FOR1 test) ... 32
Figura 2.6: bit-rate per i vari casi (FOR1 test)... 32
Figura 2.7: tempo di codifica per i vari casi (FOR2 test) ... 33
Figura 2.8: rapporto segnale/rumore per i vari casi (FOR2 test) ... 34
Figura 2.9: bit-rate per i vari casi (FOR2 test)... 34
Figura 2.10: tempo di codifica per i vari casi (SF test)... 35
Figura 2.11: rapporto segnale/rumore per i vari casi (SF test) ... 36
Figura 2.12: bit-rate per i vari casi (SF test) ... 36
Figura 2.13: locazione dei blocchi di riferimento per la decisione dell’area di ricerca.. 37
Figura 2.14: tempo di codifica per i vari casi (MD test)... 40
Figura 2.15: rapporto segnale/rumore per i vari casi (MD test) ... 40
Figura 2.16: bit-rate per i vari casi (MD test) ... 41
Figura 2.17: tempo di codifica per i vari casi (FOR1 test) ... 41
Figura 2.18: rapporto segnale/rumore per i vari casi (FOR1 test) ... 42
Figura 2.19: bit-rate per i vari casi (FOR1 test)... 42
Figura 2.20: tempo di codifica per i vari casi (FOR2 test) ... 43
Figura 2.21: rapporto segnale/rumore per i vari casi (FOR2 test) ... 44
Figura 2.22: bit-rate per i vari casi (FOR2 test)... 44
Figura 2.23: tempo di codifica per i vari casi (SF test)... 45
Figura 2.24: rapporto segnale/rumore per i vari casi (SF test) ... 46
Figura 2.25: bit-rate per i vari casi (SF test) ... 46
Figura 2.26: tempo di codifica per i vari casi (MD test)... 48
Figura 2.27: rapporto segnale/rumore per i vari casi (MD test) ... 48
Figura 2.28: bit-rate per i vari casi (MD test) ... 49
Figura 2.29: tempo di codifica per i vari casi (FOR1 test) ... 49
Figura 2.30: rapporto segnale/rumore per i vari casi (FOR1 test) ... 50
Figura 2.31: bit-rate per i vari casi (FOR1 test)... 50
Figura 2.32: tempo di codifica per i vari casi (FOR2 test) ... 51
Figura 2.33: rapporto segnale/rumore per i vari casi (FOR2 test) ... 52
Figura 2.34: bit-rate per i vari casi (FOR2 test)... 52
Figura 2.35: tempo di codifica per i vari casi (SF test)... 53
Figura 2.36: rapporto segnale/rumore per i vari casi (SF test) ... 54
Figura 2.37: bit-rate per i vari casi (SF test) ... 54
Figura 2.38: tempi di codifica:... 57
Figura 3.1: locazione dei blocchi di riferimento per la decisione dell’area di ricerca.... 62
Indice delle figure
VI
Figura 3.2: andamento della SADmin per MD con QP =24... 69
Figura 3.3: andamento della SADmin per MC con QP =24... 70
Figura 3.4: andamento della SADmin per SF con QP =24... 70
Figura 3.5: andamento della SADmin al variare del QP per MC1 ... 71
Figura 3.6: andamento della SAD al variare del QP per SF. ... 72
Figura 3.7:Suddivisione in zone del dominio di analisi per determinare il range di ricerca... 74
Figura 3.8: locazione dei blocchi di riferimento per la decisione dell’area di ricerca.... 75
Figura 3.9: andamento del bit-rate al variare di QP per MD ... 78
Figura 3.10: andamento del PSNR al variare di QP per MD... 79
Figura 3.11: andamento del bit-rate al variare di QP per FOR1... 79
Figura 3.12: andamento del PSNR al variare di QP per FOR1 ... 80
Figura 3.13: andamento del bit-rate al variare di QP per MC1 ... 80
Figura 3.14: andamento del PSNR al variare di QP per MC1... 81
Figura 3.15: andamento del bit-rate al variare di QP per SF ... 81
Figura 3.16: andamento del PSNR al variare di QP per SF... 82
Figura 3.17: andamento del tempo di codifica al variare di QP per MD... 83
Figura 3.18: tempi di codifica per MD ... 83
Figura 3.19: bit rate per MD (QP =28) ... 84
Figura 3.20: tempo di codifica per FOR1 ... 85
Figura 3.21: bit-rate per FOR1 (QP =28) ... 85
Figura 3.22: tempo di codifica per MC1... 86
Figura 3.23: bit-rate per MC1 (QP =28) ... 87
Figura 3.24: tempo di codifica per SF ... 88
Figura 3.25: bit-rate per SF (QP =28)... 88
Figura 3.26: tempo di codifica per MC2... 89
Figura 3.27: bit rate per MC2 (QP =28) ... 90
Figura 3.28: tempo di codifica per MD ... 92
Figura 3.29: bit-rate per MD... 93
Figura 3.30: PSNR per MD ... 93
Figura 3.31: tempo di codifica per MC1... 94
Figura 3.32: bit-rate per MC1 ... 95
Figura 3.33: PSNR per MC1... 95
Figura 3.34: tempo di codifica per SF ... 96
Figura 3.35: bit-rate per SF... 97
Figura 3.36: PSNR per SF ... 97
Figura 3.37: tempo di codifica a 56 Kb/s... 99
Figura 3.38: PSNR a 56 Kb/s... 99
Figura 3.39: tempo di codifica a 256 Kb/s... 100
Figura 3.40: PSNR a 256 Kb/s... 100
Figura 3.41: tempo di codifica per 512 Kb/s ... 101
Figura 3.42: PSNR per 512 Kb/s ... 101
Figura 3.43: tempo di codifica a 1536 Kb/ ... 102
Figura 3.44: PSNR a 1536 Kb/s... 102
Figura 3.45: tempo di codifica per 5012 Kb/s ... 103
Figura 3.46: PSNR per 5012 Kb/s ... 103
Figura 3.47: rispettivamente: frame corrente e frame di riferimento ... 105
Figura 3.48: tempo di codifica per MD ... 107
Figura 3.49: bit-rate per MD... 107
Figura 3.50: tempo di codifica per FOR1 ... 108
VII
Figura 3.51: bit-rate per FOR1 ... 108
Figura 3.52: tempo di codifica per FOR2 ... 109
Figura 3.53: bit-rate per FOR2 ... 109
Figura 3.54: tempo di codifica per SF ... 110
Figura 3.55: bit-rate per SF... 111
Figura 3.56: tempo di codifica per MC1... 111
Figura 3.57: bit-rate per MC2 ... 112
Figura 3.58: tempo di codifica per MC2... 112
Figura 3.59: bit-rate per MC2 ... 113
Figura 3.60: tempo di codifica per MD con l’algoritmo proposto per più frames ... 116
Figura 3.61: bit-rate per MD con l’algoritmo proposto per più frames... 117
Figura 3.62: PSNR per MD con l’algoritmo proposto per più frames ... 117
Figura 3.63: Tempo di codifica per MC1 con l’algoritmo proposto per più frames .... 118
Figura 3.64: Bit-rate per MC1 con l’algoritmo proposto per più frames ... 119
Figura 3.65: PSNR per MC1 con l’algoritmo proposto per più frames... 119
Figura 3.66: tempi di codifica per SF con l’algoritmo proposto per più frames ... 120
Figura 3.67: bit-rate per SF con l’algoritmo proposto per più frames... 120
Figura 3.68: PSNR per SF con l’algoritmo proposto per più frames ... 121
Figura 4.1: schema generale ... 124
Figura 4.2: schema circuitale di N_frame... 126
Figura 4.3: schema circuitale generale di determine_range. ... 129
Figura 4.4: schema circuitale di MV_P generator ... 131
Figura 4.5: schema circuitale di max_mv generator... 132
Figura 4.6: schema circuitale di new_range generator ... 133
Figura 4.7: schema circuitale di thresholds ... 134
Figura 4.8: schema circuitale di mv_temp... 136
Figura 4.9: schema circuitale di control_unit ... 137
Figura 4.10: calcolo del range di ricerca per il primo macroblocco di un frame... 139
Figura 4.11: calcolo del range di ricerca per il secondo macroblocco di un frame ... 140
Figura 4.12: calcolo del range di ricerca per il terzo macroblocco di un frame ... 140
Figura 4.13: determinazione del massimo vettore di moto di un macroblocco... 142
Figura 4.14: occupazione di area per vari formati ... 143
Figura 4.15: occupazione di area per vari formati ... 144
Figura 4.16: percentuali di occupazione di area ... 145
Figura 4.17: tempo di propagazione dei dati ... 146
Figura 4.18: occupazione di area per vari formati ... 147
Figura 4.19: occupazione di area per vari formati ... 147
Figura 4.20: percentuali di occupazione di area ... 148
Figura 4.21: tempo di propagazione dei dati ... 149