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 − 1e − 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