def hsv(rgb): hsv = clr.rgb2hsv(rgb) hsv_c = clr.rgb2hsv(np.clip(rgb, 0.0, 1.0)) hsv_r = np.concatenate([x[..., np.newaxis] for x in [ hsv_c[:, :, 0], hsv_c[:, :, 1], hsv[:, :, 2]]], axis=-1) rgb = clr.hsv2rgb(hsv_r) return rgb
def hs_histogram(img, mask, bins=10, normed=False): hsv = color.rgb2hsv(img) maskedH = ma.array(hsv[:,:,0], mask=mask) maskedS = ma.array(hsv[:,:,1], mask=mask) histH, bin_edges_h = np.histogram(maskedH.compressed(), bins=bins, range=None, normed=normed) histS, bin_edges_s = np.histogram(maskedS.compressed(), bins=bins, range=None, normed=normed) return histH, histS
def __call__(self, img): hsv = color.rgb2hsv(img) hsv[:,:,2] = exposure.equalize_hist(hsv[:,:,2]) img = color.hsv2rgb(hsv) min_side = min(img.shape[:-1]) centre = img.shape[0] // 2, img.shape[1] // 2 img = img[centre[0] - min_side // 2:centre[0] + min_side // 2, centre[1] - min_side // 2:centre[1] + min_side // 2, :] img = transform.resize(img, (self.img_size, self.img_size)) img = np.rollaxis(img, -1) return img
def cv_hs_histogram_(img, mask): hsv = color.rgb2hsv(img) h_bins = 30 s_bins = 32 hist_size = [h_bins, s_bins] # hue varies from 0 (~0 deg red) to 180 (~360 deg red again */ h_ranges = [0, 180] # saturation varies from 0 (black-gray-white) to # 255 (pure spectrum color) s_ranges = [0, 255] ranges = [h_ranges, s_ranges] hist = cv2.calcHist(hsv, [0, 1], mask, hist_size, ranges) return hist
def hs_histogram(img, mask, bins=10, normed=False): hsv = color.rgb2hsv(img) maskedH = ma.array(hsv[:, :, 0], mask=mask) maskedS = ma.array(hsv[:, :, 1], mask=mask) histH, bin_edges_h = np.histogram(maskedH.compressed(), bins=bins, range=None, normed=normed) histS, bin_edges_s = np.histogram(maskedS.compressed(), bins=bins, range=None, normed=normed) return histH, histS
def label_colormap(n_label=256, value=None): """Label colormap. Parameters ---------- n_labels: int Number of labels (default: 256). value: float or int Value scale or value of label color in HSV space. Returns ------- cmap: numpy.ndarray, (N, 3), numpy.uint8 Label id to colormap. """ def bitget(byteval, idx): return (byteval & (1 << idx)) != 0 cmap = np.zeros((n_label, 3), dtype=np.uint8) # for i in range(0, n_label): # id = i # r, g, b = 0, 0, 0 # for j in range(0, 8): # r = np.bitwise_or(r, (bitget(id, 0) << 7 - j)) # g = np.bitwise_or(g, (bitget(id, 1) << 7 - j)) # b = np.bitwise_or(b, (bitget(id, 2) << 7 - j)) # id = id >> 3 # cmap[i, 0] = r # cmap[i, 1] = g # cmap[i, 2] = b # 自己加的colormap 通道顺序为rbg cmap[1, :] = [255, 0, 0] # rope # cmap[2, :] = [0, 255, 0] # cart # cmap[3, :] = [0, 0, 255] # protected # cmap[4, :] = [255, 255, 0] # hook # cmap[5, :] = [255, 0, 255] # umbrella if value is not None: hsv = color_module.rgb2hsv(cmap.reshape(1, -1, 3)) if isinstance(value, float): hsv[:, 1:, 2] = hsv[:, 1:, 2].astype(float) * value else: assert isinstance(value, int) hsv[:, 1:, 2] = value cmap = color_module.hsv2rgb(hsv).reshape(-1, 3) return cmap