Sei sulla pagina 1di 50

POLITECNICO DI BARI

Dipartimento di Elettrotecnica ed Elettronica

Corso di Laurea Specialistica in Ingegneria Informatica

Sistemi per la codifica e la trasmissione di segnali multimediali

Relazione

“Implementazione e studio comparativo di algoritmi per il


texture coding in MPEG-4”

Docente: Studente:
Prof. Ing. Luigi Alfredo Grieco Andrea Martelli
INDICE

I. INTRODUZIONE 5

II. CODIFICA AD OGGETTI IN MPEG-4 5

III. DISCRETE COSINE TRANSFORM (DCT) E CODIFICA INTRA-FRAME 8

PROPRIETÀ DELLA DCT 10


1. Decorrelazione 10
2. Compattazione dell’energia 10
3. Separabilità 11
4. Simmetria 11
5. Ortogonalità 12
LA DCT NELLA CODIFICA DI OGGETTI DI SAGOMA ARBITRARIA 12

IV. TECNICHE DI TEXTURE CODING 13

FIGURE DI MERITO 13
1. PSNR 14
2. Lunghezza della codifica Run-Level 14
TECNICHE DI PADDING 15
• REPETITIVE PADDING 15
• LOW-PASS EXTRAPOLATION 17
• LINEAR EXTRAPOLATION PADDING 20
 BOUNDARY BLOCK MERGING (BBM) 22
TRASFORMATE PER OGGETTI DI SAGOMA ARBITRARIA 26
 SHAPE-ADAPTIVE DCT (SA-DCT) 26
 LIMITI DELLA SA-DCT 29
 PSEUDO-ORTHONORMAL SA-DCT (PO-SA-DCT) 30
 ΔDC-SA-DCT (DC SEPARATION & ΔDC CORRECTION) 31
 BOUNDARY PIXEL SCANNING – BPS-SA-DCT 33
 SA-DCT DIREZIONALE (DSA-DCT) 36
 BOUNDARY BLOCKS GROUPING & MERGING (BBGM-SA-DCT) 37
METODI IBRIDI 40
 EXTENSION INTERPOLATION (EI-DCT) 40
 NEWPAD TECHNIQUE 43

V. CONCLUSIONI 47

SVILUPPI FUTURI 47

BIBLIOGRAFIA 48

2
Indice delle figure
Figura 1: organizzazione gerarchica del bitstream 6
Figura 2: esempio di codifica ad oggetti: immagine completa, oggetti ‘aereo’ e ‘mongolfiera’ e loro maschere binarie 6
Figura 3: struttura di un VOP di forma arbitraria 7
Figura 4: schema di codifica per i frame I (vedi JPEG) 8
Figura 5: funzioni base per una DCT ad 8 punti 9
Figura 6: autocorrelazione normalizzata di 2 immagini prima e dopo la DCT 10
Figura 7: proprietà di compattazione dell’energia a confronto per DFT e DCT 10
Figura 8: sinistra: immagine originale; destra: immagine filtrata con 10 coeffs. DCT 11
Figura 9: DCT separata ed effettuata in due passi 11
Figura 10: blocco 8x8 e sua maschera binaria 12
Figura 11: valori del blocco e della sua DCT 12
Figura 12: distribuzione dei coefficienti DCT 13
Figura 13: immagini campione 'bird', 'house', 'lenna', 'soccer' 14
Figura 14: passi del repetitive padding 15
Figura 15: blocco prima e dopo l’applicazione di Repetitive Padding 15
Figura 16: DCT prima e dopo il Repetitive Padding 16
Figura 17: blocchi e loro DCT prima e dopo la LPE 18
Figura 20: DCT prima e dopo il LEP 21
Figura 18: casistica in LEP 21
Figura 19: esempio di regressione lineare 21
Figura 21: codifica e decodifica nello schema BBM 22
Figura 22: (a) sottoblocco di luminanza prima della BBM, (b) sottoblocco dopo la BBM 23
Figura 23: tipi di merging 23
Figura 24: dettaglio di DCT classica e DCT dopo BBM 23
Figura 25: distribuzione dei coefficienti DCT per (a) DCT classica, (b) Repetitive Padding, (c) Low-Pass Extrapolation, (d)
Linear Extrapolation Padding 25
Figura 26: passi dell'algoritmo SA-DCT 26
Figura 27: DCT e SA-DCT 27
Figura 28: segmento di DCT e SA-DCT 27
Figura 29: effetto di mean weighting defect 29
Figura 30: passi per la PO-SA-DCT 30
Figura 31: schema di codifica e decodifica della ΔDC-SA-DCT 31
Figura 32: modalità di scanning BPS 34
Figura 34: esempio di edge prediction 36
Figura 33: chain codes delle 8 direzioni 36
Figura 35: tipi di raggruppamento 38
Figura 36: algoritmo di raggruppamento 38
Figura 37: codifica di blocchi raggruppati con BBGM 39
Figura 38: processo di extension interpolation. Valori  DCT  DCT paddata con 0  IDCT (nuovi valori della
riga/colonna) 41
Figura 39: passi dell’algoritmo NewPad 44
Figura 40: (a) SA-DCT, (b) ΔDC-SA-DCT, (c) DSA-DCT, (d) EI-DCT, (e) NewPad 46

3
Indice dei grafici

Grafico 1: andamento di PSNR e lunghezza della codifica RLE per le 4 immagini campione ‘bird’, ‘house’, ‘lenna’ e
‘soccer’ 17
Grafico 2: PSNR e RLE length per le immagini campione 20
Grafico 3: PSNR e RLE length per l’immagine campione ‘soccer’ con LEP 22
Grafico 4: PSNR e RLE length per le immagini campione con BBM 25
Grafico 5: PSNR e RLE length per immagini campione con SA-DCT 29
Grafico 6: PSNR e RLE per le immagini campione con ΔDC-SA-DCT 33
Grafico 7: PSNR e RLE length per immagini campione con BPS-SA-DCT 35
Grafico 8: PSNR e RLE length per immagini campione con BBGM 40
Grafico 9: PSNR e RLE length per immagini campione con EI 42
Grafico 10: PSNR e RLE length per immagini campione con NewPad 45

4
Implementazione e studio comparativo di
algoritmi per il texture coding in MPEG-4
Corso di Sistemi per la codifica e la trasmissione di Segnali Multimediali
Docente: Prof. Ing. Luigi Alfredo Grieco
A.A.: 2008/2009

Andrea Martelli

I. Introduzione

I video digitali stanno rapidamente sostituendo i video analogici in pressochè tutte le applicazioni esistenti.
Uno degli esempi più importanti è l’introduzione della televisione digitale, che sta conoscendo una larga
diffusione negli ultimi anni. Un altro esempio di questa progressiva sostituzione è l’obsolescenza delle
videocassette analogiche rispetto ai moderni supporti DVD, HD-DVD e BlueRay. Si potrebbero inoltre citare
tutta una serie di applicazioni e campi di utilizzo resi possibili non solo dalla diffusione pervasiva di
dispositivi come smartphone, palmari e console portatili, ma anche dalle sempre crescenti capacità di
calcolo di questi ultimi. MPEG-2 è stata una delle tecnologie chiave nel favorire questa transizione, e ha
portato con se indubbi vantaggi dal punto di vista della qualità e dell’affidabilità, ma non ha introdotto
nessun valore aggiunto per l’utente rispetto al semplice contenuto video. Dal momento che i contenuti
sono trasportati nel dominio digitale, però, non vi sono limiti alle manipolazioni e agli arricchimenti che
questi possono subire. Lo standard MPEG-4 cerca di sfruttare proprio quest’idea, grazie a tecniche di
codifica migliorate e al fondamentale quanto rivoluzionario concetto di codifica “orientata agli oggetti”.
Proprio questo concetto gioca un ruolo chiave in aspetti cruciali quali la scalabilità, le prestazioni e
l’interattività, tutti punti di forza del nuovo standard.

Una tecnica che cessa di considerare il flusso video come una semplice sequenza di immagini
“piatte”, ma come unione e interazione di oggetti, pone tuttavia una serie di problematiche nuove. In
questo lavoro ci proponiamo di analizzare in particolare i problemi legati alla codifica di texture di sagoma
arbitraria, implementando e confrontando varie tecniche presenti in letteratura. Và tenuto conto del fatto
che oltre ai metodi proposti nello standard [1], ne sono stati studiati molti altri dei quali faremo una,
seppur non esaustiva, panoramica.

II. Codifica ad oggetti in MPEG-4

Il concetto centrale definito dallo standard MPEG-4 è quello di “oggetto audio-visivo”, che è alla base della
rappresentazione basata sugli oggetti, particolarmente adatta ad applicazioni interattive che richiedono

5
diretto accesso ai contenuti della scena. Una “scena” MPEG-4 è costituita da uno o più oggetti, ognuno dei
quali è caratterizzato da informazioni spaziali e temporali quali forma, spostamento, e ovviamente dalla
texture stessa. La suddivisione in oggetti, inoltre, implica un’organizzazione gerarchica del bitstream, come
mostrato dalla fig. 1:

Figura 1: organizzazione gerarchica del bitstream

L’elemento fondamentale è quindi il VOP (Video Object Plane), ovvero il frame di uno specifico oggetto.
Nell’esempio in figura, ad esempio, la mongolfiera e l’aereo rappresentano due oggetti in movimento su
uno sfondo fisso. Il paradigma introdotto da MPEG-4 consente quindi di avere un minore rate trasmissivo in
quanto solo gli oggetti devono essere codificati in modo continuo ed essere aggiunti allo sfondo.

Figura 2: esempio di codifica ad oggetti: immagine completa, oggetti ‘aereo’ e ‘mongolfiera’ e loro maschere binarie

6
Il singolo VOP quindi è costituito dalle tre componenti Y,U e V più l’informazione sulla forma. É
fondamentale quindi osservare che gli interi video e gli oggetti non sono trattati in modo “monolitico”, o
seguendo un approccio a blocchi tradizionale, ma possono possedere una forma arbitraria, che dev’essere
codificata oppurtunamente e sfruttata affinchè il processo di inserimento degli oggetti all’interno del video
sia trasparente all’utente soprattutto dal punto di vista della qualità.

Lo strumento più adatto a rappresentare le informazioni sulla forma sono le “alphamask”, che
possono essere binarie o a scala di grigi. Nel primo caso, che è anche quello considerato in questo studio, la
maschera è rappresentata da una matrice a valori binari della stessa dimensione della texture che indica
semplicemente se ciascun pixel fa parte dell’oggetto o meno. Generalizzando questa strategia, è possibile
utilizzare una maschera ad 8 bit che rappresenti anche il livello di trasparenza dei pixels, rendendo possibile
l’uso di oggetti semi-trasparenti o con bordi sfumati per ridurre l’effetto di aliasing.

É quindi evidente che le informazioni sulla forma vengono trasmesse parallelamente al flusso video,
ma rappresentano un overhead solitamente trascurabile (soprattutto nel caso di maschere binarie) in virtù
di efficenti tecniche di compressione lossless. Tipicamente le maschere binarie vengono suddivise in BAB
(Binary Alpha Blocks) di 16x16 pels (Fig. 3) ed ognuno è codificato con l’algoritmo “Context based
Arithmetic Encoding” (CAE). Inoltre, così come per le textures, è applicato un meccanismo di predizione e
compensazione del moto. Questi algoritmi, tuttavia, non rappresentano argomento d’interesse nell’ambito
di questo lavoro.

Figura 3: struttura di un VOP di forma arbitraria

Nonostante un VOP possa avere una forma arbitraria, per questioni di semplicità ed efficenza, esso sarà
racchiuso comunque da un rettangolo definito intelligentemente in modo da non contenere informazioni in
eccesso. A questo punto quest’oggetto di forma rettangolare è trattato secondo le tecniche classiche di
trasformazione (DCT), quantizzazione, codifica differenziale, zig-zag scanning, codifica Run-Level e codifica
entropica, applicate ai singoli blocchi.

Per studiare le tecniche di texture coding utilizzeremo come modello base di codifica quello delle immagini
fisse JPEG, in quanto è del tutto assimilabile alla codifica dei frame I in MPEG-4 (Fig. 4).

7
Figura 4: schema di codifica per i frame I (vedi JPEG)

Come è possibile notare in fig. 3, i blocchi dell’immagine si suddividono in 3 categorie: quelli esterni,
completamente trasparenti e che non verranno codificati, quelli interni, ossia completamente appartenenti
all’oggetto, e quelli di confine (“boundary sub-blocks”). La nostra attenzione sarà orientata al trattamento
di questi particolari blocchi, in cui soltanto alcuni pixel appartengono effettivamente all’immagine. I pixel
esterni infatti, saranno “mascherati” e comporteranno alcune problematiche in termini di rappresentazione
del blocco in frequenza.

III. Discrete Cosine Transform (DCT) e codifica Intra-frame

Per poter comprendere le problematiche che originano dalla codifica dei blocchi di confine di un VOP, è
necessaria un’introduzione teorica che chiarisca i principi della codifica intra-frame, ed in particolare
l’operazione di trasformata discreta di coseno.

La DCT [2] esprime una sequenza finita di valori come la somma di numero finito di funzioni coseno
oscillanti a diverse frequenze, ed è in realtà un caso particolare della trasformata di Fourier (dalla quale è
infatti derivabile matematicamente), ma che a differenza di quest’ultima utilizza soltanto numeri reali. La
DCT è infatti equivalente ad una DFT effettuata su una sequenza di lunghezza doppia, a valori reali e a
simmetria pari.

Esistono in realtà diverse varianti di DCT, e tutte condividono due proprietà fondamentali ai fini della
codifica:

• ad N valori reali nel dominio spaziale equivalgono N valori reali nel dominio trasformato;
• è un’operazione lossless;

La forma di DCT più utilizzata (DCT-II) è rappresentata dalla seguente espressione matematica:


1
 =    cos  +    = 0, … , − 1.
2


8
$ 1
"% &'(  = 0
 = *
# 2
"% &'(  ≠ 0
!

Mentre la trasformata inversa è definita da


1
 =    cos  +    = 0, … , − 1.
2


con gli stessi coefficienti sk. Risulta quindi chiaro che per k=0, X+ = 0, = - ∑
  , e rappresenta


quindi il valore medio della sequenza. Per questa ragione è identificato come termine DC, mentre tutti gli
altri sono detti termini AC. Si può notare dalla formula che una trasformata è data da una combinazione
lineare di “funzioni base” (Fig. 5) ortogonali tra loro e il cui prodotto scalare (effettuato punto per punto) è
quindi nullo.

Da ciò deriva anche che nessuna delle funzioni base è combinazione


lineare delle altre. Inoltre, i valori delle funzioni base non cambiano di
volta in volta ma sono dipendenti solo da k. Questo permette di
utilizzare funzioni precalcolate e ricondurre l’operazione di
trasformata a semplici calcoli vettoriali, riducendo di molto la
complessità algoritmica e il tempo di calcolo, specialmente in
architetture embedded.

La DCT può essere utilizzata anche per segnali bidimensionali (come


le immagini appunto), ed in questo caso la sua espressione è:

Figura 5: funzioni base per una DCT ad 8


punti

 
+23 + 1,4 +25 + 1,6
/,0 = / 0   1,2 cos  cos  7' 4, 6 = 0,1, … , − 1
2 2
1 2

 
+23 + 1,4 +25 + 1,6
1,2 = / 0   /,0 cos 8 9 cos 8 9 7' 3, 5 = 0,1, … , − 1
2 2
/ 0

Le funzioni base 2-D possono essere generate moltiplicando le funzioni base 1-D orientate orizzontalmente
con il set delle stesse funzioni orientate verticalmente.

9
Proprietà della DCT

1. Decorrelazione

Il vantaggio principale derivante dalla trasformazione di un’immagine è la rimozione delle ridondanze tra
pixel vicini. Questo porta all’ottenimento di coefficienti trasformati altamente incorrelati tra loro che
possono essere codificati efficacemente. In figura 6 vediamo le funzioni di autocorrelazione di due
immagini prima e dopo la DCT:
Autocorrelazione immagine orig. Autocorrelazione DCT

Immagine 1

Immagine 2

Figura 6: autocorrelazione normalizzata di 2 immagini prima e dopo la DCT (Esempio tratto da [2])

2. Compattazione dell’energia

L’efficacia di una trasformazione può essere valutata direttamente sulla


sua capacità di compattare i dati di input nel minor numero di
coefficienti possibile.

Questo permette al quantizzatore di trascurare termini di piccola


ampiezza introducendo una certa distorsione nell’immagine ricostruita.
La DCT presenta un’ottima capacità di compattazione dell’energia per
immagini altamente correlate, e offre inoltre prestazioni notevolmente
superiori rispetto alla DFT (Fig. 7), come viene mostrato nell’immagine
d’esempio.

Figura 7: proprietà di compattazione


dell’energia a confronto per DFT e DCT

10
Figura 8: sinistra: immagine originale; centro: immagine filtrata con 10 coeffs. DCT; destra: filtro utilizzato

Le immagini soprastanti (Fig. 8) raffigurano l’immagine originale e l’immagine filtrata con un filtro
passa-basso. In particolare sono stati utilizzati soltanto i 10 coefficienti DCT più significativi per ogni blocco
8x8 pixels. Si può riscontrare la buona capacità della DCT di compattare la maggior parte dell’informazione
(e quindi anche dell’energia dell’immagine) nelle frequenze più basse, e ciò è testimoniato dalla
relativamente scarsa distorsione che l’immagine ricostruita dopo il filtraggio subisce. L’occhio umano è per
natura più sensibile alle basse frequenze, che a quelle alte, e che quindi la distorsione di queste
componenti ha effetti relativamente poco rilevanti e può essere sfruttata in fase di quantizzazione per
ridurre il numero di bit necessari a rappresentare l’immagine. Pressochè tutte le tecniche di compressione
di dati multimediali si basano in effetti sugli effetti psico-visivi (o psico-acustici a seconda dei casi) e sulle
intrinseche limitazioni delle funzioni percettive umane.

3. Separabilità

L’equazione della DCT può anche essere espressa come:


 
+23 + 1,4 +25 + 1,6
/,0 = / 0  cos   1,2 cos  7' 4, 6 = 0,1, … , − 1
2 2
1 2

Questa proprietà, detta “separabilità”, offre il vantaggio di poter calcolare la DCT bidimensionale come
successione di operazioni monodimensionali (Fig. 9) sulle righe e sulle colonne di una matrice.

Figura 9: DCT separata ed effettuata in due passi

Questa possibilità, come vedremo, sarà massicciamente utilizzata dagli algoritmi che vedremo per la
codifica dei boundary blocks.

4. Simmetria

Osservando l’ultima equazione si nota che le operazioni lungo le 2 dimensioni sono funzionalmente

11
identiche, il che porta a dire che la trasformazione è simmetrica. Una trasformazione simmetrica e
separabile può essere espressa come

: = ;&;′

+25 + 1,3
=+3, 5, = >+5,  cos 
2
2

Dove f è la matrice NxN rappresentante l’immagine o il blocco. Questo implica che una matrice di
trasformazione può essere pre-calcolata e utilizzata per ridurre notevolmente il carico computazionale.

5. Ortogonalità

La trasformata inversa è & = ; :; ′, e dal momento che le funzioni base sono ortogonali, la matrice di
trasformazione inversa è uguale alla sua trasposta: ; = ;? . Questo riduce ulteriormente anche la
complessità nel pre-calcolo delle matrici di trasformazione.

La DCT nella codifica di oggetti di sagoma arbitraria

Come punto di partenza per i successivi sviluppi, mostriamo un blocco contenente un segmento di
immagine di forma arbitraria e la sua trasformata DCT (Fig. 10).

Figura 10: blocco 8x8 e sua maschera binaria

Quando si applica la DCT ad un blocco di forma irregolare, i pixel esterni, ovvero quelli non coperti dalla
maschera binaria, vengono posti a 0 in quanto non rappresentano alcun contenuto informativo. Inoltre, per
quanto riguarda la codifica video, questo torna utile nella codifica inter-frame per abbassare il rate
trasmissivo. Analizziamo quindi i valori del blocco originale e i valori assunti dal blocco trasformato:

Figura 11: valori del blocco e della sua DCT

12
Si possono notare fondamentalmente due fatti pricipali. Innanzitutto, ad un qualsiasi numero di pixel
effettivi appartenenti ad un blocco corrisponde in generale sempre un blocco trasformato con tutti e 64 i
coefficienti diversi da 0. E’ evidente che questo è innanzitutto uno spreco elevato di bit, e che può inoltre
comportare discreti errori di distorsione in seguito a quantizzazione. Sebbene l’occhio umano sia meno
sensibile alle alte frequenze, che quindi possono essere campionate con un passo meno fine risparmiando
bits, sarebbe opportuno cercare di ridurre le componenti ad alta frequenza per una migliore qualità
dell’immagine.

La figura a sinistra (Fig. 12) mostra la distribuzione (per altro tipica) dei
coefficienti DCT per il blocco precedente. I termini in alto a sinistra
rappresentano le frequenze più basse (DCT(0,0) è il termine DC) mentre
quelli in basso a destra le frequenze spaziali più alte. Sfruttando questa
proprietà è possibile scandire la matrice a zig-zag e successivamente
codificarla con tecnica Run-Level con EOB (End of Block) per ridurre al
minimo il numero di simboli necessari alla sua rappresentazione.

Dalle nozioni basilari di teoria dei segnali è immediato capire che


Figura 12: distribuzione dei coefficienti maggiori sono le discontinuità (ossia i bruschi cambiamenti di valore) tra
DCT i pixel di in un blocco, e più componenti in alta frequenza vengono
generate dalla trasformata.

L’obiettivo delle tecniche qui studiate sarà proprio la riduzione delle discontinuità e quindi dei coefficienti
ad alta frequenza, e la riduzione del numero totale di coefficienti DCT diversi da zero, attraverso operazioni
che avranno luogo, a seconda dei casi, nel dominio spaziale o nel dominio frequenziale.

IV. Tecniche di texture coding

Questo capitolo è il nucleo centrale del presente lavoro di approfondimento, e tratta delle principali
tecniche di texture coding, ovvero tecniche per la codifica di oggetti di forma arbitraria. Alcune di queste
vengono applicate esclusivamente al dominio spaziale, cercando di trovare il modo ottimale di “riempire” i
pixel esterni in ogni blocco con dei valori appropriati tali da minimizzare il contenuto frequenziale della
trasformata, e sono pertanto delle tecniche di padding; altre invece hanno luogo nel dominio frequenziale
e costituiscono variazioni implementative e particolari applicazioni della DCT, tutte in qualche modo
collegate alla più nota SA-DCT (Shape-Adaptive DCT); ve ne sono poi alcune “ibride”, in quanto sfruttano le
proprietà della DCT per ricavare un metodo di padding appropriato. Nei paragrafi successivi esploreremo
nel dettaglio gli algoritmi delle tre categorie.

Figure di merito

Prima di passare agli algoritmi veri e propri enunciamo i criteri utilizzati per valutarli e confrontarli
oggettivamente.

13
1. PSNR

Il PSNR (Peak Signal-to-Noise Ratio) è un indice della distorsione dell’immagine decompressa


rispetto a quella originale, e misura il rapporto tra la massima potenza possibile del segnale e la potenza del
rumore. Nel caso delle immagini, il termine al denominatore può essere calcolato come il Mean Squared
Error (scarto quadratico medio) tra l’immagine originale e quella ricostruita, che terrà essenzialmente conto
dell’errore di quantizzazione che, come abbiamo accennato, può essere correlato al contenuto in frequenza
della DCT.

255F
@A B = 10 log
GAH
M 
1
GAH =  J+3, 5, −  K +3, 5,LF
G∙
1 2

ipotizzando che il frame abbia dimensione MxN e che ogni pixel sia rappresentato da 8 bit (valore massimo
255).

2. Lunghezza della codifica Run-Level

La codifica Run-Level è utilizzata negli standard JPEG e nell’MPEG come passo successivo al zig-zag
scanning e rappresenta una stringa di valori come una sequenza di simboli costituito ognuno da una coppia
di valori: il primo rappresenta il numero di zeri che precedono un valore diverso da zero, ed il secondo è il
valore stesso. Ad esempio la stringa 100200003405 verrebbe codificata come
(0,1),(2,2),(4,3),(0,4),(1,5),(0,0), dove l’ultimo simbolo (0,0) indica la fine della sequenza ed è denominato
EOB (End of Block).

É evidente che questa codifica produce ottime prestazioni in sequenze contenenti un elevato
numero di zeri, condizione valida per i coefficienti DCT di ogni blocco quantizzati e scanditi a zig-zag. Per
misurare le prestazioni di una tecnica di texture coding quindi, occorre valutare anche il numero di simboli
RLE prodotti, ovvero indirettamente il Compression Ratio.

Tipicamente i simboli prodotti dalla codifica RLE vengono ulteriormente compressi codificandoli con
Huffman. Nonostante quest’algoritmo sia stato efficacemente realizzato nell’ambito di questo progetto,
non è stato utilizzato per la misura delle prestazioni in quanto sembrava più esplicativo il criterio del RLE.

Tutti gli algoritmi saranno testati sulle immagini campione (Fig. 13):

Figura 13: immagini campione 'bird', 'house', 'lenna', 'soccer'

14
Tecniche di padding

MPEG-4 utilizza due tecniche di padding per i blocchi limitrofi dei VOP. Si tratta della LPE (Low-Pass
Extrapolation) e del Repetitive Padding. La prima è utilizzata per la codifica intra nei frames I del video,
mentre la seconda, pur essendo adatta alla semplice codifica intra, è utilizzata per migliorare la stima del
moto durante la codifica inter. Per valutarne le prestazioni, gli algoritmi saranno applicati al caso di codifica
intra e soltanto alla componente di luminanza dell’immagine originale in scala di grigi.

• Repetitive Padding

É l’algoritmo di padding [1] più semplice in assoluto e, pertanto, richiede minime risorse di calcolo.
L’algoritmo procede prima per righe e poi per colonne, suddividendo quindi le operazioni in due fasi:
horizontal e vertical repetitive padding. Fondamentalmente, ogni pixel vuoto (che cioè nella maschera è
posto a 0) viene riempito con il valore del più vicino pixel appartenente all’oggetto, considerando una riga o
una colonna per volta. Se un pixel trasparente si trova tra due regioni non trasparenti, viene riempito col
valor medio dei pixel più vicini su entrambi i lati. Inoltre, al decoder, è necessario effetturare un de-padding
usando i dati della maschera. Per chiarire il tutto è sufficiente mostrare la seguente immagine:

Figura 14: passi del repetitive padding

Come si può vedere, la maschera per il passo di padding verticale tiene conto anche dei pixel riempiti
durante il padding orizzontale, in modo da non sovrascrivere valori precedentemente inseriti.

Consideriamo un blocco campione per analizzare gli esiti dell’algoritmo.

Figura 15: blocco prima e dopo l’applicazione di Repetitive Padding

15
Figura 16:: DCT prima e dopo il Repetitive Padding

É evidente un miglioramento delle prestazioni della DCT, con molta meno informazione contenutacontenut nelle
frequenze spaziali più elevate. Il contenuto informativo si sposta quindi verso l’angolo in alto a sinistra del
blocco, che sarà anche quello quantizzato più finemente. Diminiuscono
Diminiusc quindi le perdite che si potrebbero
avere in fase di quantizzazione
quantizzazion e dovrebbe anche aumentare la compressione, in quanto sarà maggiore il
numero di componenti che verranno soppresse dalla quantizzazione.
quantizzazione Per un’analisi più generale,
confrontiamo i risultati prodotti da questo algoritmo in termini di PSNR e lunghezza della
del codifica RLE per
alcune immagini campione,
campione, al variare del quantizer scale.
scale

dB Bird RLE coeffs. Bird


48
Thousands

37

46 32
27
44
22
PSNR

42
17
40 12

38 7
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR DCT PSNR Rep.Padd. RLE lengthDCT RLE length Rep.Padd.

dB
43 House RLE coeffs. House
Thousands

18
42
16
41
14
40 12
PSNR

39 10
38 8
37 6
36 4
35 2
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR LPE PSNR DCT PSNR SA-DCT RLE lengthDCT RLE length Rep.Padd.

16
dB Lenna RLE coeffs. Lenna
43

Thousands
58
42
41 48

40 38
PSNR

39
28
38
18
37
36 8
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR DCT PSNR Rep.Padd. RLE lengthDCT RLE length Rep.Padd.

dB Soccer RLE coeffs. Soccer

Thousands
46 25

44
20
42
15
PSNR

40
10
38

36 5
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR DCT PSNR Rep.Padd. RLE lengthDCT RLE length Rep.Padd.

Grafico 1:: andamento di PSNR e lunghezza della codifica RLE per le 4 immagini campione ‘bird’, ‘house’, ‘lenna’ e ‘soccer’

Come si può notare dai grafici, questa tecnica di padding fornisce un netto miglioramento della
compressione RLE, e un lieve miglioramento anche del PSNR (quindi minore distorsione) a fattori di
quantizzazione superiori a 4.

• Low-Pass
Pass Extrapolation

I requisiti
uisiti che un metodo di padding [3] deve possedere sono essenzialmente due:

• L’estensione del segnale dev’essere sufficientemente “morbida” (smooth), e quindi avere una
caratteristica passa-basso
passa
• Le discontinuità all’interfaccia tra dati originari e dati estrapolati
estrapolati per il padding devono essere per
quanto possibile evitate

Il padding ripetitivo appena visto soddisfa ottimamente il requisito sulle discontinuità, ma non garantisce
una morbidezza ottimale del bordo. Cerchiamo quindi una funzione che sia “morbida” “morbid nell’area
dell’estrapolazione (l’area da paddare) e che sul bordo sia funzione dei valori del segmento d’immagine.
Supponendo che l’area di forma arbitraria sia Ω,, una possibile soluzione è ottenuta risolvendo il problema
variazionale di Dirichlet, ossia trovando una funzione f che minimizzi il funzionale:

17
N|∇&|F RRS = NT&U F + &V F W RRS
Q Q

L’equazione di Eulero-Lagrange per questo problema è dato dall’equazione differenziale Laplaciana. La


formulazione precedente corrisponde a risolvere l’equazione differenziale

∆& = &UU + &VV = 0

ma dal momento che stiamo considerando dati bidimensionali discreti, l’equazione differenziale può essere
approssimata dalla seguente equazione alle differenze finite usando l’operatore laplaciano discreto:

∆&+3, 5, = &+3, 5 − 1, + &+3 − 1, 5, + &+3, 5 + 1, + &+3 + 1, 5, − 4&+3, 5,

Dal momento che una soluzione diretta di quest’equazione non è possibile in generale, rilassiamo il
problema e determiniamo la funzione cercata come segue:

1
& Z +3, 5, = &  +3, 5, + ∆&  +3, 5,
4

che corrisponde ad un’operazione di media applicata a tutti i pixel esterni alla shape in questione. Il
risultato è un algoritmo molto semplice che consiste essenzialmente in due passi:

• Calcolare la media dei pixel interni e applicarla a quelli esterni


• Applicare l’operazione di filtraggio a tutti i pixel esterni

La formula generale da applicare sarà in definitiva: &+3, 5, =


[+1,2,Z[+1,2,Z[+1,2Z,Z[+1Z,2,
\
. Nel caso in cui
il pixel si trovi sul bordo del blocco e non sia possibile utilizzare tutti e 4 i pixel vicini, il valore di questi viene
considerato pari a 0 e il denominatore viene ridotto di conseguenza.

Applicando il metodo allo stesso blocco campione dell’esempio precedente, abbiamo:

Figura 17: blocchi e loro DCT prima e dopo la LPE

18
Anche in questo caso, al decoder dobbiamo effettuare il de-padding.
de Il miglioramento frequenziale
frequenzi è
notevolissimo rispetto alla DCT classica ed è anche leggermente superiore a quello prodotto dal repetitive
padding, in quanto le componenti vicine al termine DC vanno a 0 più rapidamente. Analizziamo ora le
prestazioni sulle immagini campione:

dB. Bird RLE coeffs. Bird


48 37000
46

44 27000
PSNR

42
17000
40

38 7000
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
RLE lengthDCT RLE length Rep.Padd.
PSNR DCT PSNR Rep.Padd. PSNR LPE
RLE length LPE

dB
43 House RLE coeffs. House
42 17350
41
40 12350
PSNR

39
38 7350
37
36
2350
Qscale
35 Qscale 2 4 8 16 30
2 4 8 16 30 RLE lengthDCT RLE length Rep.Padd.
PSNR LPE PSNR DCT PSNR SA-DCT RLE length LPE

dB Lenna Lenna
58400
42
48400

40 38400
PSNR

28400
38
18400

8400
36 Qscale
Qscale 2 4 8 16 30
2 4 8 16 30
RLE lengthDCT RLE length Rep.Padd.
PSNR DCT PSNR Rep.Padd. PSNR LPE
RLE length LPE

19
dB Soccer Soccer
46 24550

44
19550
42
14550
PSNR

40
9550
38

36 4550
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
RLE lengthDCT RLE length Rep.Padd.
PSNR DCT PSNR Rep.Padd. PSNR LPE RLE length LPE

Grafico 2:: PSNR e RLE length per le immagini campione

Le prestazioni della LPE sono molto simili a quelle del repetitive scanning, e i due metodi anche in termini di
complessità sono equivalenti. Si può dire
dire che questo secondo metodo offra una compressione leggermente
superiore al RepPad e un PSNR lievemente migliore, ma la differenza è apprezzabile soprattutto in
immagini con sagoma complessa, e quindi con una frazione maggiore di boundary blocks.

• Linear Extrapolation
xtrapolation Padding

La tecnica LEP [4] è stata sviluppata da alcuni studiosi dell’università di Glamorgan nel Regno Unito e non è
ufficialmente inclusa nello standard MPEG-4.
MPEG Si propone come un miglioramento rispetto al padding
ripetitivo standard. Il maggiore
maggiore inconveniente di questa tecnica classica, infatti, risiede nel fatto che non fa
uso dell’andamento del valore dei pixel. Spesso, infatti, gli oggetti presentano un certo trend di variazione
ai bordi, e quest’algoritmo cerca di sfruttare proprio questa
ques caratteristica.

Replicare i valori di confine dei pixel interrompe bruscamente il naturale andamento in vicinanza del bordo,
e teoricamente comporta una peggiore interpretazione frequenziale. Gli studi di Edirisinghe e del suo team
si sono anche concentrati
concentrati sulle conseguenze che queste differenti codifiche hanno sulla predizione del
moto e della forma nelle sequenze video.

Il metodo proposto tenta di risolvere il problema appena esposto utilizzando un unico passo di
interpolazione, usato per predire il valore
valore dei pixel adiacenti a quelli limitrofi, detti “pixel proiettati”.

Per ogni riga di un blocco NxN, assumiamo che esistano n (1≤n≤N)) pixel consecutivi appartenenti al VO
(Visual Object), e che questi sono collegati ad un pixel proiettato sia a destra che
che a sinistra (in realtà questo

consiste nel costruire un’equazione lineare del tipo @ = ; _  + `, dove @ rappresenta il gruppo di pixel
passo viene ripetuto per ogni regione connessa all’interno di una riga). Il primo passo dell’algoritmo

adiacenti,
diacenti, e determinare i due coefficienti A e B, tali da minimizzare il mean squared error.

L’errore di predizione dell’interpolazione lineare sarà dato da H1 = @1 − +;1 + `,.. Affinchè questo sia
parzi ]^ ∑
1 H = 0 e
]
∑ H F  0,, ottenendo quindi:
F ]
]a 1
minimo, dobbiamo azzerare le due derivate parziali

20

b

b
J@1 − (;1 + `)LF  0 =R J@1 − +;1 + `,LF = 0
b` b;
1 1

che, semplificate, portano alla seguente espressione matriciale, dalla quale è possibile ricavare A e B:
 
e h e h
 1  @1
d g d g
d g ` d g
1
i j = 1
d 
g ; d g
d 1  1F g d 1 @1 g
c 1 1 f c 1 f

Quindi l’equazione @ = ; _  + ` può essere usata per calcolare i valori proiettati dei pixel.

Un caso elementare di applicazione di questo metodo è il pixel A,


ricavato dal trend di variazione dei due pixel alla sua destra.
Implementazioni specifiche invece sono richieste per alcuni casi
particolari:

• Se @ è connesso a due pixel proiettati (caso B), entrambi


saranno ricavati dalla stessa equazione lineare, ma variando l’indice
i.

Figura 18: casistica in LEP • Se un pixel proiettato è affiancato da 2 pixel interni su


entrambi i lati (caso C), il processo è attuato in entrambe le direzioni
ed è utilizzata la media dei due valori estrapolati.
• Se n=1 (caso D), il pixel proiettato ha lo stesso valore del pixel interno.

Quello di fianco è un’esempio di regressione ai minimi quadrati su un

i pixel dell’oggetto, @ = J157 132 151L, per i=4:6, mentre la linea


segmento di una riga di un blocco di immagine. La linea blu rappresenta

rossa rappresenta la retta interpolata con coefficienti A=-3 e


B=161,6667, e che proietta il pixel sinistro con valore 152,6667 e il pixel
destro con valore 140,6667.

Dopo aver effettuato la proiezione su tutte le righe, viene applicata la


Figura 19: esempio di regressione lineare tecnica di padding ripetitivo standard dell’MPEG-4, considerando i pixel
proiettati come facenti parte dell’oggetto e quindi modificando la
maschera. Il risultato della DCT sul blocco campione è mostrato nella figura seguente:

Figura 20: DCT prima e dopo il LEP

21
L’addolcimento dei contorni del blocco provoca, come visto nei casi precedenti, una migliore resa della
DCT, che concentra la maggior parte dell’energia nei primi coefficienti.
coe

Come si può notare dal grafico riportato in basso, in immagini con maggiore complessità della sagoma, il
Linear Extrapolation Padding porta a risultati leggermente migliori in termini di compressione ma talvolta
una lieve diminuzione del PSNR. Pur essendo del tutto confrontabile con le tecniche di padding viste fin’ora,
bisogna sottolineare che questa comporta un maggior impegno computazionale.

RLE coeffs.
dB Soccer Soccer
46 24550

44 19550

42
14550
PSNR

40
9550
38

4550
36 Qscale
Qscale 2 4 8 16 30
2 4 8 16 30 RLE length Rep.Padd. RLE length LPE
PSNR Rep.Padd. PSNR LPE PSNR LEP RLE length LEP

Grafico 3:: PSNR e RLE length per l’immagine campione ‘soccer’ con LEP

 Boundary Block Merging (BBM)

La tecnica BBM [5] cerca di utilizzare al meglio lo spazio vuoto che tipicamente viene lasciato in alcuni
boundary blocks. É applicata ai macroblocchi 16x16 di confine, ognuno dei quali consta di 4 sotto-blocchi
sotto
8x8. Per i sotto-blocchi
blocchi limitrofi, contenenti sia pixel opachi che trasparenti, viene applicata la normale
strategia di padding LPE vista in precedenza. Successivamente, si verifica la condizione di non
sovrapposizione tra un set predeterminato di coppie di sotto-blocchi.
sotto occhi. Questa condizione consiste nel
ruotare un blocco di 180° e controllare se vi sono pixel opachi che si sovrappongono a quelli dell’altro
blocco. Se ciò non accade, i due blocchi vengono fusi e la parte di sfondo residua è ottenuta mediando i
pixel corrispondenti
corrispondenti dei due blocchi. In questo modo
viene ridotto il numero di blocchi da codificare in DCT, e
l’elevata correlazione tra sotto-blocchi
sotto adiacenti
garantisce un basso numero di bit necessari per la
rappresentazione.

A sinistra sono presentati gli schemi di funzionamento di


encoder e decoder, dai quali si evince che al decoder
non è necessario trasmettere alcuna informazione
aggiuntiva sui blocchi che sono stati uniti, in quanto è
tutto ricostruibile avendo a disposizione
isposizione le informazioni
sulla forma,
forma, ovvero la maschera originaria.

Figura 21: codifica


ca e decodifica nello schema BBM

22
Figura 22: (a) sottoblocco di luminanza prima della BBM, (b) sottoblocco dopo la BBM

L’algoritmo procede in 3 passi distinti, applicando prima il merge in orizzontale, poi in verticale ed infine in
diagonale, secondo lo schema seguente:

Figura 23: tipi di merging

In fase di decodifica, le possibilità di merge vengono verificate utilizzando l’alphamask. Per effettuare lo
split dell’esempio in figura è sufficente copiare il blocco A nel B ruotandolo di 180° ed effettuare la
mascheratura di entrambi moltiplicandoli elemento per elemento per le alphamask binarie.

Confrontando questi dettagli di un’immagine trasformata con DCT


classica e con DCT preceduta da LPE e BBM, si nota facilmente che
i blocchi di confine contengono un numero inferiore di armoniche
e che alcuni blocchi sono “spariti”, essendo stati assorbiti da altri
Figura 24: dettaglio di DCT classica e DCT grazie alla tecnica appena spiegata. Di seguito vediamo le
dopo BBM misurazioni effettuate sulle immagini campione.

23
dB RLE coeffs.
Bird Bird
48 37000

46 32000

44 27000

22000
PSNR

42
17000
40
12000
38 7000
Qscale Qscale
1 2 3 4 5 2 4 8 16 30
PSNR LPE PSNR DCT PSNR BBM RLE length LPE RLE lengthDCT
RLE length BBM

dB
43 House RLE coeffs. House
18350
42
16350
41
14350
40
12350
39 10350
PSNR

38 8350
37 6350
36 4350
35 2350
Qscale
Qscale
2 4 8 16 30 2 4 8 16 30
PSNR LPE PSNR DCT PSNR SA-DCT RLE length LPE RLE lengthDCT
RLE length BBM

dB Lenna RLE coeffs. Lenna


43
58400
42
48400
41

40 38400
PSNR

39 28400
38
18400
37
8400
36 Qscale
Qscale 2 4 8 16 30
1 2 3 4 5 RLE length LPE RLE lengthDCT
PSNR LPE PSNR DCT PSNR BBM
RLE length BBM

24
dB Soccer RLE coeffs. Soccer
46 24550

44 19550

42
14550
PSNR

40
9550
38
4550
36 Qscale
1 2 3 4 5
1 2 3 4 5 Qscale RLE length LPE RLE lengthDCT
PSNR LPE PSNR DCT PSNR BBM RLE length BBM

Grafico 4:: PSNR e RLE length per le immagini campione con BBM

La tecnica BBM, pur non essendo una tecnica di padding in senso stretto, presenta scarsa complessità
computazionale e consente una compressione dell’immagine molto migliore di quella ottenibile con la DCT
classica, ed inoltre fornisce una minore distorsione ad alti rate di quantizzazione, testimonianza della
miglior distribuzione dei coefficienti trasformati.

Si conclude per ora la trattazione delle tecniche di padding, anche se in seguito vedremo tecniche
ibride, come la EI-DCT,
DCT, la NewPad e la BBGM-SA-DCT,
BBGM DCT, che come vedremo rappresenta un’estensione del
metodo BBM e sfrutta la shape-adaptive
shape DCT. A scopo riepilogativo, mostriamo di di seguito un’immagine
della distribuzione dei coefficienti DCT di un blocco processato con le tecniche fin qui viste:

(a) (b)

(c) (d)

Figura 25:: distribuzione dei coefficienti DCT per (a) DCT classica, (b) Repetitive Padding, (c) Low-Pass
Low Pass Extrapolation, (d) Linear
Extrapolation Padding

25
Trasformate per oggetti di sagoma arbitraria

Come abbiamo detto, la DCT ha due proprietà che possono risultare molto comode:

• La separabilità
• Il fatto che ad N pixel corrispondono N coefficienti reali della trasformata

Queste caratteristiche sono il fondamento su cui sono sviluppate le tecniche che vedremo in questo
capitolo.

 Shape-Adaptive DCT (SA-DCT)

I concetti appena espresso sono stati utilizzati da T. Sikora per ideare l’ormai celeberrima SA-DCT [6],
ovvero una trasformata discreta di coseno in grado di utilizzare un numero di coefficienti pari al numero di
pixel effettivi del visual object, anche quando questo ha sagoma irregolare. L’algoritmo è in realtà molto
semplice, e richiede una quantità di calcoli del tutto simile a quella di un’ordinaria DCT bidimensionale.

La figura seguente esplicita i passi dell’algoritmo:

Figura 26: passi dell'algoritmo SA-DCT

1. I pixel opachi dell’immagine vengono shiftati verso l’alto


2. Sui pixel così raggruppati per ogni colonna viene effettuata una 1-D DCT a k punti (pari al n° di pixel)
3. I valori così trasformati vengono shiftati verso sinistra
4. Per ogni riga viene calcolata una 1-D DCT a k punti

Così facendo otterremo un numero di coefficienti pari esattamente al numero di pixel effettivi dell’oggetto.
Inoltre, nessuna informazione aggiuntiva è necessaria al decoder che, conoscendo la maschera che
definisce la geometria dell’oggetto, è in grado di effettuare tutti i passaggi a ritroso. Dal punto di vista del
calcolo, l’algoritmo è molto efficiente in quanto ogni operazione di trasformata può essere realizzata per
decimazione di una FFT opportunamente calcolata (bisogna considerare che in commercio esistono già
pacchetti software e componenti hardwar altamente ottimizzati per quest’operazione), o mediante
semplici calcoli matriciali.

26
Infatti, se N è la lunghezza di una particolare riga o colonna dell’oggetto, è possibile definire una matrice di
trasformazione DCT-N (altrimenti detta “transform kernel”) come segue:

1
mn: (o, )  7 ∙ cos  o +  ∙  , 7' , o  0, … , − 1
2

1
7 = p%2 ,  = 0*
1,  ≠ 0

Le operazioni di trasformata e antitrasformata sono quindi definibili con:

2
72 = + , ∙ mn: ∙ 2

2 = mn: ? ∙ 72

Questa tecnica comporta evidentemente indubbi vantaggi in quanto permette di ridurre al minimo
possibile il numero di coefficienti utilizzati e di conseguenza la compattazione dell’energia, con benefici sia
dal punto di vista della compressione che della distorsione in seguito a quantizzazione.

Figura 27: DCT e SA-DCT

Il guadagno in termine di riduzione dei coefficienti può essere notato meglio dal dettaglio di un’immagine
trasformata sia con DCT classica che con SA-DCT:

Figura 28: segmento di DCT e SA-DCT

Per valutare appieno le prestazioni del nuovo algoritmo, ecco i grafici per le quattro immagini campione:

27
dB RLE coeffs. Bird
Bird
48 37000

46 32000

27000
44
22000
PSNR

42
17000

40 12000

38 7000
Qscale
Qscale 2 4 8 16 30
2 4 8 16 30
PSNR LPE PSNR DCT PSNR SA-DCT RLE length LPE RLE lengthDCT
RLE length SA-DCT

dB House RLE coeffs. House


43
18350
42
16350
41
14350
40
12350
39 10350
PSNR

38 8350
37 6350
36 4350

35 2350
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
RLE length LPE RLE lengthDCT
PSNR LPE PSNR DCT PSNR SA-DCT RLE length SA-DCT

dB
43 Lenna RLE coeffs. Lenna
58400
42

41 48400

40 38400
PSNR

39
28400
38
18400
37
8400
36 Qscale
Qscale 2 4 8 16 30
1 2 3 4 5 RLE length LPE RLE lengthDCT
PSNR LPE PSNR DCT PSNR SA-DCT RLE length SA-DCT

28
Soccer RLE coeffs. Soccer
46 24550

44
19550

42
14550
PSNR

40
9550
38

4550
36 Qscale
Qscale 1 2 3 4 5
1 2 3 4 5 RLE length LPE RLE lengthDCT
PSNR LPE PSNR DCT PSNR SA-DCT RLE length SA-DCT

Grafico 5: PSNR e RLE length per immagini campione con SA-DCT


SA

 Limiti della SA-DCT


SA

Un obiettivo basilare per ogni metodo di


trasformazione è mappare il valor medio m
dell'immagine xi,j direttamente in un unico
coefficiente DC nel dominio spettrale. Comunque,
seguendo le definizioni classiche di SA-DCT, SA
quest'obiettivo non sempre è raggiunto. E' infatti
possibile che una regione grigia uniforme, una volta
trasformata, contenga più di un coefficiente diverso
da zero. Questo è dovuto al fatto che, dopo
un’applicazione di shift ft verticale, orizzontale e
opportune trasformazioni, esiste una relazione
siffatta per i termini della prima riga:
r
q 
√2
iAtu ∙ 1u , … , At ∙ 1v j ′
v

Il vettore b1 non rappresenta quindi termini


costanti . Infatti, supponendo una svantaggiosa
definizione di SL = SN, gli elementi di b1 sono
sagomati
gomati in dipendenza dalla lunghezza di colonna
Ni. Il pattern grigio ricostruito sarà quindi degradato
Figura 29:: effetto di mean weighting defect dopo la quantizzazione e la codifica shape-adaptive,
shape
e l’immagine risultante presenterà degli artefatti idenfiticati col nome di “mean weighting defect”, defect” che
possono essere evitati soltanto utilizzando dei fattori di peso definiti come SL=4/L e una NO-SA-DCT (SA-DCT
Non Ortonormale - chiariremo in seguito).

29
In [7] e [8] viene mostrato attraverso un’approfondita analisi matematica che diversi parametri
statistici del blocco, come la matrice di covarianza del rumore di quantizzazione dopo la SA-IDCT, il MSE e la
funzione di autocorrelazione del rumore di quantizzazione sono pesati dai parametri della forma, ovvero le
lunghezze di riga e di colonna Nj ed Mj. Di conseguenza in una NO-SA-DCT il rumore di quantizzazione non è
controllato esclusivamente dal quantizzatore, ma è anche influenzato in maniera incontrollabile dalla forma
dell’oggetto. Questo effetto è noto come il “noise weighting defect” della SA-DCT. L’unica possibilità per
evitare questa proprietà indesiderata è normalizzare le sotto-trasformazioni (quelle su righe e colonne),
utilizzando una PO-SA-DCT.

 Pseudo-Orthonormal SA-DCT (PO-SA-DCT)

Questa versione modificata [7] della SA-DCT è utilizzata per correggere in parte i problemi appena
analizzati della sua versione tradizionale. Fondamentalmente le due trasformate sono molto simili, ma
differiscono nei fattori di peso applicati alle sotto-trasformate. Se facciamo riferimento alla figura seguente,
le operazioni di trasformata e trasformata inversa sono completamente definite dalle seguenti equazioni:

Assumendo che L possa essere uguale a Mj o Nj, ovvero le


lunghezze di riga o colonna, definiamo innanzitutto i transform
kernels:

1
mn:w (o, )  7 ∙ cos  o +   1 ≤ o,  ≤ x
2 x

7  z1⁄2 |   0, 7 = 1 =}~(3r|~3

In definitiva abbiamo:

2 = AM€ ∙ mn:M€ ∙ 2
‚1 = At ∙ mn:t ∙ ƒ1
2
ƒ1∗ = ∙ mn:?t ∙ ‚∗1
1 ∙ At
2
2∗ = ∙ mn:M? € ∙ 2∗
G2 ∙ AM€

Figura 30: passi per la PO-SA-DCT I termini sono asteriscati per indicare che contengono un’errore
dovuto alla quantizzazione tra il passo di trasformazione e quello di
antitrasformazione.

I fattori di scala sono definiti come segue:

Aw =
\
w
NO-SA-DCT

30
Aw  -
F
w
PO-SA-DCT

Per normalizzare le sotto-trasformate, evitando così i problemi sopra menzionati della SA-DCT, occorre
usare la seconda versione dei fattori di scala.

 ΔDC-SA-DCT (DC Separation & ΔDC Correction)

Dal paragrafo precedente emerge che la scelta dei fattori di scala interni per la SA-DCT dovrebbe essere
fatta in funzione del valor medio dell’immagine (del blocco) da trasformare. Teoricamente vi è una sola
situazione nella quale entrambi i difetti possono essere prevenuti contemporaneamente, e cioè quando
l’immagine ha media nulla. In questo caso il mean weighting defect non appare, e può quindi essere usata
la PO-SA-DCT ai dati a media nulla per evitare il noise weighting defect. Tuttavia, finchè l’immagine non è a
media nulla si è costretti ad utilizzare la NO-SA-DCT per evitare il mean weighting defect, che è il più
rilevante tra i due. Di conseguenza, la PO-SA-DCT non è conveniente per immagini a media non nulla.

L’algoritmo ΔDC-SA-DCT [7,8]supera tutti i problemi appena affrontati agendo in maniera intelligente
sui blocchi da trasformare, secondo un meccanismo
schematizzato nell’immagine seguente:

L’encoder calcola il valor medio m del blocco in esame,


lo sottrae all’intero blocco (che ora è a media nulla), e
a questo applica la trasformata PO-SA-DCT. Dopo
quest’operazione, l’output non è utilizzabile da una
trasformata inversa, in quanto non contiene una
corretta informazione sul valor medio. Quindi, il valor
medio m è scalato dello stesso fattore di cui sarebbe
scalato da una DCT standard ed è sostituito al
coefficiente c1,1. Dopo questa manipolazione i dati
trasformati contengono adeguati coefficienti DC ed
AC.

Prima di analizzare il decoder, và fatta una


Figura 31: schema di codifica e decodifica della ΔDC-SA-DCT
considerazione. Non è garantito che il termine c1,1
scartato (quello sostituito dalla versione scalata di m), che chiameremo ΔDC, sia uguale a 0. Questo infatti
diventa 0 soltanto in regioni esattamente rettangolari. Tuttavia può essere provato che un valore non nullo
di ΔDC rappresenta informazione ridondante e che è possibile ricostruirne un valore corrispondente al
ricevitore in base ai dati trasmessi.

Il decoder innanzitutto separa il valore DC trasmesso (m scalato) e imposta il coefficiente 7,



a 0. Quindi
una “correzione ΔDC” viene eseguita durante la PO-SA-DCT inversa. Infine, il valore DC precedentemente
separato viene ri-scalato e aggiunto all’immagine antitrasformata a media nulla per ottenere il blocco
completamente ricostruito.

31
Analizzando le cose più in dettaglio, osserviamo che l’omissione del termine ΔDC causa un errore sulla

non controllabile) e da un termine |…†‡


prima riga di coefficienti dopo l’antitrasformazione orizzontale. L’errore sarà dato dall’errore di
quantizzazione (non …†‡ :

q1,

 q1,  |…†‡  |1

Sfruttando la precondizione che il valor medio è stato forzato a zero prima della trasformazione, possiamo
calcolare un termine correttivo:
M
∑M ∗
1 z 1 ∙ q,1
|ˆ‰ŠŠ   |…†‡  |a‡ , 7'  z 1 ∙ q1  0
∑M
1 z 1 1

Il termine correttivo viene sottratto da tutti gli elementi della prima riga ∗ . L’errore iniziale |…†‡ è
ito da un errore residuo |a‡ , dipendente dall’errore di quantizzazione dei termini AC e
eliminato e sostituito
indipendente dal valore omesso ΔDC. Inoltre, è significativamente minore del rumore di quantizzazione e
può essere quindi trascurato.

I risultati dell’applicazione
dell’applicazione di questa tecnica in sostituzione alla SA-DCT
SA DCT classica sono esposti nei grafici delle
immagini campione.

dB RLE coeffs.
Bird Bird
48 37000

46 32000

27000
44
22000
PSNR

42
17000
40
12000
38 7000
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR DCT RLE lengthDCT
PSNR SA-DCT
SA RLE length SA-DCT
DCT
PSNR DeltaDCcorr-SA-DCT
DeltaDCcorr RLE DeltaDCcorr SA-DCT
SA

dB RLE coeffs. House


43 House
17350
41

12350
39
PSNR

7350
37

35 2350
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
PSNR DCT RLE lengthDCT
PSNR SA-DCT
SA RLE length SA-DCT
DCT
PSNR DeltaDCcorr-SA-DCT
DeltaDCcorr RLE DeltaDCcorr SA-DCT
SA

32
dB RLE coeffs. Lenna
43 Lenna
58400
42

41 48400

40 38400
39
PSNR

28400
38
18400
37

36 8400
Qscale
Qscale 1 2 3 4 5
2 4 8 16 30
PSNR DCT RLE lengthDCT
PSNR SA-DCT
SA RLE length SA-DCT
DCT
PSNR DeltaDCcorr-SA-DCT
DeltaDCcorr RLE DeltaDCcorr SA-DCT
SA

dB RLE coeffs.
Soccer Soccer
46 24550

44 19550

42
14550
PSNR

40
9550
38

36 4550
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
PSNR DCT RLE lengthDCT
PSNR SA-DCT
SA RLE length SA-DCT
DCT
PSNR DeltaDCcorr-SA-DCT
DeltaDCcorr RLE DeltaDCcorr SA-DCT
SA

Grafico 6:: PSNR e RLE per le immagini campione con ΔDC-SA-DCT

I risultati sperimentali mostrano


mostrano che quest’algoritmo supera chiaramente in prestazioni la SA-DCT
SA classica e
ancor più la DCT tradizionale, esibendo valori di compressione impercettibilmente inferiori alla SA-DCT
SA ma
una netta diminuzione della distorsione, con valori di PSNR decisamente
decisamente migliori. Anche dal punto di vista
computazionale la tecnica è efficente, in quanto richiede poche operazioni in più per l’estrazione della
media e la correzione dei coefficienti della prima riga.

 Boundary Pixel Scanning – BPS-SA-DCT

Lee ed altri [9],, nel 2004, hanno proposto un metodo per migliorare le performance della SA-DCT
SA
tradizionale, senza modificarla internamente, ma sfruttando le caratteristiche di ciascun blocco
dell’immagine da trasformare.

L’algoritmo cerca di riordinare i pixel dell’oggetto


dell’oggetto nel tentativo di allineare pixel con valori simili di
luminanza nella stessa colonna o riga. Infatti, se i pixel in una colonna hanno valori simili di luminanza, i

33
termini AC della DCT 1-D
1 D saranno piccoli, e verranno ulteriormente ridotti dopo la DCT orizzontale. Questo
implica che dopo il passo di quantizzazione molti di questi valori diventeranno 0, con un guadagno in
termini di compressione.

In generale i pixel sul bordo di un boundary block hanno valori di luminanza molto simili. Se viene
effettuata
ata un’operazione di scansione nella direzione del bordo dell’oggetto, pixel simili tenderanno a
raggrupparsi. Sono perciò definite quattro operazioni di questo tipo:
tipo left-side, right-side
side, top-side e bottom-
side scanning,, che definiscono la direzione verso
verso la quale i pixel dell’oggetto sono shiftati.

Figura 32:: modalità di scanning BPS

In BPS-SA-DCT,
DCT, ogni blocco dev’essere codificato in 5 modalità: MO indica il blocco codificato in SA- SA
DCT normale, MLS, MRS, MBS e MTS i blocchi trasformati
rasformati dopo i 4 scanning. Dal momento che la modalità può
variare per ogni blocco, bisogna trasmettere al decoder un ulteriore simbolo per indicare quella utilizzata, e
questo costituisce chiaramente un overhead. I 5 risultati ottenuti vengono confrontati
confrontati in base al PSNR e al
BitRate prodotto (qui valutato effettuando una codifica di Huffman), ), e viene scelto quello col più alto PSNR
e più basso bitrate. Al decoder viene prima effettuata la SA-DCT SA DCT usando la sagoma modificata
dall’eventuale shift, e poi i pixel vengono ricollocati nelle corrette posizioni.

In basso i risultati dei test sulle immagini campione:

dB RLE coeffs.
Bird Bird
48 37000

46 32000

27000
44
22000
PSNR

42
17000
40
12000
38 7000
Qscale Qscale
2 4 8 16 30 1 2 3 4 5
RLE lengthDCT RLE length SA-DCT
PSNR DCT PSNR SA-DCT RLE BPS-SA-DCT

34
dB
43
House RLE coeffs. House
18350
42
16350
41
14350
40 12350
PSNR

39 10350
38 8350

37 6350
4350
36
2350
35 Qscale
Qscale 1 2 3 4 5
2 4 8 16 30
PSNR DCT PSNR SA-DCT RLE lengthDCT RLE length SA-DCT
PSNR BPS-SA--DCT RLE BPS-SA-DCT

dB Soccer RLE coeffs. Soccer


46 24550

44
19550

42
14550
PSNR

40

9550
38

36 4550
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
PSNR DCT PSNR SA-DCT RLE lengthDCT RLE length SA-DCT
PSNR BPS-SA
SA-DCT RLE BPS-SA-DCT

Grafico 7:: PSNR e RLE length per immagini campione con BPS-SA-DCT
BPS

Per quanto dai grafici non sia evidente, analizzando i dati numerici si osserva una riduzione (molto piccola)
della distorsione e un lieve aumento della compressione. Ulteriori analisi potrebbero essere svolte sulla
correttezza della stima del bitrate e sull’adeguatezza delle immagini campione,, ma allo stato attuale questa
tecnica presenta vantaggi troppo piccoli in rapporto alla sua complessità, pari a 5 volte quella di una SA-DCT
SA
normale.

35
 SA-DCT Direzionale (DSA-DCT)

Uno dei problemi principali della BPS-SA-DCT è l’elevata complessità computazionale, pari circa a 5 volte
quella di una SA-DCT classica. Inoltre, richiede un overhead informativo per indicare la direzione di scanning
di ogni blocco. La SA-DCT direzionale [10] è stata concepita per alleviare questi problemi e consiste di 3
passi:

• Predizione della direzione del bordo


• Ordinamento dei pixel dell’oggetto in accordo alla direzione del bordo
• Codifica del blocco riordinato mediante SA-DCT

La predizione è effettuata solo sui pixel che si trovano sul bordo, che vanno quindi identificati. Se >((, 7) è
una maschera binaria nella quale >((, 7)  1 indica un pixel dell’oggetto e >((, 7)  0 un pixel esterno, per
un pixel p situato ad (r,c), si può dire che questo è boundary se >+(, 7, = 1 e almeno uno dei suoi 4 vicini
situati a (r+1,c), (r-1,c), (r,c+1), (r,c-1) è un pixel trasparente. Il set di pixel del bordo viene sfruttato per

valutati i suoi 8 vicini che lo circondano, indicati con ‹ +o,. Se un pixel


predire la direzione dominante del bordo. Per ogni pixel di bordo p vengono

Œ ∈ ‹ +o, e q è un pixel di bordo, allora esiste un bordo tra p e q. Il valore i,


corrispondente alla direzione del bordo tra p e q, è aggiunto al vettore dei
chain code c(i).

Tenendo conto che i codici 0 e 4 corrispondono alla direzione orizzontale, 2 e


6 a quella verticale, 1 e 5 a lla diagonale a 45° mentre 3 e 7 a quella a 135°,
Figura 33: chain codes delle 8 vengono contate le occorrenze di ciascuno di essi e determinata la direzione
direzioni dominante. Per chiarire il tutto, di seguito è presentato un esempio di
predizione su un’alphamask 8x8.

Figura 34: esempio di edge prediction

Per effettuare il riordino vengono prima calcolati dei parametri ausiliari: Nup ed Nlower, ovvero il numero di
pixel opachi nella prima ed ultima riga contenente l’oggetto, Nleft ed Nright, il numero di pixel opachi nelle
colonne più a sinistra e più a destra dell’oggetto.

36
L’operazione di riordino è diversa per ogni direzione dominante e dipende anche dai parametri N:

1. Direzione orizzontale

Se Nup> Nlower, viene effettuato top-side scanning, altrimenti bottom-side.

2. Direzione diagonale a 45°

Se Nup> Nlower, viene effettuato top-side scanning, altrimenti bottom-side.

3. Direzione verticale

Se Nleft > Nright, viene effettuato left-side scanning, altrimenti right-side.

4. Direzione diagonal a 135°

Se Nup> Nlower, viene effettuato top-side scanning, altrimenti bottom-side.

Al decoder vengono effettuate le stesse operazioni per determinare la direzione dominante e quindi la
maschera ausiliaria shiftata per operare la SA-DCT. Rispetto al BPS-SA-DCT, questa tecnica si propone come
un miglioramento, in quanto è computazionalmente molto più leggera e non richiede la trasmissione di
informazioni aggiuntive.

Tuttavia i risultati sperimentali sono stati insoddisfacenti, in quanto sulle immagini campione
utilizzate la tecnica ha prodotto valori di PSNR e di compressione praticamente identici alla SA-DCT classica.
La BPS-SA-DCT mantiene, invece, prestazioni lievemente migliori sul PSNR, grazie evidentemente al maggior
sforzo di calcolo. Si lascia ad approfondimenti futuri la motivazione di questi scarsi risultati.

 Boundary Blocks Grouping & Merging (BBGM-SA-DCT)

La tecnica BBGM, proposta da Ng e Lin in [11], ha come obiettivo il miglioramento della tecnica BBM vista
nel capitolo sugli algoritmi di padding. L’idea di fondo consiste nel raggruppare o accoppiare boundary
blocks che soddisfano alcune proprietà e fonderli in blocchi singoli. Per la trasformazione, si avvale di una
SA-DCT modificata, che esponiamo qui di seguito (lo schema grafico di riferimento è lo stesso dei paragrafi
precenti):

Le operazioni di trasformata e antitrasformata sono:

;0  mn:MŽ ∙ 0 , 6  0, … , G − 1
`0 = mn:‡ ∙ ‘ , ℎ = 0, … , − 1

‘∗ = mn:‡ ? ∙ `‘∗ , ℎ = 0, … , − 1


0∗ = mn:MŽ ?
∙ ;∗0 , 6 = 0, … , G − 1

Dove i transform kernels sono definiti dalla seguente equazione:

+2Π+ 1, o
mn:w +o, Œ, = 7 ∙ cos , o|( o, Œ = 0, … , x − 1
2x

37
$ 1
" %x , | o  0
7  *
# 2
"% , =}~(3r|~3
! x

Oltre a questa leggera variazione sul coefficiente moltiplicativo, l’algoritmo effettua una correzione sui
termini DC dopo ogni passo, ovvero sulla prima riga dopo la trasformazione verticale e sull’elemento (1,1)
dopo la trasformazione orizzontale.

G=“G , … , GM ”
;K0, = ;0, ∙ % , 6 = 0, … , G − 1
G0

G∙
`K , = ` ∙%
,
G=“G , … , GM ” ∙ G=“n , … , n ”

dove i termini M e C indicano le lunghezze delle colonne e delle righe. Quindi, i coefficienti DC vengono
corretti in relazione alla lunghezza della riga o della colonna che occupano.

L’algoritmo BBGM innanzitutto seleziona, all’interno di macroblocchi 16x16, le coppie di blocchi


8x8 che possono essere raggruppate, secondo le direzioni orizzontale, verticale e diagonale. La tecnica può
essere applicata anche a gruppi di 3 o 4 blocchi, purchè rispettino la condizione fondamentale: il numero
totale dei pixel opachi non dev’essere maggiore del numero totale di pixel immagazzinabili in un blocco (nel
nostro caso 64). Il vantaggio rispetto alla tecnica BBM sta nella possibilità di raggruppare più di 2 blocchi
contemporaneamente. Il tutto si traduce in 8 tipi di raggruppamento possibili, come mostrato in [12].

L’algoritmo è sommariamente spiegato nel flow-chart


seguente:

Figura 35: tipi di raggruppamento

Figura 36: algoritmo di raggruppamento

38
Per capire meglio il procedimento risulta molto utile l’immagine in basso a sinistra.
sinist

Una volta individuati i blocchi da raggruppare, vengono


copiati in un blocco esteso di 16x16, che viene
trasformato con la SA-DCTSA DCT modificata. Infine i
coefficienti vengono ridisposti in uno dei blocchi di
origine seguendo uno scanning a zig-zag,
zig in modo da
occupare le posizioni “privilegiate” e massimizzare la
compressione, quantizzando meno finemente le
componenti in alta frequenza, secondo i principi già
ampiamente discussi.

In particolare, è stato sviluppato una sorta di zig-zag


zig
scan modificato in grado
grado di mappare un blocco 16x16 in
un blocco 8x8, se ovviamente il requisito sul numero di
pixel è rispettato.

Figura 37:: codifica di blocchi raggruppati con BBGM Al decoder, conoscendo le posizioni standard del zig-zag
zig
scan e la maschera dell’oggetto, è possibile ripercorrere
tutti i passi dell’algoritmo, individuando i blocchi raggruppati e facendone lo split.

I risultati sperimentali sono presentati di seguito:

dB RLE coeffs.
Bird Bird
48 37000

46 32000

27000
44
PSNR

22000
42 17000

40 12000

7000
38 Qscale
Qscale 1 2 3 4 5
2 4 8 16 30 RLE length SA-DCT
DCT
PSNR SA-DCT PSNR BBM
RLE length BBM
PSNR BBGM-SA
SA-DCT RLE length BBGM-SA-DCT
BBGM

39
dB Soccer RLE coeffs. Soccer
46 24550

44 19550

42
PSNR

14550
40
9550
38

4550
36 Qscale
Qscale 2 4 8 16 30
2 4 8 16 30 RLE length SA-DCT
PSNR SA-DCT PSNR BBM RLE length BBM
PSNR BBGM-SA
SA-DCT RLE length BBGM-SA
SA-DCT

Grafico 8:: PSNR e RLE length per immagini campione con BBGM

Dalle due immagini campione prese in considerazione,


considerazione, che sono anche quelle con la maggior complessità
dei bordi, risulta chiaro che la tecnica BBGM abbia prestazioni migliori della semplice BBM e ne costituisca,
quindi, un valido sviluppo. I miglioramenti in termini di compressione sono molto evidenti,
eviden così come quelli
in termini di PSNR, che globalmente pongono questa tecnica lievemente al di sopra anche della SA-DCT SA
classica.

Inoltre, in letteratura [12], è stata proposta anche un’algorimo che fonde BBGM e BPS costituendo così una
BPS-BBGM-SA-DCT che he mette insieme i vantaggi delle due tecniche.

Metodi ibridi

Esistono infine alcune tecniche ibride. I metodi visti finora, infatti, hanno operato o nel campo spaziale, o in
quello delle frequenze spaziali, ponendosi al massimo il problema di utilizzare le informazioni sulla forma
per ottimizzare la trasformata DCT. Analizziamo ora due tecniche che invece fondono i due punti di vista, ed
in particolare cercano di utilizzare le proprietà e i risultati della DCT per effettuare un padding “intelligente”
nel dominio spaziale. Le tecniche di padding viste fin’ora cercavano di rendere più smooth la separazione
tra oggetto e regione esterna, assumendo come punto di vista quello “umano”, in quanto intuitivamente
una transizione più dolce genererà meno componenti ad alta frequenza. Le seguenti, invece, sovvertono un
pò questa visione.

 Extension Interpolation
Int (EI-DCT)

L’algoritmo di extension interpolation (EI) [13,14], cerca di assegnare ai pixel esterni dei valori specifici in
modo che i coefficienti risultanti dopo l’applicazione della normale 2-D
2 D DCT avranno valori bassi per le alte
frequenze, e saranno quindi più facilmente “tagliati” via dalla quantizzazione. Per ottenere questa

40
proprietà, i coefficienti di una 1-D
1 DCT a k punti sono paddati con degli zeri finali. I passi dell’algoritmo sono
i seguenti:

1. Una DCT monodimensionale a k punti è calcolata


calcolata su ogni colonna o riga (di lunghezza k) in un
boundary block.
2. N-K zeri sono appesi alla fine del vettore dei coefficienti DCT.
3. Un’antitrasformata 1-D
1 D IDCT è applicata alla riga di coefficienti paddati.
4. Una trasformata 2-D
2 D DCT è applicata al blocco NxN.
Nx

In questo modo, attraverso un procedimento reversibile, imponiamo che le trasformate monodimensionali


abbiano un numero di coefficienti diversi da 0 pari al numero di pixel opachi effettivi. Il risultato ottenuto è
simile a quello della SA-DCT,
SA ma una caratteristica
aratteristica fondamentale è che quest’algoritmo può essere
implementato come passo di pre-processing
pre processing in codec o dispositivi hardware preesistenti, riutilizzando
quindi tecnologia preesistente e altamente ottimizzata.
ottimizzata

Lo svantaggio di quest’algoritmo è la sua complessità computazionale, dal momento che richiede


l’esecuzione di una K-point
K point DCT e di una IDCT per ogni riga o colonna, oltre ovviamente alla 2-D 2 DCT
standard. L’altro svantaggio è che il decoder per effettuare il depadding deve applicare un algoritmo
algor di pari
complessità. Inoltre, si fa affidamento sulle trasformate DCT a k punti come nella SA-DCT.
SA DCT.

Il meccanismo è brevemente spiegato in quest’illustrazione:

Figura 38:: processo di extension interpolation. Valori  DCT  DCT paddata con 0  IDCT (nuovi valori della riga/colonna)

Osservando i risultati esposti di seguito si osserva un notevole aumento delle capacità di compressione
rispetto alla DCT classica e ad altri metodi di padding,
padding, ma questa è accompagnata da una rilevante
ril perdita
di qualità nell’immagine ricostruita, con valori di PSNR bassi.

dB RLE coeffs.
49 Bird Bird
36950
47 31950
45 26950

43 21950
PSNR

41 16950

11950
39
6950
37 Qscale
Qscale 1 2 3 4 5
1 2 3 4 5 RLE lengthDCT RLE length LPE
PSNR DCT PSNR LPE PSNR EI-DCT
RLE length EI-DCT

41
dB
43 House RLE coeffs. House
18350
42
41 16350

40 14350

39 12350
PSNR

38 10350

37 8350

36 6350

35 4350
34 2350
Qscale Qscale
1 2 3 4 5 1 2 3 4 5
PSNR DCT PSNR LPE PSNR EI-DCT RLE lengthDCT RLE length LPE
RLE length EI-DCT

dB
Lenna RLE coeffs. Lenna
43
58400
42
41 48400
40
38400
PSNR

39
38 28400
37
18400
36
35 8400
Qscale Qscale
1 2 3 4 5 1 2 3 4 5
PSNR DCT PSNR LPE PSNR EI-DCT RLE lengthDCT RLE length LPE
RLE length EI-DCT

dB RLE coeffs.
47 Soccer Soccer
24550
45
19550
43
PSNR

41 14550

39
9550
37

35 4550
Qscale Qscale
1 2 3 4 5 1 2 3 4 5
PSNR DCT PSNR LPE PSNR EI-DCT RLE lengthDCT RLE length LPE
RLE length EI-DCT

Grafico 9:: PSNR e RLE length per immagini campione con EI

42
 NewPad Technique

L’algoritmo noto come NewPad (o anche SmartPad) [15,16,17] si propone come una valida alternativa alla
SA-DCT, in quanto consente (come anche l’EI) di utilizzare ancora una trasformata 2-D DCT NxN, con
conseguenti vantaggi in termini di costi implementativi. Può essere a tutti gli effetti un passo di pre-
processing inserito in processi di codifica più complicati.

Il padding è effettuato su ogni blocco di sagoma arbitraria facendo in modo che il numero dei
coefficienti DCT diversi da zero non superi il numero di pixel originari dell’immagine, senza espandere
quindi la rappresentazione dei dati nel dominio trasformato (così come accade con la SA-DCT). Il NewPad
persegue quindi l’obiettivo che si prefiggeva anche l’EI, ma lo realizza in entrambe le dimensioni
contemporaneamente.

Assumiamo di avere un vettore di input u di lunghezza k (1≤k≤N), mentre il vettore di padding è


indicato con v, di lunghezza N-k. Quindi la DCT base N può essere scritta come:

• n n 4
i j i j
– n n 6

dove u e U sono di dimensione K e v e V di dimensione N-k, mentre Cij sono sottoblocchi della matrice di
trasformazione di dimensione N. Dalla precedente equazione abbiamo:

–  n ∙ 4 + n ∙ 6
6  n

(– − n ∙ 4)

ma dal momento che vogliamo forzare N-k componenti della DCT ad essere 0, dobbiamo imporre V=0
nell’equazione precedente, ottenendo così l’espressione definitiva per il calcolo di un v adeguato ai nostri
scopi.

6  −n

n 4, @  −n

n

Sebbene il modo più naturale per inserire i coefficienti di v sia appenderli alla fine di u, questa non è una
buona scelta dal punto di vista numerico. Vi sono infatti più modi per intercalare gli elementi di padding
all’interno del vettore, modificando l’ordine di righe e colonne nei sottoblocchi di C, e si dimostra che
l’ordine non influenza il risultato. Shen ha inoltre dimostrato che la scelta dell’ordine di padding è
indipendente dai vettori di input, e ha quindi determinato mediante una ricerca esaustiva il miglior
posizionamento degli elementi di v per ogni valore di k. I vettori per il padding e le matrici P sono state
quindi fornite nella specifica dell’algoritmo, e da noi sfruttare per il test.

43
Figura 39:: passi dell’algoritmo NewPad

Come esplicitato dalla figura, il padding è effettuato dapprima in direzione verticale, e quindi è applicata
una N-DCT
DCT ad ogni colonna. Al termine di questa operazione vi saranno in testa ad ogni colonna un numero
di coefficienti pari al numero di object pixels originari. La stessa operazione è effettuata quindi sulle righe,
dopodichè avremo, in alto a sinistra nel blocco, un numero di coefficienti DCT pari al numero di pixel
dell’oggetto. Il tutto senza modificare la DCT bidimensionale e soprattutto operando sempre trasformate di
lunghezza N.

Supponiamo ad esempio di avere una riga [2 4 6 8 10].


10]. Risolvendo l’equazione otteniamo per il padding i
seguenti valori [2.5570 5.4894 6.3555], che verranno intercalati al vettore originale ottenendo [2 2.5570 4
5.4894 6 6.3555 8 10], la cui trasformata DCT-8
DCT 8 è [15.7020 -6.8860 0.2763 -1.4990
1.4990 0.9076 0 0 0],
0 con 3 zeri
finali come desideravamo!

dB RLE coeffs.
49 Bird Bird
36950
47
31950

45 26950
PSNR

43 21950

41 16950

11950
39
6950
37 Qscale
Qscale 2 4 8 16 30
2 4 8 16 30 RLE lengthDCT
PSNR DCT PSNR SA-DCT RLE length SA-DCT
DCT
PSNR NewPad DCT RLE length NewPad DCT

44
dB House RLE coeffs. House
43 18350
42 16350
41
14350
40
12350
39
10350
PSNR

38
8350
37
36 6350

35 4350
34 2350
Qscale Qscale
2 4 8 16 30 2 4 8 16 30
PSNR DCT PSNR SA-DCT RLE lengthDCT
PSNR NewPad DCT RLE length SA-DCT
DCT

dB Lenna RLE coeffs. Lenna


43
58400
42
41 48400

40
38400
PSNR

39
28400
38
37 18400
36
8400
35 Qscale
Qscale 2 4 8 16 30
2 4 8 16 30 RLE lengthDCT
PSNR DCT PSNR SA-DCT RLE length SA-DCT
DCT
PSNR NewPad DCT RLE length NewPad DCT

dB Soccer RLE coeffs. Soccer


47 24550

45
19550
43
PSNR

14550
41

39 9550

37
4550
35 1 2 3 4
Qscale
5
Qscale
1 DCT 2
PSNR 3 4 SA-DCT5
PSNR RLE lengthDCT
PSNR NewPad DCT RLE length SA-DCT
DCT

Grafico 10:: PSNR e RLE length per immagini campione con NewPad

45
L’algoritmo si pone in rilievo rispetto a tutte le altre tecniche di padding precedentemente viste, ottenendo
migliori risultati sia di compressione che di distorsione, candidandosi come diretto concorrente a SA-DCT ed
addirittura a ΔDC-SA-DCT. Il tutto, inoltre, a fronte di una bassa complessità computazionale, soprattutto se
paragonato ad EI-DCT o BPS-SA-DCT, in quanto tutte le matrici (sia le basi per la DCT che quelle per la
determinazione di v,P) possono essere precalcolate.

A puro scopo riepilogativo e illustrativo, sono qui mostrate le distribuzioni dei coefficienti trasformati del
blocco di test ottenuti con alcuni degli algoritmi studiati:

a b

c d

Figura 40: (a) SA-DCT, (b) ΔDC-SA-DCT, (c) DSA-DCT, (d) EI-DCT, (e) NewPad

46
V. Conclusioni

Si può concludere che il campo dello shape coding è senz’altro florido, e che nonostante siano state
proposte già molte alternative, vi saranno sicuramente novità nel prossimo futuro. Molti degli algoritmi
analizzati sono ancora lontani da un’applicazione pratica in quanto scarsamente performanti dal punto di
vista computazionale, cosa alla quale, specialmente in applicazioni real-time o su dispositivi mobili, è
difficile porre rimedio. Vi sono tuttavia alcune tecniche che richiedono più potenza di calcolo all’encoder,
mentre il decoder deve limitarsi ad effettuare banali operazioni di de-padding, nella peggiore delle ipotesi.

Volendo tirare le somme dell’analisi fatta, risulta chiaro il perchè dell’adozione di SA-DCT nello
standard ufficiale MPEG-4. Questa è infatti forse la tecnica col compromesso prestazioni / efficacia
migliore, superata soltando dalla sua modifica ΔDC-SA-DCT, che risulta la miglior tecnica in assoluto
considerata da ogni punto di vista. Tra gli algoritmi di padding emerge per qualità soprattutto il NewPad,
che a fronte di una buona semplicità implementativa e di integrazione in sistemi esistenti, offre prestazioni
paragonabili alle varie SA-DCT. EI-DCT sembra utilizzabile solo in contesti a basso bitrate (elevata
quantizzazione), in quanto distorce troppo il segnale, mentre sono comunque di ottimo livello gli algoritmi
basati sul merging (BBM e BBGM), anche se leggermente più complessi. Per il dettaglio degli esperimenti,
comunque, si allega a questa relazione una tabella onnicomprensiva.

Sviluppi futuri

In questo lavoro sono stati analizzati gli algoritmi nel loro funzionamento elementare, ossia nella
codifica di immagini statiche secondo lo standard JPEG, trattando ognuna come se fosse il frame I di uno
stream video MPEG-4. Sarebbe necessaria un’analisi più approfondita delle prestazioni di ogni algoritmo,
specialmente per alcuni che non hanno rispecchiato fedelmente quanto riportato dagli autori. Al fine di
valutare in maniera più realistica le prestazioni, si potrebbe effettuare un porting da Matlab® a linguaggio
C. Il fine ultimo dovrebbe essere poi, ovviamente, quello di implementare un sistema di codifica/decodifica
video ad oggetti (o sfruttare un toolbox già esistente) per applicare i suddetti algoritmi tenendo conto
anche della codifica inter-frame e delle componenti di luminanza e crominanza.

47
BIRD HOUSE
Quantizer scale 2 4 8 16 30 Quantizer scale 2 4 8 16 30
DCT 48,1625 44,0282 40,9921 39,4054 38,5524 DCT 43,2890 39,7665 37,0792 35,9433 35,2296
LPE 47,5021 43,8996 41,2926 39,7073 38,8331 LPE 43,1400 39,7875 37,1797 35,9501 35,2908
Repetitive Padding 47,5296 43,9289 41,3156 39,6509 38,7773 Repetitive Padding 43,2033 39,8316 37,1607 36,0232 35,2759
LEP 47,485382 43,872202 41,298677 39,63212 38,764911 LEP 43,2139 39,8408 37,1448 36,0044 35,2954
EI-DCT 39,319367 38,764405 38,050571 37,403958 36,967129 EI-DCT 37,7769 36,5911 35,2285 34,5289 34,0712
NewPad 48,337828 44,573713 41,735722 40,001769 38,999493 NewPad 43,3290 39,8750 37,2157 36,0288 35,3005
PSNR

PSNR
BBM 47,5351 43,899962 41,283257 39,714916 38,798692 BBM 43,1385 39,7976 37,1669 35,9339 35,2806
BBGM-SA-DCT 48,02697 44,206905 41,473848 39,836706 38,889318 BBGM-SA-DCT 43,2561 39,8205 37,1683 35,9912 35,2523
SA-DCT 48,095609 44,266723 41,493945 39,857554 38,962763 SA-DCT 43,2624 39,8248 37,1808 36,0009 35,2671
ΔDC-SA-DCT 48,457567 44,946385 42,62812 40,473833 37,642545 ΔDC-SA-DCT 43,3706 40,1223 37,5078 36,2865 34,7253
BPS-SA-DCT 48,161661 44,408947 41,598413 39,973025 39,052256 BPS-SA-DCT 43,2925 39,8587 37,2016 36,0221 35,2766
DSA-DCT 48,087449 44,250191 41,471373 39,847339 38,950883 DSA-DCT 43,2620 39,8248 37,1814 36,0001 35,2679
DCT 40363 31312 22366 14208 9069 DCT 19749 12642 7445 4229 2784
LPE 32970 22283 14159 9134 6605 LPE 18354 11156 6180 3449 2344
Repetitive Padding 32343 22261 14507 9592 6929 Repetitive Padding 18146 11102 6241 3487 2398
LEP 32809 22641 14886 9916 7124 LEP 18196 11161 6298 3523 2416
EI-DCT 30187 21043 14000 9473 6989 EI-DCT 17983 11014 6150 3468 2393
RLE Length

RLE Length
NewPad 29222 20826 14090 9616 7116 NewPad 17934 11031 6171 3472 2384
BBM 31947 21829 13962 9098 6636 BBM 18186 11076 6168 3439 2331
BBGM-SA-DCT 28687 20107 13381 9058 6718 BBGM-SA-DCT 17836 10898 6072 3407 2356
SA-DCT 28725 20211 13508 9191 6760 SA-DCT 17862 10940 6104 3438 2369
ΔDC-SA-DCT 28571 19960 13222 8949 6612 ΔDC-SA-DCT 17829 10883 6036 3389 2340
BPS-SA-DCT 28451 19917 13237 8913 6612 BPS-SA-DCT 17755 10863 6061 3415 2350
DSA-DCT 28814 20279 13564 9206 6764 DSA-DCT 17863 10941 6105 3438 2369

LENNA SOCCER
Quantizer scale 2 4 8 16 30 Quantizer scale 2 4 8 16 30
DCT 43,2162 40,1204 37,9507 36,6106 36,0271 DCT 46,6709 42,1349 39,0872 37,3736 36,5177
LPE 43,1121 40,1156 38,0510 36,7303 36,1253 LPE 45,7698 41,7510 39,1578 37,4993 36,6976
Repetitive Padding 43,1411 40,1314 38,0559 36,7257 36,1476 Repetitive Padding 45,8278 41,8427 39,2213 37,4789 36,6384
LEP 43,1214 40,1031 38,0373 36,7158 36,1351 LEP 45,7887 41,7860 39,1244 37,4280 36,6418
EI-DCT 39,9476 38,3264 36,9334 35,9277 35,4639 EI-DCT 36,8869 36,4046 35,7253 35,0742 34,7017
NewPad 43,2355 40,1954 38,0807 36,7452 36,1345 NewPad 47,1274 42,6251 39,4804 37,6083 36,7678
PSNR

PSNR
BBM 43,1122 40,1101 38,0470 36,7229 36,1245 BBM 45,8025 41,7464 39,1413 37,4810 36,6646
BBGM-SA-DCT 43,1910 40,1605 38,0504 36,7245 36,1306 BBGM-SA-DCT 46,6119 42,1427 39,2096 37,4269 36,6869
SA-DCT 43,2046 40,1686 38,0558 36,7207 36,1157 SA-DCT 46,7476 42,2788 39,2777 37,5196 36,7668
ΔDC-SA-DCT 43,2711 40,2514 38,2428 36,9249 36,0534 ΔDC-SA-DCT 47,1881 43,5987 40,2769 37,4388 34,5802
BPS-SA-DCT 43,2106 40,1775 38,0714 36,7378 36,1342 BPS-SA-DCT 46,8035 42,3611 39,3326 37,5671 36,8034
DSA-DCT 43,1986 40,1433 38,0346 36,7149 36,1071 DSA-DCT 46,7411 42,2350 39,2350 37,4932 36,7454
DCT 64983 40731 25069 15209 9811 DCT 26061 20809 14657 9101 5706
LPE 60326 35601 20717 12587 8317 LPE 21742 15773 10408 6622 4303
Repetitive Padding 60509 35975 21066 12834 8441 Repetitive Padding 21870 16194 10838 6998 4582
LEP 60792 36324 21300 12982 8547 LEP 22105 16532 11216 7292 4767
EI-DCT 59218 35224 20818 12840 8591 EI-DCT 19935 14897 10175 6775 4602
RLE Length

RLE Length
NewPad 59063 35322 20871 12810 8513 NewPad 18709 14709 10326 6920 4617
BBM 60021 35507 20693 12602 8332 BBM 20826 15378 10275 6590 4316
BBGM-SA-DCT 58620 34820 20465 12581 8360 BBGM-SA-DCT 18269 14017 9661 6410 4313
SA-DCT 58660 34898 20559 12667 8460 SA-DCT 18294 14095 9731 6441 4368
ΔDC-SA-DCT 58576 34785 20424 12520 8340 ΔDC-SA-DCT 18226 13986 9591 6308 4247
BPS-SA-DCT 58625 34853 20484 12592 8398 BPS-SA-DCT 18213 13974 9608 6348 4271
DSA-DCT 58811 35087 20646 12691 8458 DSA-DCT 18406 14220 9809 6488 4374
Bibliografia

[1] W. Li, J.-R. Ohm, H. Jiang, S. Li, “MPEG-4 Video Verification Model VM 18.0”, ISO/IEC
JTC1/SC29WG11 N3908, January 2001, Pisa

[2] S.A. Khayam, “DCT, Theory and application”, DCT Tutorial, WAVES-TR-ECE802.602, 2003 revised
February 2005

[3] A. Kaup, “Object-based texture coding of moving video in MPEG-4”, IEEE Transactions on circuits
and systems for video technology, Vol. 9, No. 1, 1999

[4] E.A. Edirisinghe, J. Jiang, C. Grecos, “Shape adaptive padding for MPEG-4”, IEEE Transactions on
Consumer Electronics, Vol. 46, No. 3, August 2000

[5] J.-H. Moon, Ji-Heon Kweon, Hae-Kwang Kim, “Boundary Block-Merging (BBM) Technique for
efficient texture coding of arbitrarily shaped object”, IEEE Transactions on circuits and systems for
video technology, Vol. 9, No. 1, February 2009

[6] T. Sikora, B. Makai, “Shape-Adaptive DCT for Generic Coding of Video “, IEEE Transactions on
circuits and systems for video technology, Vol. 5, No. 1, February 1995

[7] P. Kauff, K. Shuur , “An extension of Shape-Adaptive DCT (SA-DCT) towards DC separation and ΔDC
Correction”, Picture Coding Symposium, 1997

[8] P. Kauff, K. Shuur, “Shape-Adaptive DCT with Block-Based DC separation and ΔDC Correction”, IEEE
Transactions on circuits and systems for video technology, Vol. 8, No. 3, June 1998

[9] C.H. Lee, C. C. Lien, J. D. Huang, “An improved shape-adaptive DCT algorithm with Boundary Pixel
Scanning technique”, Proc. of the 17th IPPR Conference on Computer Vision, Graphics, and Image
Processing, Hualien, August 2004

[10] C.-H. Lee, J.-L. Shih, Y.-Y. Chiang, “A novel MPEG-4 texture coding algorithm using directional SA-
DCT”, 18th Conference on Computer Vision, Graphics, and Image Processing, Taipei, August 2005

[11] W.K. Ng, Z. Lin, “A new shape-adaptive DCT for coding of arbirtarily shaped image segments”,
Proceedings of the Acoustics, Speech, and Signal Processing, 2000. on IEEE International
Conference, Volume 04, year of pubblication 2000

[12] C.-H. Lee, J.-L. Shih, J.-D. Huang, Y.-Y. Chiang, “A new texture coding algorithm for arbitrarily shaped
video objects in MPEG-4”, Proceedings of the 2004 National Symposium on Telecommunications,
Keelung, December 2004

[13] Yi, Cho, Kim, Kim, Lee, “A new coding algorithm for arbitrarily shaped image segments”,
Signal Processing: Image Communication, Volume 12, Number 3, June 1998

[14] S. Patel, H. Shin, E. Lin , “Shape adaptive coding for arbitrarily shaped objects and interactive
streaming”, http://scien.stanford.edu/class/EE398B-2007/projects.htm, Standford University, 2007

[15] G. Shen, B. Zeng, M.L. Liou , “A new padding technique for coding of arbitrarily-shaped image/video
segments”, Proceedings of International Conference on Image Processing, Kobe, Japan, 1999

[16] G.Shen, B.Zeng, M.Liou, ”Arbitrarily shaped transform coding based on a new padding technique”,
IEEE Transactions on Circuits and Systems for Video Technology, Volume 11, Issue 1, Jan 2001

48
[17] Shen et al., ”Method and apparatus for coding an image object of arbitrary shape" - Patent No. US
6718066 B1, Apr. 6, 2004

[18] A. C. Yu, G. Shen, B. Zeng, O. C. Au, “Arbitrarily-shaped video coding: smart padding versus MPEG-4
LPE/Zero padding”, IEEE International Conference on Multimedia Expo (ICME), Taipei, 2004

[19] T. Ebrahimi, C. Horne, “MPEG-4 Natural Video Coding – an overview”, Signal Processing: Image
Communication, Vol. 15, Num. 4-5, 2000

[20] M. Ghanbari, “Standard Codecs: Image compression to Advanced Video Coding”, IEEE Press, 2003
reprinted 2008

49

Potrebbero piacerti anche