| 1 |
from numpy import * |
|---|
| 2 |
|
|---|
| 3 |
__all__ = ['gabor_fn'] |
|---|
| 4 |
|
|---|
| 5 |
def gabor_fn(sigma_x,sigma_y,theta,lambda_,psi,gamma,width=None, height=None): |
|---|
| 6 |
''' |
|---|
| 7 |
Gabor function, adapted from Wikipedia's matlab code |
|---|
| 8 |
''' |
|---|
| 9 |
if width is None: |
|---|
| 10 |
sz_x = 6*sigma_x |
|---|
| 11 |
width = sz_x |
|---|
| 12 |
else: |
|---|
| 13 |
sz_x = width |
|---|
| 14 |
if sz_x%2==0: |
|---|
| 15 |
sz_x = sz_x+1 |
|---|
| 16 |
|
|---|
| 17 |
if height is None: |
|---|
| 18 |
sz_y= 6*sigma_y |
|---|
| 19 |
height = sz_y |
|---|
| 20 |
else: |
|---|
| 21 |
sz_y = height |
|---|
| 22 |
if sz_y%2==0: |
|---|
| 23 |
sz_y = sz_y+1 |
|---|
| 24 |
|
|---|
| 25 |
x,y = mgrid[-int(sz_x/2):int(sz_x/2)+1,int(-sz_y/2):int(sz_y/2)+1] |
|---|
| 26 |
|
|---|
| 27 |
|
|---|
| 28 |
x_theta = x*cos(theta)+y*sin(theta) |
|---|
| 29 |
y_theta = -x*sin(theta)+y*cos(theta) |
|---|
| 30 |
|
|---|
| 31 |
gb = exp(-.5*(x_theta**2/sigma_x**2+gamma**2*y_theta**2/sigma_y**2))*cos(2*pi/lambda_*x_theta+psi) |
|---|
| 32 |
return gb[0:width,0:height] |
|---|
| 33 |
|
|---|
| 34 |
if __name__=='__main__': |
|---|
| 35 |
import pylab |
|---|
| 36 |
theta = pi/4 |
|---|
| 37 |
gb = gabor_fn(100.,100.,theta,300.,0.,0.8,500,520) |
|---|
| 38 |
print gb.shape |
|---|
| 39 |
pylab.gray() |
|---|
| 40 |
pylab.imshow(gb) |
|---|
| 41 |
pylab.colorbar() |
|---|
| 42 |
pylab.show() |
|---|