def test_segm_connect(self): logging.debug(self.seg2d) vertices, edges = seg_spx.make_graph_segm_connect_grid2d_conn4(self.seg2d) logging.debug('vertices: {} -> edges: {}'.format(vertices, edges)) logging.debug(self.seg3d) vertices, edges = seg_spx.make_graph_segm_connect_grid3d_conn6(self.seg3d) logging.debug('vertices: {} -> edges: {}'.format(vertices, edges))
def get_vertexes_edges(segments): """ wrapper - get list of vertexes edges for 2D / 3D images :param ndarray segments: :return: """ if segments.ndim == 3: vertices, edges = make_graph_segm_connect_grid3d_conn6(segments) elif segments.ndim == 2: vertices, edges = make_graph_segm_connect_grid2d_conn4(segments) else: return None, None return vertices, edges
def test_general(self): slic = segment_slic_img2d(self.img, sp_size=15, relative_compact=0.2) logging.debug(np.max(slic)) vertices, edges = make_graph_segm_connect_grid2d_conn4(slic) logging.debug('vertices: %r', vertices) logging.debug(len(edges)) logging.debug('edges: %r', edges) fig, axarr = plt.subplots(ncols=2) axarr[0].imshow(self.img) axarr[1].imshow(slic, cmap=plt.cm.jet) fig.savefig(os.path.join(PATH_OUTPUT, 'temp_superpixels.png')) if logging.getLogger().getEffectiveLevel() == logging.DEBUG: plt.show() plt.close(fig)
def filter_boundary_points(segm, slic): slic_centers = np.array(superpixel_centers(slic)).astype(int) labels = segm[slic_centers[:, 0], slic_centers[:, 1]] vertices, edges = make_graph_segm_connect_grid2d_conn4(slic) nb_labels = labels.max() + 1 neighbour_labels = np.zeros((len(vertices), nb_labels)) for e1, e2 in edges: # print e1, labels[e2], e2, labels[e1] neighbour_labels[e1, labels[e2]] += 1 neighbour_labels[e2, labels[e1]] += 1 sums = np.tile(np.sum(neighbour_labels, axis=1), (nb_labels, 1)).T neighbour_labels = neighbour_labels / sums # border point nex to foreground filter_bg = np.logical_and(labels == 0, neighbour_labels[:, 0] < 1) # fulicul cells next to background filter_fc = np.logical_and(labels == 1, neighbour_labels[:, 0] > 0) points = slic_centers[np.logical_or(filter_bg, filter_fc)] return points