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