Comprensione della funzione filtro Gabor


9

Devo implementare uno script per generare funzionalità da un'immagine di input usando il filtro Gabor. Non ho precedenti esperienze di wavelet e sto solo imparando l'analisi di Fourier (capisco l'idea di base dietro l'analisi e la trasformazione di Fourier), quindi non possono aiutarmi a capire il filtro Gabor, perché devo eseguire un'implementazione in una settimana . Non ho bisogno di capire le basi della funzione filtro Gabor, ma vorrei capire fino a un certo punto di cosa è e cosa fa. Quali sono i parametri? Cosa vogliono dire? Qual è l'output della funzione? Ad esempio questa è la formula che ho copiato da Wikipedia :

g(x,y;λ,θ,ψ,σ,γ)=exp(x2+γ2y22σ2)exp(i(2πxλ+ψ))

Ora la mia ovvia domanda è: cosa significa? Cosa significano le variabili? Secondo Wikipedia:

x,y: Presumo che queste coordinate specifichino il valore in pixel di un'immagine in corrispondenza delle coordinate (x,y)( 2. Va bene, capito )

λ: rappresenta la lunghezza d'onda del fattore sinusoidale ( fattore sinusoidale, eh? 3a. Come si seleziona? 3b. Da dove viene? 3c. È un numero arbitrario o cosa? Scelto liberamente?)

θ: rappresenta l'orientamento delle strisce normali rispetto alle strisce parallele di una funzione di Gabor (4. Che cosa significa?)

ψ: è l'offset di fase (5. offset di cosa? Come viene determinato questo valore? È scelto liberamente?)

σ: è la sigma / deviazione standard della busta gaussiana (6. Hai bisogno di maggiori spiegazioni ...)

γ: è l'aspect ratio spaziale e specifica l'ellitticità del supporto della funzione Gabor (7. Ancora una volta servono maggiori dettagli e più spiegazioni)

E, soprattutto:

g(x,y;λ,θ,ψ,σ,γ)=X
  1. Qual è il valore di output X? Cosa significa?

Come ho già detto, non ho bisogno di una spiegazione approfondita della teoria, perché scommetto che è lunga e leggere un libro di 1000 pagine su argomenti sconosciuti non è un'opzione per me in questo momento. Devo avere una comprensione a fondo nero di questa funzione in modo da poterla implementare nel codice e, soprattutto, capire quale sia l'input e quale sia l'output .

Grazie per tutto l'aiuto!! =)

PS

Ho letto questo post:

/math/259877/value-of-xy-in-computing-gabor-filter-function

ma non risponde sufficientemente alla mia domanda :)


1
Sembra che tu stia cercando di imparare molto sull'elaborazione delle immagini in appena una settimana. Forse dovresti iniziare con un filtro più semplice prima come l'ondello di Haar.
Aaron,

Ciao @anonimo! Puoi enumerare quali parametri non sono spiegati correttamente?
visoft,

@visoft, la tua risposta non è chiara. Implica molte discussioni estranee. Ho aggiunto la mia risposta Penso che ora sia chiaro.

Hai iniziato una taglia perché "Nella risposta attuale, i significati di vari parametri sono descritti in forma scarsamente formulata. È necessaria una risposta puntuale." Ero curioso di sapere quali spiegazioni debbano essere riformulate.
visoft,

@visoft, la tua risposta non è chiara. Implica molte discussioni estranee. Ho aggiunto la mia risposta Penso che ora sia chiaro.

Risposte:


7

Un'implementazione matlab è in questa risposta: https://dsp.stackexchange.com/a/14201/5737

1) La formula di Wikipedia è un po 'troppo generica.

2) Se conosci le basi della trasformata con Fourier, allora empiricamente sai che: L'immagine viene vista come formata sovrapponendo una serie di onde sinusoidali di varie frequenze orientate in tutti i tipi di direzioni. Ogni "pixel" nella trasformazione ci dice l '"intensità" di tale onda. La posizione del "pixel" ci dice la frequenza e l'orientamento dell'onda. In pratica, si desidera selezionare solo determinate onde, con una frequenza specifica e un orientamento specifico.

Quindi il gioco è fatto: la trasformazione di Gabor è uno dei tanti cosiddetti filtri passa banda che consente di "tagliare" la trasformazione di Fourier e isolare solo informazioni specifiche. Un'altra informazione importante è che ogni "pixel" di Fourier è un valore complesso (parte reale e immaginaria)

3) Parametri: sono già visualizzati due parametri:

3.a) La frequenza di sintonia f0o periodo di ottimizzazione P0, o λstabilire a quale tipo di onda sinusale il filtro risponderà meglio. (f=1/P0=1/λ o f=π/λ a seconda dell'implementazione specifica) Fondamentalmente, un più piccolo P0significa un'onda sinusale più densa. Un più grandeP0 significa onde più grandi. P0 è in pixel (3, 5, 30, ecc. pixel) Non andare al di sotto di 3 pixel o oltre W/2 o ottieni effetti cattivi. Wè la larghezza dell'immagine, se l'immagine è quadrata. Si specifica questo usando il parametro P0 nel codice matlab.

3.b) Angolo centrale. Queste onde possono avere qualsiasi direzione. Vuoi selezionare solo le onde con un angolo specifico. Quindi, il secondo parametro è l'angolo di accordatura,θ0 o θnella tua formula. Di solito, in radianti. Orienta in codice matlab.

Non si può isolare solo una certa frequenza o un certo orientamento. (Cerca il principio di incertezza nei libri di testo. Sì, è simile a quello in fisica) Ma si può sintonizzare la quantità di frequenze vicine che perderà. I successivi due parametri specificano che:

3.c) ΔF, larghezza di banda di frequenza espressa in ottave. Valori utili, 1,5, 2, 3. Valori più grandi significano catturare una gamma più ampia di frequenze. C'è un prezzo per un passabanda più stretto, una localizzazione spaziale più scadente. Perché, di nuovo, libro di testo. FBW in codice matlab.

3.d) Δθla larghezza di banda angolare. Espresso in radianti.π/3 o π/2funziona benissimo. ABW in codice matlab.

La relazione tra Δf, Δθ dal codice matlab e σ,γ da Wikipedia hanno una formula ma non è essenziale per comprendere Gabor. ψ non è ancora importante per la comprensione di base.

Quindi ce l'hai: Xda Wikipedia è una matrice 2D di numeri contenente una maschera di convoluzione. Prendi l'immagine originale, la filtra con la maschera di convoluzione e ottieni un'altra immagine. Questa nuova immagine è la "risposta di Gabor" per l'immagine originale.

Il codice matlab esegue questi due passaggi insieme. Costruisce il filtro Gabor con i parametri specificati ed esegue la convoluzione. I risultati ReConv, ImConv sono le risposte. Ogni "pixel" di risposta ha una parte reale e una parte immaginaria. Se si desidera utilizzare questo codice, di solito è necessario calcolare l'energia per la risposta:E=a2+b2 dove a è la parte reale della risposta (ReConv) e b è la parte immaginaria (ImConv), per ogni pixel.

Ecco qua: 1) Crea un filtro Gabor specificando P0,θ0,Δf,Δθ 2) Convoluta la tua immagine con il filtro. Otterrai due valori per ogni pixel. 3) Calcola l'energiaE e ottieni l'intensità della risposta per ciascun pixel nell'immagine originale

Un'altra intuizione: supponiamo di voler selezionare i bordi che si estendono su un orientamento perpendicolare a π/6e una certa larghezza di 20 pixel. Puoi costruire un filtro Gabor conP020,θ0=π/6,Δf=2,Δθ=pi/2. ATTENZIONE che non esiste una relazione uguale tra la dimensione del bordo e laP0parametro. Dovresti provare vari valori e vedere cosa funziona meglio. Gli altri parametri (Δf,Δθ) toccali quando hai esperienza nell'ottimizzare i primi due.

Spero che sia d'aiuto!

Cristi

Aggiornare

Ecco un sito che ti permette di giocare un po 'con i parametri Gabor e prendere nota dei risultati: http://www.cogsci.nl/pages/gabor-generator.php

Dopo una rapida occhiata, entrambe le larghezze di banda di freqnency e angolo sono legate insieme come "Deviazione standard in pixel ... all'inviluppo di Gauss". Il resto dei parametri è facilmente identificabile. Tuttavia, nota che ci sono differenze numeriche! Per esempio. la fase può essere espressa nell'intervallo 0-1 o 0-π intervallo.


In che modo la dimensione del kernel dipende da questi parametri? Sembra che la maggior parte delle implementazioni usi solo una dimensione arbitraria.
jiggunjer,

Tl; dr: le larghezze di banda controllano le larghezze del kernel. È una relazione proporzionale inversa. Per esempio. larghezza di banda più stretta -> filtro più grande. Anche la frequenza centrale ha un ruolo.
visoft,

Quando utilizzo i filtri Gabor, penso innanzitutto a quali sono i miei parametri (larghezza di banda, frequenza centrale, ecc.) E quindi "lasciamo" che le formule calcolino le dimensioni.
visoft,

Puoi risolvere il contrario, inserire le dimensioni e calcolare i parametri di funzionamento del filtro.
visoft,

In realtà vedo che la relazione dimensionale è direttamente proporzionale a lambda (almeno nell'implementazione gabor di matlab). La loro formula è un po 'strana perché ha un termine (2^BW+1)/(2^BW-1)che è sempre uguale a 4. Usano 7 * sigma (dove sigma ~ lambda), wikipedia gabor esempio usa 3 * sigma.
jiggunjer,

6

Se vediamo la definizione del filtro Gabor, sapremo che la sua risposta all'impulso è il prodotto di una funzione sinusoidale e di una funzione gaussiana , che è essenzialmente ciò che vediamo nella formula.

inserisci qui la descrizione dell'immagine

I parametri λ, θ, ψ sono parametri per la parte (o fattore) sinusoidale.

λ e ψ sono parametri di base di un'onda sinusoidale.

λ - controlla la lunghezza d'onda ( https://en.wikipedia.org/wiki/Wavelength ) di questa sinusoide. Un λ più alto "allargherebbe" le ellissi che vedi nell'immagine sopra, mentre un λ più basso avrebbe l'opposto.

θ - controlla la rotazione delle ellissi che vedi nell'immagine sopra. Queste ellissi sono le "strisce parallele". Un valore di θ = 0 indica nessuna rotazione e renderebbe le ellissi verticali.

ψ - è lo sfasamento della sinusoide, cioè di quanto le ellissi devono essere spostate rispetto al centro. È un parametro che deve essere specificato.

σ - è la deviazione standard (cioè la diffusione) della parte gaussiana.

γ - controlla le proporzioni delle ellissi (approssimativamente, quanto devono essere allungate le ellissi).

I vari parametri sopra specificati sono gli ingressi.

Il valore di output del calcolo è semplicemente il coefficiente (o peso) del filtro nella posizione (x, y).

Questo è il significato ed è lo stesso nel contesto di qualsiasi altro filtro lineare utilizzato nell'elaborazione delle immagini.


0

Qualcuno ha realizzato un video eccezionale che spiega gli effetti di diversi parametri del filtro Gabor. Puoi trovare il video qui .

Spero che sia di aiuto.

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.