def Distance(famgs, fanms, fbmgs, fbnms, eigenmg, name): vecfa = np.array(MapFaces(eigenmg, famgs)) vecfb = np.array(MapFaces(eigenmg, fbmgs)) #Writing files to plot array plotarray = np.array([vecfa[:, 0:3], vecfb[:, 0:3]]) gnu.Save(name + '_fa.txt', plotarray[0]) gnu.Save(name + '_fb.txt', plotarray[1]) ss = 'set terminal png\n' ss += 'set output "' + name + 'fa_fb.png"\n' ss += 'set multiplot\n' ss += 'set size 1,0.5\n' ss += 'set origin 0,0.0\n' ss += 'set view 0,0,1,2\n' ss += 'splot "' + name + '_fa.txt", "' + name + '_fb.txt"\n' ss += 'unset multiplot\n' ss += 'unset size\n' ss += 'unset origin\n' fp1 = open('plot' + name + '_fa_fb.txt', 'w') fp1.write(ss) fp1.flush() result = [] for fb in vecfb: distance = [] for fa in vecfa: dist = np.sqrt(((fb - fa)**2).sum()) distance.append(dist) idx = np.array(distance).argsort() result.append(list(idx)) return result
def TestLaws(mgnames, NJ=100): # create laws filters filts = texture.BuildLawsFilters() # allocate for jets NI = len(mgnames) # number of images jets = np.zeros((NJ * NI, 25)) # for each image for i in xrange(NI): # load # correlate #corrs = BruteCorrelate( data, filts ) data = mgnames[i] + 0 corrs = map(lambda x: correlate2d(data, x), filts) for j in range(25): corrs[i] = cspline2d(abs(corrs[i]), 200) corrs = np.array(corrs) # extract random jets V, H = data.shape vs = range(V) hs = range(H) np.random.shuffle(vs) np.random.shuffle(hs) for j in range(NJ): jets[i * NJ + j] = corrs[:, vs[j], hs[j]] # k-means clustering clust, mmb = kmeans.KMeans(NI, jets) #return jets cffs, evecs = pca.PCA(clust, 3) cffs = pca.Map2PCA(clust, evecs) gnu.Save('Laws_results.txt', cffs) return clust, cffs
def Train(brodatz_f, brodatz_256_mgs): #A container function that can be imported or run with user created arrays and filenames. #Coded Just for convenience incase of code testing!! qvecs = map(lambda x: basis.GaborCorr(x), brodatz_256_mgs) qvecs = np.array(qvecs) cffs, evecs = pca.PCA(qvecs, 3) cffs = pca.Map2PCA(qvecs, evecs) vecs_num = 0 for name in brodatz_f: plot_vecs = cffs[vecs_num:vecs_num + 4] vecs_num = vecs_num + 4 gnu.Save('graph_output\\' + name[0:-4] + '.txt', plot_vecs) for i in brodatz_f: print i + '\n' ss = 'unset key\n' ss += 'splot for [i=1:112] \'graph_output\\D\'.i.\'.txt\'\n' fp1 = open('plot_brodatz_256_textures.txt', 'w') fp1.write(ss) fp1.flush() return brodatz_f, cffs
eigenmg1 = eigenmg1[0:5] eigenmg2 = eigenmg2[0:5] for i in range(5): smisc.imsave('output/' + groups[0][5:] + '_' + str(i) + '.png', eigenmg1[i]) smisc.imsave('output/eface_group2' + groups[1][5:] + '_' + str(i) + '.png', eigenmg2[i]) vecs1 = np.array(MapFaces(eigenmg1, mgs_grp1)) vecs2 = np.array(MapFaces(eigenmg2, mgs_grp2)) plotarray = np.array([vecs1[:, 0:3], vecs2[:, 0:3]]) #Writing files to plot array gnu.Save('AsianFemale.txt', plotarray[0]) gnu.Save('WhiteMale.txt', plotarray[1]) ss = 'set terminal png\n' ss += 'set output "diff_in_groups.png"\n' ss += 'set multiplot\n' ss += 'set size 1,0.5\n' ss += 'set origin 0,0.0\n' ss += 'set view 0,0,1,2\n' ss += 'splot "AsianFemale.txt","WhiteMale.txt"\n"' ss += 'unset multiplot\n' ss += 'unset size\n' ss += 'unset origin\n' fp1 = open('plotaf.txt', 'w') fp1.write(ss)
fnames = ReadFiles('data') mgs = map(lambda x: basis.LoadGray(x), fnames) nmgs = [] for i in range(len(mgs)): nm = ip.Plop(mgs[i], 512, 512) nmgs.append(nm) fids = map(lambda x: basis.MakeGrid(x), nmgs) fids = np.array(fids) morph = warp.Morph(nmgs[1], fids[1], nmgs[2], fids[2], NI=10) Imageset = [] Imageset.append(nmgs[1]) for i in morph: Imageset.append(i) Imageset.append(nmgs[2]) for i in range(len(Imageset)): nm = 'output\\morph_' + str(i) + '.png' smisc.imsave(nm, Imageset[i]) clust, cffs = TestLaws(Imageset) qvecs, a = TestHaar(Imageset) qvecs = qvecs.sum(3).sum(2) cffs, evecs = pca.PCA(qvecs, 3) cffs = pca.Map2PCA(qvecs, evecs) gnu.Save('Haar_results.txt', cffs)
ss = 'unset key\n' ss += 'splot for [i=1:112] \'graph_output\\D\'.i.\'.txt\'\n' fp1 = open('plot_brodatz_256_textures.txt', 'w') fp1.write(ss) fp1.flush() return brodatz_f, cffs brodatz_f, brodatz_256_mgs = ReadBrodatz('brodatz') qvecs = map(lambda x: basis.GaborCorr(x), brodatz_256_mgs) qvecs = np.array(qvecs) cffs, evecs = pca.PCA(qvecs, 3) cffs = pca.Map2PCA(qvecs, evecs) vecs_num = 0 for name in brodatz_f: plot_vecs = cffs[vecs_num:vecs_num + 4] vecs_num = vecs_num + 4 gnu.Save('graph_output\\' + name[0:-4] + '.txt', plot_vecs) for i in brodatz_f: print i + '\n' ss = 'unset key\n' ss += 'splot for [i=1:112] \'graph_output\\D\'.i.\'.plt\'\n' fp1 = open('plot_brodatz_256_textures.txt', 'w') fp1.write(ss) fp1.flush()