def desc_entropy(fn, s):
    k = descritores.curvatura(fn, s)

    #hist = scipy.vstack([scipy.stats.histogram(a,numbins = 2500,defaultlimits = (-250.,250.)) for a in k.curvs])
    h = []
    for c, contour in zip(k.curvs, k.contours):
        #  print c.shape
        #  print c.min(),c.max()
        #caux = scipy.tanh(c)
        caux = c
        my_pdf = gaussian_kde(caux)
        h.append(
            quad(lambda x: -my_pdf(x) * scipy.log(my_pdf(x) + 1e-12), -3 *
                 caux.std(), 3 * caux.std())[0] +
            scipy.log(contour.perimeter()))
        #t = scipy.linspace(caux.min(),caux.max(),350)


#  h.append(simps(-my_pdf(t)*scipy.log(my_pdf(t)+1e-12),t) + scipy.log(contour.perimeter()))
#H(my_pdf(x)/my_pdf(x).max()))
    return scipy.array(h)
#!/usr/bin/python

import sys
import scipy
import cPickle
import descritores as desc
import numpy as np

diretorio = sys.argv[1]
sigma = 24.
bins = 150
range = (-1.,1.)
f = open(diretorio+"classes.txt","r")
cl = cPickle.load(f)
f.close()

db = {}

for im_file in cl.keys():
   tmp = desc.curvatura(diretorio+im_file,scipy.array([sigma])).curvs[0]
   tmp_h = np.histogram(tmp,bins = bins,range = range)[0]
   tmp_h = tmp_h.astype(float)/tmp_h.sum()
   db[im_file] = scipy.hstack((cl[im_file],tmp_h))
   print im_file,tmp_h
cPickle.dump(db,open(sys.argv[2],"wb"))
Beispiel #3
0
#!/usr/bin/python
import descritores as desc
import pylab
import numpy as np
import timeit

#start = timeit.default_timer()
l1 = desc.curvatura("../imagens/Acer_M_BIN_16.bmp",np.array([48.0]))
#l1 = desc.curvatura("../imagens/dude1.png",np.array([48.0]))
l2 = desc.curvatura("../imagens/dude1_big.png",np.array([48.0]))
l3 = desc.curvatura("../imagens/dude1_small.png",np.array([48.0]))

pylab.subplot(311)
pylab.plot(l1.curvs[0])
pylab.subplot(312)
pylab.plot(l2.curvs[0])
pylab.subplot(313)
pylab.plot(l3.curvs[0])

pylab.show()
Beispiel #4
0
#!/usr/bin/python

import sys
import numpy as np
import cPickle
import descritores as desc

diretorio = sys.argv[1]
sigma = float(sys.argv[2])
bins = int(round(float(sys.argv[3])))
rmin = float(sys.argv[4])
rmax = float(sys.argv[5])
#print "curv",sigma,bins,rmin,rmax
f = open(diretorio+"classes.txt","r")
cl = cPickle.load(f)
f.close()

db = {}

for im_file in cl.keys():
   tmp = desc.curvatura(diretorio+im_file,np.array([sigma]))
   h = np.histogram(tmp.curvs[0],bins = bins,range = (rmin,rmax))
   h = h[0].astype(float)/float(h[0].sum())
   db[im_file] = np.hstack((cl[im_file],h))
#   print im_file,db[im_file]
   
cPickle.dump(db,open(sys.argv[6],"a"))
Beispiel #5
0
# raiz fornecida ao script
if caminho:
    walk(caminho, visit, lista_de_arquivos)
else:
    os.exit(-1)

if passo == "0":
    # Le arquivo de entrada e gera descritores
    # plota graficos e gera arquivos de saida
    sigma = np.logspace(sigma_min, sigma_max, sigma_n)
    figure(1)
    for im_file, out_file, plt_file in zip(lista_de_arquivos[0], lista_de_arquivos[1], lista_de_arquivos[2]):
        #   print im_file,"\t",out_file,"\t",plt_file,"\n"
        output = cStringIO.StringIO()
        fout = open(out_file, "w")
        k = curvatura(im_file, sigma)
        nmbe = bendenergy(k)
        for a in nmbe.phi[::-1]:
            output.write("{0: < 5,.3f} ".format(math.log(a)))
            output.write("\n")
        fout.write(output.getvalue())
        output.close()
        fout.close()
        a = np.loadtxt(out_file)
        plot(np.log(1 / sigma[::-1]), a, ".")
        savefig(plt_file)
        clf()

elif passo == "1":

    # dicionario que associa cada figura a classe que esta pertence