コード例 #1
0
ファイル: test_superpixels.py プロジェクト: rjbashar/pyImSegm
    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))
コード例 #2
0
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
コード例 #3
0
    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)
コード例 #4
0
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