def plot_score_matrix(allres): print('[viz] plotting score matrix') score_matrix = allres.score_matrix title = 'Score Matrix\n' + allres.title_suffix # Find inliers #inliers = util.find_std_inliers(score_matrix) #max_inlier = score_matrix[inliers].max() # Trunate above 255 score_img = np.copy(score_matrix) #score_img[score_img < 0] = 0 #score_img[score_img > 255] = 255 #dim = 0 #score_img = util.norm_zero_one(score_img, dim=dim) # Make colors scores = score_img.flatten() colors = df2.scores_to_color(scores, logscale=True) cmap = df2.scores_to_cmap(scores, colors) df2.figure(fnum=FIGNUM, doclf=True, title=title) # Show score matrix df2.imshow(score_img, fnum=FIGNUM, cmap=cmap) # Colorbar df2.colorbar(scores, colors) df2.set_xlabel('database') df2.set_ylabel('queries')
def _annotate_kpts(kpts_, sel_fx=None, **kwargs): r""" Args: kpts_ (ndarray): keypoints sel_fx (None): Keywords: color: 3/4-tuple, ndarray, or str Returns: None Example: >>> from plottool.viz_keypoints import * # NOQA >>> sel_fx = None >>> kpts = np.array([[ 92.9246, 17.5453, 7.8103, -3.4594, 10.8566, 0. ], ... [ 76.8585, 24.7918, 11.4412, -3.2634, 9.6287, 0. ], ... [ 140.6303, 24.9027, 10.4051, -10.9452, 10.5991, 0. ],]) """ if len(kpts_) == 0: print('len(kpts_) == 0...') return #color = kwargs.get('color', 'distinct' if sel_fx is None else df2.ORANGE) color = kwargs.get('color', 'scale' if sel_fx is None else df2.ORANGE) if color == 'distinct': # hack for distinct colors color = df2.distinct_colors(len(kpts_)) # , randomize=True) elif color == 'scale': # hack for distinct colors import vtool as vt #color = df2.scores_to_color(vt.get_scales(kpts_), cmap_='inferno', score_range=(0, 50)) color = df2.scores_to_color(vt.get_scales(kpts_), cmap_='viridis', score_range=(5, 30), cmap_range=None) #df2.distinct_colors(len(kpts_)) # , randomize=True) # Keypoint drawing kwargs drawkpts_kw = { 'ell': True, 'pts': False, 'ell_alpha': .4, 'ell_linewidth': 2, 'ell_color': color, } drawkpts_kw.update(kwargs) # draw all keypoints if sel_fx is None: df2.draw_kpts2(kpts_, **drawkpts_kw) else: # dont draw the selected keypoint in this batch nonsel_kpts_ = np.vstack((kpts_[0:sel_fx], kpts_[sel_fx + 1:])) # Draw selected keypoint sel_kpts = kpts_[sel_fx:sel_fx + 1] import utool as ut if ut.isiterable(color) and ut.isiterable(color[0]): # hack for distinct colors drawkpts_kw['ell_color'] = color[0:sel_fx] + color[sel_fx + 1:] drawkpts_kw drawkpts_kw2 = drawkpts_kw.copy() drawkpts_kw2.update({ 'ell_color': df2.BLUE, 'eig': True, 'rect': True, 'ori': True, }) df2.draw_kpts2(nonsel_kpts_, **drawkpts_kw) df2.draw_kpts2(sel_kpts, **drawkpts_kw2)