def hog_histogram(img_list, out_file, debug): f = open(img_list) filenames = f.read().splitlines() f.close() image_vector = [] ctr = 0 for entry in filenames: dsift.process_image_dsift(entry, 'tmp.sift', 20, 10, resize=(200, 200)) l, d = sift.read_features_from_file('tmp.sift') if debug: im = array(Image.open(entry)) sift.plot_features(im, l, True) show() image_vector.append(d.flatten().tolist()) os.remove('tmp.sift') os.remove('tmp.frame') if not PGM: os.remove('tmp.pgm') if out_file != None: f = open(out_file, 'a') if ctr == 0: header = '' for i in range(len(image_vector[ctr])): if i == 0: header += str(i) else: header += ',' + str(i) f.write(header) f.write('\n') vector = '' for i in range(len(image_vector[ctr])): if i == 0: vector += str(image_vector[ctr][i]) else: vector += ',' + str(image_vector[ctr][i]) f.write(vector) f.write('\n') f.close() ctr += 1 return image_vector
# -*- coding: utf-8 -*- """ Created on Wed May 14 15:31:48 2014 @author: admin """ import dsift,sift import numpy as np from PIL import Image from pylab import * dsift.process_image_dsift('empire.jpg','empire.sift',90,40,True) l,d=sift.read_features_from_file('empire.sift') im=np.array(Image.open('empire.jpg')) sift.plot_features(im,l,True) show() ####################################################################
def hog_histogram(img_list, class_label, out_file, norm, debug): f = open(img_list) filenames = f.read().splitlines() f.close() image_vector = [] ctr = 0 count = 0 end_count = len(filenames) for entry in filenames: #want dsift.process_image_dsift(entry, 'tmp.sift', 20, 10, resize=(200,200)) l,d = sift.read_features_from_file('tmp.sift') # if debug: # cv2.destroyAllWindows() # # #used to draw on original image instead of resized image # im = array(Image.open(entry)) # tmp_im = cv2.resize(im, (200,200)) # tmp_im = cv2.cvtColor(tmp_im, cv2.COLOR_BGR2GRAY) # sift.plot_features(tmp_im, l, True) # # show() image_vector.append(d.flatten().tolist()) os.remove('tmp.sift') os.remove('tmp.frame') if not PGM: os.remove('tmp.pgm') if out_file != None: f = open(out_file, 'a') if class_label == 1: vector = '+1' else: vector = '-1' vec_length = len(image_vector[ctr]) for i, dim in zip(xrange(vec_length), xrange(1, vec_length+1)): vector += ' ' + str(dim) + ':' + str(image_vector[ctr][i]) f.write(vector) f.write('\n') f.close() ctr += 1 count += 1 #sys.stdout.write('\r%i/%i' % (count, end_count)) #sys.stdout.flush() return image_vector
print_error() if not dirImage or not os.path.isdir(dirImage): print "No/invalid image directory specified" print_error() if not dirFeats or not os.path.isdir(dirFeats): print "No/invalid feature directory specified" print_error() imgSize=int(imgSize) if typeFeats == 'sift': imlist = imtools.get_imlist(dirImage) imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) sift.process_image(imlist[i], dirFeats+siftName+".sift",params="--edge-thresh 10 --peak-thresh 5", resize=(imgSize,imgSize)) #featlist.append("features/"+siftName+".sift") if typeFeats == 'dsift': imlist = imtools.get_imlist(dirImage) imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) dsift.process_image_dsift(imlist[i], dirFeats+siftName+".dsift",10,5,resize=(imgSize,imgSize)) #featlist.append("features/"+siftName+".dsift")
cat_paths.sort() cats = [basename(cat_path) for cat_path in cat_paths] return cats def get_imgfiles(path): all_files = [] all_files.extend([ join(path, basename(fname)) for fname in glob(path + "/*") if splitext(fname)[-1].lower() in EXTENSIONS ]) return all_files dataset_path = '../flower_rec1/square_images128_dsift/test' categories = get_categories(dataset_path) for category in categories: category_path = join(dataset_path, category) image_file_list = get_imgfiles(category_path) num_images = len(image_file_list) feature_file_list = [ image_file_list[i][:-3] + "dsift_{0}_{1}".format(size, step) for i in range(num_images) ] for i in range(num_images): dsift.process_image_dsift(image_file_list[i], feature_file_list[i], size, step)
#if img_dir != '': # if os.path.isdir(img_dir): # imlist = imtools.get_imlist(img_dir) #elif ifile != '': # if os.path.isfile(ifile): # imlist = list(ifile) ########################################## imlist = imtools.get_imlist('corpus/train/') imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) dsift.process_image_dsift(imlist[i], "features/train/"+siftName+".dsift",10,5,resize=(50,50)) #featlist.append("features/"+siftName+".dsift") imlist = imtools.get_imlist('corpus/test/') imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) dsift.process_image_dsift(imlist[i], "features/test/"+siftName+".dsift",10,5,resize=(50,50)) def read_feature_labels(path): featlist = [os.path.join(path,f) for f in os.listdir(path) if f.endswith('.dsift')] features = [] for featfile in featlist: l,d = sift.read_features_from_file(featfile)
def md(p): try: os.makedirs(p) except: pass md(os.path.join(d, 'train')) md(os.path.join(d, 'test')) for p in train: os.symlink(p, os.path.join(d, 'train', os.path.basename(p))) for p in test: os.symlink(p, os.path.join(d, 'test', os.path.basename(p))) # Compute dsift descriptors. imlist = glob.glob(d + '/*/*.ppm') dsiftlist = [os.path.splitext(im)[0] + '.dsift' for im in imlist] # About 10s: #for im, dim in zip(imlist, dsiftlist): # dsift.process_image_dsift(im, dim, 10, 5, resize=(50, 50)) # About 7s: from multiprocessing.dummy import Pool as ThreadPool pool = ThreadPool(8) pool.map( lambda x: dsift.process_image_dsift(x[0], x[1], 10, 5, resize=(50, 50)), zip(imlist, dsiftlist)) pool.close() pool.join()
#!/usr/bin/python # -*- coding: utf-8 -*- import os d = 'test' imlist = [os.path.join(d,f) for f in os.listdir(d) if f.endswith('.ppm')] d = 'train' imlist += [os.path.join(d,f) for f in os.listdir(d) if f.endswith('.ppm')] print imlist import dsift # 画像を固定サイズ(50×50)で処理する for filename in imlist: featfile = filename[:-3]+'dsift' dsift.process_image_dsift(filename,featfile,10,5,resize=(50,50))
if not dirFeats or not os.path.isdir(dirFeats): print "No/invalid feature directory specified" print_error() imgSize = int(imgSize) if typeFeats == 'sift': imlist = imtools.get_imlist(dirImage) imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) sift.process_image(imlist[i], dirFeats + siftName + ".sift", params="--edge-thresh 10 --peak-thresh 5", resize=(imgSize, imgSize)) #featlist.append("features/"+siftName+".sift") if typeFeats == 'dsift': imlist = imtools.get_imlist(dirImage) imnbr = len(imlist) for i in range(imnbr): im1 = array(Image.open(imlist[i]).convert('L')) siftName = basename(imlist[i]) dsift.process_image_dsift(imlist[i], dirFeats + siftName + ".dsift", 10, 5, resize=(imgSize, imgSize)) #featlist.append("features/"+siftName+".dsift")
def hog_histogram(img_list, class_label, out_file, norm, debug): f = open(img_list) filenames = f.read().splitlines() f.close() image_vector = [] ctr = 0 count = 0 end_count = len(filenames) for entry in filenames: #want dsift.process_image_dsift(entry, 'tmp.sift', 20, 10, resize=(200, 200)) l, d = sift.read_features_from_file('tmp.sift') # if debug: # cv2.destroyAllWindows() # # #used to draw on original image instead of resized image # im = array(Image.open(entry)) # tmp_im = cv2.resize(im, (200,200)) # tmp_im = cv2.cvtColor(tmp_im, cv2.COLOR_BGR2GRAY) # sift.plot_features(tmp_im, l, True) # # show() image_vector.append(d.flatten().tolist()) os.remove('tmp.sift') os.remove('tmp.frame') if not PGM: os.remove('tmp.pgm') if out_file != None: f = open(out_file, 'a') if class_label == 1: vector = '+1' else: vector = '-1' vec_length = len(image_vector[ctr]) for i, dim in zip(xrange(vec_length), xrange(1, vec_length + 1)): vector += ' ' + str(dim) + ':' + str(image_vector[ctr][i]) f.write(vector) f.write('\n') f.close() ctr += 1 count += 1 #sys.stdout.write('\r%i/%i' % (count, end_count)) #sys.stdout.flush() return image_vector
from PIL import Image from numpy import * from pylab import * import os from scipy import * import sift,dsift dsift.process_image_dsift('video/Fhist.jpg','video/FDsift.sift',30,15,True,resize=(200,200)) l,d = sift.read_features_from_file('video/FDsift.sift') im = Image.open('video/Fhist.jpg') im = im.resize((200,200)) im = array(im) gray() sift.plot_features(im,l,False) show()
# -*- coding: utf-8 -*- """ Created on Tue Sep 13 21:37:23 2016 @author: user """ from PIL import Image from pylab import * from numpy import * import dsift, sift dsift.process_image_dsift('../pcv_data/data/empire.jpg', 'empire.sift', 90, 40, True) l, d = sift.read_features_from_file('empire.sift') im = array(Image.open('../pcv_data/data/empire.jpg')) sift.plot_features(im, l, True) show()
class_2 = pickle.load(f) labels = pickle.load(f) # 最初の点についてテストしてみる print model.classify(class_1[0]) # 描画用関数の定義 def classify(x,y,model=model): return np.array([model.classify([xx,yy]) for (xx,yy) in zip(x,y)]) # 分類の境界を描画する imtools.plot_2D_boundary([-6,6,-6,6],[class_1,class_2],classify,[1,-1]) # 8.1.2 画像特徴量としての密なSIFT dsift.process_image_dsift('empire.jpg','empire.sift',90,40,True) l,d = sift.read_features_from_file('empire.sift') im = np.array(Image.open('empire.jpg')) sift.plot_features(im,l,True) # 8.1.3 画像の分類-手話認識 def get_imlist_ppm(path): return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.ppm')] imlist = get_imlist_ppm('train') # imlist = get_imlist_ppm('test') # 画像を固定サイズ(50×50)で処理する for filename in imlist: featfile = filename[:-3] + 'dsift'
def dsift_features_generator(imlist): for img in imlist: featfile = img[:-3] + 'dsift' dsift.process_image_dsift(img, featfile, 10, 5, resize=(50, 50))
test = [] for l in ls: imgs = glob.glob(os.path.join(s, l, 'uniform', '*')) train += imgs[::2] test += imgs[1::2] shutil.rmtree(d) def md(p): try: os.makedirs(p) except: pass md(os.path.join(d, 'train')) md(os.path.join(d, 'test')) for p in train: os.symlink(p, os.path.join(d, 'train', os.path.basename(p))) for p in test: os.symlink(p, os.path.join(d, 'test', os.path.basename(p))) # Compute dsift descriptors. imlist = glob.glob(d + '/*/*.ppm') dsiftlist = [os.path.splitext(im)[0] + '.dsift' for im in imlist] # About 10s: #for im, dim in zip(imlist, dsiftlist): # dsift.process_image_dsift(im, dim, 10, 5, resize=(50, 50)) # About 7s: from multiprocessing.dummy import Pool as ThreadPool pool = ThreadPool(8) pool.map(lambda x: dsift.process_image_dsift(x[0], x[1], 10, 5, resize=(50,50)), zip(imlist, dsiftlist)) pool.close() pool.join()
features = array(features) # create labels labels = [int(featfile.split('\\')[-1][0:3])/50 for featfile in featlist] return features,array(labels) imlist = [] path = 'C:\\Users\\RubyLyu\\PycharmProjects\\PictureDB\\data' imlist=[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')] print imlist for filename in imlist: featfile = filename[:-3]+'dsift' dsift.process_image_dsift(filename,featfile,10,5,resize=(150,200)) imlist = [] path = 'C:\\Users\\RubyLyu\\PycharmProjects\\PictureDB\\src\\data' imlist=[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')] for filename in imlist: featfile = filename[:-3]+'dsift' dsift.process_image_dsift(filename,featfile,10,5,resize=(150,200)) features,labels = read_features_labels('C:\\Users\\RubyLyu\\PycharmProjects\\PictureDB\\data') #print features test_features,test_labels = read_features_labels('C:\\Users\\RubyLyu\\PycharmProjects\\PictureDB\\src\\data') features = map(list,features)
def dsift_features_generator(imlist): for img in imlist: featfile = img[:-3]+'dsift' dsift.process_image_dsift(img, featfile, 10, 5, resize=(50, 50))
from PIL import Image from pylab import * import dsift, sift f = '/Users/thakis/Downloads/data/empire.jpg' dsift.process_image_dsift(f, f + '.sift', 90, 40, True) loc, desc = sift.read_features_from_file(f + '.sift') im = array(Image.open(f)) sift.plot_features(im, loc, True) show()
if not load_model or not os.path.isfile(load_model): print "No/invalid load model specified" print_error() # 3. Extract Features imlist = [os.path.join(dirname, f) for f in os.listdir(dirname) if f.endswith('.jpg')] # create a list of images for filename in imlist: featfile = filename[:-3] + typeFeats featfile = featfile.replace(" ", "") try: if not os.path.isfile(featfile): dsift.process_image_dsift(filename, featfile, 10, 5, resize=(100, 100)) # process images at fixed size (100, 100) except Exception: pass # 4. Run Classifier against svm = pickle.load(open(load_model, "rb")) # load to model file svm_test_features, filelist = read_feature_labels(dirname) svm_test_result = svm.predict(svm_test_features) result_dir = os.path.join('C:\Users', os.getenv('USERNAME'), 'Desktop\Result-Video') if not os.path.isdir(result_dir): os.mkdir(result_dir)
EXTENSIONS = [".jpg", ".bmp", ".png", ".pgm", ".tif", ".tiff"] size = 20 step = 10 def get_categories(datasetpath): cat_paths = [files for files in glob(datasetpath + "/*") if isdir(files)] cat_paths.sort() cats = [basename(cat_path) for cat_path in cat_paths] return cats def get_imgfiles(path): all_files = [] all_files.extend([join(path, basename(fname)) for fname in glob(path + "/*") if splitext(fname)[-1].lower() in EXTENSIONS]) return all_files dataset_path = '../flower_rec1/square_images128_dsift/test' categories = get_categories(dataset_path) for category in categories: category_path = join(dataset_path, category) image_file_list = get_imgfiles(category_path) num_images = len(image_file_list) feature_file_list = [image_file_list[i][:-3]+"dsift_{0}_{1}".format(size,step) for i in range(num_images)] for i in range(num_images): dsift.process_image_dsift(image_file_list[i], feature_file_list[i], size, step)