Exemple #1
0
def oversegment(oversegmenter, lim=0, infile=None, outfile=None):
    module = importer.get_module('oversegmenters', oversegmenter)
    use_bm = hasattr(module, 'oversegment_bm')
    use_aff = hasattr(module, 'oversegment_aff')
    if use_bm and use_aff:
        raise ImportError("Bad module: '%s'" % module.__name__)

    if use_bm:
        if not infile:
            infile = config.fn_bm
        bm_3d = formats.read_bm(infile)
        if lim:
            bm_3d = bm_3d[:lim]
        labels_3d, n_labels = module.oversegment_bm(bm_3d)

    elif use_aff:
        if not infile:
            infile = config.fn_aff
        aff_3d = formats.read_aff(infile)
        if lim:
            aff_3d = aff_3d[:lim]
            # Need edges going out-of-bounds to be 0, to prevent the exploring
            # of out-of-bounds vertices
        formats.clean_aff(aff_3d)
        labels_3d, n_labels = module.oversegment_aff(aff_3d)

    else:
        raise ImportError("Bad module: '%s'" % module.__name__)

    logging.info("Found %d labels" % n_labels)

    # Write labels to disk
    if not outfile:
        outfile = io.get_filename(config.dn_data, "oversegment-%s" % oversegmenter, "tif")
    formats.save_labels(outfile, labels_3d)
"""
Convert Aleks' label output to my tiff label output format.

This is for viewing of labels via imagej.
"""
from jpyutils.jlogging import logging_setup
import numpy as np
import sys
from structs import formats

logging_setup('debug')


def read_labels_aleks(fn, zsize, ysize, xsize):
    labels_3d = np.fromfile(fn, dtype=formats.LABELS_DTYPE).reshape((zsize, ysize, xsize))
    return labels_3d


fn_in = sys.argv[1]
zsize, ysize, xsize = map(int, sys.argv[2:5])
fn_out = sys.argv[5]
labels_3d = read_labels_aleks(fn_in, zsize, ysize, xsize)
formats.save_labels(fn_out, labels_3d)