Ejemplo n.º 1
0
    def execute(self, slot, subindex, roi, result):
        assert slot == self.MST, "Invalid output slot: {}".format(slot.name)
        #first thing, show the user that we are waiting for computations to finish
        self.applet.progressSignal.emit(0)

        volume_feat = self.Image(*roiFromShape(self.Image.meta.shape)).wait()
        labelVolume = self.LabelImage(
            *roiFromShape(self.LabelImage.meta.shape)).wait()

        self.applet.progress = 0

        def updateProgressBar(x):
            #send signal iff progress is significant
            if x - self.applet.progress > 1 or x == 100:
                self.applet.progressSignal.emit(x)
                self.applet.progress = x

        mst = MSTSegmentor(labelVolume[0, ..., 0],
                           numpy.asarray(volume_feat[0, ..., 0],
                                         numpy.float32),
                           edgeWeightFunctor="minimum",
                           progressCallback=updateProgressBar)
        #mst.raw is not set here in order to avoid redundant data storage
        mst.raw = None

        #Output is of shape 1
        result[0] = mst

        return result
Ejemplo n.º 2
0
def preprocess(inputf, outputf, sigma=1.6):

    print "preprocessing file %s to outputfile %s" % (inputf, outputf)

    h5f = h5py.File(inputf, "r")

    volume = h5f["raw"][:35, :35, :35]

    print "input volume shape: ", volume.shape
    print "input volume size: ", volume.nbytes / 1024**2, "MB"
    fvol = volume.astype(numpy.float32)
    #volume_feat = vigra.filters.gaussianGradientMagnitude(fvol,sigma)

    volume_feat = vigra.filters.hessianOfGaussianEigenvalues(fvol,
                                                             sigma)[:, :, :, 0]

    volume_ma = numpy.max(volume_feat)
    volume_mi = numpy.min(volume_feat)
    volume_feat = (volume_feat - volume_mi) * 255.0 / (volume_ma - volume_mi)
    print "Watershed..."
    labelVolume = vigra.analysis.watersheds(volume_feat)[0].astype(numpy.int32)
    print labelVolume
    print labelVolume.shape, labelVolume.dtype
    mst = MSTSegmentor(labelVolume,
                       volume_feat.astype(numpy.float32),
                       edgeWeightFunctor="minimum")
    mst.raw = volume
    mst.saveH5("C:/Users/Ben/Desktop/carvingData/unprecarv_part35.h5", "graph")
Ejemplo n.º 3
0
  outputf = sys.argv[2]
else:
  outputf = "test.graph5"


print "preprocessing file %s to outputfile %s" % (inputf, outputf)

sigma = 1.6

h5f = h5py.File(inputf,"r")

#volume = h5f["volume/data"][0,:,:,:,0]
volume = h5f["sbfsem"][:,:450,:450]

print "input volume shape: ", volume.shape
print "input volume size: ", volume.nbytes / 1024**2, "MB"
fvol = volume.astype(numpy.float32)
volume_feat = vigra.filters.hessianOfGaussianEigenvalues(fvol,sigma)[:,:,:,0]
volume_ma = numpy.max(volume_feat)
volume_mi = numpy.min(volume_feat)
volume_feat = (volume_feat - volume_mi) * 255.0 / (volume_ma-volume_mi)
print "Watershed..."
labelVolume = vigra.analysis.watersheds(volume_feat)[0].astype(numpy.int32)

print labelVolume.shape, labelVolume.dtype
mst = MSTSegmentor(labelVolume, volume_feat.astype(numpy.float32), edgeWeightFunctor = "minimum")
mst.raw = volume

mst.saveH5(outputf,"graph")