## vid, _ = importing.y4m_sequence( ## '/Users/mike/docs/classes/el612/vids/stefan_sif.y4m', ## t_range=() ## ) ## img = vid[0] ## iname = 'stefan' ## c_sigma = 5; s_sigma = None; p_thresh = 0; n_parts = 20; #video = True rgb_img = np.array(img) f = pp.figure() pp.imshow(rgb_img) f.axes[0].xaxis.set_visible(False) f.axes[0].yaxis.set_visible(False) f.savefig(iname + "_raw.pdf") img = colors.rgb2lab(rgb_img) ## img = img[...,0].squeeze() m_seek = topo.ModeSeeking(spatial_bw=s_sigma, color_bw=c_sigma) classifier = m_seek.train_on_image(img, bin_sigma=1.25) s_img0 = classifier.classify(img, refined=False, cluster_size_threshold=50) print "partial segmentation : %d / %d pixels labeled" % ((s_img0 >= 0).sum(), s_img0.size) f = plot_masked_centroid_image(rgb_img, s_img0) f.savefig(iname + "_initial.pdf") f = plot_masked_segmap(s_img0) f.savefig(iname + "_initial_labels.pdf") pp.show() classifier = m_seek.persistence_merge(p_thresh) classifier.refine_labels() s_img1 = classifier.classify(img, refined=False, cluster_size_threshold=50)
import numpy as np import matplotlib.pyplot as pp import PIL.Image as PImage import mstools.colors as colors from mstools.mean_shift.topological import ModeSeeking # swan img = PImage.open("/Users/mike/docs/classes/el612/proj/berk_data/BSR/BSDS500/data/images/test/8068.jpg") iname = "swan" image = colors.rgb2lab(np.array(img)) gray_image = image[..., 0] sigma = 4.0 ms = ModeSeeking(color_bw=sigma) c = ms.train_on_image(gray_image, density_xform=None) x = c.cell_edges[0] xc = (x[:-1] + x[1:]) / 2.0 p = c.mud_grid[..., -1] peak_pts = [m.idx for (_, m) in ms.clusters.items()] peak_hts = [m.elevation for (_, m) in ms.clusters.items()] saddle_pts = [s.idx for s in ms.saddles] saddle_hts = [s.elevation for s in ms.saddles] f = pp.figure() pp.plot(xc, p) pp.plot(xc[peak_pts], peak_hts, "go", label="Modes") pp.plot(xc[saddle_pts], saddle_hts, "ro", label="Saddles")