Filtro di Gabor

Da Wikipedia, l'enciclopedia libera.
Esempio di un filtro di Gabor bidimensionale.

Il filtro di Gabor è un filtro lineare la cui risposta all'impulso è definita da una funzione armonica moltiplicata per una funzione Gaussiana. In forza del teorema di convoluzione la trasformata di Fourier della risposta all'impulso di un filtro di Gabor risulta essere la convoluzione fra la trasformata di Fourier della funzione armonica e la trasformata di Fourier della funzione Gaussiana.

g(x,y;\lambda,\theta,\psi,\sigma,\gamma)=\exp\left(-\frac{x'^2+\gamma^2y'^2}{2\sigma^2}\right)\cos\left(2\pi\frac{x'}{\lambda}+\psi\right)

dove:

x' = x \cos\theta + y \sin\theta

e

y' = -x \sin\theta + y \cos\theta

In questa equazione:

  • \lambda rappresenta la lunghezza d'onda del fattore coseno
  • \theta rappresenta l'orientazione del filtro
  • \psi è la fase del fattore coseno
  • \sigma è il parametro che regola l'inviluppo
  • \gamma specifica l'ellitticità del supporto della funzione di Gabor.

Spazio delle Wavelet[modifica | modifica sorgente]

I filtri di Gabor sono strettamente legati alle funzioni wavelet di Gabor, e possono essere creati per infinite combinazioni di dilatazioni e rotazioni. L'elaborazione di un generico segnale avviene costruendo un banco di filtri di Gabor di differente scalatura e orientazione. La trasformazione avviene convoluendo il filtro con il segnale, ottenendo un risultato che appartiene al cosiddetto spazio di Gabor. [1]

Campi di applicazione[modifica | modifica sorgente]

Lo spazio di Gabor è molto utilizzato nei seguenti campi d applicazione:

Biologia[modifica | modifica sorgente]

Il processo di convoluzione fra filtri di Gabor e segnali ottici è strettamente legato in ambito biologico ai processi che avvengono nella corteccia visiva.

Implementazioni[modifica | modifica sorgente]

Linguaggio MATLAB[modifica | modifica sorgente]

function gb=gabor_fn(sigma,theta,lambda,psi,gamma)
 
sigma_x = sigma;
sigma_y = sigma/gamma;
 
% Bounding box
nstds = 3;
xmax = max(abs(nstds*sigma_x*cos(theta)),abs(nstds*sigma_y*sin(theta)));
xmax = ceil(max(1,xmax));
ymax = max(abs(nstds*sigma_x*sin(theta)),abs(nstds*sigma_y*cos(theta)));
ymax = ceil(max(1,ymax));
xmin = -xmax; ymin = -ymax;
[x,y] = meshgrid(xmin:xmax,ymin:ymax);
 
% Rotation 
x_theta=x*cos(theta)+y*sin(theta);
y_theta=-x*sin(theta)+y*cos(theta);
 
gb=exp(-.5*(x_theta.^2/sigma_x^2+y_theta.^2/sigma_y^2)).*cos(2*pi/lambda*x_theta+psi);

Note[modifica | modifica sorgente]

  1. ^ J.G Daugman, 10 in Two-dimensional spectral analysis of cortical receptive field profiles, Vision Res, 1980, pp. 847–56.
  2. ^ http://www.cell.com/current-biology/retrieve/pii/S0960982214000050
  3. ^ L'allenamento percettivo che migliora la vista - Le Scienze

Bibliografia[modifica | modifica sorgente]

Voci correlate[modifica | modifica sorgente]

elettrotecnica Portale Elettrotecnica: accedi alle voci di Wikipedia che trattano di elettrotecnica