Feature Points - SIFT
Digital Imaging
2014-2015
Simone Bianco
Introduzione
• PROBLEMA
– Vogliamo individuare in una immagine dei punti di interesse
– I punti devono catturare informazioni locali sull’immagine
– Possono essere usati per diversi scopi:
• Object recognition
• Tracking
• …
Feature Points
2
1
Introduzione
• PROBLEMA
– Vogliamo individuare in una immagine dei punti di interesse
– I punti devono catturare informazioni locali sull’immagine
– Possono essere usati per diversi scopi:
•
•
•
•
•
Object recognition
Tracking
Image Homography
Image pose Normalization
…
Feature Points
3
Introduzione
• PROBLEMA
– Vogliamo individuare in una immagine dei punti di interesse
– I punti devono catturare informazioni locali sull’immagine
– Possono essere usati per diversi scopi:
•
•
•
•
•
•
•
Object recognition
Tracking
Image Homography
Image Registration
Robust Matching
Indexing
…
Feature Points
4
2
Introduzione
• Sono necessari 2 passi fondamentali:
– Keypoint detection
– Keypoint description
• A secondo dell’applicazione:
– Keypoint matching
– …
Description
Search
Transform
Detection
Description
Matching
…
Indentify
Feature Points
5
Introduzione
• E’ importante che i keypoint (e/o le loro descrizioni) siano il
più possibile invarianti per:
– Illuminazione
Feature Points
6
3
Introduzione
• E’ importante che i keypoint (e/o le loro descrizioni) siano il
più possibile invarianti per:
– Illuminazione
– Scala
Feature Points
7
Introduzione
• E’ importante che i keypoint (e/o le loro descrizioni) siano il
più possibile invarianti per:
– Illuminazione
– Scala
– Rotazione
Feature Points
8
4
Introduzione
• E’ importante che i keypoint (e/o le loro descrizioni) siano il
più possibile invarianti per:
–
–
–
–
Illuminazione
Scala
Rotazione
Trasformazioni affini
Feature Points
9
Keypoint Detection
• Quali sono i punti più distintivi in una immagine?
Feature Points
10
5
Keypoint Detection
• I “Corner Points” sono dei possibili punti distintivi
dell’immagine
– E’ possibile identificarli anche in presenza di alcune trasformazioni
• Vedremo poi eventuali limiti
Feature Points
11
Keypoint Detection
• Vediamo due semplici algoritmi di Corner Point Detection
– Algoritmo KLT (Kanade-Lucas-Tomasi)
– Algoritmo di Harris (H)
• Vedremo poi l’algoritmo SIFT (Lowe) che include sia point
detection che point description
– E’ più robusto rispetto ai primi due
Feature Points
12
6
Keypoint Detection: Corner
• Idea generale
– Dato un intorno di pixel (supponiamo livelli di grigio)
y
EDGE
Le variazioni di intensità nell’insieme di
pixel sono più pronunciate in una
direzione rispetto all’altra.
x
Se l’edge è verticale, le derivate
parziali in direzione x sono più
pronunciate rispetto a quelle in
direzione y.
NB: Le derivate sono approssimate con la differenza tra pixel
Feature Points
13
Keypoint Detection: Corner
• Idea generale
– Dato un intorno di pixel (supponiamo livelli di grigio)
y
CORNER
Le variazioni di intensità nell’insieme di
pixel sono pronunciate in entrambe le
direzioni.
x
Le derivate parziali in entrambe le
direzioni sono pronunciate in egual
modo.
NB: Le derivate sono approssimate con la differenza tra pixel
Feature Points
14
7
Keypoint Detection: Corner
• Entrambi gli algoritmi KLT e di Harris, fanno uso della matrice
struttura Cstr
– Considerano le informazioni locali di un intorno di pixel
• La matrice è costruita dalla somma delle derivate parziali dei pixel
dell’intorno
C str
  δI ( x, y )  2
 δI ( x, y ) δI ( x, y )  

 ∑ 
∑ 
δy   ∆ xx ∆ xy 
 δx
  δx 
=
=

2
∆ xy ∆ yy 





(
,
)
(
,
)
(
,
)
I
x
y
I
x
y
I
x
y
δ
δ
δ

 
 ∑ 
 
2
∑  δx
δ
y
δ
y


 

La matrice deriva dall’approssimazione di Taylor di
Feature Points
15
Keypoint Detection: Corner
• Se la matrice fosse del tipo
∆ xx ∆ xy  v1 0 
C str = 
=

∆ xy ∆ yy  0 v2 
• Cosa dedurremmo?
– Le derivate parziali sono allineate nelle direzioni degli assi
• Se l’immagine è uniforme, v1= v2=0
• Se uno dei due valori di v è vicino a 0, siamo in presenza di un edge
• Se entrambi i valori di v sono alti, siamo in presenza di un corner
Feature Points
16
8
Keypoint Detection: Corner
• La matrice Cstr è simmetrica
∆ xx ∆ xy 
C str = 

∆ xy ∆ yy 
• Si può dimostrare che (diagonalizzazione)
∆ xx ∆ xy 
λ 0
−1  1
C str = 
=R 
R
 0 λ2 
∆ xy ∆ yy 
• Ogni matrice Cstr può essere ricondotta ad una matrice
diagonale “ruotando” le coordinate con la matrice R
– I valori λ sono gli autovalori (positivi) della matrice Cstr
Feature Points
17
Keypoint Detection: Corner
• Gli autovalori sono proporzionali all’entità delle variazioni
nelle due direzioni principali della regione. Gli autovettori
indicano le direzioni.
(λ2)½
(λ1)½
• Un possibile corner deve avere i due autovalori grandi
– Due direzioni principali → due edge → un corner
• Se λ1λ2 è elevato, si ha un corner
• Se λ1λ2→0 si ha immagine uniforme o edge
Feature Points
18
9
Keypoint Detection: Corner
• Classificazione dei punti in funzione degli autovalori
λ2
Edge
λ2 >> λ1
Flat
Corner
λ1 and λ2 are large
Edge
λ1 >> λ2
λ1
Feature Points
19
Keypoint Detection: KLT
• Algoritmo
– 1 – Calcolare le derivate parziali x e y sull’intera immagine
– 2 – Per ogni punto p dell’immagine
a) Calcolare la matrice Cstr in un intorno di p
b) Calcolare gli autovalori λ1 e λ2 (supponiamo λ1 > λ2)
c) Se λ2> λthr p è un punto di corner e viene aggiunto ad una lista L
– 3 – La lista viene ordinata (decrescente) in base al valore di λ2
– 4 – Partendo dal primo punto (λ2 più elevato), si eliminano i suoi
vicini (vicinato DxD) presenti nella lista
• I punti trovati hanno almeno λ2 > λthr e non si hanno più punti
di corner in un intorno DxD
Feature Points
20
10
Keypoint Detection: KLT
• Questioni aperte:
– Come settare il valore di λthr ?
• Si può determinare il valore di λthr per una data immagine
• Calcolare l’istogramma dei valori di λ2
• Scegliere come valore di soglia quello corrispondente ad una valle
dell’istogramma
– Come settare il valore dell’intorno D ?
•
•
•
•
Non c’e’ un criterio ben definito
Dipende dall’applicazione/immagine
Valori tipici sono dell’ordine 2∼10 pixel
Valori elevati di D tendono a eliminare troppi punti di corner
Feature Points
21
Keypoint Detection: KLT
• Esempio di punti trovati dall’algoritmo KLT
Feature Points
22
11
Keypoint Detection: Harris
• E’ simile all’algoritmo KLT (in realtà KLT è una variante di
dell’algoritmo di Harris)
• L’indice che viene usato (corner strength) è ricavato dalla
matrice Cstr:
H ( x, y ) = det Cstr − α (traceCstr )
2
• α è un coefficiente positivo. Siccome Cstr è simmetrica,
determinante e traccia si ricavano dagli autovalori:
det C str = λ1λ2
traceCstr = λ1 + λ2
Feature Points
23
Keypoint Detection: Harris
• Un corner point è individuato quando
H ( x, y ) = λ1λ2 − α (λ1 + λ2 ) ≥ 0
2
• Come con KLT, vengono eliminati corner point troppo vicini in
(intorno DxD). Sono tenuti i massimi locali.
• Influenza del coefficiente α
– Supponiamo che λ1≥ λ2 , λ1= λ e λ2=k λ con 0≤k ≤1
• k è il rapporto tra l’autovalore più piccolo e quello più grande
(
H ( x, y ) = kλ2 − α (λ + kλ ) = λ2 k − α (1 + k )
2
Feature Points
2
)
24
12
Keypoint Detection: Harris
H ( x, y ) ≥ 0
quando
k
≥α
(1 + k )2
• Il coefficiente α impone il valore di k che soddisfa la
disuguaglianza e che quindi determina la presenza di un
corner
– Fissare α significa imporre (in modo indiretto) che il rapporto tra i due
autovalori sia di una certa entità
• Se α è piccolo, ci sono molti valori di k che soddisfano la disuguaglianza e
quindi saranno trovati molti corner
• Se α è grande, solo alcuni valori di k soddisfano la disuguaglianza e
quindi si avranno pochi corner
Feature Points
25
Keypoint Detection: Harris
• Corner point trovati in funzione di α
• Nota: con H(x,y) ≥ 0 si ha che 0≤α≤0.25
Feature Points
26
13
Keypoint Detection: Harris
• Esempio di punti trovati dall’algoritmo di Harris
Feature Points
27
Keypoint Detection: Harris
• Questioni aperte:
– Come settare il valore di α ?
• Dipende dall’applicazione/immagine
– Come settare il valore dell’intorno D ?
• Non c’e’ un criterio ben definito
• Come per LKT
Feature Points
28
14
Keypoint Detection: Harris
• Esempio: immagine ruotata e illuminata diversamente
Feature Points
29
Keypoint Detection: Harris
• Esempio: valori di H(x,y)
Feature Points
30
15
Keypoint Detection: Harris
• Esempio: maschera dei punti dove H(x,y)≥0
Feature Points
31
Keypoint Detection: Harris
• Esempio: punti di massimo locale
Feature Points
32
16
Keypoint Detection: Harris
• Esempio: corner points
Feature Points
33
KLT, Harris: Proprietà
• I due algoritmi sono in grado di trovare uno stesso corner
anche se è ruotato
• Le ellissi hanno orientazioni diverse ma identica forma
(indentici autovalori)
Invarianza per rotazione (e traslazione)
Feature Points
34
17
KLT, Harris: Proprietà
• I due algoritmi sono discretamente sensibili a variazioni di
intensità (cambiano le ampiezze delle misure)
index
index
threshold
x (image coordinate)
x (image coordinate)
Parzialmente invarianti per intensità
Feature Points
35
KLT, Harris: Proprietà
• I due algoritmi sono molto sensibili a variazioni di scala
– La dimensione dell’intorno di pixel dal quale è costruita la matrice Cstr
è estremamente importante
• La dimensione dell’intorno permette di rilevare certi corner
Non sono invarianti per scala!
Feature Points
36
18
SIFT
• Scale Invariant Feature Transform (Lowe 1999)
SIFT Features
– L’immagine è trasformata in un insieme di feature locali che sono
invarianti per rotazione, scala, illuminazione e robuste per alcune
trasformazioni geometriche
Feature Points
37
SIFT
• L’invarianza per scala è ottenuta analizzando l’immagine a
diverse risoluzioni
– I keypoint sono cercati a diversi livelli di scala (multiscala)
– L’idea delle scale multiple è applicabile anche all’identificazione dei
corner point con KLT e Harris (estensioni)
– SIFT definisce però un unico framework che include sia keypoint
detection e keypoint description
Feature Points
38
19
SIFT
• L’analisi multiscala si ottiene per campionamenti successivi
dell’immagine:
Resampling bicubico
128x28
32x32
16x16
8x8
4x4
• Un risultato simile si ha filtrando l’immagine con filtri di
smooth a diversi gradi di forza
Smooth Gaussiano
σ=1.0
σ=2.0
σ=4.0
σ=8.0
Feature Points
39
SIFT
• L’idea è che a scale diverse sopravvivono informazioni
diverse
– Alcune informazioni sono così “forti” che possono sopravvivere a
diverse scale
Feature Points
40
20
Feature Points - SIFT
Digital Imaging
2014-2015
Simone Bianco
SIFT
• I passi fondamentali dell’algoritmo SIFT sono:
– Detection of space-scale extrema
• Trova i candidati punti di interesse a diversi livelli di scala
KEYPOINT DETECTION
– Accurate keypoint localization
• Elimina i punti di interesse che non soddisfano certe proprietà
– Orientation assignment
• Ad ogni keypoint è assegnata una orientazione (serve per l’invarianza per
rotazione)
KEYPOINT DESCRIPTION
– Local image descriptor
• Nei keypoint viene calcolato un descrittore (robusto a diverse
trasformazioni)
Feature Points
42
21
SIFT: Space-scale extrema
• L’idea è quella di filtrare l’immagine con diversi filtri Gaussiani
(analisi multiscala)
L ( x, y , σ ) = G ( x, y , σ ) ∗ I ( x, y )
• La differrenza tra immagini filtrate evidenzia elementi
dell’immagine
– Queste informazioni indicano la presenza di elementi di interesse
– Se questi elementi sono presenti in diverse differenze (diverse scale)
sono punti “stabili” (invarianti per scala)
D ( x, y, σ ) = L( x, y, kσ ) − L( x, y, σ )
Feature Points
43
SIFT: Space-scale extrema
D( x, y, σ ) = L( x, y, kσ ) − L( x, y, σ ) =
= (G ( x, y, kσ ) − G ( x, y, σ ) ) * I ( x, y ) =
= DoGσkσ * I ( x, y )
• La differenza di Gaussiane (DoG) approssima il Laplaciano di
una Gaussiana (LoG - filtro di edge)
-
Feature Points
=
44
22
SIFT: Space-scale extrema
• La differenza di Gaussiane (DoG) approssima il Laplaciano di
una Gaussiana (LoG - filtro di edge)
DoGσkσ = G ( x, y, kσ ) − G ( x, y, σ ) ≈ (k − 1)σ 2∇ 2G
Feature Points
45
SIFT: Space-scale extrema
–
Gaussiana con σ=4
Gaussiana con σ=8
Normalizzata
Feature Points
46
23
SIFT: Space-scale extrema
• Calcolare tante Gaussiane su tutta l’immagine è costoso
– Si può sottocampionare di un fattore 2 una delle immagini filtrate e
riapplicare i filtri gaussiani avendo lo stesso effetto ma con meno
operazioni
Ottava
– In pratica:
• Per ogni risoluzione si applicano un tot di filtri gaussiani
• Si sottocampiona
• Si ripete il procedimento di filtro/sottocampionamento
Feature Points
47
SIFT: Space-scale extrema
• Algoritmicamente
– L’immagine iniziale viene filtrata con diversi filtri Gaussiani i cui σ si
differenziano di un fattore k producendo una ottava
– Ogni ottava è suddivisa in s intervalli tali che k=21/s
– Per poter estrarre correttamente i punti di interesse, sono necessarie
s+3 immagini in ogni ottava
– Dopo aver processato una intera ottava, l’immagine corrispondente a
σ=2σ0 (con σ0 la dev. std. con cui è stata processata la prima
immagine dell’ottava) è sottocampionata di un fattore 2.
Feature Points
48
24
SIFT: Space-scale extrema
2√
√ 2σ
σ0
2σ
σ0
√2σ
σ0
σ0
--
Feature Points
49
SIFT: Space-scale extrema
Feature Points
50
25
SIFT: Space-scale extrema
• Per individuare i punti di estremo locale, ogni valore della
D(x,y,σ) è confrontato con i suoi 26 vicini (8 vicini alla scala
corrente e 9 vicini alla scala superiore e inferiore)
• Se il valore è maggiore o minore di tutti i vicini è un estremo
Feature Points
51
SIFT: Space-scale extrema
Punti di estremo locale
Feature Points
52
26
SIFT: Keypoint localization
• I punti di estremo trovati in D(x,y,σ) sono analizzati per
eliminare gli estremi di rumore o poco robusti
– Analisi del contrasto
• Se è
x̂ un punto di estremo, viene eliminato se
D(xˆ ) < 0.03
Nell’ipotesi che i valori siano compresi tra [0,1]
– Analisi degli estremi trovati sugli edge
• Viene sfruttata la matrice di struttura Cstr calcolata nell’intorno di x̂
• Usa l’idea alla base dei corner point detection dell’algoritmo di Harris
Feature Points
53
SIFT: Keypoint localization
∆ xx ∆ xy 
C str = 

∆ xy ∆ yy 
• Siano α e β i due autovalori della matrice con α=rβ (r≥1 è il
rapporto tra l’autovalore maggiore e quello minore), allora da
det C str = ∆ xx ∆ yy − (∆ xy ) = αβ
2
traceCstr = ∆ xx + ∆ yy = α + β
• Si ha:
(traceCstr )2 = (α + β )2 = (rβ + β )2 = (r + 1)2
det Cstr
Feature Points
αβ
rβ 2
r
54
27
SIFT: Keypoint localization
(traceCstr )2 = (r + 1)2
det Cstr
r
• Il rapporto cresce al crescere di r
• Se r è molto grande, siamo in presenza di un edge
– un autovalore è molto più grande dell’altro
• una direzione è preferita all’altra
Feature Points
55
SIFT: Keypoint localization
• Per eliminare punti sugli edge si può imporre che r sia
inferiore ad una soglia r’ e quindi che:
(traceCstr )2 < (r '+1)2
det Cstr
r'
• Lowe ha fissato nei suoi esperimenti r '< 10
Feature Points
56
28
SIFT: Keypoint localization
Punti a basso contrasto e sugli edge rimossi
Feature Points
57
SIFT: Orientation assignment
• I keypoint trovati sono caratterizzati da coordinate spaziali
(x,y) e una scala (σ)
• Dall’immagine filtrata L(x,y,σ) può essere ricavata anche
l’orientazione del keypoint
– L’orientazione permetterà poi di avere delle feature locali (calcolate
sul keypoint) invarianti per rotazione
• Per fare questo, sono calcolati modulo e angolo del gradiente
in dei pixel delle immagini L(x,y,σ)
Feature Points
58
29
SIFT: Orientation assignment
Feature Points
59
SIFT: Orientation assignment
Feature Points
60
30
SIFT: Orientation assignment
Feature Points
61
SIFT: Orientation assignment
Feature Points
62
31
SIFT: Orientation assignment
• Ci possono essere più picchi
– Al keypoint sono assegnate diverse orientazioni se, nell’istogramma, i
picchi ulteriori sono alti almeno l’80% dell’altezza del picco maggiore
Feature Points
63
SIFT: Orientation assignment
Orientazioni dei keypoint
Feature Points
64
32
SIFT: Un altro esempio
Immagine
233×189 pixel
729 keypoint
dopo analisi del
contrasto
832 keypoint iniziali
536 keypoint dopo
soglia su r
Feature Points
65
SIFT: Local image descriptor
• A questo punto ad ogni key point sono assegnate
– Coordinate spaziali : (x,y)
– Scala : σ
– Orientazione : θ
• Per poter confrontare keypoint in diverse immagini è
necessario avere un qualche descrittore del keypoint
– Una possibile soluzione è quella di estrarre una patch di pixel
nell’intorno del keypoint
• Si può ricorrere al template matching per il confronto
Feature Points
66
33
SIFT: Local image descriptor
match
• L’orientazione e la scala ci permettono di portare le patch in
una forma “normale”
– Non è un approccio robusto (es. è sensibile all’illuminazione)
Feature Points
67
SIFT: Local image descriptor
• Lowe ha sviluppato delle feature locale più robuste delle
semplici patch
– Le feature risultano invarianti per trasformazioni geometriche, per
illuminazione e anche per (limitate) trasformazioni prospettiche
• Descrittore:
–
–
–
–
Intorno al keypoint sono calcolati modulo e orientazione del gradiente
Sono calcolati gli istogrammi delle orientazioni in 4x4 sottoregioni
Ogni istogramma è composto da 8 bin
La dimensione del descrittore è 128
Feature Points
68
34
SIFT: Local image descriptor
• Per avere invarianza ai cambimenti di intensità il vettore di
istogrammi è normalizzato a 1
• Per avere maggiore robustezza i valori del vettore sono
sogliati ad un massimo di 0.2 (valore sperimentale)
• Il vettore di valori sogliati è nuovamente normalizzato a 1
Feature Points
69
SIFT: Local image descriptor
• Perché 4x4x8 ?
Feature Points
70
35
SIFT: Local image descriptor
• Robustezza alle distorsioni
Feature Points
71
SIFT: Corrispondenze
• Ore che abbiamo dei punti (keypoint) e delle loro descrizioni
invarianti (descriptor), possiamo usarli per trovare le
corrispondenze tra immagini. Es:
v
y
x
u
• Un punto (x,y) corrisponde ad un punto (u,v)
Feature Points
72
36
SIFT: Corrispondenze
• Abbiamo un descrittore invariante composto da 128 elementi.
• Come valutiamo due descrittori d1 e d2?
dist (d1 , d 2 ) =
– Distanza Euclidea
∑ (d
128
i =1
1,i
− d 2 ,i )
2
dist (d 1 , d 2 ) = ∑ (d1,i × d 2,i )
128
– Prodotto scalare
i =1
– … (n-mila altre metriche)
Feature Points
73
SIFT: Corrispondenze
• Come valutare se si ha un buon match tra due descrittori?
dist (d1 , d 2 ) < T
– Problema: quanto vale T? Una soglia non è sufficientemente robusta.
• Lowe usa il rapporto tra distanze. Le distanze tra d e tutti gli
altri descrittori sono ordinate in ordine crescente:
– dist(d,d’1) < dist(d,d’2) < dist(d,d’3) < …
• Se
dist (d, d'1 )
< 0 .8
dist (d, d'2 )
• Il match è confermato
Feature Points
74
37
SIFT: Corrispondenze
• Indipendentemente dal criterio usato per il matching, un
punto può essere comunque assegnato a diversi altri punti
• Il matching non è perfetto
• La gestione di questi casi dipende dall’applicazione
Feature Points
75
SIFT: Applicazioni
• Registrazione immagini
• Object recognition
Feature Points
76
38
SIFT: Registrazione di immagini
• Registrazione di panorami
– Dati:
• Sequenza di fotografie scattate a diverse posizioni e in diversi tempi
– Obiettivo:
• “Cucire” le diverse fotografie per ricostruire l’intera scena
Feature Points
77
SIFT: Registrazione di immagini
• Registrazione di panorami
– Problemi:
• Foto soggette a distorsioni: rotazioni, affini, cambi di impostazioni camera
– Uso di SIFT:
• Identificazione delle porzioni di immagini da sovrapporre
• Determinazione della matrice di trasformazione tra coppie di immagini
Feature Points
78
39
SIFT: Registrazione di immagini
• Se supponiamo di avere trovato delle corrispondenze tra k
keypoint di una immagine A con k keypoint di una immagine
B (caso ideale) :
[ xi , yi ] → [ui , vi ]
i = 1,2,.., k
con (x,y) e (u,v) coordinate spaziali dei keypoint
v
y
u
x
Feature Points
79
SIFT: Registrazione di immagini
• Le corrispondenze possono essere usate per determinare la
trasformazione affine che lega le due immagini:
u   m1
 v  = m
   3
• oppure
Feature Points
m2   x  t x 
+ 
m4   y  t y 
 m1 
m 
 2
u   x y 0 0 1 0  m3 
 v  = 0 0 x y 0 1 m 
  
 4 
 tx 
 
 t y 
80
40
SIFT: Registrazione di immagini
• La trasformazione deve valere per tutti i punti che sono stati
trovati corrispondenti quindi:
 u1   x1
v   0
 1 
 ...  =  ...
  
u k   xk
 vk   0
y1
0
...
yk
0
0
x1
...
0
xk
 m1 
0 1 0  
m2
y1 0 1   
 m3 
... ... ...  
 m4
0 1 0  
 tx 
yk 0 1   
 t y 
• Risolvendo il sistema si trovano i parametri m e t della
trasformazione affine
Feature Points
81
SIFT: Registrazione di immagini
• Nei casi reali abbiamo corrispondenze multiple tra descrittori!
Immagine A
Sovrapposizione
A+B
Feature Points
Corrispondenze
Immagine B
82
41
SIFT: Registrazione di immagini
Corrispondenze corrette
Corrispondenze errate
Feature Points
83
SIFT: Registrazione di immagini
• Come distinguere le corrispondenze corrette dalle altre?
• L’insieme di coppie di punti (x,y)→(u,v) sono delle ipotesi di
corrispondenze.
– Dobbiamo trovare le ipotesi corrette
• Tutte le corrispondenze corrette sono caratterizzate dalla
stessa trasformazione affine T
– Cioè sono soggette alla stessa trasformazione
  x 
u 
 v  = T   y  
 
 
Feature Points
84
42
SIFT: Registrazione di immagini
• Nel caso di una ipotesi (x,y)→(u,v) scorretta si avrà
  x   u ' u 
T     =   ≠  
  y    v'  v 
u ' u 
errore =   −  
 v'  v 
(u,v)
(x,y)
Ipotesi
Errore
T
(u’,v’)
Feature Points
85
SIFT: Registrazione di immagini
• Le ipotesi scorrette NON sono derivabili da una sola
trasformazione
• Se troviamo una T che, con errori bassi, soddisfa un gran
numero di ipotesi, abbiamo le corrispondenze corrette!
Feature Points
86
43
SIFT: Registrazione di immagini
• RANSAC : RANdom SAmple Consensus
– Algoritmo di modellazione dei dati
– Determina un modello (parametri) che descrive i dati
– Robusto alla presenza di outliers
Feature Points
87
SIFT: Registrazione di immagini
• RANSAC : RANdom SAmple Consensus
U = {xi }
input data points | U |= N
f (S ) : S → θ
funzione che da un campione di punti S trova i
parametri θ del modello
e(θ , x)
funzione di fit calcolata su un singolo campione
θ*
parametri del modello che minimizza la
funzione di fit
Feature Points
88
44
SIFT: Registrazione di immagini
• RANSAC : RANdom SAmple Consensus
k=0, E*=0
Fino a che k<L
k=k+1
1) Ipotesi
Selezionare un sottoinsieme random di campioni Sk⊂U con | Sk |=s
Calcolare i parametri θk del modello da Sk
2) Verifica
Calcolare l’errore dell’ipotesi Ek=
Σ
x∈U-Sk
(x, θk)
Se Ek>E* allora E*=Ek , θ*= θk
Feature Points
89
SIFT: Registrazione di immagini
• RANSAC: line detector
Campione iniziale
Feature Points
90
45
SIFT: Registrazione di immagini
• RANSAC: line detector
Campione iniziale
Fit della funzione linea
Feature Points
91
SIFT: Registrazione di immagini
• RANSAC: line detector
Campione iniziale
Fit della funzione linea
Errore dell’ipotesi
Feature Points
92
46
SIFT: Registrazione di immagini
• RANSAC: line detector
Campione iniziale
Fit della funzione linea
Errore dell’ipotesi
Campioni coerenti con l’ipotesi
(i più vicini alla linea stimata)
Feature Points
93
SIFT: Registrazione di immagini
• RANSAC: line detector
Soluzione corretta
s
er
tli
u
o
Il numero di campioni coerenti
con l’ipotesi è grande
inliers: punti della soluzione
outliers: punti di rumore
lie
in
Feature Points
rs
s
er
tli
u
o
94
47
SIFT: Registrazione di immagini
• RANSAC
– Il numero di iterazioni K che deve fare l’algoritmo dipende dalla
probabilità di trovare almeno un insieme Sk di punti tutti inlier
Se ϖ è la probabilità di avere un punto inlier tra gli N campioni
La probabilità di avere s punti inlier è (se N>>s): ϖs
La probabilità di NON avere s punti inlier è: 1- ϖs
La probabilità di NON selezionare un insieme di punti tutti inlier per K
volte è: (1- ϖs)K
• La probabilità di selezionare almeno una volta un insieme di punti tutti
inlier è P=1- (1- ϖs)K
• Il numero di iterazioni che servono per avere una probabilità P di scegliere
un insieme di punti tutti inlier è quindi:
•
•
•
•
K=
log(1 − P )
log(1 − ϖ s )
Feature Points
95
SIFT: Registrazione di immagini
•RANSAC
K=
log(1 − P )
log(1 − ϖ s )
Feature Points
96
48
SIFT: Registrazione di immagini
• Osservazioni
– La bontà del modello dipende dalla dimensione s degli insiemi Sk
vuole approssimare il modello
• Più s è grande e più (idealmente) il modello è preciso
– Se il numero di punti inlier è di molto inferiore al numero di punti
outlier, RANSAC non si può usare! (Troppe iterazioni)
– ϖ, in generale, non si conosce!
• Nel caso della registrazione di immagini si può ipotizzare che
ϖ sia ragionevolmente alta
Feature Points
97
SIFT: Registrazione di immagini
• Nel nostro caso RANSAC diventa:
– Modella le ipotesi di corrispondenza
– Determina la trasformazione T che fitta al meglio le ipotesi
– Robusto alla presenza di ipotesi di corrispondenza errate
• Indichiamo:
– una ipotesi (x,y)→(u,v), come p→q
– l’errore che si commette applicando T, come e=||q-T(q)||
– la bontà di una trasformazione T come la somma degli errori sulle
ipotesi
E = ∑e
Feature Points
98
49
SIFT: Registrazione di immagini
• Algoritmo RANSAC:
1. Prendere un campione random di s ipotesi SK={p→q}
2. Stimare la trasformazione T dal campione
3. Per ognuna delle altre ipotesi non comprese nel campione
– Applicare T e calcolare l’errore e
– Se e<th aggiungere l’ipotesi in Sk
4. Se l’insieme SK è di una certa dimensione d
– Stimare ancora T dall’insieme SK (raffinamento del modello)
– Calcolare Ek (la bontà della trasformazione T)
5. Ripetere K volte i punti 1-4 e ritornare T che ha ottenuto l’errore Ek
minore
• Parametri: [s, th, d, N]
Feature Points
99
SIFT: Registrazione di immagini
Feature Points
100
50
SIFT: Registrazione di immagini
Feature Points
101
SIFT: Registrazione di immagini
Feature Points
102
51
SIFT: Object Recognition
SIFT
SIFT
Descriptors
DB
Feature Points
103
SIFT: Object Recognition
SIFT
Descriptors
DB
MATCHING
SIFT
Feature Points
104
52
SIFT: Object Recognition
• Il numero di punti che appartengono agli oggetti è (in
generale) di gran lunga inferiore al numero di punti trovati
nell’intera immagine
• Possiamo avere più oggetti contemporaneamente
nell’immagine
• RANSAC non è utilizzabile tra keypoint dell’oggetto e quelli
dell’immagine (outliers >> inliers)
• Bisogna utilizzare altre strategie
Feature Points
105
SIFT: Object Recognition
• Possibile algoritmo
– Fare il match tra i keypoint nell’immagine e quelli nel DB
– Ogni keypoint dell’immagine è (eventualmente) associato ad un
oggetto del DB
– Si contano il numero di match per oggetto
– Se un oggetto ha ricevuto più di 3 match
• Determinare la trasformazione T sui gruppi di keypoint e verificare l’errore
che si commette
• Se l’errore è basso, l’oggetto corrispondente al cluster è presente
nell’immagine
• Altri algoritmi più robusti utilizzano la Trasformata di Hough
Generalizzata (vedere rif.bib.)
Feature Points
106
53
SIFT: Object Recognition
• Esempio
Feature Points
107
SIFT: Object Recognition
• Esempio
Feature Points
108
54
SIFT: Object Recognition
• Esempio
Feature Points
109
SIFT: Object Recognition
• Esempio
Feature Points
110
55
Curiosità
Sony Aibo (Evolution Robotics)
usa SIFT per
Riconoscere la stazione di
ricarica
Riconoscere le carte visuali dei
comandi
Feature Points
111
Bibliografia
•
Harris, C. and Stephens, M.,
A combined corner and edge detector.
In Fourth Alvey Vision Conference, Manchester, UK, pp. 147-151, 1988.
•
Carlo Tomasi and Takeo Kanade,
Detection and tracking of point features,
Tech. Rep. CMUCS -91-132, Carnegie Mellon University, April 1991.
•
Lowe, D. G.
Distinctive Image Features from Scale-Invariant Keypoints.
International Journal of Computer Vision Vol. 60(2), p.9, 2004
•
Fischler and Bolles.
Random sample consensus.
Graphics and Image Processing, 1981.
Feature Points
112
56
SIFT: Orientation assignment
Feature Points
113
57