Capitolo 1 Operazioni locali: Edging

Transcript

Capitolo 1 Operazioni locali: Edging
Capitolo 1
Operazioni locali: Edging
Nei primi stadi della visione (early stages of vision) alcune caratteristiche intrinseche, rilevanti per
identificare gli oggetti della scena sono estratte dall’immagine.
Tali caratteristiche elementari (di basso livello) decompongono la scena in oggetti o regioni
che sono relativamente omogenei rispetto ad uno o più dei seguenti attributi: livello di grigio
(intensità), colore, tessitura, distanza, movimento, natura del materiale, stato superficiale degli
oggetti, ecc..
Di conseguenza, l’immagine presenta regioni con brusche discontinuità in alcuni degli attributi
sopra indicati.
In questo capitolo siamo interessati alla ricerca di pixel dell’immagine ove si verificano tali
discontinuità che sono tipicamente associati ai bordi (Edge) degli oggetti, o, più in generale, a zone
di confine tra regioni dell’immagine con differenti attributi.
L’operazione di estrazione degli Edge di una immagine risulta ancora oggi essere una operazione
fondamentale per l’analisi delle immagini.
In questo capitolo, saranno descritti gli algoritmi più comuni per determinare i bordi con
operatori locali (Local Edge Detector - LED).
Tali algoritmi assegnano un valore di bordo a ciascun pixel ma nessuna informazione è generata
per legare insieme i vari pixel di bordo (Link Edge) per formare segmenti di bordo.
Altri algoritmi saranno descritti nel seguito per collegare insieme i pixel di edging appartenenti
ad uno stesso contorno.
Gli algoritmi LED sono Operatori Locali che determinano le variazioni locali dei valori di livello
di grigio dell’immagine oppure le variazioni locali della derivata prima della funzione intensità.
Tali discontinuità locali nelle vicinanze dei bordi possono essere di vario tipo. Una breve descrizione
di tali discontinuità ed una rappresentazione grafica sul profilo dei bordi viene dato di seguito.
L2
DL
L1
i0
L1
i
(a)
L2
L2
L1
i0
i
(b)
a
L1
i0
i
(c)
Figura 1.1: Discontinuitá: (a) a gradino (b) a linea, (c) lineare.
Discontinuità a gradino (Step-Edge): è il caso ideale in cui i valori di intensità cambiano bruscamente da un dato valore (associato ai pixel di una regione) a un valore diverso (associato ai
pixel di una regione adiacente differente) come rappresentato in figura 1.1a.
Discontinuità a linea: è un altro caso ideale in cui i valori di intensità cambiano bruscamente
per pochi pixel adiacenti per poi ritornare immediatamente ai valori iniziali (figura 1.1b).
27
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
28
A causa della instabilità dei dispositivi di acquisizione, che producono componenti di bassa
frequenza non volute, le brusche discontinuità a gradino e a linea, nelle immagini reali si presentano
con profili diversi e si trasformano nelle seguenti discontinuità.
Discontinuità lineare (Ramp Edge): le discontinuità a gradino si trasformano in discontinuità
lineare con un andamento meno brusco e più continuo, interessando diversi pixel (figura 1.1c).
Discontinuità lineare con salita e discesa (Roof Edge): trasforma una discontinuità a linea in
una doppia discontinuità lineare con salita e discesa, interessando diversi pixel che rappresentano
una regione di separazione tra aree adiacenti omogenee (figura 1.2).
Nelle immagini reali si possono verificare discontinuità generate dalla combinazione di discontinuità a gradino e a linea (figura 1.3).
I contorni di una regione o di un oggetto sono generati normalmente dalle discontinuità a
gradino poichè le variazioni di livello di grigio tra fondo e oggetto sono evidenti.
Le variazioni di intensità locale delle discontinuità possono essere valutate in modo quantitativo
attraverso tre grandezze:
• altezza della rampa (variazione del livello di intensità),
• inclinazione della rampa,
• posizione orizzontale del pixel centrale nel tratto di rampa.
L2
L2
L1
L1
L1
i0
i
L1
i0
i
Figura 1.2: Discontinuitá lineare con salita e discesa.
La peculiarità degli algoritmi LED, oltre a determinare i pixel di bordo, è quella di stimare con
buona approssimazione la loro posizione nell’immagine. Nelle immagini reali, questo è reso difficile
L2
L3
L1
i0
i
i
Figura 1.3: Combinazione di discontinuità a gradino ed a linea.
per la presenza del rumore, e le variazioni di intensità locale non sempre sono causate da variazioni locali geometriche nella scena, ma sono dovute a componenti di luce speculare riflessa ed/o
riflessione multipla della luce.
In figura 1.4, è mostrato il profilo dei livelli di grigio di una immagine reale, notiamo come
localmente le discontinuità sono solo una approssimazione delle discontinuità ideali a gradino ed a
linea. Gli algoritmi LED possono essere raggruppati nelle seguenti categorie:
• Operatori basati sulla differenziazione
• Operatori basati sull’approssimazione del modello di Edge
Gli operatori della prima categoria prevedono due fasi: l’analisi spaziale e il calcolo dei bordi.
Con l’analisi spaziale una immagine è elaborata per esaltare tutte le discontinuità significative
presenti per produrre una immagine gradiente.
Con la seconda fase, il calcolo dei bordi, dall’immagine gradiente si passa al calcolo della
localizzazione dei bordi associati alle discontinuità determinate nel processo di differenziazione.
1.1. DEFINIZIONI
29
250
200
150
100
50
0
50
100
150
200
250
300
350
Figura 1.4: Profilo dei livelli di grigio per una linea dell’immagine.
Gli operatori della seconda categoria si propongono di approssimare regioni omogenee dell’immagine a modelli predefiniti di discontinuità a gradino o a linea, operando nello spazio geometrico.
Gli algoritmi LED della prima categoria, basati sulla geometria differenziale, possono essere
ulteriormente raggruppati, in algoritmi che fanno uso della derivata del primo ordine, e della
derivata del secondo ordine, entrambi nel dominio spaziale.
1.1
Definizioni
Prima di descrivere gli algoritmi LED è utile considerare alcune definizioni e termini che saranno
essenziali nel seguito.
Elemento di bordo Un elemento di bordo è un punto dell’immagine localizzato dalle coordinate
(i,j) dove si verifica una discontinuità del valore di intensità.
Tratto di bordo è costituito da un insieme di punti di bordo allineati in modo rettilineo, ed
è caratterizzato dalle coordinate (i,j,θ) che localizzano il tratto di bordo (per esempio un
estremo del bordo) nel piano immagine nella posizione (i,j) ed è orientata di un angolo θ
rispetto ad un asse di riferimento (per esempio l’asse orizzontale).
LED algoritmo Local Edge Detector è un algoritmo che genera un insieme di componenti bordi
(elementi e tratti) presenti in una immagine.
Contorno è una lista di bordi (elementi e tratti) che normalmente rappresenta (delimita o racchiude) una regione omogenea o un oggetto presente nell’immagine. Un contorno può essere rappresentato da una curva descritta matematicamente da una funzione che modella
(approssima) una lista di bordi.
Connessione dei bordi Il concatenamento dei bordi è un processo che si propone di collegare
frammenti di bordo appartenenti ad uno stesso contorno. Tale contorno risulta interrotto con
frammenti di bordo mancanti a causa del rumore presente nell’immagine. I risultati finali di
tale processo conducono ad una lista ordinata di tali bordi.
Inseguimento dei bordi Il processo di inseguimento dei bordi partendo da un elemento o frammento di bordo si propone di ricercare tutti i bordi associati ad uno stesso contorno. In altre
parole produce una lista ordinata di bordi.
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
30
Nel seguito con la parola bordo si intende in modo interscambiabile sia l’elemento che il
frammento di bordo.
I bordi individuano pixel nell’immagine ai confini tra regioni che sono relativamente omogenee
rispetto ad uno o più dei vari attributi: valori di grigio, colore, tessitura, movimento, cambiamenti
di forma, ecc..
Nel modello consolidato di percezione visiva, basato sul paradigma “dai segnali ai simboli”,
nei primi livelli della percezione, i bordi sono le prime informazioni (dati grezzi) fondamentali ai
processi intermedi e finali della visione che trasformano tali informazioni in una rappresentazione
più utile ed esplicita della scena.
Sono l’insieme dei bordi, estratti dagli algoritmi LED, che vengono utilizzati per partizionare
l’immagine in regioni omogenee che identificano particolari attributi degli oggetti della scena.
Gli algoritmi dei livelli intermedi e finali della visione, devono comunque tener conto che a
causa del rumore tra i bordi estratti, vi sono bordi artefatti, bordi mancanti e bordi falsi.
Nel seguito sono descritti diversi operatori per l’estrazione dei bordi.
Tali operatori in analogia a quanto fatto per gli operatori di smoothing saranno definiti come
filtri e si dovranno determinare in modo appropriato i coefficienti della maschera di convoluzione
(risposta impulsiva del filtro) e la funzione di trasferimento.
Saranno descritti anche alcuni filtri di Edge (Passa - alto) nel dominio delle frequenze.
Ed infine per analizzare l’efficacia di alcuni filtri nel dominio spaziale, si analizzeranno anche
nel dominio delle frequenze.
1.2
Filtro del Gradiente
I filtri di smoothing eliminano le strutture di alta frequenza presente nell’immagine.
Al contrario, i filtri di Edging devono esaltare le strutture di alta frequenza ossia le discontinuità
dei valori di intensità, ed eliminare le basse frequenze, ossia le piccole variazioni di valori di intensità.
Un operatore matematico che meglio evidenzia le discontinuità di una funzione è l’operatore di
derivata prima.
Per una immagine bidimensionale f (x, y), le derivate parziali prime ∂f /∂x e ∂f /∂y definiscono
le discontinuità dell’immagine nella direzione degli assi coordinati x e y.
L’orientazione dei bordi nell’immagine non necessariamente coincide con gli assi coordinati. Ne
consegue la necessità di calcolare le derivate direzionali dell’immagine f per ogni punto (x, y) nella
direzione r di massima discontinuità dei livelli di grigio (massimo locale della derivata di f) come
rappresentato in figura 1.5.
y
f(x)
x
f(x,y)
Bordi
a
q2
A
fx(x)
fy
qg
x
fx
x
Figura 1.5: Profilo di una discontinuitá in termini di gradiente e sua rappresentazione grafica.
L’operatore che presenta queste caratteristiche è il gradiente. Il gradiente di f (x, y) nel punto
A nella generica direzione r con angolo θ è dato da:
∂f ∂x ∂f ∂y
∂f
∂f
∂f
=
+
=
cos θ +
sinθ
∂r
∂x ∂r
∂y ∂r
∂x
∂y
(1.1)
1.2. FILTRO DEL GRADIENTE
31
Siamo interessati al valore massimo del gradiente ∂f /∂r, orientato nella direzione di massima
variazione della funzione f . Questo è ottenuto derivando la funzione gradiente rispetto a θ e
ponendo uguale a zero, come segue:
∂f
∂ ∂f
∂f
cos θ = 0
(1.2)
= − sinθ +
∂θ ∂r
∂x
∂y
da cui
θgmx (x, y) = arctan(fy /fx )
(1.3)
dove θgmx (x,y) è la direzione di massima variazione di f (ossia la direzione perpendicolare all’edge)
rispetto all’asse x, con fx ed fy le derivate parziali di f , rispettivamente, rispetto all’asse x ed
all’asse y.
Viene d’ora in poi chiamato vettore gradiente il valore massimo della derivata (∂f/∂r) gmx nella
direzione di massima variazione, che in notazione differenziale è definita da:
Gradf = ∇f =
∂f
∂f
i+
j
∂x
∂y
(1.4)
dove i e j sono in questo caso, i vettori unitari degli assi coordinati x ed y rispettivamente.
Una misura quantitativa della massima variazione di f nella direzione definita dal gradiente
∇f è dato dal modulo del vettore gradiente definito come
|∇f | = fx2 + fy2
(1.5)
Il modulo e la direzione del gradiente sono indipendenti dalle coordinate (x, y) del sistema di
riferimento.
Questo può essere dimostrato considerando che l’immagine f è una funzione scalare il cui
valore dipende solo dal pixel A e non dalle sue coordinate (x, y). Inoltre, se si considera in A, un
vettore unitario s, coincidente con la direzione r, risulta anche indipendente dalla scelta degli assi
coordinati. Pertanto, la derivata Ds f di f rispetto alla direzione r nella forma di prodotto interno
tra vettori risulta:
∂f
Ds f =
= s · ∇f = |s| |∇f | · cos α = |∇f | cos α
(1.6)
∂r
dove α è l’angolo tra il vettore unitario s ed il vettore gradiente ∇f.
Il valore della derivata Ds f è massimo quando cos α = 1 che si verifica con α = 0◦ e conseguentemente Ds f = |∇f |.
Questo dimostra l’asserzione che il modulo e la direzione del gradiente di f sono indipendenti
dalla scelta delle coordinate di riferimento (Proprietà del Gradiente).
Riassumiamo i risultati fin qui conseguiti allo scopo di applicare la funzione gradiente per il
calcolo dei bordi.
1. La derivata direzionale o gradiente direzionale della funzione immagine f esprime una misura
delle variazioni di intensità di f rispetto ad una direzione r:
Ds f =
f
= fx cos θ + fy sin θ
r
2. Il vettore gradiente ∇f ha le componenti coincidenti con le derivate parziali della funzione f
rispetto agli assi coordinati x ed y:
∇f = fx i + fy j
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
32
3. Il vettore gradiente ∇f ha la direzione corrispondente alla derivata Ds f coincidente con il
massimo valore delle variazioni di intensità dell’ immagine. Risulta perpendicolare al bordo
e rispetto all’asse x, ha un angolo dato da:
θgmx = arctan(fy /fx )
4. Il modulo del gradiente è definito come:
∇f =
fx2 + fy2
Per ridurre la complessità computazionale il modulo del gradiente può essere approssimato
considerando i valori assoluti:
|∇f | ∼
= |fx | + |fy |
oppure
|∇f | ∼
= max (|fx | , |fy |)
5. Il modulo |∇f| e la direzione θ gmx del gradiente sono indipendenti dalla scelta del sistema di
riferimento, ossia sono invarianti con la rotazione degli assi coordinati.
6. Quest’ultima proprietà evidenzia inoltre che il modulo del gradiente è indipendente dall’orientazione locale del bordo. Da ciò consegue che il filtro gradiente è un operatore locale
isotropo.
1.3
Approssimazione del filtro Gradiente
Per una immagine digitale di dimensione N×N, il vettore gradiente (modulo ed orientazione) può
essere approssimato sostituendo la differenziazione in due direzioni ortogonali lungo i rispettivi assi
coordinati con le differenze finite sempre nelle rispettive direzioni x ed y.
Le seguenti approssimazioni sono date per le righe:
fx (i, j) = f (i, j + 1) − f (i, j)
Differenza in avanti
Differenza all’indietro
fx (i, j) = f (i, j) − f (i, j − 1)
fx (i, j) = 21 [f (i, j + 1) − f (i, j − 1)] Differenza simmetrica
analogamente per le differenze nelle colonne:
fy (i, j) = f (i + 1, j) − f (i, j)
Differenza in avanti
fy (i, j) = f (i, j) − f (i − 1, j)
Differenza all’indietro
fy (i, j) = 12 [f (i + 1, j) − f (i − 1, j]) Differenza simmetrica
Queste approssimazioni conducono alle seguenti
maschere di convoluzione h:
1•
+
+
hR = −1• 1
hC =
−1
−
hR =
−1 1•
−
hC =
1
−1•
⎤
1
s
s
hR = 2 −1 0 1
hC = 12 ⎣ 0 ⎦
−1
dove gli indici R e C in h identificano rispettivamente le maschere di convoluzione per calcolare il
gradiente lungo le righe e le colonne.
Il simbolo • indica il pixel in elaborazione nel caso di maschere asimmetriche (con due elementi
nel caso precedente).
I simboli (+, -, ed s) indicano rispettivamente le maschere di convoluzione calcolate rispettivamente con la differenza in avanti, all’indietro e simmetrica.
1
⎡
1.3. APPROSSIMAZIONE DEL FILTRO GRADIENTE
33
Con le approssimazioni cosı́ calcolate, le componenti di gradiente fx ed fy sono localizzate non
alle stesse coordinate del pixel in elaborazione (pixel di sinistra, di destra oppure di centro) ma ad
una posizione intermedia tra i due pixel ossia nel punto (i,j+1/2) per fx e nel punto (i+1/2,j) per
fy .
Questo corrisponde ad uno spostamento dell’immagine gradiente per una distanza di mezzo
pixel.
Gli effetti dell’approssimazione del gradiente possono essere meglio evidenziati operando nel
dominio delle frequenze.
In tale dominio, la differenziazione n-ma di una funzione f corrisponde alla moltiplicazione del
valore dello spettro per un fattore proporzionale alla frequenza e questo porta alla esaltazione delle
alte frequenza.
La funzione di trasferimento nel caso di approssimazione alle differenze all’indietro è data da:
−
HR (u, v) = i sin 2πu
per la componente orizzontale
M −
per la componente verticale
HC (u, v) = i sin 2πv
M
s
HR (u, v) = i sin πu
e s HC (u, v) = i sin πv
differenza simmetrica
M
M
Con questa approssimazione il filtro gradiente della differenza si discosta molto dal filtro ideale
basato sulla funzione di trasferimento del filtro delle derivate che è iπ2u/M · F (u, v) e iπ2v/M ·
F (u, v) rispettivamente per la componente riga e colonna.
Il filtro simmetrico delle differenze s h si comporta come un filtro passa-basso e può essere
pensato come la combinazione di un filtro di smoothing ed un filtro di esaltazione dei bordi:
s
1
−1 0 1
2
⎡
⎤
1
1
1
1
1
s
hC =− hC 1 BC =
= ⎣ 0 ⎦
−1
2 1
2
−1
hR = −hR 1
BR =
−1•
1
1
1
2
1•
=
dove BR = 1/2[1 1] rappresenta il filtro di smoothing elementare media di due pixel. Le maschere di
convoluzione orizzontale e verticale trovate sono utilizzate solo per l’estrazione dei bordi dominanti
in direzione perpendicolare agli operatori stessi.
Per tale scopo possono essere applicati i seguenti operatori di convoluzione:
gR (i, j) = f (i, j) hR (i, j) =
+1
f (i, l) · hR (l)
(1.7)
f (l, j) · hC (l)
(1.8)
l=−1
gC (i, j) = f (i, j) hC (i, j) =
+1
l=−1
In figura 1.6 sono evidenziati i risultati di questi due filtri (orizzontali e verticali). Ricordiamo
che l’obiettivo iniziale era quello di calcolare i bordi comunque orientati nel piano immagine.
Questo è √
realizzato calcolando il modulo del gradiente espresso da una delle seguenti equazioni:
|∇f | = gR · gR + gC · gC
|∇f | = |gR | + |gC |
S
hR
gR (i , j )
hC
gC (i , j )
Ñf = g R + g C
f(i,j)
S
Ñf = g R2 + g C2
or
g
ö
q gmx = arctanæç C
÷
è gR ø
Ñf (i , j )
Mappa
gradiente
(bordi)
qgmx (i , j )
Mappa
orientazione
bordi
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
34
Figura 1.6: Gradienti delle differenze orizzontali e verticali.
Come evidenziato dal flowchart l’estrazione dei bordi prevede diversi passi:
1. Filtraggio dell’immagine applicando in modo indipendente le maschere di convoluzione hR
ed hC .
2. Calcolare il quadrato per ogni pixel delle due immagini ottenute dal passo 1).
3. Somma i pixel omologhi delle due immagini del passo 2.
4. Calcola la radice quadrata dell’immagine del passo 3. L’immagine risultante è l’immagine
degli Edge.
5. Calcola l’arcotangente per ogni valore di gC /gR (conponenti del gradiente orizzontale e
verticale) calcolate nel passo 1). L’immagine risultante è la mappa di orientazione dei bordi.
1.4
Operatore di Roberts
Un modo alternativo per approssimare la differenziazione è quello suggerito da Roberts:
fx (i, j) = f (i, j) − f (i + 1, j + 1)
fy (i, j) = f (i + 1, j) − f (i, j + 1)
come mostrato in figura 1.7. L’orientazione del bordo rispetto all’asse x risulta
fy
π
θ (i, j) = + arc tan
4
fx
(1.9)
Le maschere di convoluzione nelle due direzioni orizzontali e verticali con l’approssimazione di
Roberts risultano:
1.5. MANIPOLAZIONE DELL’IMMAGINE GRADIENTE
35
j
i-1 , j
i-1 , j+1
i , j-1
i,j
i , j+1
i+1 , j-1
i+1 , j
i+1 , j+1
i
Figura 1.7: Approssimazione del filtro gradiente mediante operatore di Roberts
hR =
1
0
0
−1
hC =
0
1
−1
0
Le componenti gR (i, j) e gC (i, j) orizzontali e verticali del gradiente sono calcolate nel punto
di interpolazione (i + 1/2, j + 1/2) con le formule di convoluzione solite g R = f hR e gC = f hC .
1.5
Manipolazione dell’immagine gradiente
L’immagine gradiente ottenuta con qualunque metodo di approssimazione descritto in precedenza,
può essere modificata per produrre immagini gradiente con diversi tipi di bordi.
Data l’immagine gradiente g(i,j), si possono definire alcune modalità per verificare se un pixel
g(i,j) è un elemento di bordo o meno.
Alcune definizioni sono:
•
∇f (i, j) se |∇f (i, j)| ≥ T
f (i, j)
altrimenti
g (i, j) =
dove T è un valore di soglia non negativo. Dal valore scelto di T dipende se, piccole variazioni
di intensità, sono da classificare come bordo oppure da considerare zone omogenee affette da
rumore.
•
g (i, j) =
IT
f (x, y)
se |∇f (i, j)| ≥ T
altrimenti
dove IT è un valore di grigio da assegnare ai pixel classificati come bordi mediante la soglia
T come in precedenza.
•
g (i, j) =
∇f (i, j) se |∇f (i, j)| ≥ T
IB
altrimenti
dove IB è un valore di grigio da assegnare ai pixel non classificati come bordi mediante la
soglia T (separazione dei bordi dal fondo).
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
36
•
g (i, j) =
IT
IB
se |∇f (i, j)| ≥ T
altrimenti
ottenendo in questo caso una immagine binaria, e precisamente pixel con valore IT corrispondenti ai bordi, e tutti gli altri con valori IB che rappresentano lo sfondo.
1.6
Operatore di Sobel
Gli operatori di estrazione dei bordi già descritti basati sul gradiente (filtro gradiente, filtro di
Roberts), generano bordi con spessore di almeno due pixel.
D’altra parte questi operatori sono sensibili al rumore dovuto alle piccole fluttuazioni dell’intensità, che approssimano le stime delle componenti del gradiente che al numero limitato di pixel.
Per attenuare questi inconvenienti, si utilizza un operatore gradiente più complesso, che simultaneamente esegue la differenziazione rispetto ad un asse coordinato e calcola una media locale in
direzione ortogonale.
Le componenti del gradiente con l’operatore di Sobel sono calcolate nella direzione degli assi
coordinati x ed y, coinvolgendo per ciascun pixel in elaborazione (i, j) i pixel nelle sue vicinanze
inclusi nella finestra 3×3 come mostrato in figura:
A
H
G
B
(i,j)
F
C
D
E
La differenziazione nella direzione x ed y è approssimata come segue:
fx (i, j) = (C + KD + E) − (A + KH + G)
fy (i, j) = (A + KB + C) − (G + KF + E)
dove la costante K è scelta uguale a 2 ed i pixel vicini a quello in elaborazione (i,j) hanno una
influenza in relazione ai corrispondenti pesi indicati con A,B,..,E.
Scegliendo una finestra più grande 3×3 per la stima del gradiente, l’effetto di smoothing aumenta rispetto all’operatore con finestra 2×2, diminuendo in tal modo la sensibilità dell’operatore
alle fluttuazioni dei valori di intensità presenti nell’immagine.
Le maschere di convoluzione per l’operatore di Sobel sono:
⎡
−1 0
hR = ⎣ −2 0
−1 0
⎤
⎡
1
1
2
2 ⎦ hC = ⎣ 0
0
1
−1 −2
⎤
1
0 ⎦
−1
Si può notare come nelle maschere la somma dei pesi è uguale a zero.
Da ciò conseguirà la non determinazione dei bordi in presenza di pixel con valori di grigio
costante.
I pesi nelle maschere sono appropriati per modellare un bordo ideale presente nella direzione
degli assi coordinati.
Infine si nota come l’operatore attribuisce un peso maggiore ai pixel che sono più vicini al pixel
(i,j) in elaborazione.
Le convoluzioni discrete per le componenti orizzontale e verticale dell’operatore di Sobel sono:
gR (i, j) = f (i, j) hR (i, j) =
+1 +1
l=−1 k=−1
f (i + l, j + k)hR (l, k)
1.7. OPERATORE DI PREWITT
37
+1 +1
gC (i, j) = f (i, j) hC (i, j) =
f (i + l, j + k)hC (l, k)
l=−1 k=−1
Ricordiamo che la maschera di convoluzione 3×3 sovrappone l’elemento centrale (0, 0) con il
pixel in elaborazione (i, j) dell’immagine.
L’operatore di Sobel definisce il modello del gradiente con la formula nota:
2 + g2
|∇f | = gR
C
1.7
Operatore di Prewitt
Differisce dall’operatore di Sobel solo per il valore della costante K che è dimezzato ossia posta
uguale a 1. In questo modo, le maschere di convoluzione diventano:
⎡
⎡
⎤
⎤
−1 0 1
1
1
1
0
0 ⎦
hR = ⎣ −1 0 1 ⎦ hc = ⎣ 0
−1 0 1
−1 −1 −1
Diversamente dall’operatore di Sobel, i pixel più vicini (nord, sud, est, ovest) al pixel in elaborazione
non hanno un peso maggiore ma contribuiscono alla stima del gradiente spaziale con lo stesso peso.
1.8
Operatore di Frei&Chen
√
Questo operatore assegna alla costante K il valore 2 pesando i pixel vicini in modo omogeneo ed
in tal modo il valore del gradiente è uguale in presenza di bordi verticali, orizzontali ed obliqui.
√
⎤
⎤
⎡
⎡
−1
2
1
1
√ 0 √1
0
0 ⎦
hR = ⎣ − 2 0
2 ⎦ hC = ⎣ 0
√
−1 0 1
−1 − 2 −1
1.9
Operatori a confronto
Come per tutti i processi di elaborazione dell’immagine, anche per la valutazione di un operatore
specializzato per estrarre i bordi, alcuni quesiti sono considerati:
• quanto è attendibile il modello fisico-matematico scelto;
• quanto è efficiente il modello computazionale;
• quanto è accurato il risultato conseguito.
Per quanto riguarda l’attendibilità, la scelta della funzione gradiente per determinare la variabilità locale dei livelli di grigio si dimostra adeguata.
La funzione gradiente ideale può essere calcolata con la differenziazione della funzione di input.
Per le immagini digitali la funzione gradiente è invece approssimata utilizzando le differenze dei
livelli di grigio ed interessando un numero limitato di pixel.
Per meglio esaltare (Enhancement) le discontinuità locali viene calcolato il modulo e la direzione
del gradiente.
Le discontinuità presenti nell’immagine non sempre sono associate all’informazione intrinseca
dell’immagine poichè spesso risultano introdotte casualmente dal processo di digitalizzazione e
dalla instabilità dei sensori.
38
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
Figura 1.8: Applicazione degli operatori di Prewitt Roberts e Frei-Chen .
Tali discontinuità, associate al rumore, prima del processo di esaltazione dei bordi devono essere
attenuate con un processo di smoothing per impedire la formazione di bordi spuri e di artefatti
puntiformi e di tratti di linee curve.
Il modello di estrazione dei bordi include pertanto due attività contrastanti, da un lato l’esaltazione dei bordi e dall’altra l’attenuazione del rumore.
L’efficacia degli operatori descritti in precedenza (differenze, Roberts, Sobel, Prewitt, Frei&Chen)
dipende da come i vari operatori bilanciano gli effetti dello smoothing e della esaltazione dei bordi
(molte volte è controllato scegliendo un valore di soglia T adeguato del valore di gradiente stimato).
L’accuratezza dei risultati riguarda soprattutto il livello di approssimazione del gradiente, e
dipende dalle dimensioni della maschera di convoluzione.
La maggior parte degli operatori trattati non sono in grado di definire e localizzare un bordo
con la risoluzione di un pixel.
Non tutti i bordi reali sono estratti, probabilmente, molti sono filtrati dalla componente di
smoothing dell’operatore di estrazione dei bordi.
Al contrario, non tutti i bordi estratti sono reali, poichè molti sono causati dall’effetto di sharpening che scambia le variazioni di intensità dovute al rumore come bordi presenti nell’immagine.
Tutti gli operatori descritti sono implementati come un unico modello computazionale ossia la
convoluzione discreta con maschera di dimensioni 3×3.
Negli esempi riportati, l’operazione di smoothing è realizzata con un filtro gaussiano utilizzando
una maschera 7×7. I valori delle soglie del gradiente sono riportati di volta in volta.
In alcune immagini è introdotto un rumore additivo gaussiano con σ=12. Dai risultati conseguiti si nota la presenza nell’immagine elaborata di bordi falsi causati dal rumore ed è evidenziato
come può essere attenuato questo problema con il prefiltraggio dell’immagine.
Gli operatori di Sobel, Prewitt e Frei-chen offrono risultati migliori per la determinazione dei
bordi rispetto agli operatori basati sulla differenza, come l’operatore di Roberts che calcola la
media dei livelli di grigio su un numero minore di pixel.
1.10. OPERATORE DERIVATA DELLA GAUSSIANA (DROG)
39
I limiti degli operatori gradiente sopra descritti possono essere in parte superati aumentando
il numero di pixel coinvolti per la stima del gradiente e conseguentemente migliorando l’operatore
di smoothing.
Come primo esempio adattiamo, l’operatore di Prewitt, per una maschera di convoluzione 7×7,
modificata come segue:
⎡
⎤
−1 −1 −1 0 1 1 1
⎢ −1 −1 −1 0 1 1 1 ⎥
⎢
⎥
⎢ −1 −1 −1 0 1 1 1 ⎥
⎥
1 ⎢
⎢ −1 −1 −1 0 1 1 1 ⎥
hR =
⎢
⎥
21 ⎢
⎥
⎢ −1 −1 −1 0 1 1 1 ⎥
⎣ −1 −1 −1 0 1 1 1 ⎦
−1 −1 −1 0 1 1 1
Come secondo esempio consideriamo l’operatore a tronco di piramide suggerito da Abdan che
pesa in modo linearmente decrescente l’importanza dei pixel vicini al pixel in elaborazione.
La maschera di convoluzione per il calcolo della componente di gradiente orizzontale è data da
⎤
⎡
−1 −1 −1 0 1 1 1
⎢ −1 −2 −2 0 2 2 1 ⎥
⎥
⎢
⎢ −1 −2 −3 0 3 2 1 ⎥
⎥
1 ⎢
⎢ −1 −2 −3 0 3 2 1 ⎥
hR =
⎥
34 ⎢
⎢ −1 −2 −3 0 3 2 1 ⎥
⎥
⎢
⎣ −1 −2 −2 0 2 2 1 ⎦
−1 −1 −1 0 1 1 1
Per ottenere più in generale, una maschera di convoluzione più estesa per un qualunque operatore
gradiente, si possono convolvere maschere 3×3 degli operatori descritti in precedenza con una
maschera dell’operatore di smoothing.
La maschera di convoluzione combinata risulta la seguente:
h(i, j) = hGRAD (i, j) hSMOOT H
dove hGRAD indica una delle maschere di convoluzione 3×3 dell’operatore gradiente ed h SMOOT H
indica la maschera di convoluzione di un operatore di smoothing.
Se si considerano le maschere hR (i,j) dell’operatore di Prewitt ed hSMOOT H (i, j) = 1/9 il
filtro media di smoothing di 3×3, si ottiene la maschera di convoluzione combinata dell’operatore
gradiente di 5×5 nella forma:
−1 −1 0 1 1 −2 −2 0 2 2 −1 0 1 1 1 1 1 1
1 −3 −3 0 3 3 hR = −1 0 1 1 1 1 =
3
9
18
−2 −2 0 2 2 1 1 1 −1 0 1 −1 −1 0 1 1 analogamente si ricava la maschera della componente di gradiente verticale h C .
1.10
Operatore derivata della Gaussiana (DroG)
L’operatore gradiente basato sulla derivata della gaussiana è ottenuto applicando prima l’operatore
di smoothing gaussiano e successivamente derivando rispetto agli assi coordinati.
La risposta impulsiva di questo operatore, lungo l’asse orizzontale, risulta:
hR (i, j) =
i2 +j 2
∂ − i2 +j2 2
i
e 2σ = 2 e− 2σ2
∂i
σ
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
40
con σ la deviazione standard. Analogamente può essere fatto per calcolare la risposta impulsiva
rispetto all’asse verticale.
Questo operatore rappresenta un esempio combinato tra filtro gaussiano di smoothing e l’operatore gradiente basato sulla derivata prima.
Inoltre fornisce il miglior compromesso tra l’attenuazione del rumore (filtro di smoothing) e
l’esaltazione dei bordi (operatore derivata).
1.11
Operatore gradiente direzionale
Tutti gli operatori descritti in precedenza, determinano i bordi calcolando prima le componenti
ortogonali del gradiente in direzione orizzontale e verticale, e successivamente i gradienti sono
stimati sommando in modo appropriato tali componenti.
In diverse applicazioni è conveniente calcolare i bordi per un numero definito di direzioni.
Questo può essere realizzato mediante la convoluzione dell’immagine di input f (i, j) con diverse
maschere hk i cui pesi modellano le risposte impulsive del gradiente direzionale.
Il gradiente direzionale è espresso da
gk (i, j) = f (i, j) hk
dove hk è la risposta impulsiva del gradiente nella direzione θk =
valori da 0 (per indicare la direzione nord) a 7.
L’operatore gradiente direzionale per ogni pixel è definito come:
g(i, j) = max |gk (i, j)| k = 0, ..., 7
k
(1.10)
π
2
+ k π4 dove k può assumere
(1.11)
che indica l’inclinazione del bordo nella direzione del massimo valore dei gradienti direzionali
calcolati nelle otto direzioni.
Le maschere di convoluzione corrispondenti alle k direzioni sono ottenute partendo con k=0 e
ruotando in modo circolare di π/4 ogni elemento esterno della maschera 3×3.
Nella figura 1.9 sono rappresentate tutte le maschere per l’operatore di Prewitt, Kirsch, una
derivazione di Sobel (Robinson livello-3) e Robinson livello-5 (derivato dall’operatore di Prewitt).
La somma dei pesi di ogni maschera è zero. Da ciò consegue che nelle zone omogenee dell’immagine l’operatore gradiente direzionale darà sempre come risultato zero.
I gradienti direzionali avranno il valore massimo quando la configurazione dei livelli di grigio
dei pixel meglio concordano con i modelli rappresentati dalle maschere.
Altri operatori gradiente possono essere definiti con rotazioni per esempio di π/6 con maschere
di dimensioni 5×5. Con maschere ancora più grandi si possono calcolare le direzioni dei bordi in
modo più preciso con una buona riduzione del rumore ma con la necessità di notevole tempo di
calcolo.
1.12
Operatore Laplaciano
Un operatore lineare isotropo può essere definito con differenziazione del secondo ordine per
accentuare ulteriormente i bordi.
Per tale scopo viene utilizzato l’operatore di Laplace che per una funzione continua bidimensionale f (x, y) è cosı̀ definito:
∂2f
∂2f
∇2 f (x, y) =
+ 2
(1.12)
2
∂x
∂y
che rappresenta la somma delle derivate seconde di una funzione calcolate nella direzione degli assi
coordinati x ed y.
1.12. OPERATORE LAPLACIANO
Direzione
Gradiente
Est H1
NE H2
Prewitt
compasso
⎡
⎤
1 −1
−2 −1 ⎦
1 −1
⎡
⎤
−1 −1
−2 −1 ⎦
1
1
1
⎣ 1
1
1
⎣ 1
1
⎡
Nord H3
NW H4
Ovest H5
SW H6
⎤
−1 −1 −1
⎣ 1 −2
1 ⎦
1
1
1
⎡
⎤
−1 1
−2 1 ⎦
1 1
⎡
⎤
1 1
−2 1 ⎦
1 1
⎡
⎤
1 1
−2 1 ⎦
−1 1
−1
⎣ 1
1
−1
⎣ −1
−1
1
⎣ −1
−1
⎡
Sud H7
⎤
1
1
1
⎣ 1 −2
1 ⎦
−1 −1 −1
⎡
SE H8
Fattore
di scala
1
⎣ 1
1
⎤
1
1
−2 −1 ⎦
−1 −1
1
5
41
Kirsch
⎡
5
⎣ 5
5
Robinson
livello-3
⎤
−3 −3
0 −3 ⎦
−3 −3
⎡
⎤
−3 −3 −3
⎣ 5
0 −3 ⎦
5
5 −3
⎡
⎤
−3 −3 −3
⎣ −3
0 −3 ⎦
5
5
5
⎡
⎤
−3 −3 −3
⎣ −3
0
5 ⎦
−3
5
5
⎡
1
⎣ 1
1
⎤
0 −1 −1
⎣ 1
0 −1 ⎦
1
1
0
−1
⎣ 0
1
⎤
−1 −1 0
⎣ −1
0 1 ⎦
0
1 1
⎤
−3 −3 5
⎣ −3
0 5 ⎦
−3 −3 5
⎤
−3
5
5
⎣ −3
0
5 ⎦
−3 −3 −3
⎡
⎤
5
5
5
⎣ −3
0 −3 ⎦
−3 −3 −3
⎡
⎤
5
5 −3
⎣ 5
0 −3 ⎦
−3 −3 −3
1
15
⎤
−1 −1
0
0 ⎦
1
1
⎡
⎡
⎡
⎡
⎤
0 −1
0 −1 ⎦
0 −1
⎡
⎡
−1 0
⎣ −1 0
−1 0
⎤
0
1 1
⎣ −1
0 1 ⎦
−1 −1 0
1
⎣ 0
−1
⎤
1
1
0
0 ⎦
−1 −1
⎡
⎡
1 0
⎣ 2 0
1 0
⎡
0
⎣ 1
2
⎤
1
1
0
⎣ 1
0 −1 ⎦
0 −1 −1
⎤
−1
−2 ⎦
−1
⎤
−1 −2
0 −1 ⎦
1
0
⎡
⎤
−1 −2 −1
⎣ 0
0
0 ⎦
1
2
1
⎡
−2 −1
⎣ −1
0
0
1
⎤
0
1 ⎦
2
⎤
−1 0 1
⎣ −2 0 2 ⎦
−1 0 1
⎤
1
1 ⎦
1
⎡
⎡
Robinson
livello-5
⎡
⎡
0
1
⎣ −1
0
−2 −1
⎤
2
1 ⎦
0
⎡
⎤
1
2
1
⎣ 0
0
0 ⎦
−1 −1 −1
⎡
2
⎣ 1
0
1
3
Figura 1.9: Maschere 3 × 3 per l’estrazione dei gradienti direzionali.
⎤
1
0
0 −1 ⎦
−1 −2
1
4
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
42
f’(x)
f’’(x)
zero crossing
Figura 1.10: Laplaciano di una funzione monodimensionale.
L’effetto del Laplaciano per una funzione a gradino (bordo ideale) può essere rappresentato
graficamente come in figura 1.10.
Si osserva come il bordo può essere rappresentato da più pixel nell’immagine gradiente (in
corrispondenza del picco del gradiente).
Risulta invece ben localizzato nella funzione Laplaciano, coincidente con il punto dove tale
funzione ha un andamento che passa per lo zero (da non confondere con l’andamento costante
uguale a zero che si verifica quando f è costante). Questo suggerisce l’idea di applicare l’operatore
Laplaciano ad una immagine f(i,j) per localizzare facilmente i pixel di bordo corrispondenti al pixel
dove il fianco di salita o di discesa di ∇2 f passa per lo zero (da positivo a negativo e viceversa).
Questa transizione di ∇2 f per lo zero è chiamata anche zero crossing e corrisponde al pixel
di bordo.
L’operatore Laplaciano basandosi sulla derivata seconda è più sensibile al rumore rispetto agli
altri operatori, non fornisce informazioni di direzione del bordo, e può generare bordi doppi.
Nel dominio spaziale discreto, l’operatore laplaciano può essere approssimato considerando le
differenze dei valori di intensità invece delle derivate.
La componente orizzontale dell’operatore laplaciano è approssimata come segue:
1.12. OPERATORE LAPLACIANO
43
∂2f
∂fX
∂x2 = ∂x
∂f (i,j+1)
=
∂x
(i,j))
= ∂(f (i,j+1)−f
∂x
∂f (i,j)
− ∂x
= (f (i, j + 2) − f (i, j + 1)) − (f (i, j + 1) − f (i, j)) (differenza in avanti)
= f (i, j + 2) − 2f (i, j + 1) + f (i, j)
(1.13)
Con la traslazione di un pixel in orizzontale, ottenuta sostituendo j con j − 1 si calcola il valore
approssimato del laplaciano nel punto (i, j) definito da:
∂2f
= f (i, j + 1) − 2f (i, j) + f (i, j − 1)
∂x2
(1.14)
operando in modo analogo per la componente verticale si ottiene:
∂2f
= f (i + 1, j) − 2f (i, j) + f (i − 1, j)
∂y 2
(1.15)
Queste approssimazioni conducono alle corrispondenti maschere di convoluzione orizzontale e
verticale:
⎡
⎤
1
hC = ⎣ −2 ⎦
(1.16)
hR = 1 −2 1
1
Dalla combinazione delle componenti
convoluzione del laplaciano:
⎡
0 0
h(i, j) = ⎣ 1 −2
0 0
orizzontali e verticali si ottiene una singola maschera di
⎤ ⎡
⎤ ⎡
0
0 1 0
0
1 ⎦ + ⎣ 0 −2 0 ⎦ = ⎣ 1
0
0 1 0
0
⎤
1 0
−4 1 ⎦
−1 0
(1.17)
Gli effetti dell’approssimazione del laplaciano con le differenze, possono essere meglio analizzati
nel dominio delle frequenze.
Nel dominio delle frequenze il laplaciano è dato da -4π 2 (u2 +v2 )F(u,v) che equivale alla moltiplicazione dello spettro F(u,v) per un fattore proporzionale alle frequenze (u2 +v2 ).
Questo porta ad una accentuazione delle alte frequenze. L’approssimazione delle differenze del
laplaciano porta ad un leggero scostamento della funzione di trasferimento dalle condizioni ideali
delle derivate parziali del secondo ordine con la conseguente deviazione rispetto alle caratteristiche
isotrope dell’operatore specialmente per le alte frequenze.
Per attenuare questo inconveniente si utilizzano le seguenti maschere di convoluzione che meglio
approssimano il laplaciano nel discreto:
⎡
⎤
⎡
⎤
⎡
⎤
1
2
1
1
4
1
1 1 1
1 ⎣
4 −20 4 ⎦ h3 = 18 ⎣ 1 −8 1 ⎦
(1.18)
h1 = 41 ⎣ 2 −12 2 ⎦ h2 = 20
1
2
1
1
4
1
1 1 1
La localizzazione dei bordi è influenzata dal rumore e dalla variazione locale dei valori di intensità
dell’immagine. In presenza di una variazione a gradino si verifica quanto segue:
44449999
44449999
44449999
∇2 f
⇒
0005-5000
0005-5000
0005-5000
che evidenzia come il bordo si trova al centro tra i due pixel adiacenti (5—-5).
In questo caso la locazione del bordo può essere calcolata interpolando tra i pixel a sinistra ed
a destra dello zero crossing.
In presenza di una variazione a rampa si verifica quanto segue:
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
44
1113555
1113555
1113555
0020-200
0020-200
0020-200
∇2 f
⇒
In questo caso il bordo è localizzato in corrispondenza del pixel zero crossing.
Dagli esempi si può dedurre che gli zero crossing dell’operatore laplaciano sono sempre localizzati a livello di pixel ma spesso sono identificati come transizione tra pixel positivo e negativo e
viceversa.
1.13
Laplaciano della Gaussiana
Marr ed Hildreth hanno definito un operatore per l’estrazione dei bordi, chiamato Laplaciano della
gaussiana (LoG1 ) combinando l’effetto del filtro Gaussiano (per appiattire i livelli di grigio) con
quello dell’operatore Laplaciano (per esaltare i bordi).
Nel continuo, se con f (x, y) si indica l’immagine di input e con h(x, y) la funzione gaussiana,
l’operatore Laplaciano della Gaussiana g(x, y) è ottenuto come segue:
g(x, y) = ∇2 {h(x, y) f (x, y)}
(1.19)
che evidenzia l’operazione combinata del Laplaciano applicato al risultato della convoluzione, tra
l’immagine f e la risposta impulsiva del filtro gaussiano h.
Ricordando che il filtro Gaussiano è dato da
h(x, y) = e−
(x2 +y2 )
2σ2
(1.20)
con σ che controlla il livello di smoothing, ed applicando le regole di derivazione per la convoluzione
(operatore lineare) si ottiene:
g(x, y) = {∇2 h(x, y)} f (x, y)
(1.21)
dove {•} è la risposta impulsiva del Laplaciano della gaussiana, data da
2 +y2 )
x2 + y 2 − 2σ 2 − x2 +y2 2
− (x 2σ
2
hLoG (x, y) = ∇ h(x, y) = ∇ e
e 2σ
=
σ4
2
2
(1.22)
la cui rappresentazione grafica a forma di cappello messicano é mostrata in figura 1.11.
Le caratteristiche essenziali di questo operatore sono:
1. Il filtro gaussiano essendo un filtro passa-basso con andamento gaussiano attenua il rumore
presente nell’immagine e produce una risposta impulsiva ancora di tipo gaussiana. È noto che
tale operatore è realizzato eseguendo la convoluzione dell’immagine f con il filtro gaussiano
h.
2. L’operatore laplaciano essendo un operatore che accentua le alte frequenze, ha l’effetto di
migliorare la nitidezza dei bordi.
3. L’effetto complessivo del filtro hLoG è quello di combinare gli effetti del filtro gaussiano e
dell’operatore laplaciano approssimando analiticamente nel discreto i passi della maschera di
convoluzione.
1 da
Laplacian of Gaussian
1.13. LAPLACIANO DELLA GAUSSIANA
45
Figura 1.11: Funzione cappello messicana.
In particolare, applicando l’operatore LoG nelle regioni dell’immagine con gradiente omogeneo si avrà come risultato zero per qualunque valore del gradiente ed assumendo che la
somma dei pesi della maschera risulti zero.
In presenza di discontinuità l’operatore produce valori crescenti quando la maschera h LoG
raggiunge il primo estremo di discontinuità di f . Successivamente l’operatore inverte la
tendenza incominciando a decrescere fino a diventare zero quando la maschera è centrata sul
punto di maggiore discontinuità che corrisponde col picco della derivata prima di f .
Continuando il processo di convoluzione, l’operatore riproduce risultati simmetrici ma invertiti di segno. Il punto di bordo è determinato localizzando l’attraversamento dello zero (zero
crossing) della risposta dell’operatore per una zona dell’immagine (da non confondere con le
risposte con valore zero dovute alle zone di immagini omogenee).
4. La localizzazione di un bordo può essere determinata con la risoluzione del subpixel mediante interpolazione lineare. La locazione del bordo non è influenzato dalla varianza σ 2 . In
condizioni di immagini con poco rumore la maschera di convoluzione può interessare solo il
pixel centrale e pochi pixel nelle sue vicinanze.
Se invece siamo in presenza di rumore la componente del filtro di smoothing deve avere
un’influenza più estesa. Questo è ottenuto considerando σ più grande e conseguentemente
l’area di interesse vicino allo zero crossing diventa più estesa senza però sovrapporsi all’area
di influenza di un altro zero crossing ossia di un altro bordo.
Con una maschera di convoluzione estesa la risposta dell’operatore produce valori livellati
ma con una attenuazione dell’ampiezza e della pendenza nella regione dove si cercherà lo zero
crossing.
Un compromesso deve essere raggiunto, nella scelta della dimensione della maschera, rimanendo
nei limiti delle dimensioni dell’area di transizione del bordo.
Normalmente è applicato tale operatore con diversi valori delle dimensioni della maschera. Dalle
varie risposte dell’operatore, per valori diversi di σ, si possono estrarre i bordi che hanno un reale
interesse nell’immagine.
Una tecnica che viene normalmente utilizzata consiste nel localizzare con una buona approssimazione i bordi con maschere di filtraggio molto piccole (si ottengono risultati con molto rumore
nei bordi) ed utilizzare filtri con maschere più grandi (con fattore di scala più grande) ottenendo
in questo modo risultati più affidabili ma con la scarsa approssimazione nella localizzazione dei
bordi (i bordi risultano spostati ed in alcuni casi bordi vicini risultano come un bordo unico).
Ritornando al filtro di Marr-Hildreth hLoG , introducendo la variabile r2 = x2 + y 2 dove r
misura la distanza dall’origine (caratteristica di simmetria circolare del filtro), l’espressione del
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
46
r
zero
Figura 1.12: Zeri della funzione cappello messicana.
filtro diventa:
r2 − 2σ 2 − r22
h(r) =
e 2σ = c
σ4
r2
r2
− 1 e− 2σ2
2σ 2
(1.23)
dove c = r/σ 2 è una costante di normalizzazione.
Come nel filtro gaussiano, anche per hLoG , il parametro σ controlla le dimensioni del filtro, ed
i punti più vicini all’origine di tale filtro, dove la curva attraversa lo zero (la prima volta) sono in
corrispondenza di
r2
=1
(1.24)
2σ 2
ossia quando
√
rzero = ±σ 2
(1.25)
Dal grafico di figura 1.12 del filtro si osserva che la curva assume il massimo valore c all’origine
ossia per r=0.
1
Per r=±σ si ha che la funzione è troncata al valore − 21 ce− 2 .
In sostanza σ controlla l’influenza dei pixel che si trovano ad una distanza kσ dal pixel in
elaborazione.
Con buona approssimazione si può considerare che il filtro non ha nessuna influenza sui pixel
distanti 3rzero dall’origine dove hLoG si assume diventi nulla definitivamente.
Per limitare anche gli effetti del troncamento, la maschera di convoluzione hLoG può essere
discretizzata in una finestra L×L con il minimo valore di L definito da
√
L = 2 × 3rzero = 2 × 3 2σ
Un approccio per realizzare l’operatore laplaciano della Gaussiana è quello di eseguire in due passi
sequenziali separati prima il filtraggio Gaussiano e successivamente l’operatore laplaciano.
Un approccio che prevede una singola convoluzione consiste nell’utilizzare la maschera h LoG
di dimensioni L e con i pesi opportunamente calcolati analiticamente dalla funzione di risposta
impulsiva del filtro.
In conclusione, il Laplaciano della Gaussiana è un operatore per l’estrazione dei bordi che combina un’attività di smoothing (filtro Gaussiano) ed una attività di enhancement (filtro Laplaciano)
realizzato con gli zero crossing, che sono essenziali per localizzare gli stessi bordi.
Alcuni modelli sviluppati da Marr sui meccanismi di funzionamento del sistema visivo umano
hanno evidenziato una somiglianza funzionale all’operatore Laplaciano della Gaussiana. Le funzioni
di visione a basso livello (operazioni sulla retina) sono modellati dalla convoluzione dell’immagine
sulla retina con il filtro LoG.
1.14. DIFFERENZA DI GAUSSIANE DOG
0
0
-1
0
0
0
-1
-2
-1
0
47
-1
-2
16
-2
-1
0
-1
-2
-1
0
0
0
-1
0
0
Figura 1.13: Maschera 5 × 5 del Laplaciano di una Gaussiana.
1
0.8
hG(r,σ 2)
0.6
h (r,σ )
G
0.4
1
0.2
0
−20
−15
−10
−5
0
5
10
15
20
0
5
10
15
20
1
0.8
h
0.6
DoG
0.4
0.2
0
−0.2
−0.4
−20
−15
−10
−5
Figura 1.14: Differenza di Gaussiane.
1.14
Differenza di Gaussiane DoG
Una buona approssimazione al filtro di Marr-Hildreth è ottenuto con un operatore basato sulla
differenza di due Gaussiane con differente valore di σ:
hDoG (r, σ1 , σ2 ) = hG (r, σ1 ) − hG (r, σ2 )
dove
hG (r, σ1 ) = Ae
−
r2
2σ2
1
ed hG (r, σ2 ) = Be
−
(1.26)
r2
2σ2
2
con A>B e σ1 < σ2 .
Marr ed Hildreth hanno trovato che con σ 2 /σ 1 =1.6 si ha la migliore approssimazione al filtro
Laplaciano della Gaussiana.
L’operatore DoG risulta facilmente implementabile poichè esistono versioni ottimizzate del filtro
Gaussiano.
1.15
Operatore della derivata seconda direzionale
Abbiamo già considerato l’operatore alla derivata prima direzionale (operatore gradiente) per il
calcolo del gradiente di f lungo una direzione r ad un angolo θ dall’asse x orizzontale che era dato
da:
∂f ∂x ∂f ∂y
∂f
(1.27)
=
+
= fx cos θ + fy sinθ
∂r
∂x ∂r
∂y ∂r
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
48
Analogamente può essere calcolato l’orientamento dei bordi ricercando lo zero-crossing della
derivata seconda lungo r per ogni valore di θ.
Dalla equazione (1.27) differenziando si ottiene:
∂2f
∂2f
∂
∂
∂ 2f
∂2f
fX cos θ +
fY sinθ =
sinθ cos θ +
=
cos2 θ + 2
sin2 θ
2
2
∂r
∂r
∂r
∂x
∂x∂y
∂y 2
(1.28)
Al variare di θ si calcolano tutti i possibili zero crossing.
A differenza dell’operatore Laplaciano, l’operatore basato sulla derivata seconda direzionale è
un operatore non lineare.
La convoluzione di un’immagine f con una funzione di smoothing prima della differenziazione
non è equivalente alla convoluzione della derivata seconda di f con una funzione di smoothing.
Si ricorda inoltre che il Laplaciano è un operatore basato sulla derivata seconda, ma spazialmente isotropo rispetto alla rotazione che determina solo l’esistenza del bordo.
La direzione del bordo può essere valutata durante la fase di localizzazione degli zero-crossing.
Un operatore che utilizza la derivata seconda direzionale per estrarre i bordi ha l’obiettivo di
stimare anche la direzione del bordo stesso.
Nella visione artificiale l’operatore Laplaciano e quelli basati alla derivata seconda direzionale,
spesso non sono utilizzati, poichè la doppia differenziazione (prima e seconda derivata) è influenzata
in modo significativo dal rumore presente nelle immagini reali.
In pratica, anche in corrispondenza di lievi picchi nella derivata prima si generano zero crossing
(non attendibili) nella derivata seconda.
In precedenza abbiamo esaminato l’operatore LoG che ha parzialmente attenuato questo problema grazie alla componente di filtraggio gaussiana.
Più in generale, l’effetto del rumore può essere attenuato, utilizzando tecniche di filtraggio più
robuste (come proposto da Haralick), che approssimano l’immagine f (x, y) con polinomi bidimensionali, da cui si ricava direttamente la derivata seconda analiticamente. Tale metodo è chiamato
facet model.
Questi metodi che prevedono di approssimare i livelli di grigio dell’immagine con una funzione
analitica sono ad alto costo computazionale e non offrono risultati notevoli.
1.16
Operatore di Canny
In precedenza abbiamo esaminato diversi operatori per l’estrazione di bordi. Tali operatori si
differenziano in relazione alle loro prestazioni in termini di accuratezza della locazione dei bordi
ed alla capacità di filtrare il rumore.
Quasi tutti gli operatori presentati, elaborano una immagine campionata per stimare localmente
il massimo valore del gradiente.
La maggior parte degli operatori descritti sono derivati in modo euristico.
Questo consegue per la difficoltà di modellare in modo generale le discontinuità presenti nelle
immagini reali che normalmente hanno già subito un processo di smoothing nella fase di imaging
per opera del sistema ottico e del sistema di digitalizzazione.
La presenza di discontinuità nell’immagine, causate dalla fluttuazione dei sensori e dalla elettronica associata della telecamera, producono valori di gradiente anche in zone dell’immagine che
dovevano essere omogenee (bordi sparsi ed artefatti).
Queste discontinuità dovute al rumore, possono non essere facilmente filtrate poichè spesso
sono differenti rispetto alle caratteristiche del filtro.
Un operatore che approssima la misura di gradiente per estrarre i bordi deve risolvere due
caratteristiche contrapposte:
• attenuare il rumore
• localizzare i bordi accuratamente quanto possibile.
1.16. OPERATORE DI CANNY
49
Se si esagera con la prima caratteritica, si hanno problemi nel localizzare i bordi in quanto il
processo di smoothing può aggiungere incertezza sulla posizione del valore di massima discontinuità.
Se si esagera con la seconda caratteristica, si ha l’inconveniente di aumentare la sensibilità
dell’operatore ed estrarre bordi che in realtà sono da attribuire al rumore.
Un operatore lineare basato sulla derivata prima della Gaussiana DroG risulta essere un buon
compromesso tra localizzare i bordi e la non dipendenza dal rumore.
Questo operatore, già descritto in precedenza, combina il filtraggio Gaussiano e la stima del
gradiente (basato sulle differenze finite), è spazialmente non isotropo.
L’operatore di Canny è risultato essere ottimale per risolvere il compromesso tra la localizzazione accurata dei bordi e l’influenza dal rumore.
Tale operatore, è del tipo DroG, e raggiunge le condizioni ottimali del rapporto segnale rumore
e localizzazione dei bordi.
Le caratteristiche dell’operatore di Canny sono:
- Buona determinazione dei bordi, il rapporto segnale rumore (SNR) del gradiente è massimizzato per ottenere la probabilità minore di errore nella determinazione di un bordo reale e di ottenere
una probabilità minima nel considerare buono un falso bordo.
- Buona localizzazione, punti identificati come bordi sono il più vicino possibile al centro del
bordo reale.
- Risposta singola, l’operatore dovrebbe produrre una unica risposta per uno stesso bordo.
Vediamo ora come possono essere descritte matematicamente le caratteristiche ottimali proposte
da Canny.
La prima e la seconda caratteristica possono essere soddisfatte considerando l’operatore DroG,
la Derivata della Gaussiana, come operatore che meglio approssima il rapporto segnale rumore e
localizzazione.
Il primo passo dell’operatore di Canny è quello di convolvere l’immagine f(i,j) con un filtro di
smoothing Gaussiano h(i,j;σ) producendo una immagine g(i, j) data da:
g(i, j) = f (i, j) h(i, j; σ)
dove σ controlla il livello di smoothing.
Successivamente sono stimate le derivate parziali g x e gy , il modulo ed orientazione del gradiente
per ogni pixel (i,j) dell’immagine g.
Le derivate parziali sono approssimate, usando per ogni pixel (i, j) finestre 2×2, e considerando
le prime differenze:
gx (i, j) ∼
= [(g(i, j + 1) − g(i, j)) + (g(i + 1, j + 1) − g(i + 1, j)] /2
gy (i, j) ∼
= [(g(i, j) − g(i + 1, j)) + (g(i, j + 1) − g(i + 1, j + 1))] /2
Il modulo ed orientazione del gradiente sono calcolati dalle note formule di converzioni tra coordinate cartesiane e polari:
M (i, j) = gx2 + gy2
gy (i, j)
θ(i, j) = arc tan
gx (i, j)
I valori di M (i, j) e θ(i, j) possono essere precalcolati in precedenza e tabulati in una look-up table
per ottimizzare il tempo di elaborazione dell’operatore.
Inoltre può essere utilizzata l’aritmetica con numeri interi per approssimare l’angolo di orientazione del gradiente senza penalizzare i risultati dell’operatore.
Siamo ora interessati a calcolare la posizione del bordo, la sua orientazione e possibilmente
considerare anche il modulo del bordo in relazione al modulo del gradiente M (i, j).
Un modo per localizzare i punti dei bordi potrebbe essere quello di considerare punti dell’immagine gradiente M (i, j) con valori alti.
50
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
Questo approccio non risulterebbe robusto per identificare i bordi poichè l’immagine gradiente
ha l’effetto di accentuare le zone con discontinuità dei livelli di grigio e conseguentemente nell’immagine gradiente M (i, j) il problema della locazione si ridurrebbe a trovare i punti di massimo
locale.
Quali strategie usare?
L’operatore di Marr-Hildreth localizza il bordo in corrispondenza degli zero nella derivata seconda globale (ricordiamo che non fornisce la direzione del bordo in quanto è usato l’operatore
laplaciano).
L’operatore di Canny invece, annulla la derivata seconda direzionale per trovare l’orientazione
del gradiente e quindi la direzione ortogonale al bordo.
Questo è espresso dalla equazione:
∂gy
∂gx
∂2g
cos θ +
sinθ = 0
=
∂r2
∂r
∂r
(1.29)
dove r è la direzione rispetto alla quale si calcola la derivata seconda dell’immagine smussata
g, per qualunque valore dell’angolo θ compreso tra la direzione r e l’asse orizzontale delle x.
Si vuole evidenziare che la localizzazione dei bordi non risulta un compito molto semplice anche
in presenza di bordi ben delineati perchè non sempre risulta con valore zero la derivata seconda
dell’immagine smussata g.
Una buona strategia può essere quella di considerare l’andamento dei pixel localmente per
cercare i valori a zero della derivata seconda.
Questo è fattibile poichè in ogni pixel è nota la direzione normale r n al bordo.
La ricerca della locazione del bordo è poi realizzata considerando una finestra di dimensione
adeguata centrata sul pixel in elaborazione per analizzare i pixel vicini lungo la normale al bordo.
In questo modo, quando il segno della derivata seconda, lungo i pixel della normale, cambia,
viene considerata la locazione del bordo in corrispondenza del pixel dove la derivata seconda assume
valori assoluti più piccoli.
Una migliore stima della locazione può essere calcolata mediante interpolazione lineare o approssimando un limitato numero di pixel vicini.
In quest’ultimo caso si potrebbe stimare la locazione del bordo con l’accuratezza del subpixel.
L’idea di usare la derivata seconda dell’immagine smussata g comporta comunque problemi nel
caso di immagini molto rumorose e con notevole tessitura.
Una alternativa valida consiste nel ripetere la procedura precedente ma considerando solo le
informazioni associate al gradiente (ossia le derivate prime parziali e le loro manipolazioni).
Ritornando al calcolo della locazione del bordo il problema si riduce a trovare i massimi locali
nell’immagine gradiente (modulo) nella direzione perpendicolare al bordo dove la derivata seconda
direzionale è nulla. Per identificare i bordi, devono essere assottigliati i picchi dell’immagine
gradiente in modo da avere solo un punto in cui si verifica il minimo locale.
Questo processo è chiamato suppressione dei non massimi locali (non-maximal suppression,
NMS).
Tale processo assottiglia i picchi in M(i,j) ponendo a zero tutti i punti di M(i,j) lungo la direzione
θ(i,j) del gradiente che non sono valori di picco.
Alla fine di questo processo tutte le zone in M(i,j) con massimi locali sono state assottigliate
con picchi di un solo pixel, producendo in output l’immagine
N (i, j) = nms {M (i, j); θ(i, j)}
I pixel non zero in N (i, j) corrispondono nell’immagine d’origine a zone con discontinuità dei livelli
di grigio.
L’immagine non-maximal suppression N (i, j) contiene comunque diversi falsi bordi dovuti al
rumore ed alla alta tessitura presente nell’immagine originale f anche se inizialmente smussata con
filtro Gaussiano h(i, j; σ).
1.16. OPERATORE DI CANNY
51
Normalmente queste strutture non desiderate hanno valori bassi del gradiente. L’operatore
originale di Canny calcolava la direzione del gradiente in modo diverso.
Ricordando che g è l’immagine smussata, la direzione rn normale al bordo è stimata come
rn =
∇g(i, j)
M (i, j)
dove ∇ rappresenta il gradiente standard della funzione g che ha le due componenti vettoriali g x
e gy corrispondenti alle derivate prime parziali rispetto agli assi coordinati x ed y; M (i, j) è il
modulo del gradiente come definito in precedenza.
Una misura della robustezza del bordo può essere espressa facendolo coincidere con il modulo
del gradiente M (i, j) dell’immagine smussata g.
Un metodo per ridurre i falsi frammenti dei bordi presenti in N (i, j), l’immagine modulo del
gradiente (NMS) è quello di applicare una soglia adeguata. Tutti i valori di N (i, j) al di sotto di
un certo valore di soglia sono cambiati a zero.
La nuova immagine di N (i, j) cosı̀ ottenuta è in realtà l’immagine di origine f (i, j) con valori
di intensità coincidenti con il modulo del gradiente.
Tale immagine può essere considerata il risultato finale dell’operatore (algoritmo) di Canny che
ha estratto i bordi presenti nell’immagine ed i valori di intensità in questo caso danno una stima
della robustezza dei bordi identificati.
In dipendenza al valore di soglia T considerata, l’immagine finale, può presentarsi ancora con
frammenti di bordi falsi (soglia ancora bassa) oppure frammenti di bordi mancanti (soglia troppo
alta).
Questo problema non potrà mai essere del tutto eliminato a causa anche delle ombre presenti
nell’immagine originale.
Un approccio euristico può essere utilizzato per attenuare questo problema e consiste nel produrre diverse immagini N1 (i,j), N2 (i,j)......Nm (i,j) dall’immagine N, applicando diverse soglie T1,
T2, ...Tm .
Per esempio, considerando le soglie T1 e T2 con T2 =2T1 , sono prodotte le due corrispondenti
immagini N1 ed N2 .
La procedura prevede di analizzare i contorni nell’immagine N2 con soglia più alta, e non
appena trova una interruzione sul contorno in elaborazione, ricerca in N1 utilizzando l’adiacenza-8
per trovare bordi che possono essere collegati al contorno interrotto dell’immagine N 2 .
L’algoritmo continua in questo modo tentando di identificare in N1 solo i bordi mancanti in
N2 , con l’obiettivo di filtrare quelli falsi maggiormente presenti in N1 .
Ovviamente se la soglia scelta T2 non risulta ancora adeguata saranno presenti ancora bordi
non desiderati.
Un ulteriore tentativo può essere considerato ripetendo sulla stessa immagine l’operatore di
Canny con diversi livelli di smoothing variando σ, ossia usando maschere di filtraggio gaussiano
con diverse dimensioni 5×5, 7×7, 11×11, ecc..
Ricordiamo infine che i risultati di qualunque operatore sono anche dipendenti intrinsecamente
dal tipo di immagine in esame.
Il compromesso tra i bordi evidenziati, la loro localizzazione e le strutture spurie non desiderate,
é controllato dall’utente, in relazione al contesto applicativo.
1.16.1
Algoritmo di Canny
I passi essenziali dell’operatore (algoritmo) di Canny sono cosı̀ riassunti:
1-L’immagine originale f(i,j) è convoluta con il filtro Gaussiano h(i,j;σ) ottenendo l’immagine
smussata g(i,j).
2-Calcola le seguenti informazioni (immagini) associate al gradiente per ciascun pixel dell’immagine smussata g(i,j):
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
52
• gx (i,j) derivata prima parziale (componente orizzontale)
• gy (i,j) derivata prima parziale (componente verticale)
• M(i,j) modulo del gradiente
• θ(i,j) direzione del gradiente
3-Applica la procedura di non-maximal suppression (NMS) all’immagine modulo del gradiente
M (i, j) ottenendo come risultato l’immagine N (i, j) contenente i bordi localizzati lungo il gradiente
ed i valori dei pixel rappresentano la robustezza dei bordi presenti nell’immagine originale f (i, j)
espressa in termini di modulo del gradiente.
4-Attivare una procedura euristica che utilizza adeguate soglie per l’immagine N (i, j) allo scopo
di attenuare la presenza di falsi bordi e di collegare contorni interrotti.
5-Ripetere eventualmente i 4 passi precedenti con valori crescenti di σ k ottenendo le immagini
di bordo N(i,j; σ k ) per avere diversi risultati dell’operatore di Canny.
6-Possibilità di integrare i risultati conseguiti N(i,j; σ k ) a diverse scale in relazione al contesto
applicativo.
I passi formali dell’operatore di Canny sono i primi 4. Il passo 3 può essere sostituito localizzando gli edge in corrispondenza degli zero della derivata seconda direzionale.
L’operatore di Canny è il più complesso tra gli operatori di estrazione dei bordi considerati e
sembra offrire le migliori prestazioni anche se non risolve completamente tutti i problemi.
In generale gli operatori esaminati a prescindere dalla loro complessità, tutti soffrono più o
meno degli stessi problemi.
Hanno la tendenza a creare bordi con tratti interroti e mancanti invece di essere continui, e di
unire tratti dei bordi che invece dovrebbero essere separati.
La ricerca di nuovi operatori sicuramente attenuerá questi problemi ma mai riuscirá a risolvere
gli errori causati dalla discontinuità di intensità associabili con i confini geometrici degli oggetti.
Molte di queste discontinuità ricordiamo dipendenti da altri fenomeni quali le ombre, fluttuazioni dei sensori e dell’elettronica del sistema di acquisizione.
Questo porterà allo sviluppo di ulteriori algoritmi da applicare successivamente agli operatori
di estrazione bordi per definire una immagine con bordi che hanno una loro consistenza geometrica
che meglio descrivano i contorni degli oggetti.
Tali algoritmi richiederanno conoscenza a priori della scena ed utilizzeranno anche tecniche su
basi euristiche (processi di post edge detector).
1.17
Filtro passa-alto
I filtri passa-alto producono l’effetto opposto dei filtri passa-basso.
Accentuano le componenti di alta frequenza mentre attenuano le componenti di bassa frequenza.
Tutti gli operatori di estrazione dei bordi visti in precedenza possono essere analizzati nel
dominio delle frequenze considerando la funzione di trasferimento associata a ciascun operatore.
Infatti tutte le discontinuità presenti nell’immagine (bordi e rumore) sono associate alle componenti di alta frequenza.
Da ciò consegue che gli operatori di estrazione dei bordi sono filtri del tipo passa-alto e possono
essere definiti anche direttamente nel dominio delle frequenze.
Le maschere di convoluzione progettate nel dominio spaziale per estrarre i bordi avevano il pixel
centrale con un peso maggiore rispetto a tutti gli altri circostanti.
Questo era fatto proprio per accentuare le discontinuità presenti nell’immagine. Ciò nel dominio
delle frequenze equivale ad una accentuazione delle alte frequenze.
Se nell’immagine non sono presenti discontinuità l’operatore non produce nessuna alterazione.
Questo spiega come un filtro passa-basso non altera le componenti di bassa frequenza.
1.17. FILTRO PASSA-ALTO
53
Un filtro passa-alto oltre ad esaltare i bordi può essere usato anche per migliorare la qualità
visiva dell’immagine (enhancement) esaltando strutture oscurate per l’effetto nebbia o per l’effetto
di sfocamento.
1.17.1
Filtro ideale passa-alto (IHPF)
La funzione di trasferimento di questo filtro bidimensionale è definito come segue:
0
l(u, v) ≤ l0
H(u, v) =
l(u, v) > l0
1
(1.30)
√
dove l0 è la frequenza di taglio ed l(u, v) = u2 + v 2 è la generica distanza di un punto (u,v)
dall’origine nel dominio delle frequenze.
Come si può osservare dalla figura, questo filtro è l’opposto del filtro ideale passa-basso poichè
elimina completamente tutte le basse frequenze comprese fino alla soglia l 0 , mentre lascia completamente intatte tutte le altre frequenze superiori ad l0 .
Nella realtà questo filtro non è realizzabile.
1.17.2
Filtro passa-alto di Butterworth (BHPF)
Questo filtro ha la funzione di trasferimento definita come:
H(u, v) =
1
1 + [l0 /l(u, v)]2n
(1.31)
dove l0 ed l(u, v) hanno lo stesso significato visto in precedenza, ed n è l’ordine del filtro.
Quando l(u, v) = l0 , la funzione di trasferimento H(u, v) ha valore.5 ossia ha raggiunto metà
del suo massimo valore. É comune
√ in pratica selezionare il luogo delle frequenze di taglio a punti
per i quali H(u, v) é inferiore a 1/ 2 del suo massimo valore. La funzione di trasferimento diventa:
H(u, v) =
1.17.3
1
√
1 + ( 2 − 1)[l0 /l(u, v)]2n
(1.32)
Filtro passa-alto Esponenziale
Questo filtro ha la seguente funzione di trasferimento:
H(u, v) = e−[l0 /l(u,v)]
n
(1.33)
dove con n si controlla la velocita’ di crescita della funzione con l’aumentare di l. Nella figura
seguente la funzione di trasferimento è visualizzata per n uguale a 2.
1.17.4
Filtro ideale passa-banda
Il filtro passa-banda seleziona un intervallo di frequenze (banda) in una specificata regione mentre
attenua oppure elimina completamente le frequenze esterne a tale intervallo.
La funzione di trasferimento è data da:
H(u, v) =
1
l0 − Δl
2 ≤ l(u, v) ≤ l0 +
altrimenti
dove l0 indica il raggio centrato sulla banda Δl.
Δl
2
(1.34)
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
54
1.17.5
Filtro ideale non passa-banda
Questo filtro opera in modo opposto al filtro ideale passa-banda.
Tale filtro rimuove tutte le frequenze definite in una banda e lascia inalterate tutte le altre
esterne alla banda.
La funzione di trasferimento è definita da:
⎧
l(u, v) < l0 − Δl
⎨ 1
2
Δl
0
H(u, v) =
(1.35)
l0 − Δl
2 ≤ l(u, v) ≤ l0 + 2
⎩
Δl
1
l(u, v) > l0 + 2
dove Δl è la larghezza della banda, ed l0 è il raggio della frequenza centrale della banda.
1.17.6
Filtro passa-banda differenza di Gaussiane
L’accentuazione delle alte frequenze associate ad una determinata banda, può essere ottenuta con
una funzione di trasferimento espressa come la differenza di due gaussiane con diversa larghezza ν:
H(u, v) = H(l, ν1 ) − H(l, ν2 ) = Ae
−l
2 (u,v)
2
2ν1
− Be
−l
2 (u,v)
2
2ν2
(1.36)
con A ≥ B e le deviazioni standard ν 1 > ν 2 .
La risposta impulsiva di questo filtro è già nota:
h(x, y) = Ae
−
r2
2
2σ1
− Be
−
r2
2
2σ2
con σi =
1
νi
(1.37)
Si ricorda come σ j e ν j le larghezze delle gaussiane sono inversamente proporzionali tra loro
rispettivamente nel dominio spaziale e delle frequenze.
La risposta impulsiva (fig. c, d) è tipica di un filtro passa-banda e dei filtri di esaltazione delle
alte frequenze per avere la base del dell’impulso positivo nella zona negativa (cappello messicano).
Se ν1 → ∞ , la corrispondente gaussiana (più stretta) nel dominio spaziale si restringe fino a
diventare un impulso (fig. f) ed il filtro H(u,v) ha la forma mostrata in fig. e).
Si osserva inoltre la differenza tra un filtro H(u,v) che ritorna a zero verso le alte frequenze
(fig. b) ed un altro come in fig. e) che dipende dalla larghezza dell’impulso centrale nel dominio
spaziale.
1.18
Filtri di Sharpening
Questa categoria di filtri accentuano le alte frequenze presenti in una immagine per migliorarne
solo le qualità visive, rendono più nitide le strutture discontinue (sharp) per facilitare l’ispezione
visiva di una immagine all’osservatore umano.
Tali filtri sono particolarmente utili anche per il restauro di immagini rumorose e durante il
processo di stampa.
1.18.1
Filtri lineari di Sharpening
A differenza degli operatori di estrazione di bordi descritti in precedenza, questi filtri accentuano le
alte frequenze solo con lo scopo di esaltare le strutture discontinue e migliorarne la loro visibilità.
In figura è rappresentata una funzione a gradino f(x) che evidenzia una leggera transizione di
intensità.
La risposta impulsiva h(x) di un tipico filtro passa-alto (con picco positivo e due picchi negativi
agli estremi) può essere utilizzato per convolvere l’immagine f(x) da sinistra a destra.
1.18. FILTRI DI SHARPENING
55
Come la convoluzione procede, i due picchi laterali e quello principale di h(x) incontrano la
transizione presente nell’immagine.
Il risultato della convoluzione g(x) produce una esaltazione della transizione accentuandone la
pendenza e generando un segnale più lungo rispetto a quello di origine con due gobbe agli estremi
della transizione.
Questo è il tipico effetto prodotto da qualunque filtro che accentua i dettagli di alta frequenza
spaziale.
L’implementazione mediante convoluzione discreta è data dalla nota espressione:
g(i, j) = f (i, j) h(i, j)
dove la risposta impulsiva h(i, j) è normalmente del tipo passa-banda o
esempio laplaciano).
La maschere di convoluzione più usate sono:
0 −1 0 −1 −1 −1 1
h1 = −1 5 −1 h2 = −1 9 −1 h3 = −2
0 −1 0 −1 −1 −1 1
(1.38)
meglio passa-alto (per
−2 1 5 −2 −2 1 Una caratteristica di queste maschere è che la somma dei coefficienti è sempre 1 per eliminare
problemi di normalizzazione.
*
1.18.2
Unsharp Masking
Un altro metodo, chiamato unsharp masking è utilizzato per migliorare la qualità visiva di una
immagine accentuando le alte frequenze spaziali.
Le basi teoriche di questo metodo sono le seguenti. Consideriamo nel continuo la seguente
risposta impulsiva:
x2
h(x) = 2δ(x) − e− 2σ2
(1.39)
dove il primo termine indica la funzione Delta di Dirac ed il secondo termine rappresenta una
gaussiana con varianza σ 2 .
Se f (x) è l’immagine da convolvere, si osserva quanto segue:
x2
g(x) = f (x) ∗ h(x) = f (x) 2δ(x) − e− 2σ2
x2
= f (x) ∗ 2δ(x) − f (x) ∗ e− 2σ2
= 2f (x) − f (x) ∗ e
x2
− 2σ
2
(1.40)
= 2f (x) − fG (x; σ)
In definitiva, il risultato di migliorare la nitidezza dell’immagine accentuando le alte frequenze
spaziali, si ottiene, sottraendo pixel a pixel dall’immagine originale (moltiplicate prima per 2)
2·f(x), una immagine sfocata con un filtro gaussiano di larghezza σ (tipico filtro passa-basso di
smoothing f(x,σ)).
Tutto il processo è evidenziato graficamente da cui si osserva come il risultato finale ha la tipica
forma d’onda di una transizione più accentuata e con una esaltazione della curva agli estremi della
transizione.
Più in generale possiamo affermare che data una immagine discreta f (i, j), l’immagine unsharp
masked associata g(i, j) è ottenuta dalla relazione:
g(i, j) = a · f (i, j) − b · fL (i, j)
(1.41)
dove fL (i, j) è l’immagine di origine sfocata con qualunque filtro passa-basso, a e b sono opportuni
pesi da applicare all’immagine di origine e quella sfocata in relazione al rapporto di risoluzione
spaziale che si vuole tra le due immagini.
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
56
I risultati ottenuti con questi metodi sono valutati in modo soggettivo ed in relazione al campo
di applicazione.
Questa tecnica è particolarmente usata per le applicazioni di stampa e per la visualizzazione
delle immagini acquisite da uno scanner.
Per esempio una immagine può essere acquisita a due gradi di risoluzione, una rappresenta la
risoluzione di normale acquisizione (l’immagine f) e l’altra a risoluzione più bassa per simulare
l’immagine fL sfocata.
L’immagine unsharp masked è ottenuta applicando in modo appropriato l’equazione sopra
descritta.
Oltre ai due metodi proposti, l’edge sharpening può essere implementato operando nel dominio
delle frequenze.
In questo caso possono essere utilizzati filtri passa-alto nel dominio delle frequenze già descritti
in precedenza (Butterworth passa-alto, passa-alto ideale, ecc.).
1.19
Estrazione di punti
In diverse applicazioni è necessario evidenziare e localizzare discontinuità puntiformi presenti in
una immagine.
Per tale scopo è utile calcolare l’immagine gradiente con diverse maschere di convoluzione, con
diverse risposte impulsive h(i, j), che meglio accentuano le transizioni in corrispondenza di zone
puntiformi.
Le maschere di convoluzione laplaciano 3×3 già descritte in precedenza possono essere considerate:
0 −1
−1 −1 −1 −2 1 −2 0 4 −1 h2 = 18 −1
8 −1 h3 = 18 1 4
1 h1 = 14 −1
0 −1
−1 −1 −1 −2 1 −2 0 per calcolare l’immagine gradiente g(i, j); si utilizza la nota equazione
g(i, j) = f (i, j) h(i, j)
dove f (i, j) è l’immagine di input.
In zone omogenee dell’immagine il risultato della convoluzione è zero poichè zero è la somma
dei coefficienti delle maschere.
Se il pixel in elaborazione dove è centrata la maschera è un punto isolato con un’intensità più
alta rispetto ai pixel vicini, il valore del gradiente è maggiore di zero.
Normalmente le zone puntiformi sono ben evidenziate dall’immagine gradiente g(i,j) con la
condizione
|g(i, j)| > S
dove S è un valore di soglia del gradiente, selezionata in modo appropriata, per esaltare solo le
zone puntiformi di interesse rispetto al tipo di applicazione.
Qualche inconveniente si può verificare nel selezionare la soglia S se si ricorda che il gradiente
laplaciano localizza le discontinuità, non in relazione a particolari valori del gradiente, ma attraverso
il cambiamento di segno (zero crossing) della derivata seconda.
Questo problema può essere attenuato come suggerito da Prewitt con la seguente maschera
1 −2
1 1
h4 = −2
4 −2 8
1 −2
1 Inoltre, prima di applicare l’operatore laplaciano, un filtro passa-basso può essere utilizzato per
smussare l’immagine.
1.20. ESTRAZIONE DI LINEE
57
Infine le zone puntiformi possono essere evidenziate anche con tecniche correlative dove finestre
campioni di dimensioni L×L sono utilizzate contenenti le zone puntiformi di interesse da ricercare
nell’immagine (problema più generale considerato con un matched filter).
1.20
Estrazione di linee
In diverse applicazioni di analisi delle immagini, oltre alle estrazioni di strutture elementari come
i bordi, interessa evidenziare strutture più complesse come segmenti di linea, o più in generale
accentuare i contorni di un oggetto rispetto allo sfondo.
Alcuni degli operatori di estrazione dei bordi descritti possono essere modificati per specializzarli
alla determinazione delle linee (per esempio l’operatore di Canny, laplaciano, gradiente).
In questo paragrafo saranno considerati alcuni operatori per l’estrazione di segmenti di linee
con lunghezza limitata.
Altri algoritmi saranno considerati successivamente per connettere insieme linee interrotte
oppure disconnettere segmenti di linee erroneamente collegate.
Nel contesto attuale considereremo operatori basati sul gradiente specializzati ad esaltare brevi
tratti di linee verticali, orizzontali ed diagonali.
L’immagine gradiente è calcolata mediante convoluzione dell’immagine f(i,j) con diverse maschere:
hk (i,j) di 3×3, i cui coefficienti sono selezionati per garantire una risposta impulsiva di un operatore
che estrae linee nelle diverse orientazioni:
4
g(i, j) = max |f (i, j) hk (i, j)|
k=1
Le maschere per l’estrazione di tratti di linee in 4 direzioni possibili con fattori di scala di 1/6
sono:
−1 2 −1 −1 −1 −1 2
2 h1 = −1 2 −1 h2 = 2
−1 2 −1 −1 −1 −1 verticale
orizzontale
−1 −1
2 2 −1 h3 = −1
2 −1 −1 +45◦
2 −1 −1 2 −1 h4 = −1
−1 −1
2 ◦
−45
Nelle zone omogenee dell’immagine il gradiente è zero mentre in presenza di discontinuità il
valore del pixel è accentuato.
In alcuni casi l’operatore di estrazione delle linee può essere riapplicato alla stessa immagine
gradiente per esaltare ulteriormente le linee estratte nella prima operazione.
L’effetto del rumore può essere attenuato smussando con un filtro passa-basso da applicare
prima dell’operatore di estrazione delle linee.
Inoltre è possibile utilizzare maschere di convoluzione di dimensione 5×5 per aumentare il
numero di orientazioni delle linee.
Infine, anche per l’estrazione delle linee possono essere utilizzate tecniche correlative per confrontare l’immagine originale con diverse finestre di immagini campioni contenenti segmenti di linee
in diverse direzioni (template matching).
58
CAPITOLO 1. OPERAZIONI LOCALI: EDGING
Capitolo 2
Trasformazioni geometriche
y
y’
x
x’
Figura 2.1: Esempio di trasformazione geometrica.
Le trasformazioni geometriche sono necessarie in diverse applicazioni sia per correggere eventuali
distorsioni geometriche introdotte durante l’acquisizione (per esempio, immagini acquisite mentre
gli oggetti oppure i sensori sono in movimento, acquisizione da satellite, distorsioni introdotte dal
sistema ottico, ecc.), oppure per introdurre voluti effetti geometrici visivi.
In tutti e due i casi, l’operatore geometrico deve essere in grado di riprodurre nel modo piú
fedele possibile l’immagine con le medesime strutture radiometriche.
Una trasformazione (operazione) geometrica modifica la locazione di un pixel dentro un’immagine. Questo é realizzato scegliendo una appropriata relazione matematica che lega le coordinate
spaziali (x, y) dei pixel dell’immagine di input f (x, y) con le nuove coordinate (x , y ) dell’immagine
di output g(x, y) (figura 2.2).
Nel contesto di immagini digitali una trasformazione geometrica si compone di due operatori:
• Operatore geometrico che definisce le trasformazioni spaziali pixel per pixel tra le coordinate
Tx (x, y) dell’immagine di input e le coordinate Tx (x , y ) dell’immagine di output.
• Operatore di interpolazione che assegna un appropriato livello di grigio ai pixel dell’immagine
di output trasformata interpolando il valore dei pixel dell’immagine di input.
2.0.1
Operatore geometrico
La relazione matematica che lega le coordinate dei pixel dell’immagine di input f (x , y ) con quelle
dell’immagine di output g(x, y) puó essere definita in forma generale dalla seguente equazione:
g(x, y) = f (x , y ) = f [Tx (x, y), Ty (x, y)]
(2.1)
dove (x , y ) sono le nuove coordinate trasformate di un pixel (l’output dell’operatore geometrico) che nell’immagine di input era localizzato con coordinate (x, y), mentre le funzioni T x (x, y)
e Ty (x, y) specificano univocamente le trasformazioni spaziali (operatore geometrico) applicate
rispettivamente alle componenti cartesiane x ed y dei pixel dell’immagine di input.
59
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
60
f(x,y)
P(x’,y’)
g(x’,y’)
T
(a)
P(x,y)
P(x 2,y 2)
(b)
y
y’
x
x’
P(x’ 2 ,y’2 )
Figura 2.2: Esempio di trasformazione geometrica.
Le funzioni di trasformazione spaziale (dette anche funzioni di mapping) sono date dalle seguenti
equazioni generali:
x = Tx (x, y)
x = Tx−1 (x , y )
y = Ty (x, y)
y = Ty−1 (x , y )
(2.2)
Dirette
Inverse
Le equazioni di trasformazione eq. (2.2) possono essere lineari e non lineari. Le equazioni
dirette sono quelle che determinano la locazione del pixel nell’immagine trasformata (immagine di
output) mentre le equazioni inverse determinano la posizione originale del pixel nell’immagine di
input. Le trasformazioni spaziali lineari includono anche le semplici trasformazioni di traslazione,
rotazione e di ingrandimento o riduzione.
Le trasformazioni spaziali non lineari, dette anche trasformazioni di deformazione (warping
transformations), introducono forti deformazioni con curvature dell’immagine trasformata.
Il tipo di trasformazione da utilizzare dipende dal contesto applicativo.
Per esempio, nella ricostruzione (restoration) di una immagine, per eliminare semplici aberrazioni ottiche oppure distorsioni geometriche, introdotte in fase di acquisizione, possono essere
utilizzate trasformazioni spaziali lineari.
Trasformazioni non lineari sono richieste nel caso di registrare piú immagini acquisite in tempi
diversi ed in condizioni di instabilitá non lineare dei sensori oppure attenuare le aberrazioni ottiche
di tipo non lineare.
Le equazioni eq. (??) determinano la posizione dei pixel nell’immagine di output (trasformazione diretta) e nell’immagine di input (trasformazione inversa) senza attribuire un valore del
livello di grigio. Vediamo ora come sono associati i livelli di grigio all’immagine di output g durante
il processo di trasformazione spaziale diretto.
Un primo approccio puó essere quello di applicare le funzioni di trasformazione spaziale pixel
per pixel alle coordinate (xi , yi ) dell’immagine di input, ottenere le nuove coordinate (xi , yi ) ed
associare a questi ultimi il livello di grigio di origine f (xi , yi ).
Piú in generale l’equazione risulterebbe:
f (x, y)
T
g(x , y )
→
(2.3)
In altre parole, ogni pixel di input con coordinate (x, y) é trasformato alle nuove coordinate
(x , y ) mediante le funzioni di trasformazione T = (Tx , Ty ) e viene associato il livello di grigio
originale f (x, y).
Come evidenziato in figura 2.2, la generica trasformazione geometrica T puó proiettare il pixel di
input tra quattro pixel (caso b) di output (questo puó dipendere anche dalla risoluzione numerica
della trasformazione che potrebbe determinare coordinate con valori non interi) oppure coincide
totalmente con un pixel di output (caso a).
61
T −1
f(x,y)
P(x’,y’)
g(x’,y’)
(a)
T−1(x’,y’)
(b)
y
T−1(x’,y’)
x
g(x,y)
y’
x’
Figura 2.3: Esempio di trasformazione geometrica inversa.
Nel caso (b), il livello di grigio del pixel di input influenza i valori di grigio da attribuire ai
quattro pixel vicini, nell’immagine di output, in accordo ad un modello di interpolazione.
Quest’ultima operazione, ossia il problema dell’interpolazione dei pixel, verrá analizzata in
dettaglio nel seguito.
Ritornando al tipo di trasformazione adottata (eq. 2.3), ossia, ogni pixel di f (x, y) é proiettato,
mediante T , per produrre in output una nuova immagine g(x , y ). Tale trasformazione, non sembra
operi correttamente, infatti, in relazione al tipo di trasformazione T (specialmente quando una
immagine é ingrandita, oppure con trasformazioni warp) si ottiene in output una immagine g(x , y )
con regioni vuote ove non sono stati proiettati pixel di input. Per esempio, l’immagine di (figura
2.6a) é stata ruotata di 15 gradi in senso antiorario e nelle zone in nero nell’immagine di output
(figura 2.6b) non sono stati proiettati pixel dell’immagine di input poiché non disponibili. L’assenza
di questi pixel nell’immagine originale si potrebbero determinare immediatamente applicando ai
pixel dell’area in nero la trasformata inversa e si riscontrerebbero essere localizzati in zone non
esistenti dell’immagine originale.
Un approccio alternativo, puó essere utilizzato, per associare i livelli di grigio all’immagine di
output. Come si vedrá in seguito questo elimina l’inconveniente delle regioni vuote.
Tale approccio consiste nel considerare la trasformata geometrica inversa T −1 come segue:
g(x, y)
T −1
f (x , y )
←
con
x
y
Dirette
=
=
Tx−1 (x , y )
Ty−1 (x , y )
Inverse
(2.4)
(2.5)
da cui risulta che ogni pixel dell’immagine di output é ritrasformato (proiettato all’indietro)
nell’immagine di input per ereditare il corrispondente livello di grigio.
In altre parole ogni pixel di output (x , y ) é trasformato geometricamente mediante la funzione
inversa T −1 allo scopo di rilocalizzare la sua posizione (x, y) nell’immagine di input e quindi
associare il livello di grigio corrispondente. Questo approccio avrebbe il vantaggio di evitare i
vuoti nell’immagine di output qualora fossero disponibili i pixel corrispondenti nell’immagine di
output. Solitamente si sceglie una immagine di input di dimensioni adeguatamente piú grande
di quella di output. Con questo approccio, si usa l’immagine di input come LOOK-UP table per
l’associazione dei livelli di grigio tra i pixel di output (x , y ) e quelli di input (x, y). Si puó verificare
anche in questo caso che il pixel di output possa essere localizzato tra quattro pixel nell’immagine
di input come evidenziato per il caso b) nella (figura ??).
In questo caso, il livello di grigio del pixel di output sarebbe influenzato dai livelli di grigio dei
quattro pixel piú vicini in accordo all’operazione di interpolazione.
Si puó concludere come segue:
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
62
• si utilizzerá la trasformazione diretta eq. (2.3), per semplici trasformazioni lineari dove si é
certi di non avere inconvenienti di regioni vuote nell’immagine di output oppure questo non
costituisce un problema;
• si utilizzerá la trasformazione inversa eq. (2.4) quando é possibile evitare le zone vuote e per
tutte le trasformazioni non lineari.
2.0.2
Sistemi di Coordinate e Coordinate omogenee
Consideriamo un sistema di coordinate ortonormale, (O, i, j, k) con O un punto dello spazio
Euclideo 3 rappresentante l’origine, ed i, j e k i tre vettori di base.
2.0.3
Traslazione
L’operatore di traslazione é una trasformazione lineare che produce l’immagine g(x , y ) traslando
tutti i pixel di una immagine f (x, y) di una quantitá tx , lungo l’asse coordinato x, e di una quantitá
ty , lungo l’asse coordinato y, rispetto all’origine degli assi coordinati di input.
La trasformazione diretta é data dalle seguenti equazioni:
x
y
=
=
x + tx
y + ty
(2.6)
dove (x , y ) sono le coordinate di output, (x, y) sono quelle di input e tx e ty sono rispettivamente
le costanti di traslazione in direzione dell’asse delle x e delle y.
La trasformazione inversa é data da:
x
y
=
=
x − tx
y − ty
(2.7)
Se le traslazioni tx ed ty non sono dei valori interi, allora le coordinate trasformate (x , y ), oppure
quelle inverse (x, y) non localizzano un pixel nel punto del grigliato, ma ricade tra quattro pixel
adiacenti. In tal caso, é necessario ricorrere all’interpolazione (vedi par.1.0.1) per stimare il valore
del pixel nell’immagine di output.
2.0.4
Ingrandimento o riduzione
Le coordinate di trasformazione per ingrandire o ridurre una immagine sono date dalle equazioni:
x
y
=
=
x · Sx
y · Sy
Sx > 1 e S y > 1
0 < S x e Sy < 1
Sx = 1 e S y = 1
⇒
⇒
⇒
ingrandimento
riduzione
nessun effetto
(2.8)
dove (x, y) sono le coordinate dell’immagine di input, (x , y ) sono le coordinate dell’immagine
trasformata, ed Sx con Sy indicano rispettivamente il fattore di ingrandimento o di riduzione
rispettivamente in direzione degli assi coordinati x ed y.
Se Sx ed Sy sono reali é necessario l’interpolazione per l’assegnazione del valore del pixel.
La trasformata inversa é data dalle equazioni:
x =
y =
x’/ Sx
y’/ Sy
(2.9)
63
2.0.5
Rotazione
Un’immagine puó essere ruotata di un angolo θ intorno all’origine degli assi cartesiani se le
coordinate di input (x, y) sono trasformate con le seguenti equazioni:
y’ y
x’ =
y’ =
x·cosθ + y · sinθ
-x·sinθ + y · cosθ
(2.10)
x’
q
x
dove (x , y ) sono le coordinate di output dopo la rotazione di un angolo θ (valore positivo
per rotazioni antiorarie) rispetto all’asse delle x dell’immagine di input. Anche da queste ultime
equazioni é possibile derivare le funzioni inverse per localizzare il pixel trasformato (x , y ) nell’immagine di input in (x, y). Risulta comunque piú conveniente operare in termini matriciali come si
mostrerá nel seguito.
2.0.6
Skew
Questa trasformazione geometrica introduce una rotazione di un angolo θ solo rispetto all’asse x
lasciando invariate le coordinate lungo l’asse delle y.
Le equazioni di trasformazione sono:
x’ =
y’ =
2.0.7
x + y·tanθ
y
θ
Speculare
Questa trasformazione geometrica produce lo stesso effetto dell’immagine riflessa da uno specchio.
Si ottiene invertendo l’ordine dei pixel di ciascuna riga dell’immagine di input.
Le equazioni di trasformazione sono:
x’ =
y’ =
L-x+1
y
dove L é la dimensione (in pixel) dell’immagine nella direzione delle linee (asse delle x).
Una trasformazione speculare verticale é ottenuta invertendo l’ordine dei pixel di ciascuna
colonna dell’immagine di input:
x’ =
y’ =
x
L-y+1
dove L é la dimensione (in pixel) verticale dell’immagine (asse delle y).
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
64
2.0.8
Trasposta
Questa trasformazione é ottenuta come avviene nella trasposizione delle matrici scambiando le
righe con le colonne.
La prima riga dell’immagine di input diventa la prima colonna nell’immagine di output.
Se l’immagine non é quadrata le dimensioni orizzontali e verticali sono scambiate nell’immagine
di output.
Questa trasformazione é utilizzata spesso quando si opera con maschere di convoluzione separabili.
3
1
3
1
2
2
Figura 2.4: Esempio di trasformazione geometrica trasposta.
2.1
Trasformazioni geometriche lineari generalizzate
Piú in generale, una trasformazione geometrica lineare é rappresentata da una trasformazione
lineare (chiamata anche operatore oppure mapping). Una rappresentazione grafica della trasformazione geometrica lineare é mostrata in figura 2.5 dove si evidenziano deformazioni lineari ossia
nessuna curvatura presente nell’immagine.
T
T
−1
Figura 2.5: Esempio di trasformazione geometrica lineare.
Le equazioni di tale trasformazione geometrica (chiamata anche trasformazione affine) in formato
vettoriale sono date da:
x = a11 x + a12 y + b1
(2.11)
y = a21 x + a22 y + b2
dove aij sono i coefficienti della generica trasformazione lineare (includendo rotazione e deformazione lineare) e bi sono le costanti di traslazione nella direzione dell’i-mo asse.
Una rappresentazione matriciale della trasformazione geometrica precedente é la seguente:
x
y
=
a11
a21
a12
a22
x
b1
·
+
b2
y
(2.12)
dove le coordinate (x, y) ed (x , y ), rispettivamente di input e di output, sono espresse in
forma vettoriale mentre i coefficienti aij definiscono la matrice della trasformazione lineare. Le
trasformazioni lineari elementari analizzate nei paragrafi precedenti sono ora riscritte in forma
matriciale.
2.1. TRASFORMAZIONI GEOMETRICHE LINEARI GENERALIZZATE
Traslazione
Rotazione
Scaling
x
y
x
y
=
=
x
y
cosθ
−sinθ
=
x
y
Sx
0
+
sinθ
cosθ
0
Sy
tx
ty
65
x
y
x
y
Si ha pertanto un Ingrandimento se Sx > 1 ed Sy > 1 ed una riduzione, se 0 ≤ Sx ed Sy < 1.
Consideriamo ora una trasformazione geometrica composta, costituita da una rotazione, da
un’operazione di scaling (ingrandimento o riduzione) e da una traslazione. Essa puó essere espressa
come segue:
0
0
cosθ
sinθ
Sx
x
cosθ
sinθ
Sx
tx
x
=
·
+
(2.13)
0
Sy
0
Sy
y
ty
−sinθ cosθ
y
−sinθ cosθ
Oppure in una forma piú compatta:
x
x
Sx tx cos θ
Sx cos θ
Sy sin θ
+
=
y
y
−Sx sin θ Sy cos θ
−Sx tx sin θ
Sy ty sin θ
Sy ty cos θ
(2.14)
che risulta chiaramente lineare. Si osserva come la (2.14) ha i termini in corrispondenza uno a uno
con la (2.11).
In sostanza una trasformazione geometrica composta é ottenuta dal prodotto delle matrici
di trasformazione geometrica elementari. La trasformazione geometrica composta espressa dalla
(2.14) combina le trasformazioni elementari di rotazione e scaling che puó essere rappresentata
dalla matrice di trasformazione ottenuta dal prodotto delle matrici di trasformazione elementari.
Esprimendo le coordinate di input e di output in coordinate omogenee, rispettivamente (x, y, 1)T
ed (x , y , 1)T , segue una ulteriore compattazione delle relazioni precedenti. La (2.12) diventa la
seguente:
⎤⎡
⎤
⎡ ⎤ ⎡
a11 a12 b1
x
x
⎣ y ⎦ = ⎣ a21 a22 b2 ⎦ ⎣ y ⎦
(2.15)
1
0
0
1
1
Nel seguito sono riportate le matrici delle trasformazioni geometriche elementari per operare in
coordinate omogenee.
RIPORTARE QUI LE MATRICI DI PAG.11-12 DELLE DISPENSE: rOTAZIONE, TRASLAZIONE,
DEFORMAZIONE, DEFORMAZION+ROTAZIONE
++++++++++++++++++++++++++++++++eLIMINARE+++++++++
x
x
b1
a1 1 a 1 2
+
=
(2.16)
y
y
b2
a2 1 a 2 2
é in corrispondenza uno-a-uno con l’equazione (2.16). Quest’ultima puó essere riscritta in forma
piú compatta
⎡
⎤
x
a1 1 a 1 2 b 1 ⎣
x
y ⎦
(2.17)
=
y
a2 1 a 2 2 b 2
1
——————————————–fine eliminaz
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
66
Piú in generale possono essere concatenate piú trasformazioni elementari e ricavare le matrici
globali di trasformazione. Per esempio le trasformazioni geometriche elementari precedenti rappresentate dalle matrici di rotazione R, di deformazione D, e di scala S, possono essere combinate e
rappresentate da una unica matrice di trasformazione A data con la seguente relazione:
A=R×D×S
L’ordine nel concatenare le trasformazioni é importante poichè la moltiplicazione tra matrici non
soddisfa la proprietá commutativa.
Abbiamo giá visto in precedenza la necessitá, quando si eseguono trasformazioni geometriche
delle immagini, di dover localizzare le coordinate di un pixel dallo spazio di output a quello di
input per attribuire un appropriato livello di grigio (fase di interpolazione). Questo implica il
calcolo delle coordinate (x, y) partendo da quelle di output (x , y ). Questo realizzato mediante la
trasformata lineare inversa che equivale al calcolo della matrice inversa di trasformazione T −1 .
+++++++++++++++++++++++++++Eliminare Per ottenere la trasformata inversa
dalla (2.18) é necessario calcolare per x , y per ottenere x, y. La matrice peró non é quadrata, e
pertanto non possiede inversa. Sará quindi necessario aumentare la dimensione della matrice in
modo da renderla quadrata e calcolare la sua pseudoinversa. La sua versione aumentata sará:
⎡ ⎤ ⎡
⎤⎡
⎤
x
a1 1 a 1 2 b 1
x
⎣ y ⎦ = ⎣ a2 1 a 2 2 b 2 ⎦ ⎣ y ⎦
(2.18)
1
0
0
1
1
Tale rappresentazione tridimensionale di un vettore bidimensionale é un caso speciale di una rappresentazione a coordinate omogenee. La rappresentazione in coordinate omogenee rappresenta una semplificazione della formulazione del problema. Per esempio, si consideri una rotazione
dell’immagine di θ gradi attorno ad un punto fisso (xc , yc )
⎤⎡
⎡ ⎤ ⎡
⎤
x
x
cos θ
sin θ −xc cos θ + yc sin θ + xc
⎣ y ⎦ = ⎣ − sin θ cos θ −xc sin θ − yc cos θ + yc ⎦ ⎣ y ⎦
(2.19)
1
0
0
1
1
————————-FineElim
La trasformata inversa T −1 nel caso generale, considerando la (2.15), é data da:
⎤⎡ ⎤
⎡
⎤ ⎡
x
x
C11 C12 K1
⎣ y ⎦ = ⎣ C21 C22 K2 ⎦ ⎣ y ⎦
0
0
1
1
1
dove Cij e Ki sono analoghi coefficienti della matrice inversa di trasformazione A−1 .
In genere le matrici inverse di trasformazioni complesse sono ottenute utilizzando metodi
numerici.
Di seguito diamo le matrici inverse delle trasformazioni geometriche elementari, giá esaminate
in precedenza, valide per operare in coordinate omogenee:
⎡
Traslazione
S −1
⎡
Rotazione
R−1
1
=⎣ 0
0
⎤
0 −b1
1 −b2 ⎦
0
1
⎤ ⎡
cos(−θ) sin(−θ) 0
cosθ −sinθ
= ⎣ −sin(−θ) cos(−θ) 0 ⎦ = ⎣ sinθ
cosθ
0
0 1
0
0
⎤
0
0 ⎦
1
2.2. SEPARABILITÁ DELLE TRASFORMAZIONI
67
⎡
Deformazione
1/tx
0
0 1/ty
D=⎣
0
0
⎤
0
0 ⎦
1
⎤
1 Sx 0
1 0 ⎦
SH = ⎣ Sy
0
0 1
⎡
Shear
dove SH la matrice di trasformazione geometrica shear che deforma l’immagine di un fattore
Sx ed Sy in direzione dei rispettivi assi coordinati.
Ingrandimento + Shear
⎡
tx
DSH = ⎣ Sy
0
Stretch
STx =
tx
0
0
1
Sx
ty
0
⎤
0
0 ⎦
1
STy =
1 0
0 ty
In generale, si ricorda che una trasformazione geometrica lineare, oltre al problema della interpolazione dei pixel, deve anche risolvere il riempimento delle zone vuote delle immagini di
output.
Questo non é causato dalla interpolazione ma dalla particolare trasformazione che puó localizzare pixel esterni all’immagine di input. Il problema si risolve considerando immagini di input
molto piú grandi.
2.2
Separabilitá delle trasformazioni
Le operazioni di traslazione e scaling possono essere separate nelle componenti orizzontali e verticali. Dall’equazione (2.6) si puó osservare che x dipende solo da x e y dipende solo da y. Pertanto
si puó eseguire l’operazione di trasformazione in due passi, in cui il primo passo fornisce una immagine intermedia delle sole righe elaborate (componente x). Nel secondo passo vengono elaborate
le colonne (componente y) dell’immagine intermedia per fornire l’output desiderato.
Per la rotazione (equazione 2.10) si puó osservare che sia x che y dipendono da x ed y. Pertanto
non é possibile a prima vista seperare l’elaborazione riga-colonna in due operazioni indipendenti.
Infatti riscrivendo l’operazione di rotazione
cosθ
sinθ
x
x y =
(2.20)
−sinθ cosθ
y
si ha che se manteniamo costante y e variamo x trasformiamo la nostra immagine analizzando le
linee (scanline). Questo risulta inconveniente poiché risulta difficile prevenire errori di aliasing.
Catmull e Smith hanno proposto un approccio alternativo. Nel primo passo viene valutato x e
quindi y nel secondo passo.
Mantendendo y costante si ha
x
x y = x cos θ + y sin θ y
(2.21)
y
Abbiamo un’immagine che é stata distorta e scalata nella direzione x, ma ogni pixel ha il suo valore
originale di y.
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
68
Successivamente trasformiamo l’immagine intermedia mantenendo costante x e calcolando y.
Sfortunatamente, l’equazione y = −x sin θ + y cos θ non puó essere utilizzata poiché i valori di
x per la scanline verticale non sono quelli corretti per l’equazione. Bisogna pertanto invertire i
valori di x per ottenere i valori di x corretti. Riscrivendo x in funzione di x e considerando che
x = x cos θ + y sin θ otteniamo
x − y sin θ
x=
(2.22)
cos θ
che inserendo in y = −x sin θ + y sin θ si ha
−x sin θ + y
(2.23)
cos θ
che fornisce la versione ruotata dell’immagine per un angolo θ.
Bisogna tenere presente che con una rotazione di 90 ◦ si otterrebbe un’immagine intermedia
collassata su una linea. Sarebbe preferibile quindi leggere le linee dell’immagine in modo orizzontale
e porre il risultato in verticale (colonne).
y =
(a)
(b)
(c)
(d)
Figura 2.6: Esempio di rotazione di 15◦ dell’immagine in (a) ottenuta in due passaggi. Il primo
passaggio mostrato in (b), viene applicata la prima parte solo alle linee orizzontali. Quindi con
l’immagine intermedia in (b) si applica la seconda parte dell’algoritmo alle colonne di (b) per
ottenere (c). Si faccia attenzione che le trasformazioni geometriche generano immagini di output
con pixel non aggiornati della nuova immagine a causa di errori di arrotondamento delle nuove
locazioni, come mostrato in (d).
In notazione vettoriale possiamo esprimere la trasformazione di Catmull e Smith come segue:
x
1
0
cos θ − sin θ
x
=
(2.24)
y
tan θ cos1 θ
0
1
y
Sebbene vi sono dei vantaggi con questa procedura a due passi, vi é peró lo svantaggio di perdere
dettagli spaziali di alta frequenza, a causa del passaggio intermedio di scaling (figura 2.6b). Vi é
anche un potenziale aumento di effetto aliasing, come si vedrá in seguito.
2.3. TRASFORMAZIONI PROSPETTICHE
69
Una tecnica alternativa é costituita da una procedura a tre passaggi, in cui non vi é il passaggio
di scaling e quindi nessuna perdita di dettaglio di alta frequenza. La rappresentazione vettoriale
di questa procedura é data dalla seguente relazione:
x
1 − tan(θ/2)
1
0
1
0
1 − tan(θ/2)
x
=
(2.25)
y
0
1
sin θ 1
sin θ 1
0
1
y
che rappresenta una sequenza di operazioni di shearing senza eseguire alcuna operazione di scaling.
2.3
Trasformazioni prospettiche
Dal momento che un’immagine é una rappresentazione 2D di un mondo tridimensionale, risulta
opportuno modificare il punto di vista prospettico della scena acquisita. La variazione del punto di
vista della scena acquisita, simulandone altri é denominata trasformazione prospettica. Supponiamo
di trovarci nel caso monodimensionale per semplicitá (figura 2.7).
Xi
xi
E
F
Piano immagine
reale
f
O
f
zc
C
Centro Ottico
D
Xf
xf
B
Zc A
xc
Piano immagine
frontale
Asse X della
telecamera e
del mondo
Xc
Figura 2.7: Modello prospettico 1D.
Il sensore osserva un punto B che si proietta nel piano immagine in E. Il centro del sistema di
coordinate é rappresentato dal punto O che si trova a distanza f (focale) dal piano immagine. La
distanza da O a B é misurata lungo l’asse ottico OA che dista zc . La proiezione di B sul piano
immagine, ossia il punto E, si trova ad una distanza xi dall’asse ottico (distanza EF). Usando la
similitudine dei triangoli EFO e OAB otteniamo
xi
xc
f
=
oppure xi = xc .
f
zc
zc
(2.26)
Risulta utile pensare al piano immagine frontale, piuttosto che a quello reale, cosicché l’immagine
non viene invertita di direzione. Il piano immagine frontale é astratto e dista sempre f dall’origine
O. Gli oggetti su tale piano mantengono le stesse proporzioni e viene utilizzato per convenienza in
quanto la direzione di orientazione é in accordo con quello del mondo.
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
70
Zc=Zw
Yi
Yc=Yw
yc
xc
P=(xw,yw,zw)
xi
Xi
yi
P’=(xi,yi,f)
f
Xc=Xw
Figura 2.8: Modello prospettico 2D.
Un punto P di coordinate (xw , yw , zw ) nello spazio 3D é proiettato nel piano immagine in P =
(xi , yi , f ). Sfruttando la similitudine dei triangoli otteniamo
xc
yc
xi
f yi
f
=
oppure xi = xc =
oppure yi = yc .
f
zc
zc f
zc
zc
(2.27)
Si osservi che tutti i punti del mondo 3D che si trovano sullo stesso raggio di proiezione di P
verranno proiettati sulla stessa locazione (xi , yi ) nel piano immagine. La relazione che lega i due
sistemi di coordinate puó essere meglio esplicitata con l’ausilio delle coordinate omogenee. Sia
⎤
⎡
xc
v = ⎣ yc ⎦
(2.28)
zc
il vettore che contiene le coordinate del punto oggetto v. Il vettore di coordinate omogeneo ad
esso associato é dato da
⎡
⎤
sxc
⎢ syc ⎥
⎥
ṽ = ⎢
(2.29)
⎣ szc ⎦
s
dove s é una costante indicante la scala, vale a dire la distanza dal piano immagine. Le coordinate
del punto P possono essere ottenute dalla versione in coordinate omogenee dividendo le prime tre
coordinate per la costante s.
Supponiamo di avere una matrice di trasformazione prospettica
⎡
⎤
1 0
0
0
⎢ 0 1
0
0 ⎥
⎥
P=⎢
(2.30)
⎣ 0 0
1
0 ⎦
1 0 −1/f 1
che trasforma il vettore di coordinate omogenee ṽ in un altro vettore w̃
⎡
⎤
sX
⎢
⎥
sY
⎥.
w̃ = Pṽ = ⎢
⎣
⎦
sZ
s − sZ/f
Le corrispondenti coordinate nel piano immagine sono date da
⎡ fX ⎤
⎢
w=⎣
f −Z
fY
f −Z
fZ
f −Z
⎥
⎦.
(2.31)
(2.32)
in cui i primi due elementi corrispondono alla relazione del modello pinhole. Analogamente si puó
proiettare un punto del piano immagine nello spazio 3D. In questo caso bisognerá definire una
matrice inversa di P e proiettare w̃.
2.4. TRASFORMAZIONI GEOMETRICHE LINEARI CON PUNTI FIDUCIALI
2.4
71
Trasformazioni geometriche lineari con punti fiduciali
Delle funzioni di trasformazione Tx (x, y) e Ty (x, y), non sempre é nota la loro rappresentazione
analitica. In diverse applicazioni non sempre puó essere definita la funzione di trasformazione che
modella una particolare distorsione introdotta dal sistema di acquisizione.
Per esempio, durante l’acquisizione di una immagine da satellite, pur conoscendo la cinematica della piattaforma spaziale, il suo assetto puó variare leggermente introducendo distorsioni
imprevedibili dell’immagine acquisita.
Un modo per risolvere il problema consiste nell’individuare nella scena alcuni punti fiduciali
(chiamati anche punti di controllo) che siano ben visibili nell’immagine di input (generalmente
quella con distorsioni) e nell’immagine di output (la stessa immagine corretta geometricamente)
allo scopo di localizzarli in entrambe le immagini con buona precisione (figura 2.9).
2
1
+
+
+2
1
+
3
3
+
+
Figura 2.9: Esempio di trasformazione geometrica lineare con punti fiduciali.
Se usiamo la trasformazione affine, sono sufficienti tre punti fiduciali, (xi , yi ) nell’immagine di input ed (xi , yi ) nell’immagine di output, per calcolare i 6 coefficienti della matrice di trasformazione
A come richiesto dalla (2.12).
Nel caso di immagini da satellite con la trasformazione affine si possono eliminare solo gli errori
lineari di rotazione e di cambiamento di scala (introdotta nel variare l’altezza del satellite rispetto
all’orbita regolare prevista).
2.5
Trasformazioni non lineari
Per eseguire trasformazioni geometriche piú complesse, come funzioni di trasformazione geometrica
si utilizzano polinomi di ordine superiore al primo. Modellare una trasformazione geometrica con
tali polinomi implica un notevole aumento del tempo di calcolo.
In diverse applicazioni una immagine ideale (rappresentata con una griglia regolare nella figura)
puó subire deformazioni irregolari in diverse zone dell’immagine, generalmente causate dal sistema
di acquisizione (per esempio movimento irregolare della telecamera). L’effetto di una trasfor1
2
2’
1’
4’
4
Immagine
ideale
Immagine
deformata
3’
3
Irregolare
A Cuscinetto
A Barile
Figura 2.10: Distorsioni geometriche.
mazione non lineare, che corregge una complessa distorsione geometrica, puó essere modellata,
considerando l’effetto di quattro elastici, che applicati ai quattro punti di controllo nell’immagine
deformata producono l’effetto di ripristinare la geometria dell’immagine ideale. Ogni elastico esercita idealmente una forza diversa in modo appropriato per deformare l’immagine, fino a ripristinare le
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
72
condizioni geometriche iniziali. Le funzioni di deformazione idealizzate dai quattro elastici possono
essere descritte dalle seguenti equazioni bi-lineari:
x
y
= Tx (x, y) = a0 x + a1 y + a2 xy + a3
= Ty (x, y) = b0 x + b1 y + b2 xy + b3
(2.33)
Per una trasformazione affine sono sufficienti tre punti di controllo per calcolare i 6 coefficienti della trasformazione. In questo caso, i coefficienti sono 8 e pertanto, sono necessari almeno
4 punti di controllo (xi , yi ) nell’immagine di input e 4 punti (xi , yi ) corrispondenti (omologhi)
nell’immagine di output, per generare un sistema di 8 equazioni in 8 incognite.
Diverse quaterne di punti di controllo possono essere selezionate se disponibili. La ricerca dei
punti omologhi nelle due immagini (in questo caso quella deformata e quella originale non deformata) non sempre risulta una operazione semplice. Si ritornerá nei capitoli seguenti sull’argomento
nel risolvere il problema della corrispondenza per la stereovisione.
Distorsioni ancora piú complesse, come ad esempio quelle mostrate in figura 2.10 (distorsioni a
cuscinetto oppure a barile), sono causate dal sistema ottico o dal sistema elettronico (nel caso di
immagini acquisite con tubi elettronici), causando una riduzione o ingrandimento irregolare per i
pixel che si trovano man mano distanti dal centro dell’immagine.
Tali distorsioni possono essere attenuate utilizzando funzioni di trasformazione descrivibili (in
assenza di funzioni che descrivano direttamente il fenomeno fisico) con polinomi di grado uguali o
maggiori di due.
x = a0 x + a1 y + a2 xy + a3 x2 + a4 y 2 + . . . + an
y = b0 x + b1 y + b2 xy + b3 x2 + b4 y 2 + . . . + bn
che in forma vettoriale abbiamo
x
y
⎡
=
a0
b0
a1
b1
a2
b2
a3
b3
a4
b4
. . . an
. . . bn
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
x
y
xy
x2
y2
..
.
⎤
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
(2.34)
1
Il numero di punti di controllo (xi , yi ) ed (xi , yi ) da scegliere in questo caso, deve essere sufficientemente maggiore del numero dei coefficienti ai e bi che dovranno essere stimati per minimizzare
l’errore quadratico medio Ξ tra le coordinate dei punti di controllo dell’immagine deformata e quella desiderata. Supponendo di avere a disposizione M punti (x1 , y1 ), . . . , (xM , yM ) dell’immagine
di partenza, denominati anche punti di controllo (control points) e quelli dell’immagine di output
(x1 , y1 ), . . . , (xM , yM
). L’errore quadratico medio é pertanto stimato con
Ξ = (x − Pa)T (x − Pa) + (y − Pb)T (y − Pb)
(2.35)
dove
⎡
⎢
⎢
P=⎢
⎣
a = [a0 , a1 , . . . , an ]
b = [b0 , b1 , . . . , bn ]
x = [x1 , x2 , . . . , xM ]
y = [y1 , y2 , . . . , yM
]
x1
x2
..
.
y1
y2
..
.
xM
yM
x21
x22
..
.
x2M
x1 y1
x2 y2
..
.
xM yM
y11
y22
..
.
2
yM
1
1
..
.
1
⎤
⎥
⎥
⎥
⎦
(2.36)
2.6. TRASFORMAZIONE GEOMETRICA E RICAMPIONAMENTO
in cui si avrá minimo errore se
dove
a = P† x
b = P† y
−1
P† = PT P
P
73
(2.37)
(2.38)
rappresenta la pseudoinversa di P che puó essere trovata mediante metodi numerici (per es. singular
value decomposition SVD). La figura 2.11 mostra una deformazione polinomiale del secondo ordine
con i punti di partenza e destinazione raffigurati con pattern differenti (asterisco, quadrato, cerchio
ecc.).
Figura 2.11: Deformazione polinomiale del secondo ordine.
2.6
Trasformazione geometrica e ricampionamento
Una trasformazione geometrica sia essa lineare oppure non lineare ha l’effetto di modificare la
posizione dei pixel con la possibilità di diminuire il numero degli stessi (nel caso di riduzione
dell’immagine) oppure di aumentarli (nel caso di ingrandimento dell’immagine).
Tale operazione modifica essenzialmente le caratteristiche geometriche e radiometriche con cui
l’immagine era stata campionata in origine.
In altre parole, la trasformazione geometrica produce un sotto campionamento quando riduce
l’immagine, ed in alternativa, sovracampionamento quando la ingrandisce, o più in generale si può
parlare di ricampionamento dell’immagine.
In aggiunta, abbiamo già considerato la necessità di ricampionare l’immagine specialmente
quando i pixel dell’immagine trasformata sono localizzati tra più pixel nell’immagine di input.
Il processo di ricampionamento, si propone di ricalcolare i livelli di grigio mediante un processo
di interpolazione e di operazioni locali, allo scopo di ricostruire una immagine, apparentemente
acquisita con le caratteristiche di campionamento dell’immagine originale e con la trasformazione
geometrica desiderata.
Una trasformazione geometrica che comporta il sottocampionamento dell’immagine, riducendo
il numero di pixel, può ridurre in sostanza le frequenze spaziali presenti nell’immagine.
Questo può generare degli artefatti nell’immagine trasformata per il fenomeno dell’aliasing
che sostituisce le frequenze spaziali sotto campionate con frequenze spurie e quindi introducendo
distorsioni.
Per il teorema del campionamento le strutture spaziali dell’immagine non sono alterate se il
passo di campionamento è doppio rispetto alla più alta frequenza spaziale presente nell’immagine.
Per limitare questo problema è possibile applicare prima un filtro passa-basso all’immagine per
attenuare le alte frequenze e successivamente applicare la trasformazione geometrica.
Una trasformazione geometrica che introduce un sovracampionamento dell’immagine aumentando il numero dei pixel, comporta l’operazione di interpolazione per ricalcolare i livelli di grigio.
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
74
Dx
Dy
Pi(x,y)
P0(x’,y’)
y’
y
x
x’
Figura 2.12: Il problema dell’interpolazione.
Le tecniche di interpolazione esistenti sono diverse e dipendono dal livello di accuratezza che si
vuole raggiungere utilizzando uno o più pixel nelle vicinanze del pixel da interpolare.
Rappresentiamo ora graficamente (figura 2.12) il problema della interpolazione osservando come il
pixel di output P0 (x’,y’) deve essere calcolato mediante interpolazione dei pixel dell’immagine di
input Pi (x,y).
Il pixel P0 può essere calcolato se si ricostruisce prima l’immagine continua f (x, y) dell’immagine
di input di cui si conosce solo la versione campionata fs (x, y).
Questo processo di ricostruzione può essere considerato, in analogia al processo di campionamento, come l’operazione di convoluzione tra l’immagine campionata fs (immagine di input) e la
funzione di interpolazione (risposta impulsiva di interpolazione) h:
gR (x, y) =
M
M
h(iΔx, jΔy) · f (x − iΔx, y − jΔy)
(2.39)
i=−M j=−M
dove gR è l’immagine ricostruita, (2M + 1) è il lato della maschera di interpolazione e Δx, Δy
rappresentano rispettivamente il passo della griglia di ricampionamento1 lungo gli assi coordinati
x ed y.
Dalla teoria del campionamento è noto che la funzione di interpolazione ideale:
hI (x, y) =
x sinπ y
sinπ Δx
Δy
y
x
π Δx
π Δy
(2.40)
fornisce l’esatta ricostruzione dell’immagine.
Nelle applicazioni reali, si utilizzano funzioni di interpolazione più semplici e non necessariamente la ricostruzione è realizzata con la convoluzione.
Una valutazione dell’errore di ricostruzione può essere valutato considerando nel dominio delle
frequenze quanto la funzione di interpolazione utilizzata è diversa rispetto a quelle ideale che è
noto essere la funzione rettangolo.
1 D’ora
in poi si assumerá Δx = Δy = 1
2.6. TRASFORMAZIONE GEOMETRICA E RICAMPIONAMENTO
75
F(u)
f(x)
-u0
0x
0 u u0
FS(u)=Dx d(Dx u)*F(u)
fS(x)=d(x/u)f(x)
Dx
0x
-1/Dx -u0 0 u u0
1/Dx
Figura 2.13: .
2.6.1
Interpolazione ideale
La ricostruzione completa dell’immagine originale gR utilizzando l’immagine campionata fS e la
funzione di interpolazione ideale hI, nel caso monodimensionale, può essere espressa in termini di
convoluzione come segue:
gR (x) = fS (x) ∗ hI = fS (x) ∗
x
1 sinπ Δx
x
Δx π Δx
(2.41)
dove Δx indica la spaziatura di campionamento dell’immagine originale nel dominio spaziale.
Ricordiamo che, se f (x) era la funzione originale2, nell’ipotesi di funzione di tipo banda limitata,
dovrà soddisfare la seguente condizione: F (u) = 0 se |u| ≥ um dove um è la frequenza più grande
presente nell’immagine.
Sappiamo inoltre che il processo di campionamento, ossia il calcolo della funzione campionata
fS (x), può essere modellata come prodotto tra la funzione f (x) originale e la funzione δ(x/Δx).
Quest’ultima rappresenta un treno di impulsi spaziati ad intervalli Δx.
Il campionamento della funzione f (x) comporta una perdita dell’informazione negli intervalli
Δx della funzione campionata fS (x) che mantiene l’informazione solo nei punti di campionamento
iΔx pesati dai valori della funzione f (x), mentre risulta nulla per tutti i punti interni agli intervalli
di campionamento.
La figura seguente evidenzia la funzione f(x) di tipo banda limitata e la funzione campionata
f S (x) nel dominio spaziale e nel dominio delle frequenze.
Per il teorema di convoluzione, quando una funzione f (x) è moltiplicata per un’altra funzione
δ(x/Δx), è possibile convolvere le corrispondenti trasformate di Fourier che in questo caso sono
1
δ(Δx·u) , quest’ultima corrispondente alla trasformata di Fourier della funzione treno di
F (u) e Δx
impulsi che in questo caso è ancora un treno di impulsi spaziati 1/Δx nel dominio delle frequenze.
Il processo di convoluzione della funzione f (x) con un impulso produce una copia della funzione
stessa e conseguentemente, come evidenziato in figura, anche nel dominio delle frequenze il processo
di convoluzione di F (u) con il treno di impulsi produce una replica della spettro F (u) per ogni
punto 1/Δx.
Si osserva inoltre che lo spettro FS (u) della funzione campionata è periodico con frequenza
1/Δx nel dominio delle frequenze.
Il quesito posto inizialmente è quello di recuperare la funzione originale f (x) dalla funzione
campionata fS (x) che è equivalente a recuperare F (u) dallo spettro della funzione campionata
FS (u).
2 per
semplicità si userà il termine funzione invece di immagine
76
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
Quest’ultima affermazione può essere soddisfatta operando nel dominio delle frequenze eliminando le repliche di F (u) lasciando inalterata solo la copia centrata all’origine dell’asse u e
moltiplicando lo spettro FS (u) con una funzione rettangolare Π(u/2ul ) che soddisfa la seguente
relazione:
1
− um
(2.42)
um ≤ ul ≤
Δx
dove um è la frequenza massima presente in f (x) e ul è la larghezza della funzione rettangolare Π.
Per recuperare F(u) dallo spettro della funzione campionata fS (x), si esegue il seguente prodotto:
u
)
(2.43)
F (u) = FS (u) · Π(
2u1
La funzione originale f (x) è recuperata dalla trasformata inversa dello spettro di Fourier di
F (u):
u
f (x) = −1 (F (u)) = −1 (FS (u) · Π(
))
(2.44)
2u1
e per il teorema di convoluzione applicato all’ultimo membro della dell’equazione precedente si
ottiene la funzione originale cercata:
f (x) = fS (x) ∗
x
)
1 sin(π Δx
x
Δx (π Δx )
(2.45)
ricavata attraverso la convoluzione della funzione campionata f S (x) con la funzione interpolante
della forma sin(x)/x.
La ricostruzione completa della funzione originale f (x) dalla funzione campionata f S (x) è stata
possibile alle seguenti condizioni:
1. f (x) deve essere di tipo banda limitata alla massima frequenza u m , ossia F (u) = 0 se |u| ≥ um
2. la relazione tra l’intervallo di campionamento Δx nel dominio spaziale e la massima frequenza um presente nella funzione f (x) deve soddisfare, per il teorema del campionamento, la
seguente relazione:
1
Δx ≤
(2.46)
2um
Il processo di convoluzione con la funzione campionata fS (x), in sostanza replica la funzione
interpolante sin(x)/x in ciascun punto campionato.
Nella figura 2.14 è evidenziato l’effetto dell’interpolazione all’origine della funzione dove il processo di convoluzione garantisce che la sommatoria delle funzioni sin(x)/x si sommeranno per
ricostruire completamente, insieme ai valori della funzione campionata f S (x), la funzione originale
f (x).
Tra le varie possibilità offerte dalla condizione 1. descritta precedentemente, la figura 2.14 evidenzia
1
l’effetto dell’interpolazione con la frequenza ul = 2Δx
che coincide col punto centrale dell’intervallo
1
possibile tra um e Δx − um .
In questo caso la funzione interpolante diventa
x
1 sinπ Δx
x
Δx π Δx
modellata adeguatamente dalla costante 1.
(2.47)
2.6. TRASFORMAZIONE GEOMETRICA E RICAMPIONAMENTO
77
Figura 2.14: .
P4
P1
di
P2
P3
Figura 2.15: Interpolazione di ordine zero.
2.6.2
Interpolazione di ordine zero (Neighbor)
La più semplice funzione di interpolazione è quella di ordine zero detta anche interpolazione con il
pixel più vicino (neighbor interpolation).
Consiste nello scegliere dei quattro pixel vicini quello che ha distanza minore e scegliendo come
pixel P0 (x’,y’) da assegnare all’immagine di output.
La funzione di interpolazione è data da:
h0 (x, y) =
h0
1 se −
0
1
2
≤ x ≤ 12 ; − 12 ≤ y ≤
altrimenti
1
2
(2.48)
-.5
.5
x
Invece di eseguire la convoluzione in questo caso l’interpolazione è ottenuta come segue:
g(x, y) = fs [IN T (x + .5), IN T (y + .5)]
(2.49)
dove IN T (z) indica l’intero più grande minore del numero reale z.
Considerando la figura 2.15 si può scrivere:
g(P0 ) = fS (Pk ) k = {min(di ) = dk |i = 1, 4}
(2.50)
dove Pk indica il pixel nell’immagine di input più vicino a P0 , e di indica la distanza di ciascuno
dei 4 pixel più vicini al pixel P0 da interpolare.
Questo tipo di interpolazione conviene usarla quando non si vuole modificare molto l’informazione radiometrica dell’immagine nel caso di semplici trasformazioni.
Se si ingrandisce l’immagine in modo sensibile con questo tipo di interpolazione appare nell’immagine trasformata l’effetto mosaico.
CAPITOLO 2. TRASFORMAZIONI GEOMETRICHE
78
(i,j+1)
(i,j)
a
h0
(i+1,j)
(i+1,j+1)
-1
1
x
b
(a)
(b)
Figura 2.16: Interpolazione del primo ordine.
2.6.3
Interpolazione del primo ordine
Una funzione di interpolazione lineare è chiamata anche del primo ordine oppure bilineare nel caso
bidimensionale (figura 2.16).
La funzione è definita come:
x + 1 se : −1 ≤ x < 0
h(x) =
(2.51)
1 − x se : 0 ≤ x ≤ 1
L’interpolazione bilineare in pratica esegue la media pesata dei quattro pixel vicini al pixel di
interesse P0 (x,y).
L’interpolazione bilineare è dato da:
g(x, y) = (1 − a)(1 − b)f (i, j) + b(1 − a)f (i, j + 1) + a(1 − b)f (i + 1, j) + abf (i + 1, j + 1) (2.52)
L’interpolazione bilineare è computazionalmente più costosa di quella di ordine zero. Produce
una immagine ricampionata con l’effetto di smoothing ma evita o attenua il problema dell’effetto
mosaico.
2.6.4
Interpolazione del secondo ordine
Le funzioni di interpolazione del secondo ordine, dette anche interpolazioni cubiche, coinvolgono
più pixel nel processo di media pesata.
Generalmente utilizzano almeno 4×4 pixel nelle vicinanze del pixel in elaborazione.
La funzione monodimensionale di interpolazione cubica è data da:
⎧
1 − 2|x|2 + |x|3
se
0 ≤ |x| < 1
⎨
se
1 < |x| < 2
4
−
8|x| + 5|x|2 − |x|3
h(x) =
(2.53)
⎩
0
altrimenti
L’interpolazione bicubica elimina il problema dello smoothing generato dalla interpolazione
bilineare ed è particolarmente utilizzata per ingrandire l’immagine.
Con tale interpolazione sono attenuati anche gli effetti dell’interpolazione a tratti rettilinei
introdotti con l’interpolazione bilineare.
2.6.5
Interpolazione di ordine n
Una funzione di interpolazione, più in generale, può essere definita con un polinomio di ordine
superiore al secondo.
In questo caso, i coefficienti del polinomio che approssima la funzione interpolante h(x, y), sono
calcolati con la tecnica dei minimi quadrati.
Bibliografia
79