Sei sulla pagina 1di 21

$

'

Somme e sottrazioni in
Immagini e Suoni
Slide 1

A NDREA M ENNUCCI
Scuola Normale Superiore, Pisa

&

'

Spazio vettoriale

Uno spazio vettoriale V e` un insieme di vettori; due vettori v, w V possono essere sommati o
sottratti; oppure, preso un numero reale s lR, si pu`o eseguire il prodotto s v (che ha la stessa
direzione di v ma e` riscalato di un fattore |s|; se s > 0 allora s v ha lo stesso verso di v altrimenti ha
verso opposto).

Slide 2

Preso n intero positivo, lesempio principe di spazio vettoriale con n dimensioni e` lR n ,


linsieme di tutte le n-ple di reali; due vettori di lRn possono essere, ad esempio,
X = (x1 , . . . , xn ) , Y = (y1 , . . . , yn )
La somma e il prodotto si eseguono componente per componente:
X + Y = (x1 + y1 , . . . , xn + yn ) , s Y = (s y1 , . . . , s yn )
Y

lR2 e` associato al piano, mentre lR3 e` associato allo spazio fisico, usando
coordinate cartesiane.
&

'

Cosa e` unimmagine

Slide 3
Prendiamo una
immagine:

C ANALETTO , C AMPO

Slide 4

DI

R IALTO

&

'

Ingrandiamo molto un dettaglio: notiamo dei


quadratini, che sono detti pixel.
Ogni pixel P e` identificato da unascissa i e
unordinata j nel piano dello schermo, e dovrebbe essere pi`u correttamente indicato come
Pi,j .

&

'
Ogni pixel ha un colore, che e` dato da una combinazione addittiva di rosso, verde e blu:
questo modello del colore e` indicato dalla sigla RGB (dallinglese Red Green Blue).
La intensit`a di ognuno di questi 3 colori e` indicata da un numero, che assume convenzionalmente un valore
compreso fra 0 e 255. Il valore di un pixel e` cos` rapresentato da un numero a 3 coordinate, come ad es.
P = (R, G, B) = (122, 100, 76)

Slide 5

Tutti i colori che si possono visualizzare sono dunque contenuti in un cubo di lato 256. Il vertice (0, 0, 0)
rappresenta il nero, il (255, 255, 255) il bianco.
Se consideriamo una immagine alta 400 pixel e larga 500 pixel, essa sar`a specificata da
3 400 500 = 600.000
numeri compresi fra 0 e 255.
Possiamo pensare che ogni possibile immagine 400 500 sia un punto
X = (R1,1 , G1,1 , B1,1 , R1,2 , . . . , B1,500 , R2,1 , . . . , B400,500 )
in uno spazio vettoriale lR600.000 con 600mila dimensioni.

&

'

Combinazione convessa

Consideriamo due punti X e Y in uno spazio di vettori. La differenza V = Y X e` il vettore (tratteggiato nella figura) che parte dal
punto X e arriva ad Y ; dunque Y = X + V .

Y
Z

X
Slide 6

Sia ora s [0, 1] un numero reale compreso fra 0 e 1. Se moltiplichiamo s V otteniamo un


vettore pi`u corto di V , ma sempre orientato nella stessa direzione e verso; il punto Z che si
ottiene come
Z = X + s V = X + s (Y X) = X + s Y s X = (1 s) X + s Y
e` detto combinazione convessa dei due punti X e Y . Abbiamo visto nella formula come Z si
pu`o direttamente esprimere usando s, X, Y .
Ad esempio se scegliamo s = 1/2, allora Z =

X+Y
2

e` il loro punto medio.

La famiglia di tutti i punti Z che si ottengono al variare di s [0, 1] copre tutto il segmento fra
X eY.
&

'

Combinazione convessa di immagini

Abbiamo detto che una immagine pu`o essere vista come un vettore con 600mila coordinate; se
effettuiamo la combinazione convessa di due immagini, otteniamo una dissolvenza (in
inglese blend).

Slide 7
X=

, Y=

, Z=

&

$ blend.py

'

Cosa e` un suono

Laria che ci circonda e` un fluido comprimibile, approssimativamente sottoposto alla pressione di 1 atmosfera 101kP a; una perturbazione di questa pressione si propaga nello spazio (con legge matematica simile a quella che regola la propagazione delle onde del
mare, e delle onde elettromagnetiche).
Il nostro orecchio percepisce queste variazioni di pressione e le trasforma in impulsi nervosi.
Slide 8

Un microfono le trasforma in variazioni di un segnale elettrico; una cassa acustica trasforma


viceversa il segnale elettrico in suono.






Possiamo cos` interporre un computer fra il microfono e la cassa acustica, ed elaborare il


segnale a nostro piacimento.
&

'

La variazione di pressione rispetto alla pressione media diventa dunque una funzione f (t) del
tempo; questa viene registrata come un segnale elettrico, che rappresentiamo nel grafico a
sinistra. (In ordinata abbiamo il segnale, in ascissa il tempo).
f(t)

30000

Slide 9

20000

10000

10000

-10000

-10000

-20000

-20000

-30000
-10

Slide 10

f(t)

30000

20000

-30000
-5

10

-10

-5

10

Il segnale originale e` tempo-continuo: associa ad ogni possibile tempo t un valore f (t); per
registrare questo segnale in un computer (o in un CD), ci servirebbero infiniti numeri reali, e
questo non e` possibile. Ricorriamo al campionamento: registriamo un certo numero n di valori
di corrente in ogni secondo. Il risultato si vede nel grafico a destra. Vediamo anche in questo
semplice esempio che il campionamento comporta una perdit`a di qualit`a del segnale.
&

'

Nel caso dei CD Audio, si registrano 44.100 valori per ogni secondo, per ognuno dei due canali
audio stereo. Per un teorema dovuto a Nyquist, un segnale campionato a 44.100Hz non pu`o
rappresentare frequenze superiori a 22.050Hz ; queste frequenze vengono cancellate dai segnali;
queste frequenze sono per`o ai limiti di quelle che lorecchio pu`o sentire.

&

'

Somma e differenza
Presi due numeri reali L e R, calcoliamo la loro media M e la loro semidifferenza S
M=
Slide 11

L+R
RL
, S=
2
2

Conoscendo M e S, possiamo facilmente ricavare L e R come


L=M S , R=M +S

Applichiamo questa semplice trasformazione al canale sinistro L e destro R di un audio: in


questo caso prende il nome di metodo MID-SIDE (dallinglese); questo metodo ha due
importanti applicazioni.
&

'

Prima applicazione del MID-SIDE: stereo surround

Introduciamo un parametro s 0 reale in modo da definire due nuovi canali


=M sS , R
=M +sS
L
R.

Ascoltiamo il suono di L,

[$ audio.py -1]

=R
= M ; verr`a riprodotto la versione mono dellaudio
s = 0 si avr`a L
Slide 12

s (0, 1) si avr`a un effetto mono


= L, R
=R
s = 1 si ha il segnale stereo originale L
s > 1 si avr`a un effetto stereo surround
s=1,5

~
L

s=0.5

S
L
L

M
~
L

&

P ROBLEMA : C OSA SUCCEDE PER s < 0?

R
~
R

~
R

[vedremo la seconda applicazione nella slide 21]

'

MID-SIDE come cambio di coordinate


Consideriamo unistante di tempo t, e i valori dei segnali destro e sinistro R t , Lt allistante t:
questi valori giacciono in un quadrato nel piano; in questo piano, i corrispondenti valori M t , St
corrispondono a un sistema di coordinate ortogonali che sono ruotate rispetto alle originali.
Slide 13

R
S

M = L+R
, S = RL
2
2
L=M S , R =M +S

Abbiamo detto che i tre colori R, G, B di un pixel P giacciono in un cubo; anche in questo caso
pu`o essere utile effettuare un cambio di coordinate.
&

'

cambio di coordinate di colori

Siano R, G, B tre valori reali;


Y, Cr , Cb come

R+G+B

3
Y =
Cr = R

Slide 14

bianco

azzurro

definiamo

Y
verde

G+B
2

giallo
grigio

Cb = B G

blu

magenta

Questo si inverte con

R = Y + 3 Cr
G = Y 31 Cr 12 Cb

B = Y 31 Cr + 12 Cb

Cb
nero

rosso

Cr

I tre nuovi assi Y, Cr , Cb sono ortogonali (ma non ortonormali).


&

Questa e` una versione semplificata della definizione ufficiale; si veda in http://en.wikipedia.org/wiki/YCbCr

'

Per chi conosce le matrici, la trasformazione si scrive anche come


R


Cr = M G


Cb
B

Slide 15



R
Y


1
G = M C r


B
Cb

1
3

con M =
1
0

1
3

1
3

21

12

1
1

2
3

1
con M 1 =
1 3
1 31

12

1
2

&

'

Per capire lutilit`a di questa trasformazione, introduciamo 3 parametri reali y, cr , cb . Prendiamo una
in questo modo: prima trasformiamo il colore di
immagine X. Possiamo costruire una nuova immagine X
ogni pixel di X come visto sopra
0 1
0 1
Y
R
B C
B C
B Cr C = M B G C
@ A
@ A
Cb
B
poi moltiplichiamo
Y = y Y,

Slide 16

Cr = cr Cr ,

b = c b Cb
C

indi ricreiamo i colori


0 1
0 1

R
Y
B C
B C
BG
C = M 1 BC
C
@ A
@ rA

B
Cb

e li inseriamo nel pixel dellimmagine X.

[$ rgb.py -1]

................................................................................................
Confrontiamo questa trasformazione con una pi`u semplice, in cui, scelti tre parametri reali r, g, b, si pone

&

= r R,
R

= g G,
G

=bB
B

'

Slide 17

Slide 18

La trasformazione Y, Cr , Cb viene usata nei televisori a colori PAL. Un televisore in bianco e


nero visualizza solo il segnale Y , cio`e, solo la versione in bianco e nero del video. Quando fu
deciso di passare dalla televisione in bianco e nero alla televisione a colori, furono aggiunti i
segnali Cr , Cb . Il bottone colore del telecomando permette di aumentare i valori c r = cb
(contemporaneamente). Il bottone contrasto del telecomando permette di cambiare il valore y.

&

'

La precedente trasformazione contrae le immagini verso il nero (che e` un vertice del cubo); per
questo, non e` facile vedere cosa essa faccia; notiamo infatti che gli assi Cr , Cb , se posizionati
al vertice nero del cubo, escono dal cubo; per verde
questo motivo, quando y = 0, le immagini sono
molto scure.
Per evitare questo problema, proponiamo anche
una trasformazione alternativa, in cui spostiamo
gli assi dei colori al centro del cubo (il punto
grigio), come in figura a lato.

G
bianco

azzurro

Y
B

Cb

giallo

grigio
blu

nero

magenta

Cr
rosso

Questo equivale a usare le trasformazioni


Y = y (Y 128) + 128,
= r (R 128) + 128,
R

Cr = cr Cr ,

= g (G 128) + 128,
G

&

Cb = cb Cb
= b (B 128) + 128
B
%

'

Decibel

I decibel sono un sistema logaritmico usato per esprimere il rapporto fra due valori x e x
; la
formula e`
x
.
10 log10
x

I decibel sono dunque una misura relativa; se esprimiamo il valore di x in decibel,


convenzionalmente dobbiamo sapere rispetto a quale x
esso e` misurato.
Slide 19

In acustica viene misurato il livello di pressione sonora I; in questo caso, il valore


convenzionale e` I = 20P a = 20 106 P a.
In fisica, la legge di Ohm
P = i2 R
lega corrente i, resistenza R e potenza P ; se i e` una corrente di riferimento, e P = i2 R allora il
valore delle potenze e delle correnti espresse in decibel e` legato da
 
 2 
 
P
i R
i
10 log10
= 10 log10
= 20 log10
i2 R
i
P
&

Per saperne di pi`u: http://en.wikipedia.org/wiki/Decibel

'

Vantaggi:
Molti apparecchi (filtri, amplificatori, etc.) trasformano il segnale di input in quello di
output moltiplicandolo per una certa costante, detta guadagno: se esprimiamo il guadagno
in decibel, allora i guadagni di strumenti in serie si sommano.
lintensit`a sonora come percepita dal nostro orecchio si adatta bene a una scala logaritmica
Slide 20

(per questo, gli strumenti che mostrano lintensit`a sonora sono sempre logaritmici, e similmente i
regolatori di volume degli amplificatori)

.......................................................................................
Unaltro uso molto comune dei decibel e` nellesprimere il rapporto fra il segnale e il rumore
(in inglese SNR): se ho un segnale originale S che ha una certa potenza P S e a questo si somma
un rumore con una potenza PR , il rapporto segnale/rumore si esprime in decibel come


PS
SN R = 10 log10
PR
&

10

'

Quantizzazione

Slide 21

Lunit`a elementare di informazione nel computer e` il bit, che e` una cifra binaria; 8 bit sono
raggruppati in un byte: un byte pu`o dunque rappresentare un numero intero positivo fra 0 e
28 1 = 255. Per indicare ogni colore di un pixel viene usato un byte: il colore non pu`o
dunque assumere una tonalit`a a piacere fra 0 e 255, ma solo una tonalit`a intera: diremo che il
colore e` quantizzato usando 8 bit.
Allo stesso modo, per rappresentare un campione di un suono vengono usati 2 byte, cio`e 16 bit;
uno di questi bit rappresenta il segno, gli altri 15 il valore: il campione sonoro assume valori
interi fra (215 1) = 32767 e 215 = 32768. Laudio e` quantizzato usando 16 bit.
Nei ragionamenti fatti fino ad ora, per semplificare, abbiamo ignorato questo fatto, e supposto
che i numeri che usati per rappresentare suoni e immagini fossero numeri reali.
&

'

Per risparmiare spazio, possiamo decidere di usare meno bit per rappresentare i numeri; ecco un
esempio, partendo da valori espressi con 8bit

Slide 22

8bit

6bit

4bit

2bit

45 = 001011012

44 = 001001002

32 = 001000002

0 = 000000002

152 = 100110002

152 = 100110002

144 = 100100002

128 = 100000002

233 = 111010012

232 = 111010002

224 = 111000002

192 = 110000002

In questo caso abbiamo sostituito i bit non disponibili con degli zeri: questo equivale a un
arrotondamento verso il basso; un risultato migliore si ottiene con un miglior arrotondamento
8bit

6bit

4bit

2bit

45 = 001011012

45 = 001011012

39 = 001001112

31 = 000111112

152 = 100110002

153 = 100110012

151 = 100101112

159 = 100111112

233 = 111010012

233 = 111010012

231 = 111001112

207 = 110111112

infatti in questo caso lerrore di arrotondamento a 4bit e` 8 mentre nel primo caso poteva
essere anche di 15.
&

11

'

Un simile sistema si pu`o applicare anche a numeri con segno; il seguente grafico mostra come
arrotondare numeri a 8bit con segno (che hanno valori fra -127 e 128) per usare solo 4 bit (cio`e
16 valori):
200

quantizer r16:19
x

150

100

Slide 23

50

-50

-100

-150

-200

-150

-100

-50

50

100

150

&

in verde il valore originale, in rosso il valore


quantizzato

'

Per esempio, riprendiamo il suono campionato visto in pagina 8, e lo quantizziamo a 4 bit (con
cio`e 16 possibili valori in ordinata)
f(t)

30000

Slide 24

20000

20000

10000

10000

-10000

-10000

-20000

-20000

-30000
-10

f(t) 4bit

30000

-30000
-5

10

-10

-5

10

abbiamo un ulteriore perdita di dettagli.


&

12

'
La perdita di dettagli e` ancora maggiore se il segnale ha un volume pi`u basso
f(t)

30000

Slide 25

20000

20000

10000

10000

-10000

-10000

-20000

-20000

-30000
-10

f(t)

30000

-30000
-5

10

-10

-5

10

per evitare questo problema, si pu`o ricorrere allo stratagemma dello scalefactoring: alzare il
volume del segnale (moltiplicando per una costante) prima di quantizzare; dopo aver elaborato il
segnale, al momento di riprodurlo, il volume verr`a riabbassato per tornare al volume originale.
&

'

Quantizzazione come rumore

Slide 26

Come possiamo capire cosa effettua la quantizzazione? Sottraendo il segnale quantizzato da


quello originale! la differenza sar`a tanto pi`u piccola quanto pi`u bit usiamo nel quantizzare; se
usiamo k bit, allora il rapporto fra il pi`u grande segnale che possiamo rappresentare e
larrotondamento sar`a 2k che espresso in decibel di potenza sar`a
20 log10 (2k ) = k 20 log10 (2) 6 k
Cos` ogni bit in pi`u permette di avere circa 6db di miglioramento nel rapporto SNR fra segnale
e rumore di quantizzazione; ad esempio, laudio dei CD ha circa 90db di rapporto SNR (che e`
molto di pi`u di quello che i riproduttori CD possono rendere!).
Lo scalefactoring serve dunque a ridurre il rapporto fra il segnale e il rumore di quantizzazione,
per portarlo quanto pi`u vicino possibile al valore teorico visto sopra.
&

13

'

Seconda applicazione del MID-SIDE: MP3

Ricordiamo la trasformazione mid-side vista nella slide 11:


M=

Slide 27

RL
L+R
, S=
2
2

L=M S , R=M +S

Nei file audio musicali, il canale S contiene meno energia ed informazione del canale M : per
questo motivo i file MP3 codificano laudio non come L, R ma come M, S, e dedicano meno bit
al canale S.
In certi casi e` possibile codificare il canale S con solo 6bit, e il canale M con 10bit, e avere un
suono soddisfacente. In questo modo il file audio avrebbe una dimensione del
(10 + 6)/32 = 50% delloriginale
(Il sistema di codifica MP3 e` molto pi`u efficace di questo: un file compresso a 128kbit e` solo il 9% del
file originale)

&

[$ audio.py -2]

'

P ROBLEMA : Abbiamo detto che nei computer laudio e` quantizzato; negli algoritmi i valori in
M, S sono arrotondati a un intero,
Slide 28

M = int(

L+R
RL
) , S = int
2
2

allora, come possiamo avere


?

L=M S , R=M +S

&

14

'

Seconda applicazione del Y, Cr , Cb : immagini e video

Il nostro occhio e` molto meno sensibile alle variazione di colore che alle variazione di
luminosit`a: per questo motivo le immagini e i video non sono codificati come R, G, B ma come
Y, Cr , Cb , e vengono dedicati pi`u bit al canale Y e meno bit ai canali Cr , Cb . Questo avviene
nei file JPEG, nei file DIVX, nei DVD, e (in un certo senso) anche nella comune televisione a
colori.
Slide 29

&

'

[$ rgb.py -2]

Codici di compressione di dati

Quando scriviamo una informazione nel computer, dobbiamo usare dei bit; se per esempio
abbiamo una stringa di 80 caratteri scelti fra a,b,c,d
babaccbabaaddacbaababbacddbaaadaadabaabcaaaaacbbcababacaacdaaaabaaaabccaaaabaaaa

Slide 30

possiamo usare 2bit per rappresentare un carattere, e usare 160 bit per scrivere la stringa.
Se per`o esaminiamo pi`u attentamente, notiamo che vi sono molte a, seguite da poche b, e meno
c, d: riscriviamo la stringa usando un codice decodificabile
x=

c(x)

01

001

000

Il risultato e`
0110110010010110111000000100101110110101100100000001111000110001011
1010011111100101010011011011001110010001111011111010010011111011111

che consta di soli 134 bit, cio`e circa 1,6 bit per ogni carattere.
Il trucco consiste nel usare una rappresentazione corta per le lettere pi`u probabili, e lunga per le
meno probabili. Questa idea e` alla base della teoria dei codici, e si collega a idee molto
interessanti come la informazione, la entropia, e la probabilita` .
&

15

'

Trasformate wavelet

Abbiamo applicato lidea MID-SIDE confrontando due segnali audio L e R coordinata per
coordinata; applichiamo la stessa idea a unimmagine X, ma usando di volta in volta pixel
contigui.

Slide 31

P Q P Q P Q
Siano dunque P e Q due pixel contigui (ognuno X= P Q P Q P Q
P Q P Q P Q
caratterizzato dai suoi 3 colori); definiamo
M=

QP
Q+P
, D=
2
2

Se limmagine originale e` 400x500, otterremo due


immagini H e L rispettivamente composta dei ri- L=
sultati M e D; sia H che L avranno dimensioni
200x500.

MMM
MMM
MMM

D D D
H= D D D
D D D

In questa figura sono evidenziate con colori diversi due diverse operazioni mid-side.

&

'

Slide 32

X=

LH=

Questi a destra sono i risultati che si ottengono lavorando su pixel contigui in senso orizzantale.
Notate che nelle immagini di tipo H i valori oscillano fra -128 e +128: nella loro
rappresentazione si associa -128 al nero , 0 al grigio, e 128 al bianco.
&

16

'

Slide 33

Questi sono i risultati che si ottengono lavorando su pixel contigui in senso verticale
&

'

Possiamo inoltre eseguire due operazioni midside , una orizzontale e una verticale:

LL

HL

LH

HH

Slide 34

Otteniamo una scomposizione dellimmagine precedente in 4 immagini dette LL HL LH e HH;


queste sono poi rappresentate contigue in un quadrato.
Questa si chiama trasformata wavelet di Haar dell immagine originale. La trasformata e`
invertibile.
&

17

'
Successivamente ripetiamo la cosa ma sullimmagine LL: otteniamo 7 immagini, incapsulate in
un quadrato secondo lo schema a destra

2LL 2HL
2LH 2HH

Slide 35

LH

HL

HH

&

'

e successivamente
3LL 3HL
3LH 3HH

2HL

2LH 2HH

HL

Slide 36

LH

&

HH

18

'

dato che limmagine originale e` 256 x 256,possiamo scendere di 8 livelli


3HL
3LH 3HH

2HL

2LH 2HH

HL

Slide 37

LH

HH

Notiamo una cosa molto interessante: in questa immagine i punti sono quasi tutti grigi, cio`e i
valori sono quasi tutti zero.

&

'

Esistono molte altre wavelet, in cui i metodi per calcolare la media e la differenza sono pi`u
sofisticati; ma lidea di base rimane la stessa. Negli esempi successivi useremo la wavelet CRF.
.......................................................................................
Trasformiamo il C AMPO

DI

R IALTO (fino a profondit`a 5)

Slide 38

Un istogramma mostra che i valori assunti dai pixel sono in genere molto piccoli:
&

19

'

25000

8000

Level 1 Subband 1 [-124:135]

Level 0 Subband 0 [-128:127]

7000
20000
6000

5000

15000

4000

Slide 39

10000

3000

2000
5000
1000

-100

-50

50

100

-100

-50

50

100

a sinistra abbiamo listogramma dei valori assunti dai pixel dellimmagine trasformata, a destra
dellimmagine Campo di Rialto originale.

&

'

Moderna compressione di immagini


Slide 40

Mettiamo insieme tutte le idee viste oggi: la rappresentazione Y, Cr , Cb del colore, la


trasformata wavelet, la quantizzazione, la rappresentazione usando un codice dove i simboli pi u`
probabili usano meno bit: queste sono alla base di una tecnica per comprimere le immagini che
si chiama JPEG2000.

&

20

'

Slide 41

A sinistra una versione ottenuta usando JPEG, e a destra una versione con JPEG2000; entrambe
usano circa 0,7 bit per pixel (contro gli originali 24bit per pixel).
&

'

Bibliografia
La compressione dei dati (testi e immagini) e` trattata nel saggio:
Carlini, Paolo,La compressione dei dati : dalla teoria alla pratica , Milano : Hoepli, c1998.
Slide 42

La percezione visiva delluomo e` stata studiata nel testo (fondamentale):


David H. Hubel, Eye, brain, and vision. American scientific library, 1988
La codifica audio MP3 e` descritta (molto tecnicamente) in:
K. Brandenburg, capitolo 2 in Applications of digital signal processing, Kluwer academic
publisher, 1998
Queste slide si trovano in
http://dida.sns.it/dida2/Members/mennucci/pdf1
&

21

Potrebbero piacerti anche