7-edge-detection

Transcript

7-edge-detection
Image segmentation
Edge detection
L Caponetti
Image segmentation
™ Un processo di segmentazione suddivide una immagine nelle
regioni o oggetti che la compongono. E’ generalmente il primo
step dell’analisi di una immagine
™ La segmentazione è un processo importante, ma difficile
™ L’accuratezza della segmentazione condiziona l’accuratezza dei
passi successivi
™ La maggior pare degli algoritmi di segmentazione sono basati
sulla
ƒ Discontinuità tra regioni differenti
ƒ Similarità tra pixel della stessa regione
L Caponetti
1
Segmentation
Discontinuity
detection
Gray value
Similarity
Detection of:
Thresholding
Isolated points
Region growing
Lines
Region splitting and
merging
Edges
L Caponetti
Detection of discontinuities
Generalmente si applicano alla immagine delle opportune
maschere:
w1
D= w4
w7
O
L

L

L
N
M
M
M
f1
f4
f2
f5
f3
f6
f7
M
f8
M
f9
M
N
L
L

L
O
w2
w5
w8
D
w3
w6
w9
O M M M N
L L L L L


L L R L L


L L L L L
N M M M O
9
L Caponetti
f → R = ∑ f i wi
i =1
2
Point Detection
™ Per rilevare punti isolati in una immagine si può utilizzare la
maschera seguente:
− 1 − 1 − 1
− 1 8 − 1


− 1 − 1 − 1
™ Poiché il livello di grigio di un punto isolato è molto differente da
quello del suo intorno, l’applicazione della maschera darà un
risultato elevato in corrispondenza di pixel che si differenziano
dal loro intorno
™ Si utilizizza poi un processo di thresholding
L Caponetti
Detection of lines
™ Si possono utilizzare le seguenti maschere:
− 1 − 1 − 1
2 2 2


− 1 − 1 − 1
− 1 − 1 2 
− 1 2 − 1


 2 − 1 − 1
− 1 2 − 1
− 1 2 − 1


− 1 2 − 1
 2 − 1 − 1
− 1 2 − 1


− 1 − 1 2 
Horizontal
line
450
line
Vertical
line
1350
line
D0
D45
D90
D135
L Caponetti
3
Risultati ottenuti con la
maschera per rilevare le lineee a
1350
L Caponetti
Edge detection
™ Problema di determinare il contorno tra due regioni
con differenti proprietà dei livelli di grigio
™ Si assume che le regioni siano sufficientemente
omogenee in modo da potere determinare le
transizioni tra 2 regioni sulla base delle discontinuità
dei livelli di grigio
™ Si utilizza un processo di edge detection
L Caponetti
4
Edge
™ Un edge costituisce una proprietà locale di un pixel e
del suo intorno
™ Un edge in una immagine può essere definito come
una discontinuità o una variazione brusca nei livelli di
grigio
ƒ Gli edge pixel sono punti della curva che separa 2
regioni aventi caratteristiche differenti ( ad
esempio differente livello di grigio)
™ I metodi utilizzati sono metodi di differenziazione:
ƒ Gradiente
ƒ Laplaciano
L Caponetti
Edge detection e border following
™ Un processo di edge detection rileva i pixel di una
immagine f che sono edge pixel
™ Per ottenere il contorno di un oggetto presente nella
immagine è necessario raggruppare tutti gli edge
relativi a quel contorno mediante algoritmi di
ƒ Border following
ƒ Grouping
L Caponetti
5
Profilo dei livelli di una immagine
™ Si sceglie un pixel iniziale e una direzione d e si
disegna il grafico dei livelli di f in funzione dei pixel
lungo d
Immagine originale
f(x) - profilo lungo il centro della immagine
f’(x) – derivata prima di f(x)
L Caponetti
Modelli di edge monodimensionali
Ideal Step Edge
Combination of Step
and Roof Edges
L Caponetti
Ideal Roof Edge
Ideal Spike Edge
6
Modelli di edge
™ Un edge è caratterizzato da:
ƒ Altezza – ampiezza della discontinuità
ƒ Angolo di pendenza – rispetto l’asse orizzontale
ƒ Coordinata del punto centrale
™ Perché ci sia un edge l’ampiezza deve essere più
grande di un valore di soglia specificato
L Caponetti
Modelli di edge
™ Generalmente nelle immagini si presentano edge in
ogni direzione e non ideali – a causa del rumore
™ Gli operatori che si utilizzano sono operatori basati
sulle derivate prime e seconde
L Caponetti
7
Esempio
Gray-level profile
First derivative
Second derivative
L Caponetti
La derivata si può approssimare con una differenza
Esempio
™ Nell’esempio precedente si vede che:
ƒ L’ampiezza della derivata I può essere utilizzata per rilevare
la presenza di un edge in una immagine – ad esempio un
pixel è un edge se la derivata I supera una certa soglia
ƒ Il segno della derivata II può essere utilizzato per
determinare se in un edge pixel la discontinuità del livello di
grigio è da un valore più scuro ad uno più chiaro o
viceversa
ƒ L’attraversamento dello zero della derivata II fornisce un
metodo per localizzare gli edge pixel
L Caponetti
8
Edges and Noise
Errato
Colonna 1:
immagini e profili di un ramp
edge con rumore Gaussiano di
media 0
varianza 0, 0.01, 1, 10
Colonna 2:
immagini della derivata prima
e profili
Colonna 3:
immagini della derivata
seconda e profili
Il rumore rende difficile
individuare il massimo della
derivata I o il punto in cui la
derivata
II attraversa lo
L Caponetti
zero
Edge e noise
™ E’ interessante notare che il rumore è invisibile nella immagine
originale, ma è pronunciato nelle derivate
ƒ In particolare la derivata II è più sensibile al rumore
™ Il rumore è un problema in un processo di edge detection:
prima della derivazione dovrebbe essere applicato un metodo
di image smoothing
™ Thresholding
ƒ Un punto in una immagine è definito un edge point se la sua
derivata I supera una certa soglia
ƒ In questo modo si possono eliminare alcuni effetti del noise
L Caponetti
9
Edge detection -
passi
™ Applicare lo smoothing alla immagine per la riduzione
del rumore
™ Individuazione dei punti di edge – è una operazione
locale che estrae da una immagine tutti i punti
candidati a diventare punti di edge
™ Localizzazione di un edge – si seleziona tra i punti di
edge candidati quelli reali (thresholding)
L Caponetti
Operatori basati sul gradiente
™ Definizione del gradiente:
 ∂f ( x, y ) 


∇f ( x, y ) =  ∂f (∂xx, y ) 


 ∂y 
ƒ Ampiezza del gradiente
1/ 2
  ∂f ( x, y )  2  ∂f ( x, y )  2 
 
M ( x , y ) = ∇f ( x , y ) =  
 +
  ∂x   ∂y  


ƒ Direzione rispetto all’asse x
 ∂f
 ∂y
α ( x, y ) = tan −1 
L Caponetti
∂f 

∂x 
La direzione dell’edge nel pixel (x,y) è ortogonale alla direzione
del gradiente in quel punto
10
L Caponetti
L Caponetti
11
Note: edges of brick wall is significant. This level of details may be undesirable
L Caponetti
L Caponetti
12
Selezione di linee di orientazione data - θ
ƒ Calcola le componenti del
gradiente:
∇
1
∇2
(
ƒ Calcola l’ampiezza
∇f ( x, y ) = ∇12 + ∇ 2 2
ƒ Calcola l’orientazione
α = tan −1 (∇ 2 ∇1)
)
1/ 2
ƒ Applica una soglia
all’ampiezza per ottenere
una immagine binaria
ƒ Seleziona i punti di edge
aventi orientazione θ
L Caponetti
Operatori basati su derivate del II ordine
™ Un pixel è considerato un edge se si ha una
variazione nella derivata II
™ I metodi basati sulle derivate II utilizzano
ƒ l’operatore Laplaciano
ƒ l’operatore LoG – Laplacian of a Gaussian
L Caponetti
13
Zero-crossing della derivata II
ƒ Profilo di un edge
ƒ La derivata I dovrebbe
avere un estremo nella
posizione corrispondente
ad un edge
ƒ La derivata II è zero in
tale posizione
L Caponetti
In generale potrebbe essere più semplice trovare il punto dove
una funzione attraversa lo zero piuttosto che quello in cui ha un
massimo
Operatore Laplaciano
™ Sia f(x,y) una funzione definita in un dominio discreto. Il
Laplaciano L(x,y) è definito nel modo seguente:
∇ 2 f ( x, y ) =
∂ 2 f ( x , y ) ∂ 2 f ( x, y )
+
∂x 2
∂y 2
™ Il Laplaciano è zero se f(x,y) è costante oppure varia
linearmente – vedi figura precedente
™ Se f(x,y) non varia linearmente allora L(x,y) presenta un
cambiamento di segno e quindi attraversa l’asse x
L Caponetti
14
Operatore Laplaciano
™ Approssimazioni nel dominio discreto
z1
z4
z7
z2
z5
z8
z3
z6
z9
∇ 2 f = 4 z 5 − ( z 2 + z 4 + z 6 + z8 )
∇ 2 f = 8 z 5 − ( z1 + z 2 + z 3 + z 4 + z 6 + z 7 + z 8 + z 9 )
™ Le approssimazioni si possono ottenere mediante convoluzione
con le seguenti maschere:
L Caponetti
 0 −1 0 
− 1 4 − 1


 0 − 1 0 
− 1 − 1 − 1
− 1 8 − 1


− 1 − 1 − 1
Operatore Laplaciano
™ L’operatore Laplaciano è invariante per rotazione:
non consente di rilevare la direzione degli edge
™ E’ estremamente sensibile al rumore
™ E’ utile quindi eseguire un preprocessing della
immagine in modo da ridurre il rumore
L Caponetti
15
Operatore LoG- Laplacian of Gaussian
™ L’operatore è costituito da:
ƒ Un operatore di smoothing – filtro Gaussiano
ƒ L’operatore Laplaciano
Image
Low-pass filter
(Gaussian)
Detect
Zero-crossings
Laplacian
Edge Map
™ L’applicazione di un filtro low-pass riduce l’effetto del
rumore
L Caponetti
Operatore LOG- Laplacian of Gaussian
™ Operatore LoG
2
 x2 + y2
 x +y
− 1e − 2σ 2
LoG ( x, y, σ ) = c
 σ2



2
ƒ dove c è un fattore di normalizzazione a 1
™ Il valore di σ determina il numero di punti che
influenzano il calcolo del Laplaciano in un pixel
™ Lo smoothing Gaussiano elimina l’influenza dei pixels
che sono distanti più di 3σ rispetto al pixel corrente
L Caponetti
16
Gaussian filter
nel dominio delle frequenze
D0 = 6 √2 σ
Se σ è la standard deviation di una gaussaiana monodimensionale, √2 σ è la
standard deviation di una gaussiana 2D – circolarmente simmetrica.
La larghezza del lobo centrale è 2 √2 σ.
La maschera di smoothing deve avere dimensione pari a 6 √2 σ
L Caponetti
LoG
L Caponetti
17
Operatore LOG- Laplacian of Gaussian
™ Algoritmo per l’edge detection:
ƒ Si applica l’operatore LOG alla immagine f(x,y)
ƒ Si trovano gli zero-crossing della immagine ottenuta
™ Rispetto agli operatori di Sobel o Prewitt l’operatore LOG
consente di tenere conto di un’area più elevata – intorno al pixel
corrente™ L’influenza dei punti distanti diminuisce al diminuire di σ
™ Al variare di σ si possono ottenere immagini a livello di
dettaglio differente
ƒ Aumentando σ immagini meno dettagliate – più sfocate
ƒ Diminuendo σ immagini più dettagliate
L Caponetti
Canny edge detector
™ Sia f(x,y) l’immagine di input e G(x,y) un filtro
gaussiano
™ Il primo passo consiste nel rimuovere il rumore
mediante un filtro gaussiano, usando una maschera
di dimensione opportuna
ƒ Fs(x,y) = G(x,y) f(x,y)
L Caponetti
18
Canny edge detector
™ Il passo successivo consiste nel calcolare il gradiente – ad esempio - mediante
le maschere di Sobel lungo la direzione x (colonne) e la direzione y (righe)
™ Si calcola quindi in ciascun punto della immagine
ƒ M(x,y) - ampiezza del gradiente (edge strength)
ƒ α (x,y) - direzione del gradiente
Matrici della stessa dimensione di quella iniziale
L Caponetti
Canny edge detector
™ Localizzazione degli edge: si applica un algoritmo di nonmaximum suppression - vengono soppressi i punti che non
sono edge
ƒ Per ogni punto (x,y)
si calcola la direzione del gradiente
si vede se in questa direzione l’ampiezza del gradiente ha un
massimo locale
™ Considerano un numero piccolo di direzioni ad esempio 4: per
una regione 3x3 al pixel centrale si associano le direzioni
orizzontale, verticale, +45, -45 (d1, d2, d3, d4)
ƒ Per ogni punto (x,y)
Si trova la direzione dk più vicina a α (x,y)
se M(x,y) < di almeno uno dei 2 valori lungo dk si pone g(x,y)=0
(soppressione)
altrimenti g(x,y)=M(x,y)
L Caponetti
19
Canny edge detector
™ Lo step finale è un processo di thresholding per
ridurre i falsi punti di edge
™ Si utilizza un processo con 2 soglie -isteresi
ƒ Se si applica una singola soglia, edge pixel che
hanno ampiezza media uguale a T potrebbero a
causa del rumore non superare la soglia.
ƒ Per evitare questo incoveniente il processo utilizza
2 soglie T1 e T2 – una bassa ed una alta (con
rapporto 2 o 3)
L Caponetti
Canny edge detector
™ Thresholding
ƒ Sono definite 2 soglie T1<T2
ƒ Se un pixel ha una ampiezza maggiore della soglia T2 allora
questo pixel è sicuramente un edge pixel
ƒ Se un pixel ha una ampiezza < T2 (elevata) ed è connesso
a pixel già marcati come edge, si confronta l’ampiezza con
T1. Se è maggiore di T1 il pixel è considerato edge
L Caponetti
20
Canny edge detector
™ Thresholding
ƒ Ogni pixel che ha ampiezza maggiore di T2 (elevata) è
segnato come edge pixel valido – edge “forte”
ƒ Per ogni edge “forte” i pixels che sono connessi con questo
edge e hanno un valore più grande di T1 (bassa) sono
anche selezionati come edge pixels
ƒ Si termina quando tutti gli edge pixel forti sono stati visitati
ƒ Gli edge pixel deboli sono posti a 0
L Caponetti
21