Beispiel #1
0
    # ifp.code2log(__file__)
    ifp.code2log(inspect.stack()[0][1])
    ifp.logging('')

    ifp.logging('yamlfile = {}', yamlfile)
    ifp.logging('ifp.get_data().keys() = {}', ifp.get_data().keys())
    ifp.logging('ifp.shape() = {}', ifp.shape())

    # Boundary distance transform
    # a) Boundaries
    ifp.logging('Finding boundaries ...')
    ifp.pixels_at_boundary(
        axes=(np.array(thisparams['anisotropy']).astype(np.float32)**-1
              ).astype(np.uint8))
    ifp.astype(np.float32)

    # b) Distance transform
    ifp.logging('Computing distance transform on boundaries ...')
    ifp.distance_transform(pixel_pitch=thisparams['anisotropy'],
                           background=True)
    locmaxnames = params['locmaxnames']
    ifp.rename_entries(ids=('largeobj', 'largeobjm'),
                       targetids=(locmaxnames[0], locmaxnames[1]))

    # Gaussian smoothing
    ifp.logging('Dragging Carl Friedrich over the image ...')
    ifp.gaussian_smoothing(thisparams['sigma'] /
                           np.array(thisparams['anisotropy']),
                           ids=(locmaxnames[0], locmaxnames[1]),
                           targetids=(locmaxnames[2], locmaxnames[3]))
    # ifp.code2log(__file__)
    ifp.code2log(inspect.stack()[0][1])
    ifp.logging('')

    ifp.logging('yamlfile = {}', yamlfile)
    ifp.logging('ifp.get_data().keys() = {}', ifp.get_data().keys())
    ifp.logging('ifp.shape() = {}', ifp.shape())

    # Boundary distance transform
    # a) Boundaries
    ifp.logging('Finding boundaries ...')
    ifp.pixels_at_boundary(
        axes=(np.array(thisparams['anisotropy']).astype(np.float32) ** -1).astype(np.uint8)
    )
    ifp.astype(np.float32)

    # b) Distance transform
    ifp.logging('Computing distance transform on boundaries ...')
    ifp.distance_transform(
        pixel_pitch=thisparams['anisotropy'],
        background=True
    )
    locmaxnames = params['locmaxnames']
    ifp.rename_entries(ids = ('largeobj', 'largeobjm'), targetids = (locmaxnames[0], locmaxnames[1]))

    # Gaussian smoothing
    ifp.logging('Dragging Carl Friedrich over the image ...')
    ifp.gaussian_smoothing(thisparams['sigma'] / np.array(thisparams['anisotropy']),
                           ids=(locmaxnames[0], locmaxnames[1]), targetids=(locmaxnames[2], locmaxnames[3]))
    ifp.logging('labels = {}', labels)

    # Seed the randomize function
    random.seed(1)

    # # Choose one label
    # lbl = random.choice(labels)
    # ifp.logging('Choice: {}', lbl)
    #
    # ifp.astype(np.uint32, ids='labels')
    # (grag, rag) = ifp.anytask_rtrn(graphs.gridRegionAdjacencyGraph, ignoreLabel=0, ids='labels')
    # ifp.logging('RAG: {}', rag)
    #
    # ifp.logging('Node ids: {}', rag.nodeIds())

    ifp.astype(np.uint32, ids='labels')
    (grag, rag) = ifp.anytask_rtrn(graphs.gridRegionAdjacencyGraph, ignoreLabel=0, ids='labels')
    edge_ids = rag.edgeIds()
    ifp.logging('Edge ids: {}', edge_ids)

    # Type 1:
    # Select edges by size (smallest edges)
    ifp.logging('Number of edgeLengths = {}', len(rag.edgeLengths()))
    edgelen_ids = dict(zip(edge_ids, rag.edgeLengths()))
    ifp.logging('edgelen_ids = {}', edgelen_ids)
    sorted_edgelens = np.sort(rag.edgeLengths())
    #
    smallest_merge_lens = sorted_edgelens[0:numberbysize]
    ifp.logging('Lengths selected for merging: {}', smallest_merge_lens)
    #
    smallest_merge_ids = []