Metriche Discrete e Morfologia Matematica 04/12/2018 Metriche Discrete e Morfologia Matematica Virginio Cantoni Laboratorio di Visione Artificiale http://vision.unipv.it/ Università di Pavia Via A. Ferrata 1, 27100 Pavia virginio.cantoni@unipv.it 04.12.2018 11:32
Sommario Metriche discrete Morfologia binaria Trasformata distanza 04/12/2018 Sommario Metriche discrete Morfologia binaria Trasformata distanza Medial Axis Transform Rappresentazioni binarie
Definizioni Preliminari 04/12/2018 Definizioni Preliminari Definiamo F={1} ed F*={0} i due insiemi costituenti una immagine binaria digitalizzata su griglia quadrata. Chiameremo rispettivamente tali insiemi immagine e sfondo. Dati due pixel p e q di coordinate (i,j) e (h,k) le funzioni distanza d4 (city block) e d8 (chessboard) sono definite come: d4 (p,q) = |i-h|+|j-k| d8 (p,q) = max {|i-h|, |j-k|} p q
Definizioni Preliminari 04/12/2018 Definizioni Preliminari I vicini di un pixel p sono i pixel aventi da p distanza unitaria L’insieme dei vicini di p costituisce l’intorno di p. Si parla di intorno N4 (p) oppure di N8 (p) a seconda della metrica usata Un percorso di lunghezza n da p a q è una sequenza di pixel p=p0, p1, p2, …..pn=q è tale che con la metrica scelta pi è un vicino di pi+1, 1in Un sottoinsieme di F (o di F*) è connesso se presi una copia dei suoi pixel esiste un percorso tra questi interamente costituito da pixel di F (o di F*). Il contorno C di una figura F è il sottoinsieme di F i cui punti hanno distanza unitaria da F*.
04/12/2018 4- and 8- Connectivity
Il Codice di Herbert Freeman 04/12/2018 Il Codice di Herbert Freeman 4-contorno con 102 codici 001010011000333000110001000111010121111211212222132222300030332322222121112122111223333333333333333333 8-contorno, con 81 codici 001102107660002100100221123222323444354446007755444332234322446666666666666666666
Il Codice di Freeman: caratteristiche 04/12/2018 Il Codice di Freeman: caratteristiche La lunghezza del contorno è pari al numero di codici in N4 e dalla formula: L8 = npari + √2 ndispari in N8 L’ascissa e l’ordinata al codice k-esimo sono rispettivamente: L’area è data da: Condizione di chiusura: n7+n0+n1=n3+n4+n5; n5+n6+n7=n1+ n2+ n3. Cx1=Cx2=Cx3=Cy7=Cy0=Cy1= 1 Cx5=Cx6=Cx7=Cy3=Cy4=Cy5=-1 Cx0=Cx4=Cy2=Cy6=0
Concavità e Convessità 04/12/2018 Concavità e Convessità
Morfologia Matematica 04/12/2018 Morfologia Matematica La Morfologia Matematica nasce negli anni ’60 in Francia (P. Serra, Ecole des Mines) e in USA in forma diversa col nome di Algebra delle Immagini (S. R. Sternberg, Michigan University).
Definizioni preliminari 04/12/2018 Definizioni preliminari A A En, t En Traslazione di A rispetto ad un vettore t At = { cEn | c=a+t, aA } Riflessione di A Ar= { c | c=-a, aA } Complemento di A Ac = En -A A(2,1) Ar Ac
Somma di Minkowski (Dilation) 04/12/2018 Somma di Minkowski (Dilation) AB = { cEn | c=a+b, aA, bB } AB = Ab , bB Si dimostra facilmente: AB = BA A B= { (0,0), (1,0) } A(0,0) A(1,0) AB
Dilation L’insieme B viene normalmente definito elemento strutturante 04/12/2018 Dilation L’insieme B viene normalmente definito elemento strutturante B= {(-1,0), (1,0) } A A(-1,0) A(1,0) AB
Dilation A B AB
Dilation A B AB
Dilation A B AB
Dilation A B AB
Dilation A B C ABC
Dilation A B C ABC
Differenza di Minkowski (Erosion) 04/12/2018 Differenza di Minkowski (Erosion) AB = { cEn | c + bA, per ogni bB } AB = A-b bB AB = { cEn | Bc A A B= { (0,0), (1,0) } A(-1,0) A-B
Erosion A B AB
Erosion A B AB
Erosion A B AB
Erosion A B AB
Erosion A B AB
Erosion A B AB
Proprietà di Dilation (+) e Erosion (-) 04/12/2018 Proprietà di Dilation (+) e Erosion (-) A + {} = A - {} = A A + {a} = A - {a} = Aa traslazione A + B = (Ac – B)c A – B = Ac + B c (A+B)c=Ac -Br A+Bt=(A+B)t A-Bt=(A-B)-t Scomposizione: B=B1+B2 +B3 +….+Bn (le forme convesse sono sempre scomponibili) A+B = (…(((A+ B1)+B2 )+B3) +….)+Bn A-B = (…(((A- B1)-B2 )-B3) -….)-Bn
Proprietà di Dilation (+) e Erosion (-) 04/12/2018 Proprietà di Dilation (+) e Erosion (-) (A+B)+C=A+(B+C) (A-B)-C=A-(B+C) (AB)+C=(A+C)(B+C) (A B)-C=(A-C) (B-C) A+(BC)=(A+B)(A+C) A-(BC)=(A-C)(B-C) A B(A+C) (B+C) AB(A-C) (B-C) BC(A-B) (A-C) (AB)+C (A+C)(B+C) (A B)-C (A-C) (B-C) A-(BC)(A-C)(B-C
Chiusura C(A, K) = (A+K)-K AC(A,K)=C(C(A,K),K) K A A+K (A+K)-K 04/12/2018 Chiusura C(A, K) = (A+K)-K AC(A,K)=C(C(A,K),K) K A A+K (A+K)-K
04/12/2018 Chiusura C(A, K) = (A+K)-K K A A+K (A+K)-K
04/12/2018 Chiusura C(A, K) = (A+K)-K K A A+K (A+K)-K
04/12/2018 Chiusura K A A+K (A+K)-K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Chiusura C(A, K) = (AK)K K A AK (AK)K
Apertura O(A, K) = (A-K)+K O(O(A,K),K)=O(A,K)A K A A-K (A-K)+K 04/12/2018 Apertura O(A, K) = (A-K)+K O(O(A,K),K)=O(A,K)A K A A-K (A-K)+K
04/12/2018 Apertura O(A, K) = (A-K)+K K A A-K (A-K)+K
Proprietà di Apertura e Chiusura 04/12/2018 Proprietà di Apertura e Chiusura È possibile scambiare F con F* scambiando gli operatori: (A B) c = Ac • B (A • B) c = Ac B Idempotenza: (A B) B = A B (A • B) • B = A • B Monotonicità: A B A C B C A B A • C B • C
Esempi Applicativi Propagazione Contorno 04/12/2018 Esempi Applicativi Propagazione C = { X }; C = immagine in evoluzione do D = C F = immagine iniziale C = (C K)F while(DC) Contorno Interno: A-(AK) Esterno: (A K)Ā oppure (A K)-A Doppio: (A K)(A K) = (A K)-(AK)
Hit or Miss A(J,K) = (A-J)(Ac-K) 04/12/2018 Hit or Miss A(J,K) = (A-J)(Ac-K) con il vincolo JK= Permette di trovare strutture regolari (template matching)
Hit or Miss Ricerca di punti isolati (8-connessi) A-J=A J K A Ac 04/12/2018 Hit or Miss Ricerca di punti isolati (8-connessi) A-J=A J K A Ac Risultato finale Ac-K
Hit or Miss Ricerca di punti isolati (4-connessi) A-J=A K J A Ac 04/12/2018 Hit or Miss Ricerca di punti isolati (4-connessi) A-J=A J K A Ac Risultato finale Ac-K
04/12/2018 Hit or Miss J e K possono essere visti come una unica maschera con tre tipi di valori Punti necessariamente di immagine Punti di background Punti non rilevanti M
Hit or Miss Pixel compatibili con la maschera di background 04/12/2018 Hit or Miss Pixel compatibili con la maschera di background Pixel compatibili con la maschera per l’immagine
04/12/2018 Trasformata Distanza La trasformata distanza di F rispetto a F* è una replica di F in cui i pixel sono etichettati con il valore della loro distanza da F*, calcolata secondo una data metrica. Un massimo locale è un pixel di F che nella trasformata distanza di F è caratterizzato da una distanza p da F* maggiore o uguale della distanza da F* dei suoi vicini ni
04/12/2018 Trasformata distanza La trasformata distanza è una funzione da una immagine binaria ad una a livelli di grigio Nella immagine prodotta i pixel di sfondo rimangono a 0, i pixel della figura vengono etichettati con la loro distanza dallo sfondo La distanza dipende dal tipo di connessione che si assume per la figura (4/8 connessione)
Trasformata Distanza TD 04/12/2018 Trasformata Distanza TD Una possibile implementazione è tramite una successione di operazioni di erosione e di somma dell’immagine ottenuta (il risultato dipende dalla scelta dell’elemento strutturante) R = R = immagine in evoluzione while(A<>) do infine TD R = R+A A = RQK done
Trasformata distanza 04/12/2018 1 1 1 1 1 1 2 2 2 2 2 1 1 2 3 3 3 2 1
DT - algoritmo sequenziale 04/12/2018 DT - algoritmo sequenziale Si effettuano due scansioni dell’immagine La prima dall’alto al basso e da sinistra a destra ogni pixel della figura è uguale al valore minore fra i vicini già considerati o fondo incrementato di 1 La seconda dal basso all’alto, da destra a sinistra ogni pixel della figura è uguale al minimo fra i vicini già considerati o fondo incrementato di 1 ed il pixel stesso
DT - algoritmo sequenziale 04/12/2018 DT - algoritmo sequenziale 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 2 2 2 2 1 1 2 3 3 3 3 2 1 2 3 3 3 2 1 1 2 3 4 4 4 4 2 1 1 2 3 4 4 4 3 2 1 1 2 3 4 5 5 5 3 2 1 2 2 3 3 3 3 2 1 1 2 3 4 5 6 4 3 1 1 2 2 2 2 2 1 1 2 3 4 5 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 2 2 2 1 1 1 2 2 3 2 2 1 1 2 2 3 2 2 1 1 1 2 3 3 3 2 1 1 1 1 2 3 3 3 2 1 1 1 1 2 2 3 4 3 2 2 1 1 2 2 2 3 2 2 1 1 2 3 3 4 3 3 1 1 1 1 2 2 2 1 1 1 2 3 4 4 1 1 1 1 1
04/12/2018 DT - massimi locali I massimi locali sono una rappresentazione compatta della figura Possono essere utilizzati per ricostruire la figura: è l’unione dei dischi aventi per dimensione il valore del massimo 2 2 2 4 4 4 2 3 2 3 3 3 3 1 1 2 3
Dischi in 4 e 8 connettività 04/12/2018 Dischi in 4 e 8 connettività 5 5
Dischi massimi Ad ogni massimo locale si associa un disco massimo 04/12/2018 Dischi massimi Ad ogni massimo locale si associa un disco massimo Il disco massimo non è mai contenuto completamente da un altro disco associato ad un disco della DT La forma dei dischi dipende dall’elemento strutturante Si ottiene iterando una operazione di dilation tramite l’elemento strutturante (realizzando cosi una DT inversa) L’inseme dei dischi massimi forma una rappresentazione compatta della forma 1 1 1 1 1 1 1 2 2 2 1 1 2 1 3 1 2 3 2 1 1 2 3 2 1 3 3 3 1 1 2 2 2 1 1 2 1 1 2 3 1 1 1 1 1 1
Trasformata Distanza e MAT 04/12/2018 Trasformata Distanza e MAT
Approssimazioni Progressive della MAT 04/12/2018 Approssimazioni Progressive della MAT
Calcolo distanza Distanza fra due punti (X, Y ) 04/12/2018 Calcolo distanza Y X 4 1 5 8 3 2 6 7 9 F D Distanza fra due punti (X, Y ) A = { X }; D = A A= immagine in evoluzione while(YA) do F= immagine iniziale A = (A K)F Y= componente connessa D = D + A done Seguendo la direzione del massimo gradiente si ottiene anche il percorso più breve (non è detto sia unico) K
Calcolo distanza Se A (A K)F 04/12/2018 Calcolo distanza Se A (A K)F allora se non è ancora coperto, Y non è raggiungibile da X F non è connesso Il metodo può essere pesante computazionalmente (si pensi ad una spirale)
Trasformata distanza pesata 04/12/2018 Trasformata distanza pesata La distanza di ogni vicino non è unitaria ma pesata (w) Algoritmo sequenziale Scansione diretta val = mini {pi+wi} (i vicini precedenti) Scansione inversa new-val = mink {pk+wk} (k vicini successivi) Esempio (per una migliore approssimazione della distanza euclidea, si ottiene circa il doppio) 3 2 3 2 2 3 2 3
Trasformata distanza pesata 04/12/2018 Trasformata distanza pesata 2 2 3 2 2 3 5 3 2 3 2 3 2 3 5 6 5 3 2 2 2 3 2 3 2 3 5 3 2 2 3 2 2
04/12/2018 Paradossi topologici Il contorno di una figura secondo la 4 connessione è solo 8 connessa Il contorno di una figura secondo la 8 connessione è 4 connessa Si noti che una tassellazione esagonale non provoca paradossi 1 1 1 1 1 1 2 2 2 2 2 1 1 2 3 3 3 2 1 1 2 3 4 4 4 3 2 1 1 2 2 3 3 3 3 2 1 1 1 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 2 2 3 2 2 1 1 1 2 3 3 3 2 1 1 1 1 2 2 2 3 2 2 1 1 1 1 2 2 2 1 1 1 1 1 1 1
04/12/2018 Scheletro Lo scheletro di F è un sottoinsieme di F caratterizzato dalle seguenti proprietà: È connesso se F è connessa e ha o stesso ordine di molteplicità di F, ovvero hanno lo stesso numero di componenti connesse Ha ovunque spessore unitario È centrato in F Include i massimi locali di F
04/12/2018 Scheletro da TD e MAT
04/12/2018 8-Convex Hull
Rappresentazione con Quadtree 04/12/2018 Rappresentazione con Quadtree
Umbra Insieme A Top di A Umbra di A 04/12/2018 Umbra Estensione alle immagini a più livelli di grigio o colore A En, FEn-1, xF, yE Top di un insieme A: T[A](x) = max { y | (x, y) A } Umbra di f: U[f] = { (x, y) F E | y f(x) } Insieme A Top di A Umbra di A
04/12/2018 Umbra - Proprietà T[A] A U[A] En U[U[A]] U[ A]
Dilation a più livelli di grigio 04/12/2018 Dilation a più livelli di grigio Dati: F,KEn-1 , f:FE, k:KE Si definisce dilation di f tramite k f k = T{U[f]U[k]} Si dimostra che una definizione equivalente è: (f k)(x) = max{f(x-z)+k(z) | zK, x-zF} Dal punto di vista computazionale la complessità è equivalente ad una convoluzione
Esempio - dilation k f U[f] U[k] fk = T[U[f]U[k]] U[f]U[k] 04/12/2018 Esempio - dilation k f U[f] U[k] fk = T[U[f]U[k]] U[f]U[k]
04/12/2018 Esempio - dilation (f k)(6) = max{f(6-0)+k(0), f(6-1)+k(1), f(6-2)+k(2)}= max{f(6)+k(0), f(5)+k(1), f(4)+k(2)}= max{5+0, 6+1, 5+0} = 7 x f k fk 1 1 1 3 1 3 2 5 5 3 3 6 4 5 5 5 6 6 6 5 7 7 6 8 5
04/12/2018 Esempio - dilation (f k)(5) = max{f(5-(-1))+k(-1), f(5-0)+k(0), f(5-1)+k(1)}= max{f(6)+k(-1), f(5)+k(0), f(4)+k(1)}= max{5-1, 6+0, 5-1} = 6 x f k fk -1 -1 1 2 1 3 -1 4 2 5 5 3 3 4 4 5 5 5 6 6 6 5 5 7 4
04/12/2018 Esempio - dilation
Gray scale erosion Dati: F,KEn-1 , f:FE, k:KE 04/12/2018 Gray scale erosion Dati: F,KEn-1 , f:FE, k:KE Si definisce erosion di f tramite k fk = T{U[f]U[k]} Si dimostra che una definizione equivalente è: (fk)(x) = min{f(x+z)-k(z) | zK, x+zF}
04/12/2018 Esempio - erosion (fk)(5) = min{f(5-(-1))-k(-1), f(5-0)-k(0), f(5-1)-k(1)}= min{f(6)-k(-1), f(5)-k(0), f(4)-k(1)}= min{5+1, 6-0, 5+1} = 6 x f k f-k -1 -1 1 1 3 -1 2 2 5 4 3 3 3 4 5 4 5 6 6 6 5 7
04/12/2018 Esempio - erosion
04/12/2018 Esempio - opening
04/12/2018 Esempio – closing
04/12/2018 Esempio