Example #1
0
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
Example #2
0
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
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
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
Example #9
0
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
Example #10
0
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
Example #11
0
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
Example #12
0
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
Example #14
0
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
Example #15
0
    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]