Comprensione del processo di calcolo delle caratteristiche di SURF


9

Quindi, stavo leggendo l'articolo su SURF (Bay, Ess, Tuytelaars, Van Gool: Speeded-Up Robust Features (SURF) ) e non riesco a comprendere questo paragrafo qui sotto:

A causa dell'uso di filtri box e immagini integrali, non è necessario applicare iterativamente lo stesso filtro all'output di un layer precedentemente filtrato, ma è possibile applicare filtri box di qualsiasi dimensione esattamente alla stessa velocità direttamente sull'immagine originale e anche in parallelo (anche se quest'ultimo non è sfruttato qui). Pertanto, lo spazio della scala viene analizzato aumentando la dimensione del filtro anziché ridurlo in modo iterativo, figura 4.

This is figure 4 in question.

Figura 4

PS: il documento ha una spiegazione dell'immagine integrale, tuttavia l'intero contenuto del documento si basa sul particolare paragrafo sopra. Se qualcuno ha letto questo documento, puoi dire brevemente cosa sta succedendo qui. L'intera spiegazione matematica è piuttosto complessa per avere una buona comprensione, quindi ho bisogno di assistenza. Grazie.

Modifica, un paio di problemi:

1.

Ogni ottava è suddivisa in un numero costante di livelli di scala. A causa della natura discreta delle immagini integrali, la differenza di scala minima tra 2 scale successive dipende dalla lunghezza lo dei lobi positivi o negativi della derivata parziale del secondo ordine nella direzione di derivazione (x o y), che è impostata su un terzo della lunghezza della dimensione del filtro. Per il filtro 9x9, questa lunghezza lo è 3. Per due livelli successivi, dobbiamo aumentare questa dimensione di un minimo di 2 pixel (un pixel su ciascun lato) al fine di mantenere le dimensioni irregolari e quindi garantire la presenza del pixel centrale . Ciò comporta un aumento totale della dimensione della maschera di 6 pixel (vedere la figura 5).

Figure 5

Figura 5

Non riuscivo a dare un senso alle linee in un determinato contesto.

Per due livelli successivi, dobbiamo aumentare questa dimensione di almeno 2 pixel (un pixel su ciascun lato) per mantenere le dimensioni irregolari e garantire così la presenza del pixel centrale.

So che stanno cercando di fare qualcosa con la lunghezza dell'immagine, anche se stanno cercando di renderlo strano, in modo che ci sia un pixel centrale che consentirà loro di calcolare il massimo o il minimo del gradiente di pixel. Sono un po 'incerto sul suo significato contestuale.

2.

Per calcolare il descrittore viene utilizzato il wavelet di Haar.

Haar Wavelet

In che modo la regione centrale ha un basso ma un alto.Σ dXΣ |dX|

3.

Un altro

Qual è la necessità di avere un filtro approssimativo?

4. Non ho alcun problema con il modo in cui hanno scoperto la dimensione del filtro. Hanno "fatto" qualcosa empiricamente. Tuttavia, ho qualche fastidioso problema con questo pezzo di linea

L'output del filtro 9x9, introdotto nella sezione precedente, è considerato come il livello di scala iniziale, a cui faremo riferimento come scala s = 1.2 (derivati ​​gaussiani approssimativi con σ = 1.2).

Come hanno scoperto il valore di σ. Inoltre, come viene mostrato il calcolo del ridimensionamento mostrato nell'immagine qui sotto. La ragione per cui sto affermando su questa immagine è che il valore di s=1.2continua a ripetersi, senza indicare chiaramente la sua origine. Immagine in scala

5. La matrice hessiana rappresentata in termini di Lquale è la convoluzione del gradiente del secondo ordine del filtro gausssiano e dell'immagine.

Tuttavia si dice che il determinante "approssimato" contenga solo termini che coinvolgono il filtro gaussiano del secondo ordine.

Il valore di wè:

La mia domanda sul perché il determinante è calcolato come quello sopra, e qual è la relazione tra la matrice approssimativa dell'Assia e quella dell'Assia.


Hey! Ho aggiunto i nomi degli autori e il titolo dell'articolo alle tue domande, spero non ti dispiaccia. Innanzitutto, rende l'articolo ricercabile anche se il link non funziona. In secondo luogo, come qualcuno che fa ricerche, penso che accreditare gli autori con i loro nomi e nomi della pubblicazione sia il minimo che possiamo fare per riconoscere il loro lavoro :)
penelope,

@penelope: Avevo quasi paura che la gente mi votasse all'oblio.
motiur

Penso che sia davvero una bella domanda, una delle più interessanti di recente. Non sono mai entrato in SURF da solo, ma potrei provare a dare un'occhiata domani e vedere se posso contribuire, la domanda in realtà mi ha fatto interessare :) e PS: se lo stai facendo come parte di un progetto Uni "ufficiale" , Sono sicuro che il tuo supervisore ti aiuterebbe volentieri (specialmente se sei a livello di Master). Una parte del loro lavoro è insegnarti a leggere la letteratura scientifica.
penelope,

PPS: potresti voler modificare la tua domanda per aggiungere una breve spiegazione dei termini immagine integrale e filtro box : capire ciò che capisci probabilmente ci aiuterà a capire ciò che non capisci;)
penelope

@penelope: Sei una brava ragazza / ragazzo, qualunque cosa. E no, devo fare una revisione della letteratura di questo articolo, ho letto quello scritto da David Lowe sia nel 2004 che nel 1999. Quello era abbastanza instabile, e in più c'era una bella lezione su YouTube. Il problema è che ci sono tonnellate di termini matematici usati in questo documento, quello con SURF. Se non hai un modello matematico in testa, è difficile vedere l'idea principale.
motiur

Risposte:


10

Che cos'è SURF?

Per capire correttamente cosa sta succedendo, devi anche avere familiarità con SIFT : SURF è fondamentalmente un'approssimazione di SIFT. Ora, la vera domanda diventa: che cos'è SIFT? .

SIFT è sia un rilevatore di punti chiave che un descrittore di punti chiave . Nella parte del rivelatore, SIFT è essenzialmente una variante multi-scala dei rivelatori d'angolo classici come l'angolo Harris e che ha la capacità di sintonizzare automaticamente la scala. Quindi, data una posizione e una dimensione della patch (derivata dalla scala), può calcolare la parte descrittore.

SIFT è molto bravo ad abbinare pezzi di immagini affine localmente, ma ha uno svantaggio: è costoso (cioè lungo) da calcolare. Una grande quantità di tempo viene impiegata per calcolare lo spazio-scala gaussiano (nella parte del rivelatore), quindi per calcolare gli istogrammi della direzione del gradiente (per la parte descrittore).

Sia SIFT che SURF possono essere visti come la differenza dei gaussiani con la selezione automatica della scala (cioè, dimensioni gaussiane). Questo, prima costruisci uno spazio-scala in cui l'immagine di input viene filtrata su diverse scale. Lo spazio-scala può essere visto come una piramide, in cui due immagini consecutive sono correlate da un cambio di scala (ovvero, è cambiata la dimensione del filtro passa-basso gaussiano), e le scale sono quindi raggruppate per ottave (cioè, un grande cambiamento nella dimensione del filtro gaussiano).

  • In SIFT, questo viene fatto filtrando ripetutamente l'input con un gaussiano di larghezza fissa fino a raggiungere la scala dell'ottava successiva.
  • In SURF, non si subisce alcuna penalità di runtime dalla dimensione del filtro gaussiano grazie all'uso del trucco dell'immagine integrale. Pertanto, si calcola direttamente l'immagine filtrata su ciascuna scala (senza utilizzare il risultato nella scala precedente).

La parte di approssimazione

Dato che calcolare lo spazio-scala gaussiano e gli istogrammi della direzione del gradiente è lungo, è una buona idea (scelta dagli autori di SURF) sostituire questi calcoli con approssimazioni veloci.

Gli autori hanno osservato che i piccoli gaussiani (come quelli utilizzati in SIFT) potrebbero essere ben approssimati da integrali quadrati (noti anche come sfocatura delle caselle ). Queste medie rettangolari hanno la bella proprietà di essere molto veloci da ottenere grazie al trucco dell'immagine integrale.

Inoltre, lo spazio-scala gaussiano non è in realtà usato di per sé , ma per approssimare un laplaciano di gaussiani (puoi trovarlo nel documento SIFT). Pertanto, non sono necessarie solo immagini sfocate gaussiane, ma derivate e differenze di esse. Quindi, spingi un po 'più in là l'idea di approssimare un gaussiano di una scatola: prima ricava un gaussiano tutte le volte che è necessario, quindi approssima ogni lobo con una scatola della dimensione corretta. Alla fine finirai con un set di funzionalità Haar.

Incremento di 2

Questo è solo un artefatto dell'implementazione, come hai indovinato. L'obiettivo è avere un pixel centrale. Il descrittore di caratteristiche viene calcolato rispetto al centro della patch di immagine da descrivere.

Regione centrale

Σtutti i pixel nella colonnaX=UNΣtutti i pixel nella colonnaX=-UNΣX

Numero magico

σ=1.2σ=1.2


Grazie per la spiegazione, ha chiarito alcune cose, fammi vedere se qualcuno ha una comprensione più elaborata.
motiur,

Ho modificato la risposta rispetto alle tue nuove domande.
Sansuiso,

Oh sì grazie, apprezzabile. Il documento è piuttosto lungo, quindi molte cose vanno contemporaneamente.
motiur

Vuoi vedere la mia ultima modifica?
motiur

1
È un mix di conoscenza comune condivisa (i piccoli gaussiani sono ben approssimati dalle sfocature delle caselle), la sperimentazione (dimensioni minime / massime degli oggetti di interesse nelle immagini del mondo reale) e la matematica (date le dimensioni iniziali della patch, i rettangoli di calcolo e i gaussiani che si adattano) .
Sansuiso,

4

Al fine di identificare i potenziali punti di interesse, la funzione differenza di gaussiana (DOG) viene spesso utilizzata per elaborare l'immagine, rendendola così invariante rispetto alla scala e all'orientamento.

In SIFT, le piramidi di immagine vengono stabilite filtrando ogni livello con DOG di sigmavalori crescenti e prendendo la differenza.

D'altra parte, SURF applica un'approssimazione molto più veloce di derivati ​​parziali gaussiani del secondo ordine con Laplacian di Gaussian (LoG) e filtri quadrati di diverse dimensioni (9 * 9, 15 * 15, ...). Il costo computazionale è indipendente dalla dimensione del filtro. Non esiste un down-sampling (modifica sigma) per livelli più alti nella piramide, ma solo l'upscaling delle dimensioni del filtro che porta ad avere immagini della stessa risoluzione.

MODIFICARE

Una nota aggiuntiva: nel lavoro gli autori semplificare ulteriormente la derivata seconda gaussiana ai 4 orientazioni (x, y, xy, yx) con il kernel [1 -2 1], [1 -2 1]', [1 -1;-1 1], e [-1 1;1 -1]. Quando la dimensione del filtro aumenta, è sufficiente estendere le aree del kernel semplificate per ottenere quella più grande. Ed è equivalente al DOG con scale diverse (la curva LoG ha la stessa forma del DOG e la dimensione del filtro rende uguale anche la loro larghezza).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.