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"))
#!/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()
#!/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"))
# 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