Filtro de Gabor - domínio espacial e da freqüência

Autor:cronuxs
Data:28/05/2009

Exercicio

  1. Implementar o filtro de Gabor, tanto no domínio da frequência como no domínio espacial
  2. Aplicar o filtro de Gabor em diversas direções e classificar a orientação das regiões do fingerprint.

Ver artigo em anexo: gaborfingerprint.pdf

Resolução

item 1

No domínio espacial:

Sendo que:

1 def Sgabor(size,theta,f,sigma):
2     lin,col = size
3     x,y = iameshgrid(arange(-col/2, col/2), arange(-lin/2, lin/2))
4     xt,yt = x * cos(theta) + y * sin(theta), -x * sin(theta) + y * cos(theta)
5     return exp(
6                 -1/2. *( (xt**2) / (sigma[0]**2) + (yt**2) / (sigma[1]**2) )
7               ) * cos(2*pi*f*xt)

Exemplo de uso:

1 img = Sgabor((100,200),pi/4,1./10,(10,10))
2 mmshow(ianormalize(img,[0,256]))
ERROR execute

------------------------------------------------------------
*** Exception while evaluating code:
  File "<string>", line 1, in <module>
  File "<string>", line 3, in Sgabor
NameError: global name 'iameshgrid' is not defined

------------------------------------------------------------

No domínio da frquência:

1 def Fgabor(size,theta,f,sigma):
2     return iadft(Sgabor(size,theta,f,sigma))

Exemplo de uso:

1 img = Fgabor((100,200),pi/4,1./10,(10,10))
2 mmshow(ianormalize(iadftview(img),[0,256]))
ERROR execute

------------------------------------------------------------
*** Exception while evaluating code:
  File "<string>", line 1, in <module>
  File "<string>", line 2, in Fgabor
NameError: global name 'iadft' is not defined

------------------------------------------------------------

item 2

 1 imgname = 'db1_a/1_1.tif'
 2 f = adread(imgname)
 3 ff = iadft(f)
 4 s = zeros(f.shape)
 5 
 6 for i in range(0,180,9):
 7     theta = pi * -i / 180
 8     H = Fgabor(f.shape,theta,1./4,(12,12))
 9     G = H * ff
10     G = abs(iaidft(G))
11     G = iaifftshift(G) > 500
12     s+= G
13     #mmshow(ianormalize(G,[0,256]),title='angulo = '+str(i))
14 
15 print s.min(),s.max()
16 
17 adshow(f,title='Entrada')
18 mmshow(ianormalize(s>0,[0,256]),title='Saida')
ERROR execute

------------------------------------------------------------
*** Exception while evaluating code:
  File "<string>", line 3, in <module>
NameError: name 'iadft' is not defined

------------------------------------------------------------