Penguni's picture
Upload 1519 files
d9dc084
# import the necessary packages
import numpy as np
import csv
class Searcher:
def __init__(self, indexPath):
#store our index path
self.indexPath = indexPath
def search(self, queryFeatures, limit=101):
#initialize dictionary of results
results = {}
#open the index file
with open(self.indexPath) as f:
#initialize the CSV reader
reader = csv.reader(f)
#loop over the rows in the index
for row in reader:
#parse out the image ID and features, then compute the
#chi-squared dist. b/w the features in our index
#and our query features
features = [float(x) for x in row[1:]]
d = self.chi2_distance(features, queryFeatures)
#Update dictionsary
#key is image id, value is similarity
results[row[0]] = d
#close reader
f.close()
#sort in order of relevance
results = sorted([(v,k) for (k,v) in results.items()])
#return our (limited) results
return results[:limit]
def chi2_distance(self, histA, histB, eps=1e-10):
#compute chi-squared distance
d = 0.5 * np.sum([((a-b)**2)/(a+b+eps)
for (a,b) in zip(histA, histB)])
# return the chi-squared distance
return d