Elaborazione digitale di immagini

Transcript

Elaborazione digitale di immagini
Elaborazione digitale di
immagini
●
●
●
Una volta codificata un'immagine con un
numero (ovvero, una serie di numeri),
possiamo elaborarla a nostro piacimento!
Ovviamente, siamo interessati a elaborazioni
che hanno senso dal punto di vista
grafico
Nel seguito faremo alcuni esempi; è
indispensabile la sperimentazione in
laboratorio!
Elaborazione digitale di
immagini
●
●
Distinguiamo tre famiglie di elaborazioni:
–
trasformazioni geometriche
–
elaborazioni sul colore
–
filtri e convoluzioni
Ogni elaborazione può essere applicata
all'intera immagine o a una parte di essa
–
la selezione di parti è di per sé un argomento
interessante
Strumenti per l'elaborazione
digitale
●
●
●
●
In teoria, l'elaborazione digitale di immagini consiste
solo di qualche operazione matematica...
Ma in pratica, i dati in una qualunque immagine sono
talmente tanti che è impossibile elaborarla senza
usare un programma apposito
Noi useremo GIMP negli esempi e in laboratorio
Molto diffuso (ma a pagamento) è anche
Photoshop (in varie incarnazioni)
The GIMP
●
●
GIMP: un programma
open-source, gratuito,
disponibile su tutte le
piattaforme, potente
quanto le alternative
commerciali
Esiste anche in
versione per i film
Selezione di parti di immagine
●
Data un'immagine, esistono diversi criteri per
selezionare una sua parte
–
criteri geometrici
●
–
criteri colore
●
●
la selezione è la parte di immagine compresa entro
certi confini, indicati dall'utente
la selezione è la parte di immagine il cui colore
soddisfa certi criteri, indicati dall'utente
Altri criteri sono di uso particolare
●
es: la selezione è la regione corrispondente a un testo
appena aggiunto all'immagine
Selezione geometrica
●
●
Rettangolo ed elisse
selezionano aree con forma
geometrica regolare
Il “lazo” seleziona un'area di
forma
irregolare,
disegnata
a mano
dall'utente
Selezione per colore
●
●
La “bacchetta magica”
seleziona un'area contigua
con colori simili
La “palette” seleziona tutte le
parti
dell'immagine
con lo stesso
colore
(o simile)
Selezioni combinate
●
●
È poi possibile invertire, unire, rimpiazzare,
intersecare selezioni diverse, fino ad ottenere il
risultato desiderato
Esistono funzioni per allargare o restringere
l'area selezionata
–
●
per includere o escludere i dettagli del bordo
La selezione può essere salvata e caricata
indipendentemente dall'immagine
–
utile per lavorare su più immagini simili
Trasformazioni geometriche
●
●
Le trasformazioni geometriche cambiano
l'informazione spaziale dell'immagine
Casi tipici:
–
ingrandimenti e riduzioni
–
spostamenti, rotazioni
–
ribaltamenti, riflessioni speculari
–
ritaglio
Trasformazioni geometriche
●
Esempio:
–
selezioniamo la testa di Valentino con lo
strumento Ellisse e un bordo sfumato
–
lo spostiamo a destra (lasciando un buco)
–
lo ruotiamo di 30° in senso antiorario
–
lo incolliamo nella nuova posizione
Trasformazioni colore
●
●
●
Le trasformazioni colore alterano i colori
che compongono l'immagine, senza
alterarne l'aspetto geometrico
Possono essere applicate all'intera immagine
(o selezione) oppure separatamente ad ogni
piano colore
Si tratta di elaborazioni di natura più
“fotografica”
Trasformazioni colore
●
Fra le trasformazioni più comuni:
–
bilanciamento colore (viraggi e correzione)
–
tonalità e saturazione (colori più o meno vivi)
–
colore dominante (effetto “seppia”)
–
luminosità e contrasto (stile TV)
–
tagli con valori soglia (mette a 0 o al massimo certi colori)
–
regolazione dei livelli e curve colore (regolazione più fine con
ridistribuzione dei colori)
–
posterizzazione (riduzione numero colori)
–
desaturazione (elimina colori troppo accesi)
–
inversione (produce il negativo)
–
riscalatura (mappa range di colore su altri range)
Trasformazioni colore
●
I tre concetti fondamentali per capire le
trasformazioni colore:
–
canale: un piano dell'immagine in
organizzazione planare (di solito, R, G, B o C, M,
Y, K; eventualmente trasparenza)
–
istogramma: conteggio della frequenza dei
colori (quanti pixel dell'immagine hanno un dato
colore)
–
mappatura: funzione matematica, a volte
espressa graficamente, che trasforma un valore/
colore di ingresso in uno di risultato
Trasformazioni colore
Canali
●
Abbiamo già visto il
concetto di canali
Questi sono i canali R,
G, B
Trasformazioni colore
Canali
●
La stessa immagine può
essere divisa in canali di
diverso tipo:
Questi sono i canali C,K
M, Y, K
M
C
Y
Trasformazioni colore
Canali
●
In realtà, ogni canale può essere visto come
un'immagine a scala di grigi
–
●
●
indipendentemente dal fatto che a volte i programmi
“colorino” l'immagine di un canale con il colore a cui il
canale si riferisce
Alcune trasformazioni operano su un solo canale
alla volta, oppure su n canali
contemporaneamente – trattandoli però come n
immagini distinte in scala di grigi
Ogni pixel di un canale ha un'intensità
–
0%-100%, ovvero 0.0-1.0, ovvero 0-255, ...
Trasformazioni colore
Istogramma
●
●
●
L'istogramma colore mostra visualmente la
distribuzione dell'intensità all'interno di un
canale
–
Asse x: intensità del “colore”
–
Asse y: percentuale dell'immagine coperta da
quel “colore”
Tipicamente, si guarda o modifica un
istogramma alla volta...
... ma è anche possibile manipolare più
istogrammi in contemporanea
Trasformazioni colore
Istogramma
●
Esempio:
Trasformazioni colore
Mappatura
●
Una mappatura è una funzione matematica
arbitraria, che trasforma un valore di intensità
(ingresso) in un'altro (uscita)
–
●
Entrambi i valori devono essere nel range delle
intensità (0%-100% o codifiche varie)
Esempi:
–
m(x) = x
lascia tutto come sta
–
m(x) = 1-x inverte i valori
–
m(x) = x/2 dimezza tutte le intensità
Trasformazioni colore
Mappatura
Spesso una mappatura è espressa
graficamente tramite una curva:
ma
p
pa
tur
a
●
valore mappato (uscita)
valore originale
(ingresso)
Bilanciamento
●
●
Il bilanciamento consiste nell'effettuare una
mappatura su tutti i piani colore per cambiare le
dominanti colore
In altre parole, si aumentano o diminuiscono i
rossi, i verdi o i blu dell'immagine, in maniera
uniforme
●
●
●
+rosso = -ciano
+verde = -magenta
+blu = -giallo
-rosso = +ciano
-verde = +magenta
-blu = +giallo
Bilanciamento
●
Esempio:
Bilanciamento
Tonalità e saturazione
●
●
Simile al bilanciamento, ma si può applicare
a un solo colore primario alla volta anziché a
tutta l'immagine
Del colore selezionato possiamo regolare
separatamente tonalità, luminosità e
saturazione
Tonalità e saturazione
●
Esempio: schiariamo e sbiadiamo i gialli
Colore dominante
●
●
●
Questa trasformazione riduce l'immagine ai soli
valori (praticamente, a scala di grigi), impostando
tutti i canali secondo una tonalità, luminosità e
saturazione data
Si applica all'intera immagine
Notare che l'immagine rimane strutturalmente a
pieni colori – semplicemente, i colori usati la
rendono simile a una a scala di grigi
Colore dominante
●
Esempio: cambiamo la tonalità (aggiungendo
una dominante blu/violetta), la saturazione e la
luminosità per simulare una vecchia foto Kodak,
ormai quasi sbiadita:
Luminosità e contrasto
●
Queste due trasformazioni funzionano come
gli analoghi controlli sulle TV
α
●
β
La luminosità cambia
l'angolo di una mappatura
retta
●
Il contrasto cambia la forma di
una mappatura a “S” (ripidità
della parte centrale)
Luminosità e contrasto
●
Esempio:
Luminosità e contrasto
Valori soglia
●
●
●
Abbiamo già discusso l'effetto dei valori
soglia nella conversione da scala di grigi a
bianco e nero
Si applica lo stesso metodo a immagini a
colori (in base al canale di luminanza)
È anche possibile applicare due soglie per
effetti più complessi
–
tagli e negativi insieme
Valori soglia
●
Esempio:
soglia
Bianco
Nero
luminosità
Livelli e curve colore
●
●
●
Queste trasformazioni permettono di adottare
una mappatura arbitraria su canali arbitrari
Sono quelle che danno la massima libertà,
ma richiedono anche una comprensione del
meccanismo usato
Adatte a elaborazioni più fini
Livelli e curve colore
●
La regolazione dei livelli
consente di esprimere
mappature
sull'istogramma di un
canale
–
Si regolano il valore
minimo, il medio e il
massimo
–
I valori intermedi si
distribuiscono di
conseguenza
Livelli e curve colore
●
●
Le curve colore
consentono di disegnare
a mano una mappatura
arbitraria
È possibile definire solo
alcuni punti e lasciare
che gli altri valori si
adattino, oppure
disegnare a mano l'intera
curva
Livelli e curve colore
●
Esempio:
Curve colore
Posterizzazione
●
La posterizzazione consiste nella riduzione del numero
di colori
–
●
●
più precisamente, riduce il numero di valori distinti presenti in
uno o più canali
L'effetto è parametrizzato dal livello di posterizzazione
che controlla quanti colori devono rimanere
Corrisponde a una
mappatura a gradini
–
100%
il livello influenza il
numero e la dimensione
dei gradini
0%
intensità
Posterizzazione
ste
riz
za
Esempio:
livello=10
livello=5
po
●
Originale
livello=3
livello=2
Desaturazione
●
●
●
La desaturazione consiste nell'azzerare il
canale della saturazione
In pratica, tutti i colori diventano grigi
Notare che l'immagine rimane
strutturalmente a pieni colori –
semplicemente, i colori usati la rendono
simile a una a scala di grigi
–
comportamento analogo ad altre trasformazioni
Inversione
●
●
L'inversione si limita a fare il “negativo” del
canale o dei canali indicati
Corrisponde a una
mappatura a 45°
invertita
100%
0%
intensità
Inversione
●
Esempio: negativo di
un'immagine a colori
●
Esempio: negativo di
un'immagine in scala
di grigi
Riscalatura
●
●
●
Una serie di operazioni effettuano
riscalature, ovvero mappature su vari piani
che espandono o contraggono la gamma
cromatica
Si tratta in genere di operazioni automatiche
o semi-automatiche, con pochi parametri
Adatte ad usi particolari (per esempio,
regolazione dei colori nelle foto, o
adattamento ad usi televisivi)
Riscalatura
●
Fra le operazioni di riscalatura citiamo:
–
Equalizzazione
–
Bilanciamento del bianco
–
Accentuazione colori
–
Aggiustamento contrasto
–
Aggiustamento HSV
–
Normalizzazione
Filtri e convoluzioni
●
●
●
La terza e ultima famiglia di operazioni per
l'elaborazione delle immagini è quella dei
filtri e delle convoluzioni
Le elaborazioni di questa famiglia modificano
il valore (colore, trasparenza, ecc.) di un pixel
in base a un calcolo sui valori dei pixel vicini
Diversi tipi di calcolo producono effetti di tipo
diverso
Convoluzioni
●
In generale, la convoluzione è
un'operazione matematica (simbolo: *) che,
date due funzioni, ne produce una terza che
è calcolata come segue:
f ∗g t =∫ f  g t − d 
●
Nelle applicazioni grafiche, si usano
convoluzioni su funzioni bidimensionali
–
–
ogni funzione corrisponde a un canale
f e g possono anche essere lo stesso canale!
Convoluzioni
●
●
Nel caso della grafica, f e g saranno due
(canali di) immagini, e quindi rappresentabili
con funzioni a valori discreti (per esempio,
0-255) su domini limitati (pari alla risoluzione
delle immagini)
L'equazione precedente (su immagini di
M×N pixel) diventa quindi:
M
N
f ∗g  x , y=∑ ∑ f  x , y g  x −i , y − j 
i=0 j =0
Convoluzioni
●
L'applicazione delle convoluzioni in grafica può
essere più facilmente spiegata graficamente
come segue:
●
●
●
●
consideriamo una matrice n×n (di solito n è dispari), il cui
punto centrale viene fatto coincidere con un pixel
dell'immagine
moltiplichiamo i valori nella matrice con i valori dei pixel
corrispondenti, e sommiamo tutti i risultati
ll valore ottenuto è il valore del pixel centrale nel risultato
l'operazione viene ripetuta (spostando la matrice) per tutti
i pixel dell'immagine
Convoluzioni
●
Esempio:
0 ¼ 0
¼ 0 ¼
0 ¼ 0
matrice di
convoluzione
100
120
140
160
100
120
140
200
200 200
220 100
220 80
252 40
convoluzione
100
120
140
160
100
145
170
200
200 200
160 100
173 80
252 40
Convoluzioni
●
Esempio:
0 ¼ 0
¼ 0 ¼
0 ¼ 0
matrice di
convoluzione
100
120
140
160
100
120
140
200
200 200
220 100
220 80
252 40
convoluzione
100×0+100×¼+200×0+
120×¼+120×0+220×¼+
140×0+140×¼+220×0
100
120
140
160
=145
100
145
170
200
200 200
160 100
173 80
252 40
Convoluzioni
●
●
La matrice che si usa per contenere i
coefficienti della convoluzione è detta kernel
(nucleo) della convoluzione
Perché i valori numerici rimangano nel range
dei valori ammissibili (per esempio, 0-255),
occorre che la somma di tutti i coefficienti sia
1
–
altrimenti, l'immagine viene scurita o schiarita ad
ogni passaggio – può anche essere
desiderabile...
Convoluzioni
●
Kernel diversi producono effetti grafici diversi
●
Esempio:
–
0 ¼ 0
¼ 0 ¼
0 ¼ 0
sostituisce ogni punto (il punto centrale del kernel)
con la media dei quattro punti posti sopra, sotto, e
ai lati
–
il valore del punto centrale stesso viene ignorato...
–
in pratica, l'immagine viene un po' “sfumata” o
“sfocata”...
Convoluzioni
0 ¼ 0
¼ 0 ¼
0 ¼ 0
matrice di
convoluzione
convoluzione
Convoluzioni
●
Kernel diversi producono effetti grafici diversi
●
Esempio:
–
–
–
–
0 -1 0
-1 5 -1
0 -1 0
esalta il valore originale del punto, aumentandolo
tanto più quanto più i punti vicini sono diversi
in pratica, si aumenta il contrasto puntuale
dell'immagine
si interviene infatti sui punti, non sui colori!
si aumenta il contrasto solo dove ci sono bordi
Convoluzioni
0 -1 0
-1 5 -1
0 -1 0
matrice di
convoluzione
convoluzione
Convoluzioni
●
Kernel diversi producono effetti grafici diversi
●
Esempio:
0
1
0
1
-4
1
0
1
0
–
la somma dei coefficienti è 0: l'immagine finale
sarà più scura dell'originale...
–
nelle zone di colore uniforme, i 4 coefficienti 1 e il
-4 si annullano a vicenda: verrà nero
–
nelle zone di colore non uniforme, avremo invece
un valore diverso da 0
–
risultato: si evidenziano i bordi!
Convoluzioni
0
1
0
1
-4
1
0
1
0
matrice di
convoluzione
convoluzione
Convoluzioni
●
Kernel diversi producono effetti grafici diversi
●
Esempio:
–
–
–
–
0
-1
0
0
1
0
0
0
0
la somma dei coefficienti è 0: l'immagine finale
sarà più scura dell'originale...
non è detto che la matrice debba essere
simmetrica: qui, per esempio, conta solo la
differenza fra un pixel e il successivo
se ho due pixel consecutivi dello stesso colore, il
risultato è 0
evidenziamo i soli bordi verticali!
Convoluzioni
0
1
0
0
-1
0
0
0
0
matrice di
convoluzione
convoluzione
Convoluzioni
●
Kernel diversi producono effetti grafici diversi
●
Esempio:
2
1
0
1 0
1 -1
-1 -2
–
la somma dei coefficienti è 1: l'immagine finale
sarà luminosa come l'originale...
–
anche questa matrice non ha simmetria centrale:
c'è però una simmetria diagonale
–
sfida: chi riesce a immaginare l'effetto?
Convoluzioni
2
1
0
1 0
1 -1
-1 -2
matrice di
convoluzione
convoluzione
l'immagine appare come
se fosse in rilievo!
Convoluzioni
-2 -1
-1 1
0 1
0
1
2
matrice di
convoluzione
convoluzione
cambiando i segni,
l'immagine appare come
se fosse in bassorilievo
Convoluzioni
●
●
Esistono moltissime matrici di convoluzione
“classiche”, che hanno nomi che richiamano
l'effetto grafico prodotto
Spesso i programmi di grafica le mettono a
disposizione come operazioni “base”, con un
nome evocativo
–
●
ma sotto sotto, sono sempre convoluzioni!
I programmi migliori consentono di definire le
proprie matrici
–
È possibile ottenere così degli “effetti speciali”
Altri filtri
●
Esistono poi altri filtri, che applicano tecniche
analoghe alla convoluzione
–
●
●
per esempio: massimo e minimo dei pixel vicini
anziché somma pesata dei valori
I programmi di grafica offrono filtri per gli usi
più comuni
A volte è possibile definirne di propri, ma solo
scrivendoli in un qualche linguaggio di
programmazione
Altri filtri
●
●
Per esempio: i filtri dilata ed erodi allargano,
rispettivamente, le parti chiare e quelle scure
dell'immagine
–
ottenuti con calcoli di massimo e minimo fra i
vicini
–
utili per effetti da “macchiaioli”!
Naturalmente, come per la maggior parte dei
filtri, si perderà un po' di definizione
dell'immagine...
Altri filtri
Dilata
Erodi
Altri filtri
●
Altri filtri ancora consentono di eliminare i pixel
isolati
–
●
per esempio, un singolo pixel scuro su uno sfondo
tutto chiaro, o viceversa
Possono essere usati per “ripulire” un'immagine,
eliminando il disturbo o rumore sull'immagine
–
il disturbo può essere stato introdotto, per esempio,
da polvere sull'obbiettivo di una macchina
fotografica digitale
Altri filtri
●
Ci sono poi filtri che aggiungono rumore, o
comunque manipolano l'immagine
aggiungendo degli elementi casuali
Altri filtri
●
●
●
Infine, esistono filtri di tipo programmativo: la
loro azione è descritta da un programma in un
qualche linguaggio di programmazione
Si trovano spesso sul web raccolte di filtri di
questo tipo per gli effetti più disparati
Spesso simulano fenomeni fisici (lenti, fuoco,
colori che colano) o tecniche artistiche
(mosaico, vetrata, pastello, olio)
Esempi: filtri artistici
originale
su tela
pennarello
cubista
ad olio
mosaico
Esempi: filtri fisici
originale
lente
supernova
bagliori
stampa
sfogliato
Altri strumenti per il ritocco di
immagini
●
●
●
I programmi di editing di immagini mettono
spesso a disposizione altri strumenti
Pennello, stampino, testo, riempimenti,
sfumature, gomma, mascherature...
Vedremo il loro uso a laboratorio!
Riferimenti
●
●
●
●
●
Il manuale di GIMP, il programma di editing digitale di immagini che
usiamo, è (in Italiano) alla URL http://docs.gimp.org/it/index.html
La home page di GIMP è http://www.gimp.org, mentre quella di
Photoshop è http://www.adobe.com/products/photoshop/
– da entrambe si accede a numerosi link di approfondimenti
Approfondimenti (di tipo soprattutto matematico) sulle principali
trasformazioni sono reperibili (in Inglese) all'URL
http://www.ph.tn.tudelft.nl/Courses/FIP/frames/fip.html, nella sezione
“Algorithms”
Un'applet interattiva consente di giocare con le convoluzioni:
http://homepages.inf.ed.ac.uk/rbf/HIPR2/convolutiondemo.htm
Un testo classico di riferimento è Digital Image Processing, di Rafael C.
Gonzalez e Richard E. Woods, Prentice Hall, 2002