In [255]:
import numpy as np
import funciones 
import matplotlib.pyplot as plt
from scipy import linalg
from scipy import misc
%matplotlib inline
In [ ]:
 
##Primera Prueba de KDA
In [256]:
A2=np.array([[1,2,3,4,5,0,0,0],[7,8,9,10,11,0,0,0],[7,80,9,100,11,0,0,0],[1,20,3,40,5,0,0,0],[7,80,900,100,11,0,0,0],[1,20,300,40,5,0,0,0]]).T

Nvec2=np.array([2,2,2])
G2=funciones.getG(A2,Nvec2)
x2=A2[:,5]

print x2.shape
sigma2=0.5
C2=funciones.GetCentroides(A2,Nvec2,G2,sigma2)

Kax2=np.matrix([funciones.GaussianKernel(A2[:,i],x2,sigma2)for i in xrange(A2.shape[1])])
y2=G2.T*Kax2.T
np.argmin([linalg.norm(y2-c2) for c2 in C2])

print funciones.Clasificar(A2,G2,x2,sigma2,C2)
(8L,)
2

Agustín y Carlos clasificaron las siguientes imagenes

donde consideraremos las siguientes clasificaciones Clase 1 : L : Left Loop Clase 2 : R : Right Loop Clase 3 : W : Whorl Clase 4 : A : Arch Clase 5 : T : Tented Arch

Clase 1 : L f22 f16 f13 f09 f07 f04 s16 s14 s07 s04 Clase 2 : R f23 f14 f03 s17 s13 s09 Clase 3 : W f21 f15 f11 f10 f02 s10 s02 Clase 4 : A f25 f20 f19 f18 f12 f08 f06 f01 s20 s18 s01
Clase 5 : T f24 f05 s24 s08 s05

In [147]:
def GetImagenDireccional(Imagen):
    Imagen2=funciones.get_imagen_direccional(Imagen*1.0)
    return Imagen2.ravel()

def MatrizA():
    L=np.array(["huellas/f22.png", "huellas/f16.png", "huellas/f13.png", "huellas/f09.png"])#, "huellas/f04.png", "huellas/s07.png"])
    R=np.array(["huellas/f03.png", "huellas/s17.png", "huellas/s13.png"])
    W=np.array(["huellas/f15.png", "huellas/f11.png", "huellas/f10.png", "huellas/f02.png"])
    A=np.array(["huellas/f20.png", "huellas/f19.png", "huellas/f18.png", "huellas/f12.png"])#, "huellas/f08.png", "huellas/f06.png", "huellas/f01.png", "huellas/s18.png" ])
    T=np.array(["huellas/f24.png" ,"huellas/f05.png", "huellas/s24.png", "huellas/s08.png"])#, "huellas/s05.png"])

    Nvec=np.array([L.shape[0],R.shape[0],W.shape[0],A.shape[0],T.shape[0]])
    #Nvec=np.array([R.shape[0],T.shape[0]])
    Name=np.hstack([L,R,W,A,T])
    #Name=np.hstack([R,T])
    Im0=GetImagenDireccional(np.flipud(misc.imread(L[0]).T)/255.)
    MA=np.zeros([Im0.shape[0], np.sum(Nvec)])

    for i in xrange(np.sum(Nvec)):
        print i
        MA[:,i]=GetImagenDireccional(np.flipud(misc.imread(Name[i]).T)/255.)
        I=MA[:,i]
        
    return MA, Nvec

def ClasificarHuella(A,G,Imagen,sigma,C):
    return funciones.Clasificar(A,G,funciones.get_imagen_direccional(Imagen).ravel(),sigma,C)
In [157]:
A,Nvec=MatrizA()
G=funciones.getG(A,Nvec)
np.savetxt('Amatriz2.d',A)
np.savetxt('Nvec2.d',Nvec)
np.savetxt('Gmatriz2.d',G)
sigma=0.5
C=funciones.GetCentroides(A,Nvec,G,sigma)
np.savetxt('Centroides2.d',C)
21 21 27 23 (29L, 29L)
0
21 21 27 23 (29L, 29L)
1
21 21 25 23 (29L, 29L)
2
21 21 27 24 (29L, 29L)
3
21 21 26 26 (29L, 29L)
4
21 21 26 24 (29L, 29L)
5
21 21 25 27 (29L, 29L)
6
21 21 23 27 (29L, 29L)
7
21 21 28 23 (29L, 29L)
8
21 21 27 24 (29L, 29L)
9
21 21 28 25 (29L, 29L)
10
21 21 26 23 (29L, 29L)
11
21 21 23 26 (29L, 29L)
12
21 21 23 23 (29L, 29L)
13
21 21 26 23 (29L, 29L)
14
21 21 23 26 (29L, 29L)
15
21 21 24 23 (29L, 29L)
16
21 21 28 24 (29L, 29L)
17
21 21 23 24 (29L, 29L)
18
21 21 24 23 (29L, 29L)
In [257]:
A=np.loadtxt('Amatriz' )
Nvec=np.loadtxt('Nvec' )
G=np.loadtxt('Gmatriz' )
C=np.loadtxt('Centroides' )
namL=np.array(["huellas/f22.png", "huellas/f16.png", "huellas/f13.png", "huellas/f09.png", "huellas/f04.png", "huellas/s07.png"])
namR=np.array(["huellas/f03.png", "huellas/s17.png", "huellas/s13.png"])
namW=np.array(["huellas/f15.png", "huellas/f11.png", "huellas/f10.png", "huellas/f02.png"])
namA=np.array(["huellas/f20.png", "huellas/f19.png", "huellas/f18.png", "huellas/f12.png", "huellas/f08.png", "huellas/f06.png", "huellas/f01.png", "huellas/s18.png" ])
namT=np.array(["huellas/f24.png" ,"huellas/f05.png", "huellas/s24.png", "huellas/s08.png", "huellas/s05.png"])
Name=np.hstack([namL,namR,namW,namA,namT])
In [ ]:
 
In [ ]:
 
In [264]:
Im=np.flipud(misc.imread('huellas/f13.png').T)/255.0
DirIm=funciones.get_imagen_direccional(Im)
print funciones.Clasificar(A,G,DirIm.ravel(),0.5,C)
21 21 27 24 (29L, 29L)
0
In [ ]:
figf13=plt.figure()
plt.pcolormesh(Im)
figf13.savefig('Imf13.png')
figDf13=plt.figure()
plt.pcolormesh(DirIm.T,cmap=plt.cm.gray)
figDf13.savefig('DirImf13.png' )
In [258]:
Im=np.flipud(misc.imread('huellas/s07.png').T)/255.0
DirIm=funciones.get_imagen_direccional(Im)
print funciones.Clasificar(A,G,DirIm.ravel(),0.5,C)
21 21 27 24 (29L, 29L)
0
In [262]:
figs07=plt.figure()
plt.pcolormesh(Im)
figs07.savefig('Ims07.png')
figDs07=plt.figure()
plt.pcolormesh(DirIm.T,cmap=plt.cm.gray)
figDs07.savefig('DirIms07.png' )
In [250]:
Im=np.flipud(np.flipud(misc.imread("huellas/archloco.png").T))/255.0
DirIm=funciones.get_imagen_direccional(Im)
print funciones.Clasificar(A,G,DirIm.ravel(),0.5,C)
21 21 28 26 (29L, 29L)
3
In [252]:
figarchloco=plt.figure()
plt.pcolormesh(Im)
figarchloco.savefig('ImArchLoco.png')
figDarchloco=plt.figure()
plt.pcolormesh(np.flipud(DirIm.T),cmap=plt.cm.gray)
figDarchloco.savefig('DirImArchLoco.png' )
In [231]:
Im=np.flipud(misc.imread("huellas/s13.png").T)/255.0
DirIm=funciones.get_imagen_direccional(Im)
print funciones.Clasificar(A,G,DirIm.ravel(),0.5,C)
21 21 23 27 (29L, 29L)
0
Out[231]:
<matplotlib.collections.PolyCollection at 0x268c19550>
In [ ]:
figs13=plt.figure()
plt.pcolormesh(Im)
figs13.savefig('Ims13.png' )
figDs13=plt.figure()
plt.pcolormesh(DirIm.T,cmap=plt.cm.gray)
figDs13.savefig('DirIms13.png' )
In [ ]:
 
In [211]:
Im=np.flipud(misc.imread("huellas/huellaloca.png")[:,:,0])/255.0
print ClasificarHuella(A,G,Im,sigma,C)
plt.pcolor(Im)
21 21 26 23 (29L, 29L)
3
Out[211]:
<matplotlib.collections.PolyCollection at 0xd0007a90>
In [208]:
Im=np.flipud(misc.imread("huellas/huellachueca.png")[:,:,0].T)/255.0
print ClasificarHuella(A,G,Im,sigma,C)
plt.pcolor(Im)
21 21 24 24 (29L, 29L)
3
Out[208]:
<matplotlib.collections.PolyCollection at 0x1024d3940>
In [ ]: