Source code for wbia.plottool.other

# -*- coding: utf-8 -*-
# I'm not quite sure how to organize these functions yet
import numpy as np
import cv2
import matplotlib.pyplot as plt
import vtool.histogram as htool
import utool as ut

ut.noinject(__name__, '[pt.other]')


[docs]def color_orimag(gori, gmag): # Turn a 0 to 1 orienation map into hsv colors gori_01 = (gori - gori.min()) / (gori.max() - gori.min()) cmap_ = plt.get_cmap('hsv') flat_rgb = np.array(cmap_(gori_01.flatten()), dtype=np.float32) rgb_ori_alpha = flat_rgb.reshape(np.hstack((gori.shape, [4]))) rgb_ori = cv2.cvtColor(rgb_ori_alpha, cv2.COLOR_RGBA2RGB) hsv_ori = cv2.cvtColor(rgb_ori, cv2.COLOR_RGB2HSV) # Desaturate colors based on magnitude hsv_ori[:, :, 1] = gmag / 255.0 hsv_ori[:, :, 2] = gmag / 255.0 # Convert back to bgr bgr_ori = cv2.cvtColor(hsv_ori, cv2.COLOR_HSV2RGB) return bgr_ori
[docs]def draw_hist_subbin_maxima(hist, centers=None): # Find maxima maxima_x, maxima_y, argmaxima = htool.hist_argmaxima(hist, centers) # Expand parabola points around submaxima x123, y123 = htool.maxima_neighbors(argmaxima, hist, centers) # Find submaxima submaxima_x, submaxima_y = htool.interpolate_submaxima(argmaxima, hist, centers) xpoints = [] ypoints = [] for xtup, ytup in zip(x123.T, y123.T): (x1, x2, x3) = xtup (y1, y2, y3) = ytup coeff = np.polyfit((x1, x2, x3), (y1, y2, y3), 2) x_pts = np.linspace(x1, x3, 50) y_pts = np.polyval(coeff, x_pts) xpoints.append(x_pts) ypoints.append(y_pts) plt.plot(centers, hist, 'bo-') # Draw hist plt.plot(maxima_x, maxima_y, 'ro') # Draw maxbin plt.plot(submaxima_x, submaxima_y, 'rx') # Draw maxsubbin for x_pts, y_pts in zip(xpoints, ypoints): plt.plot(x_pts, y_pts, 'g--') # Draw parabola