def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) best_match = [] for i, query_hist in enumerate(query_hists): min_d = np.inf min_d_index = -1 for j, model_hist in enumerate(model_hists): d = dist_module.get_dist_by_name(query_hist, model_hist, dist_type) D[j][i] = d if d < min_d: min_d = d min_d_index = j best_match.append(min_d_index) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) if dist_type == "l2": fun_dist = dist_module.dist_l2 fun_detect = np.argmin elif dist_type == "intersect": fun_dist = dist_module.dist_intersect fun_detect = np.argmax elif dist_type == "chi2": fun_dist = dist_module.dist_chi2 fun_detect = np.argmin for i in range(len(model_hists)): for j in range(len(query_hists)): D[i, j] = fun_dist(model_hists[i], query_hists[j]) best_match = fun_detect(D, axis=1) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) # best_match = [99999] * len(query_images) # your code here # compute distance matrix for i in range(len(model_images)): hist1 = model_hists[i] for j in range(len(query_images)): hist2 = query_hists[j] D[i, j] = dist_module.get_dist_by_name(hist1, hist2, dist_type) # if D[i,j] < best_match[j]: # best_match[j] = D[i,j] # find the best match for each query image best_match = D.argmin(axis=0) # print (best_match) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) #------------------------------------------------------------- #print(D.shape) #print(model_hists) #print(query_hists) for qe in (range(len(query_hists))): for mo in (range(len(model_hists))): D[mo][qe] = dist_module.get_dist_by_name(query_hists[qe], model_hists[mo], dist_type) #index of best match to each querry image best_match = np.argmin(D, axis=0) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): # whether histogram function expects grayvalue or color image hist_isgray = histogram_module.is_grayvalue_hist(hist_type) # form list of file images to list of histograms model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros( (len(model_images), len(query_images))) # container for distances best_match = [] # container for best match for each image for i in range(len(query_images)): Q = query_hists[i] for j in range(len(model_hists)): V = model_hists[j] h1 = Q.copy() h2 = V.copy() dist = dist_module.get_dist_by_name( h1, h2, dist_type) # distance between histogram D[j, i] = dist # save distance measure in correct position idx = list(D[:, i]).index( min(D[:, i]) ) # find histogram with lower distance respect to the one in exam best_match.append(idx) return np.array(best_match), D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) #... (your code here) return best_match, D
def compute_histograms(image_list, hist_type, hist_isgray, num_bins): image_hist = [] # Compute hisgoram for each image and add it at the bottom of image_hist image_hist = [] for i in range(len(image_list)): img= np.array(Image.open(image_list[i])) if histogram_module.is_grayvalue_hist(hist_type)==False: img= img.astype('double') elif histogram_module.is_grayvalue_hist(hist_type)==True: img = rgb2gray(img.astype('double')) hist = histogram_module.get_hist_by_name(img, num_bins, hist_type) if len(hist) == 2: # !!!important the normalized histogram(greyvalue name) function returns the bins too, so they are cut at this part hist = hist[0] image_hist.append(hist) return image_hist
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) best_match = np.zeros(len(query_images)) for i in range(len(model_hists)): for j in range(len(query_hists)): D[i, j] = dist_module.get_dist_by_name(query_hists[j], model_hists[i], dist_type) for i in range(len(best_match)): best_match[i] = np.where(D == np.amin(D[:,i]))[0][0] return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) best_match = [] # your code here for i in range(len(model_images)): for j in range(len(query_images)): D[i,j] = get_dist_by_name(model_hists[i], query_hists[j], dist_type) for i in range(len(query_images)): best_match.append(np.argmin(D[:,i])) best_match = np.array(best_match) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) # ... (your code here) for i in range(len(model_images)): for j in range(len(query_images)): D[i][j] = dist_module.get_dist_by_name(model_hists[i], query_hists[j], dist_type) best_match = D.argmin(axis=0) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms( model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms( query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) # your code here for model_image_hist_index in range(D.shape[0]): for query_image_hist_index in range(D.shape[1]): model_hist = model_hists[model_image_hist_index] query_hist = query_hists[query_image_hist_index] D[model_image_hist_index][query_image_hist_index] = dist_module.get_dist_by_name( model_hist, query_hist, dist_type) best_match = np.argmin(D, 0) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) best_match=[] for i in range(len(query_images)): for j in range(len(model_images)): D[j,i]=dist_module.get_dist_by_name(model_hists[j],query_hists[i],dist_type) minpos = list(D[:,i]).index(min(list(D[:,i]))) best_match.append(int(model_images[minpos].split('/')[1].split('_')[0].split('obj')[1])) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(model_images), len(query_images))) # D[i][j] = the best match is j for query i for i in range(len(model_images)): histogram_model = model_hists[i] for j in range(len(query_images)): histogram_image = query_hists[j] D[i][j] = dist_module.get_dist_by_name(histogram_image, histogram_model, dist_type) best_match = np.argmin(D, axis=0) return best_match, D
def find_best_match(model_images, query_images, dist_type, hist_type, num_bins): hist_isgray = histogram_module.is_grayvalue_hist(hist_type) model_hists = compute_histograms(model_images, hist_type, hist_isgray, num_bins) query_hists = compute_histograms(query_images, hist_type, hist_isgray, num_bins) D = np.zeros((len(query_images), len(model_images))) best_match = np.zeros((len(query_images), len(model_images))) for i in range(len(query_images)): for j in range(len(model_images)): D[i, j] = dist_module.get_dist_by_name(query_hists[i], model_hists[j], dist_type) best_match[i] = np.argsort(D[i]) #... (your code here) best_match = best_match[:, 0] best_match = best_match.astype(int) return best_match, D
img1_color = np.array(Image.open(img1_file)) img1_color = img1_color.astype('double') img1_gray = rgb2gray(img1_color) for img2_file in image_files2: img2_color = np.array(Image.open(img2_file)) img2_color = img2_color.astype('double') img2_gray = rgb2gray(img2_color) D = np.zeros((len(distance_types), len(hist_types))) for didx in range(len(distance_types)): for hidx in range(len(hist_types)): if histogram_module.is_grayvalue_hist(hist_types[hidx]): hist1 = histogram_module.get_hist_by_name( img1_gray, num_bins_gray, hist_types[hidx]) hist2 = histogram_module.get_hist_by_name( img2_gray, num_bins_gray, hist_types[hidx]) else: hist1 = histogram_module.get_hist_by_name( img1_color, num_bins_color, hist_types[hidx]) hist2 = histogram_module.get_hist_by_name( img2_color, num_bins_color, hist_types[hidx]) if len(hist1) == 2: hist1 = hist1[0] if len(hist2) == 2: hist2 = hist2[0]