Http://imagelab.ing.unimo.it Visione Artificiale Prof. Rita Cucchiara Dipartimento di Ingegneria...
-
Upload
adolfo-dolce -
Category
Documents
-
view
225 -
download
1
Transcript of Http://imagelab.ing.unimo.it Visione Artificiale Prof. Rita Cucchiara Dipartimento di Ingegneria...
http://imagelab.ing.unimo.it
Visione Artificiale
Prof. Rita Cucchiara
Dipartimento di Ingegneria dell’Informazione
Università di Modena e Reggio Emilia, Italia
a.a. 2009-2010
Cap. 3 Image Segmentation _1 (Edge e Labeling)
http://imagelab.ing.unimo.it
BINARIZZAZIONE E COMPONENTI CONNESSI
Mediante l’operazione di thresholding e’ possibile ottenere Immagini binarie contengono “oggetti” o regioni (o shape) nel senso di insiemi di pixel connessi tra loro.
Una volta definita una funzione (proprietà, predicato) di connessione , restano univocamente definiti i componenti connessi.
Concetti nell’immagine di connessione (adiacenza) distanza
http://imagelab.ing.unimo.it
DISTANZA tra pixel
DISTANZA: dati due pixel p(i,j) e q(h,k) DISTANZA EUCLIDEA
DISTANZA (CITY BLOCK) il numero minimo di passi in una griglia per raggiungere un punto a partire da un altro
DISTANZA CHESSBOARD (il numero di mosse del re a scacchi)
22 )()(k)j)(h,(i, De kjhi
kjhi k)j)(h,(i, D4
kjhi ,maxk)j)(h,(i, D8
http://imagelab.ing.unimo.it
Adiacenza di pixel
Adiacenza di pixel: connessione Due pixel sono adiacenti se la loro distanza e uguale all’intervallo di
discretizzazione dell’immagine 2 pixel in una regione si dicono 4-connessi se la loro adiacenza si verifica solo tra i
vicini lungo gli assi principali (N,S,W,E) .I pixel sono 4 connessi se hanno D4=1 2 pixel in una regione si dicono 8-connessi se la loro adiacenza si verifica tra i
vicini lungo gli assi principali (N,S,W,E) e tra i vicini sulle diagonali (NW,NE,SW,SE); sono 8 connessi se hanno D8=1
4-connessione
8-connessione
http://imagelab.ing.unimo.it
Nei dettagli
http://imagelab.ing.unimo.it
Nei dettagli
http://imagelab.ing.unimo.it
SEGMENTAZIONE
La segmentazione delle immagini e’ uno dei passi piu’ importanti dell’elaborazione di immagini ed e’ il processo indispensabile nella visione artificiale.
La segmentazione consiste nel partizionare l’immagine in insieme di punti omogenei rispetto ad una data caratteristica visuale
Una tipica applicazione e’ la separazione di oggetti dallo sfondo per distinguere oggetti tra loro in base a tali caratteristiche visuali
http://imagelab.ing.unimo.it
SEGMENTAZIONE
Segmentazione sul valore dei pixel Del livelli di grigio Del colore Del movimento…
Segmentazione su feature calcolate Sugli edge Su feature spaziali ( sift, corner..) Su feature di movimento (optical flow…)
Segmentazione basate sui modelli Su template Su modelli strutturali (forma tesistura)
Processo botton-upDetectionGrouping
Processo top-downSearchSegmenation&Recognition
http://imagelab.ing.unimo.it
Segmentazione
Processo “semplice” in ambienti strutturati
O Molto complesso in immagini naturali
image human segmentation
1
2
3
4
5
6
7 8
910 11
http://imagelab.ing.unimo.it
Approcci alla segmentazione
Tecniche: Processo deterministico
con soglie automatiche Con parametri manuali
Processo statistico Tecniche di grouping (clustering) Modellazione statistica con pdf (learning parametrs EM…) Tecniche graph-based
Segmentazione come problema di Pattern Recognition
Segmentazione come problema di Image Processing
http://imagelab.ing.unimo.it
Segmentazione e rappresentazione
Immagini elaborate e segmentate..
Curve
LabelingConnettivita’
Edge detection, Thinning..
Regioni
Filling
Insieme di regioni
Vincoli, Relazioni spazialiTemporali..
Punti
http://imagelab.ing.unimo.it
Segmentazione (2D)
Gray levelThresholding
Labeling
Filling/merging
Color reductionor clustering
Motion detection
Edgedetection
morphology
Texturegrouping
http://imagelab.ing.unimo.it
Segmentazione di CONTORNI
Bordi e contorni di regioni (oggetti) Il REGION BORDER di una regione R
e’ l’insieme dei pixel di una regione che hanno uno o piu’ pixel adiacenti fuori dalla regione R (Inner region border per distinguerlo dall’ outer ossia il bordo dello sfondo)
Se esiste il concetto di foreground e backgroundnormalmente si considera l’oggetto Foreground 8-connesso ed background 4 connesso
* * * * *
* * * * * * *
* * * * * *
* * * * * *
* * * *
http://imagelab.ing.unimo.it
EDGE
EDGE: e’ una proprieta’ locale di un pixel e del suo intorno: ossia e’ un VETTORE avente un valore assoluto ed una direzione. Dipende dalla variazione di luminosita’. Se e’ possibile calcolare tale variazione (gradiente) e se il gradiente ha una direzione verso la variazione crescente allora l’edge ha la direzione perpendicolare alla direzione del gradiente.
Il BORDER e’ un concetto globale di una regione mentre l’edge e’ una proprieta’ locale. Sono pero’ legati dal fatto che e’ possibile calcolare i bordi di una regione collegando gli edge salienti.
Quindi si usera’ edge nella accezione piu’ vasta di bordo.
Direzione delgradiente Direzione dell’edge
http://imagelab.ing.unimo.it
EDGE DETECTION
Edge: insieme di punti dove si verificano rapide variazioni di luminosità.
Progfilo dell’edge lungo la direzione del gradiente
Calcolo dei contorni: segmentazione in regioni1) estrazione dei punti di edge (edge detection operators)2) determinazione di edge “forti” secondo determinati criteri.3) collegamento tra punti di edge (labeling)
problema: il rumore sull’immagine crea punti di edge spuri, ossia in locazioni dove non ci sono bordi di oggetti e non trova edge dove invece esistono i bordi reali
http://imagelab.ing.unimo.it
CALCOLO DI CONTORNI
Moltissimi algoritmi proposti:
metodi basati sul calcolo delle derivate per verificare la variazione di luminosita’ metodi basati sul gradiente (Roberts, Sobel..)
tecniche di regolarizzazione con un pre-filtraggio simile all’operatore gaussiano o con definizione di maschere ottimali Marr-Hildreth Canny Sarkar-Bowyler
inseguimento di contorni: tecniche locali basate sull’inseguimento di punti etichettati come contorni
http://imagelab.ing.unimo.it
CRITERI DI SELEZIONE
Un operatore di edge detection deve rispondere ai seguenti criteri1) GOOD DETECTION Deve essere bassa la probabilità di errore nel riconoscere un vero punto di edge e la probabilità di
riconoscere punti non appartenenti ai bordi (falsi edge). Siccome entrambe le probabilità sono funzioni monotone decrescenti del rapporto segnale-rumore, questo criterio corrisponde alla massimizzazione del rapporto segnale-rumore.
2) GOOD LOCALIZATION I punti "marcati" come edge points dall'operatore devono essere il più vicino possibile al centro del vero
edge.
3) ONE RESPONSE TO SINGLE EDGEUna risposta unica ad un unico edge.Questo è implicitamente insito nel primo criterio e indica che quando ci sono 2 risposte allo stesso edge, uno di essi deve essere considerato falso.
La selezione dei contorni è un problema mal posto
http://imagelab.ing.unimo.it
EDGE IDEALE
F(x) F
0
x
x (x)
x 0 F xx (x)
Luminosita’
variazione di luminosita’gradiente
derivata secondaLaplaciano
Direzione dell’edge
Direzione delgradiente
http://imagelab.ing.unimo.it
GRADIENTE
Metodi basati sul gradiente: con un operatore differenziale si calcola il gradiente dell’immagine; se il modulo del gradiente supera un’opportuna soglia t, si ha un edge
valore assoluto e direzione del gradiente
Dal gradiente all’edge……. Nel caso piu’ semplice if G(x,y)>Th edge(x,y)=1 else edge(x,y)=0
),(
),(arctg
crg
crg
C
R
22 ),(),(),( crgcrgcrG CR
jcrgicrgjc
crfi
r
crfcrg CR ),(),(
),(),(),(
http://imagelab.ing.unimo.it
GRADIENTE
discretizzando per calcolare il gradiente con le differenze centrali
Cio’ corrisponde alle maschere convolutive
0 -1 0 0 0 00 0 0 -1 0 10 1 0 0 0 0
troppo sensibile al rumore; per questo sono state proposte maschere alternative
crfcrfr
crf,1,1
),(
1,1,),(
crfcrfc
crf
http://imagelab.ing.unimo.it
Maschere di gradiente
Roberts 1965 molto sensibile al rumore, semplice-1 0 0 -1
0 1 1 0
Prewitt discretizzazione delle derivate-1 -1 -1 -1 0 1
0 0 0 -1 0 1
1 1 1 -1 0 1
Sobel-la piu’ usata
-1 -2 -1 -1 0 1 0 0 0 -2 0 2
1 2 1 -1 0 1Frei and Chen
-1 -2-1 -1 0 1
0 0 0 -2 0 2 1 2 1 -1 0 1
Perche’ viene usata la maschera di Sobel?
Provare le varie maschere di gradiente con openCV
http://imagelab.ing.unimo.it
Esempi
Originale Maschera di Prewitt, Maschera di Roberts, Maschera di Roberts, Th = 100 Th = 100 Th = 50
Maschera di Sobel, Maschera di Frei and Chen Th = 100 Th = 100
http://imagelab.ing.unimo.it
CALCOLO DEGLI EDGE CON SOBEL
SOBELxSx
SOBELySy
22 SySxG
Per ogni punto dell’immagine:
G>Th ?
Edge=1
Edge=0
http://imagelab.ing.unimo.it
IMPIEGO DI SOGLIE
T1 piano di sezione soglia
edge vero l
edge determinato
Come trovare una soglia che mantenga il piu’ possibile gli edge per trovare curve chiuse di contorno?
http://imagelab.ing.unimo.it
SOGLIA AD ISTERESI
soglia ad isteresi: Se una parte del contorno è sopra una soglia alta Th, i suoi punti componenti vengono
marcati come edge nella matrice di uscita e con essi l'intero bordo a loro connesso che contiene i pixel con valore superiore in ampiezza alla soglia bassa Tl.
LH TT 32
Th piano di sezione soglia alta Tl
piano di sezione soglia bassa
c
edge vero l falso edge
falso edge
http://imagelab.ing.unimo.it
SOGLIA AD ISTERESI
punti maggiori della soglia alta sono “punti salienti” (edge molto probabili)
punti maggiori della soglia bassa sono potenziali edge accettabili se connessi a punti salienti
un bordo per essere "spezzato" deve fluttuare sopra la soglia TH e sotto TL.
Anche la probabilità di isolare falsi punti di edge è ridotta, perché l’intensità di questi punti deve essere sotto la soglia alta
altrimenti 0
T l) ,G(k | j)N(i, l) ,(k T j) , G(i se 1 j) , (iE HLTT LH
http://imagelab.ing.unimo.it
Esempio
Esempio di applicazione: • Impiego dell’operatore edge con sobel per il calcolo dei contorni• Selezione solo dei contorni chiusi e forti con soglia ad isteresi per la ricerca
della zona dei capelli• Selezione del bounding Box dell’area dei capelli• Head detection
http://imagelab.ing.unimo.it
LOG & ZERO CROSSING
Se la derivata prima ha un estremo massimo locale in corrispondenza dell’edge, la derivata seconda ha un attraversamento per lo zero (zero crossing)..
Come calcolare la derivata seconda cercando un metodo robusto al rumore.
1) operazione di filtraggio (smoothing) che non delocalizzi gli edge. Ad esempio un filtro che elimini le componenti piu’ probabile di rumore
2) un operatore di discretizzazione 2D della derivata seconda
Laplaciano della Gaussiana (LOG, Marr & Hildreth, 1980)
http://imagelab.ing.unimo.it
Laplaciano della Gaussiana (LOG, Marr & Hildreth, 1980): Operatore Laplaciano:0 1 0 1 1 11 -4 1 1/3 1 -8 10 1 0 1 1 1
In generale:a b ab e ba b acon vincoli e = -(4a + 4b) e 2a + b = 1
Il Laplaciano viene preceduto dalla Gaussiana, oppure combinato in un unico operatore; esempio 3 x 3:
2 -1 2 -1 -4 -1 2 -1 2la gaussiana sopprime l’influenza di pixel in un intorno maggiore di 2SIGMA
ZERO-CROSSING EDGE DETECTION
2
2
2
22
yx
IG 2
http://imagelab.ing.unimo.it
ZERO CROSSING
Una volta eseguita la convoluzione con il LOG, si individuano gli edge come punti di passaggio per lo zero: un pixel è zero crossing se è < -t e uno dei suoi otto vicini è > t, o viceversa; t è una
soglia limitata (ad esempio, 1, con filtraggi gaussiani con =12) oppure, si può guardare se tra il pixel e un suo vicino (anche soltanto i 4-connessi in
avanti) c’è un cambio di segno, e attribuire l’edge a quello tra i due in modulo più piccolo.Limiti:
Il comportamento dell’edge detector LOG non è buono in corrispondenza di punti angolosi Molto sensibile: tende a creare piccoli cicli di contorni chiusi.
http://imagelab.ing.unimo.it
CANNY
Edge detector di Canny (1986): Forse il più diffuso edge detector; rispetto al LOG, sostituisce l’operatore
differenziale Laplaciano con la derivata direzionale seconda.
Canny ha studiato analiticamente il problema in 1D e ha indicato l’approssimazione in 2D, cercando un filtro che rispondesse esattamente ai 3 criteri di bonta’ di un edge detector. Si soddisfano tali criteri individuando i massimi locali del risultato della convoluzione del segnale con la derivata prima di una gaussiana. Canny giustifica rigorosamente l’uso del filtro gaussiano come filtro di smoothing per una operazione di edge-detection.
L’estensione del risultato di Canny al caso bidimensionale consiste nel filtraggio con una gaussiana bidimensionale e nella ricerca dei massimi locali della derivata prima nella direzione del gradiente, procedura nota con il nome di Non Maxima Suppression.
http://imagelab.ing.unimo.it
CANNY
1) si convolve l’immagine con una Gaussiana
2) si trovano i punti di massimo lungo la direzione n del gradiente:
3) Si calcola il gradiente (G*I):
IGn
0
IGn n GnGn
IGnIGnIGnIGn
njiGrad
jiGradji
jiGradjiGradjiGrad
x
y
yx
),(
),(arctg),(
),(),(),( 22
http://imagelab.ing.unimo.it
CANNY
4) NON MAXIMA SUPPRESSION: eliminazione dei punti di non massimo locale del
gradiente
Se P è un punto di edge valido
Questo metodo presuppone (semplificazione accettabile) che i punti nell’intorno di P
abbiano tutti la stessa direzione del gradiente
)()(
)()(
2
1
PGradPGrad
PGradPGrad
P1 P P2
http://imagelab.ing.unimo.it
Esempi
Dopo l’eliminazione dei non massimi è necessario effettuare un’operazione di sogliatura sul modulo del gradiente per selezionare solo gli edge contraddistinti da una determinata intensità.
Canny propose l’uso di una soglia ad isteresi Soglia ad isteresi
Canny con soppressione dei massimiE con soglia ad isteresi sul gradiente
http://imagelab.ing.unimo.it
Non maxima suppression
Il problema implementativo associato a tale procedura consiste nel fatto che la ricerca dovrebbe essere effettuata sempre rigorosamente in direzione normale all’edge, in modo da non far mai competere fra loro punti situati lungo il bordo. Il metodo più preciso per la eliminazione dei non massimi si basa sull’interpolazione dei valori del gradiente.
http://imagelab.ing.unimo.it
CANNY
4) NON MAXIMA SUPPRESSION
if Gradx(i,j)>Grady(i,j)
P(0,0)
P2(-1,y1)
P1(1,y2)
P(0,0)
P2(-1,y2)
P1(1,y1)
),(
),(
jiGrad
jiGradm
x
yy1 = - m
y2 = m
)1()0,1(
)1,1()(
)1()0,1(
)1,1()(
2
1
mGrad
mGradPGrad
mGrad
mGradPGrad
(-1,-1) (0,-1) (1,-1)
(1,0)
(1,1)(0,1)(-1,1)
(-1,0)
(-1,-1) (0,-1) (1,-1)
(1,0)
(1,1)(0,1)(-1,1)
(-1,0))1()0,1(
)1,1()(
)1()0,1(
)1,1()(
2
1
mGrad
mGradPGrad
mGrad
mGradPGrad
http://imagelab.ing.unimo.it
CANNY
4) NON MAXIMA SUPPRESSION
if Grady(i,j)>Gradx(i,j)
P(0,0)
P2(-1,y1)
P1(1,y2)
P(0,0)
P2(-1,y2)
P1(1,y1)
),(
),(
jiGrad
jiGradm
y
xy1 = m
y2 = - m
)1()1,0(
)1,1()(
)1()1,0(
)1,1()(
2
1
mGrad
mGradPGrad
mGrad
mGradPGrad
(-1,-1) (0,-1) (1,-1)
(1,0)
(1,1)(0,1)(-1,1)
(-1,0)
(-1,-1) (0,-1) (1,-1)
(1,0)
(1,1)(0,1)(-1,1)
(-1,0))1()1,0(
)1,1()(
)1()1,0(
)1,1()(
2
1
mGrad
mGradPGrad
mGrad
mGradPGrad
http://imagelab.ing.unimo.it
Esempi
CANNY
LoG
CANNYZero crossing
Soglia unica Soglia ad isteresi
http://imagelab.ing.unimo.it
Confronti
Sobel Canny
Normalemnte il filtro di Canny e’ il migliore per mantenere tutti i particolari ed i contorni chiusiMaschere piu’ approssimate come quelle di Sobel hanno invece edge non sottili ma molto forti
Provare Sobel e Canny con openCV
http://imagelab.ing.unimo.it
CONFRONTI TRA EDGE DETECTOR
Come confrontare Edge detector? non ci sono algoritmi assestati ne’ benchmark e nuovi operatori proposti su immagini
sintetiche
misure quantitative: conteggio degli errori (false alarm), probabilita’ di missed edges, errori di localizzazione errori nelle giunzioni o negli spigoli
misure qualitative basate sull’ analysis of variance (ANOVA) su giudizi di operatori umani confronto tra
a) Canny b) Nalva-Binford c) Sarkar-Bowyler d) Sobel
confronto sulla parametrizzazione (parametri fissi o variabili) confronti di efficacia
M. Heath et al. Comparison on Edge detectors Comp. Vision Image Underst. 69 n.1 Jan 1998 38-54 J. Canny A computational approach of edge detection IEEE trans on PAMI 8 1986 679-698 V.S. Nalwa, T.O. Bildford On detecting edges IEEE Trans on PAMI-8 1986 699-714
http://imagelab.ing.unimo.it
ESEMPIO
a) Canny b)Nalva-Binford c) Sarkar-Bowylerd) Sobel
M. Heath et al. Comparison on Edge detectors Comp. Vision Image Underst. 69 n.1 Jan 1998 38-54
http://imagelab.ing.unimo.it
ESEMPIO
a) Canny b)Nalva-Binford c) Sarkar-Bowylerd) Sobel
http://imagelab.ing.unimo.it
Edges e border
Con i metodi di edge detection e selezione dei contorni si ottengono curve chiuse che spesso rappresentano i bordi di un oggetto.
La segmentazione si ottiene riempiendo i contorni chiusi (filling) i bordi possono essere anche identificati mediante segmentazione (ad es.
con soglia automatica) e ricerca dei punti connessi esterni
Come rappresentare i bordi 1) rappresentazione con maschera 2) rappresentazione simbolica (con lista) 3) rappresentazione matematica (funzione)
Curve
Regioni
Filling
Edge detection, Thinning..
http://imagelab.ing.unimo.it
BORDER TRACING
Rappresentazione degli edge: chain code Una rappresentazione tipica del contorno è chiamata chain code : si segue il contorno in
senso orario o antiorario e si tiene traccia delle direzioni che permettono di andare da un pixel del contorno al successivo.
Per l’implementazione standard del chain code, si considera la regione 8-connessa di ogni punto del contorno. (Freeman code)
I codici associati alle otto possibili direzioni sono detti chain codes e sono generalmente definiti come in figura, dove p è il pixel nella posizione corrente del contorno. Gli otto pixels vicini di p sono stati numerati con dei valori da 0 a 7 partendo dal pixel in alto a sinistra e procedendo in senso antiorario.
i codici pari 0,2,4,6 corrispondono a spostamenti in diagonale; i codici dispari 1,3,5,7 corrispondono agli spostamenti in orizzontale e in verticale;
0 7 6
1 p 5
2 3 4
http://imagelab.ing.unimo.it
CHAIN CODE
- le coordinate assolute del primo pixel del contorno (ad esempio quello più in alto e a sinistra) assieme al chain code del contorno stesso, rappresentano una descrizione completa della regione discreta ‘contorno’.
Algoritmo di Freeman:- Data un’immagine a sfondo =0 e selezionato un punto sicuramente di bordo esterno pi. - Se il contorno è formato da almeno tre pixels, il punto p i avrà un pixel precedente ed uno seguente nel
contorno, indicati rispettivamente con p i-1 e pi+1. Osservando che pi-1 e pi+1 appartengono alla regione 8-connessa di pi, è possibile indicare la posizione relativa di p i-1 e pi+1 rispetto a pi specificando due numeri interi tra 0 e 7 che indicano la “provenienza” e la “direzione”.
- Ad esempio, dato pi provenienza=0 direzione=5.
pi-1
pi pi+1
0 7 6
1 p 5
2 3 4
http://imagelab.ing.unimo.it
CHAIN CODE
Sia dato pi di provenienza pi-1 (in questo caso provenienza=6). Per trovare il successivo punto del contorno si deve analizzare la regione 8-connessa del
pixel pi, che verrà esplorata partendo dal pixel indicato con 1° e procedendo in senso antiorario, fino ad arrivare al pixel indicato con 7°.
Posizione del 1° pixel da controllare = (provenienza + 1) mod 8
In questo modo si rimane nella posizione più esterna possibile, cioè sul contorno esterno, poiché quest’ultimo viene percorso in senso antiorario.
2° 1° pi-1
3° pi 7°
4° 5° 6°
0 7 6
1 p 5
2 3 4
http://imagelab.ing.unimo.it
CHAIN CODE
si possono verificare due situazioni:1) Almeno uno tra i pixels 1°7° fa parte del contorno. Supponiamo si tratti del 3°, che sarà il
pixel pi+1, a cui corrisponde un valore di direzione pari a 1. Il valore di provenienza per pi+1 in questo caso particolare assumerà il valore 5, mentre in generale sarà fornito dall’espressione:
provenienza(pi+1) = (direzione(pi) + 4) mod 8
Il passo successivo è quello di avanzare nel contorno, ovvero pi+1 sarà il nuovo pi, mentre quest’ultimo diventerà pi-1 e si ricomincia. Questo procedimento viene ripetuto finché non si ritorna al punto di partenza, dopo avere esplorato tutto il contorno.
pi-1
pi+1 pi
0 7 6
1 p 5
2 3 4
http://imagelab.ing.unimo.it
CHAIN CODE
2) Nessuno tra i pixels 1°7° fa parte del contorno. A questo punto l’unica soluzione è tornare indietro nella direzione di provenienza cioè nel punto pi-1 che coinciderà con pi+1. Anche in questo caso è necessario calcolare opportunamente il valore di provenienza per pi+1; in questo caso assumerà il valore 2, mentre in generale sarà fornito dall’espressione:
provenienza (pi+1) = (provenienza(pi) + 4) mod 8
pi-1
pi+1
pi
http://imagelab.ing.unimo.it
ESEMPIO
Esempio: partenza
arrivo
In questo modo il bordo di un oggetto puo’ essere rappresentatocon un tipo di dato simbolico, ossia come una lista di punti etichettati identificati dalla relativa posizione (i,j).
1 18 17 16
4 3 2 15
5 1412
13
6 7 9 11
8 10
1 1 1 1
1 1 1 x x 1
1 x x x x x 1 1
1 1 x 1 1
1 1
Provare Freeman chain code su openCV
http://imagelab.ing.unimo.it
Rappresentazione con Spline
Rappresentazione di una curva tramite formulazione matematica
Interpolazioni
B-spline vengono definiti punti di controllo per rappresentare una curva con un polinomio del terzo grado o superiore
Catmull Rom Spline viene cercata la curva che meglio interpola i punti con un polinomio del terzo grado
http://imagelab.ing.unimo.it
Esempio k=10,40,100
Vedi Cucchiara, Grana, Pellacani, Seidenari “Transactions on Medical Imaging”2003
http://imagelab.ing.unimo.it
Component connection labeling
E’ frequente la necessità di distinguere tra loro i componenti connessi attribuendo ai pixel di ciascuno una “etichetta” (label) univoca. Questo consente di eseguire successive operazioni trattando i componenti connessi in modo selettivo.
Esistono molti algoritmi di labeling, diversamente efficienti in tempo/memoria, o adatti per elaboratori sequenziali o paralleli.
Attraverso il labeling si ottiene una segmentazione dell’immagine in “oggetti” connessi.
Gli algoritmi di labeling sono deterministici e la bonta’ della segmentazione dipende dall’operazione di binarizzazione precedente.
http://imagelab.ing.unimo.it
Connected component Labeling
Per il riconoscimento di oggetti dallo sfondo si suppone Il Background 4 connesso; L’oggetto 8 connesso
connected component labeling: algoritmo per etichettare regioni 8-connesse
X X X X X
X X
X X
X X X X X
X X
X X
O X X
O X X
O
O O O
http://imagelab.ing.unimo.it
LABELING
Labeling: algoritmo che permette di partizionare l’immagine in oggetti connessi associando ad ognuno una label diversa
Esistono vari metodi di labeling che dipendono dal compromesso efficienza-efficacia-disponibilità risorse (Ez-Ec-Ris) che si vuole ottenere:
algoritmo iterativo(Ez=Bassa, Ec=Buona, Ris=Ottima) algoritmo “classico” (basato su classi di equivalenza) (Ez=Buona, Ec=Buona,
Ris=Bassa) evoluzione 2 passi per algoritmo classico(Ez=Buona, Ec=Buona, Ris=Buona) algoritmo basato sul run-length (Ez=Buona, Ec=Buona, Ris=Ottima)
Labeling: supponendo un numero di oggetti tra 0 e 255 a partire da una immagine binarizzata con oggetti di valore 1 su sfondo di valore 0 dare ad ogni oggetto 8-connesso una label diversa
http://imagelab.ing.unimo.it
Labeling: 50 anni di algoritmi
Grana 2010
http://imagelab.ing.unimo.it
References
A. Rosenfeld and J. L. Pfaltz, “Sequential operations in digital picture processing,” Journal of ACM, vol. 13, no. 4, pp.471–494, 1966.
R. Haralick, “Some neighborhood operations,” in Real Time Parallel Computing: Image Analysis. New York: Plenum Press, 1981, pp. 11–35.
R. Lumia, L. G. Shapiro, and O. A. Zuniga, “A new connected components algorithm for virtual memory computers,” Computer Vision, Graphics, and Image Processing, vol. 22, no. 2, pp. 287–300, 1983.
J. Schwartz, M. Sharjr, and A. Siegel, “An efficient algorithm for finding connected components in a binary image,” Robotics Research Technical Report 38. New York Univ., Tech. Rep., 1985.
H. Samet and M. Tamminen, “An improved approach to connected component labeling of images,” in International Conference on Computer Vision and Pattern Recognition, 1986, pp. 312–318.
K. Suzuki, I. Horiba, and N. Sugie, “Linear-time connected-component labeling based on sequential local operations,” Computer Vision and Image Understanding, vol. 89, pp. 1–23, 2003. K. Wu, E. Otoo, and A. Shoshani, “Optimizing connected component labeling algorithms,” in SPIE Conference on
Medical Imaging, vol. 5747, 2005, pp. 1965–1976. L. He, Y. Chao, and K. Suzuki, “A run-based two-scan labeling algorithm,” IEEE Transactions on Image Processing, vol.
17, no. 5, pp. 749–756,2008. C. Grana, D. Borghesani, R. Cucchiara, "Optimized Block-based Connected Components Labeling with Decision
Trees" in press on IEEE Transactions on Image Processing, 2010
http://imagelab.ing.unimo.it
Labeling i classici Rosenfeld
Rosenfeld et al. in 1966 . This algorithm can be considered the most classical approach to labeling,
and it is based on a raster scan of the image. It produces an output image containing the labeling result, and it stores the “redundancies” (i.e. equivalences) of the labels in an equivalences table with all the neighborhood references. The redundancies are then solved processing the table by repeatedly using an unspecified sorting algorithm and removing redundant entries. Finally the resulting labels are updated to the output image with a further pass.
This method requires an adequate memory allocation for the final image and the equivalence table, and a high computational cost due to the repeated use of sorting algorithms.
Improved by Lumia in 1983
http://imagelab.ing.unimo.it
Labeling Haralick
To tackle these limitations, in particular the memory requirements, an improvement was proposed by Haralick et al..1981
This algorithm does not use any equivalences table and no extra space, by iteratively performing forward and backward raster scan passes over the output image to solve the equivalences, exploiting only local neighborhood information.
This technique, although requiring very little memory, clearly turns out to be computationally very expensive when the size of the binary image to analyze increases.
http://imagelab.ing.unimo.it
Raster scan and union find
Schwartz et al. [10] further explored approaches in order to avoid the storage of the output image,which would have required too much memory. Thus they use a sort of run length based approach (without naming it as such), which produces a compact representation of the label equivalences. In this way, after a forward and a backward scan, they can output an auxiliary structure which can be used to infer a pixel label.
Samet et al. [11] were the first researchers who clearly named the equivalence resolution problem as the disjoint-set union problem, about twenty years ago. This is an important achievement, since a quasi linear solution for this problem is available: the so called Union-Find algorithm, from the name of the basic operations involved. Also this algorithm is executed in two passes. The first pass creates an intermediate file consisting of image elements and equivalence classes while the second pass processes this file in reverse order, and assigns final labels to each image element. keeping the equivalences in memory. Then in [12] a general definition of this.
http://imagelab.ing.unimo.it
Union find and multi scan
The Union-Find algorithm is the basis of most of the modern approaches for label resolution.
As a new pixel is computed, the equivalence label is resolved: while the previous approaches generally performed first a collection of labels and at the end the resolution and the Union of equivalence classes, this new approach guarantees that at each pixel the structure is up to date.
In 2003, Suzuki et al. resumed Haralick’s approach of the multiscan strategy over the image, but with the inclusion of a small equivalence array: they provided an appendix in the form of a LUT of all possible neighborhoods, which allows to reduce computational times and costs by avoiding unnecessary Union operations.
Improved by Wu 2005
http://imagelab.ing.unimo.it
Decision trees
In 2007, He (in collaboration with Suzuki) proposed another fast approach in the form of a two scan algorithm .
The data structure used to manage the label resolution is implemented using three arrays in order to link the sets of equivalent classes without the use of pointer. Adopting this data structure, two algorithms have then been proposed:
a run-based first scan is employed, wh a decision tree optimizes the neighborhood exploration to apply merging
only when needed.
Grana et al. 2010: decision tree and decision table.
http://imagelab.ing.unimo.it
LABELING - Algoritmo Iterativo haralick
Passo 1) inizializzazione: numera con label diverse tutti i pixel della immagine da etichettare
(pixel valore =1)
inizio: dopo
inizializzazione:0 1 1 0 1 1 0 0 1 2 0 3 4 0
0 1 1 0 1 1 0 0 5 6 0 7 8 0 0 1 1 1 1 1 0 0 9 10 11 12 13 0
Passo 2) fase top_ down : scansione dall’alto verso il basso per aggregare label di pixel adiacenti
Passo 3) fase botton-up: scansione dal basso verso l’alto per aggregare label di pixel adiacenti
Passo 2) e 3) sono iterati fino a quando e’ possibile continuare una aggregazione
http://imagelab.ing.unimo.it
LABELING - Algoritmo Iterativo
Si definiscono due funzioni min_topdown_neighborhood(i,j) e min_bottomup_neighborhood(i,j) restituiscono la label minima dei pixel vicini di (i,j) già attraversati dal passo corrente:top-down:
1 2 34 p 0 min_topdown_neighborhood(i,j) ritorna 10 0 0
bottom-up:0 0 00 p 4 min_bottomup_neighborhood(i,j) ritorna 13 2 1
Passo 2) passo 3) un solo oggetto con etichetta 1 top-down: bottom-up:0 1 1 0 3 3 0 0 1 1 0 1 1 00 1 1 0 3 3 0 0 1 1 0 1 1 00 1 1 1 1 1 0 0 1 1 1 1 1 0
http://imagelab.ing.unimo.it
LABELING - Algoritmo Classico
Fa solo due passi di elaborazione Richiede maggiori risorse (spazio per tabella) Principio base : ogni volta che più di una label può essere assegnata ad
un pixel, la minore viene assegnata effettivamente al pixel e si “annota” l’equivalenza con tutte le altre. Dopo questo primo passo su tutta l’immagine, nel secondo passo si risolvono le equivalenze
Immagine Primo passo
0 1 1 0 1 1 0 0 1 1 0 2 2 00 1 1 0 1 1 0 0 1 1 0 2 2 00 1 1 1 1 1 0 0 1 1 1 1 1 0 Secondo passo
0 1 1 0 1 1 0 0 1 1 0 1 1 00 1 1 1 1 1 0
Si memorizza l’equivalenza 1=2
http://imagelab.ing.unimo.it
LABELING - Basato su Run-Length
La codifica run-length di un’immagine binaria è una lista di run o linee (o
sequenze di colonne) contigue di pixel con valore 1
L’algoritmo sfrutta un primo passo per assegnare ad ogni run una label
permanente e per memorizzare in un’altra lista le equivalenze tra le label.
Con una terza lista si costruiscono delle classi di equivalenza che
vengono risolte in un secondo passo
Per saperne di piu’
http://www.rasip.fer.hr/research/compress/algorithms/fund/rl/index.html
http://imagelab.ing.unimo.it
LABELING - Basato su Run-Length
1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1
ROW START_COL END_COL PERM_LABEL
1 1 4 10 1
2 1 20 24 2
3 1 30 38 3
4 2 7 35 1
1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Poi si risolvono le equivalenze nella tabella
http://imagelab.ing.unimo.it
Esempi
1
2
3
4
5
6
7 8
910 11
Labeling di regioni connesse
Labeling di curve connesse
http://imagelab.ing.unimo.it
Grana et al. 2010 decision table
68
• Back to the segmentation: we need a (very) fast connected components
labeling algorithm in the preprocessing
http://imagelab.ing.unimo.it
What’s really new
69
1. Model the neighborhood exploration problem with decision tables
2. Convert decision tables to optimal decision trees3. Automatic code generation from the decision tree
Optimized Block-based Connected Components Labeling with Decision Trees
http://imagelab.ing.unimo.it
Labeling as a decision problem
70
• AND decision tables: you need to perform ALL actions
• OR decision tables: you can perform ANY of the equivalent actions
• Automatic selection of the optimal choice among all alternatives at each steps
• A (single entry) decision tables can now be converted in optimal decision trees (i.e. decision trees with the minimum amount of condition checking)
http://imagelab.ing.unimo.it
Labeling as a decision problem
71
• For each pixel x, we need to analyze a neighborhood of 4 pixels: p,q,r,s• Conditions: x,p,q,r,s are foreground• Actions: no action, assignment and merges of 2 or more labels
http://imagelab.ing.unimo.it
Labeling as a decision problem
72
http://imagelab.ing.unimo.it
Labeling as a decision problem
73
Some actions are useless: previous operations have already solved equivalences between connected pixels
Saved 2-merge: Saved 3-merge:
No need to merge p+q : assign p or q
No need to merge p+r+s :merge p+r or s+r
http://imagelab.ing.unimo.it
Labeling as a decision problem
74
http://imagelab.ing.unimo.it
Labeling as a decision problem
75
http://imagelab.ing.unimo.it
Labeling as a decision problem
76
190
136
0
20
40
60
80
100
120
140
160
180
200
Standard Decision Tree
ms
Bible (10.4Mpixels)
23,2
19,4
17
18
19
20
21
22
23
24
Standard Decision Tree
ms
Gutenberg project (1.3Mpixels)
3,6
2,6
0
1
1
2
2
3
3
4
4
Standard Decision Tree
ms
MIRFlickr (0.17Mpixels)
http://imagelab.ing.unimo.it
Going even faster…
77
Can the analysis made on labeling scale with larger block sizes?
2x2 blocks are in fact always 8 connected. We extend the idea to blocks…
http://imagelab.ing.unimo.it
Going even faster…
78
For each pixel x, we need to analyze a neighborhood of 16 pixelsConditions: 16 pixels are foreground (a total of 65536 rules)Actions: no action, assignment and merges of 2 or more labels
(up to 4 equivalences)
http://imagelab.ing.unimo.it
Going even faster…
79
Number of nodes: 136Number of leaves: 137
Maximum number of levels: 14
http://imagelab.ing.unimo.it
Results
80
190
144136
94
0
20
40
60
80
100
120
140
160
180
200
Standard BB DT BBDT
ms
Bible (10.4Mpixels)
23,2
17,2
19,4
13,2
0
5
10
15
20
25
Standard BB DT BBDT
ms
Gutenberg project (1.3Mpixels)
3,6
3,1
2,6
2,1
0
1
1
2
2
3
3
4
4
Standard BB DT BBDT
ms
MIRFlickr (0.17Mpixels)
http://imagelab.ing.unimo.it
Esercizi in OpenCV
scrivere un programma in opencv che esegua le seguenti operazioni 1) filtraggio dell’immagine (Gauss,media, mediana) 2) binarizzazione con soglia (automatica di Otsu) 3) labeling (da sviluppare) 4) calcolo dei controni sull’immagine originale e sull’immagine etichettata 5) stampa di ogni oggetto separatamente nella propria ROI