Example #1
0
    def onClickedComputeFeaturesImpl(self, param):





        lCtrl = self.layerCtrl

        extractor =  self.featureExtractor
        rawData = self.dataDict['raw']

        print "compute features"

        print param


        options = bw.BlockwiseConvolutionOptions3D()
        options.blockShape = (128, )*3


        fSize = [0]
        def fRange(feat):
            old = long(fSize[0])
            fSize[0] += feat.shape[1]
            return (old, fSize[0])


        geoFeat,geoFeatNames = extractor.geometricFeatures()
        lCtrl.addFeature("GeometricFeature",fRange(geoFeat),subNames=geoFeatNames)

        topoFeat, topoFeatNames = extractor.topologicalFeatures()
        lCtrl.addFeature("TopologicalFeatures",fRange(topoFeat),subNames=topoFeatNames)

        features = [geoFeat, topoFeat]



        for order in range(3):
            orderName = '%d-Order Filter'%order
            doFilter = param[('RawData',orderName,'computeFilter')]
            if(doFilter):
                sigmas = param[('RawData',orderName,'sigma')]
                sigmas = list(eval(sigmas))

                doUcm = param[('RawData',orderName,'UCM','ucmFilters')]
                ucmMeanSign = float(param[('RawData',orderName,'UCM','meanSign')])
                print "ucmMeanSign",ucmMeanSign
                print "doUcm",doUcm
                wardness = param[('RawData',orderName,'UCM','wardness')]
                wardness = list(eval(wardness))
                wardness = numpy.array(wardness, dtype='float32')
                wnames =[]
                for w in wardness :
                    wnames.append(" w"+str(w))
                    wnames.append(" r"+str(w))

                print "sigma",sigmas, "w",wardness


                for sigma in sigmas:
                    print sigma
                    orderSigmaName = orderName + str(sigma)
                    options.stdDev = (float(sigma), )*3
                    if order == 0:
                        if sigma < 0.01:
                            res = rawData
                        else:
                            res = bw.gaussianSmooth(rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                            lCtrl.addFeature(orderSigmaName,fRange(accFeat),subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm :
                                mean = accFeat[:,0]
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName+"MeanUcm"
                                ucm = extractor.ucmTransformFeatures(mean[:,None], wardness)
                                lCtrl.addFeature(ucmName,fRange(ucm),subNames=wnames)
                                features.append(ucm)

                    if order == 1 :
                        if sigma < 0.5:
                            continue
                        else:
                            res = bw.gaussianGradientMagnitude(rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                            lCtrl.addFeature(orderSigmaName,fRange(accFeat),subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm :
                                mean = accFeat[:,0]
                                print "ucmMeanSign",ucmMeanSign
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName+"MeanUcm"
                                ucm = extractor.ucmTransformFeatures(mean[:,None], wardness)
                                lCtrl.addFeature(ucmName,fRange(ucm),subNames=wnames)
                                features.append(ucm)

                    if order == 2 :
                        if sigma < 0.5:
                            continue
                        else:
                            res = bw.hessianOfGaussianFirstEigenvalue(rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                            lCtrl.addFeature(orderSigmaName,fRange(accFeat),subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm :
                                mean = accFeat[:,0]
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName+"MeanUcm"
                                ucm = extractor.ucmTransformFeatures(mean[:,None], wardness)
                                lCtrl.addFeature(ucmName,fRange(ucm),subNames=wnames)
                                features.append(ucm)



        if False:
            for s in [2.0]:
                options.stdDev = (s, )*3
                res = bw.gaussianSmooth(rawData, options)
                accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                lCtrl.addFeature("RawGaussianSmooth",fRange(accFeat),subNames=accFeatNames)
                features.append(accFeat)

            # 6
            wardness = numpy.array([0.0, 0.1, 0.15, 0.25, 0.5, 1.0], dtype='float32')
            wnames =[]
            for w in wardness :
                wnames.append(" w"+str(w))
                wnames.append(" r"+str(w))
            for s in [2.0]:
                options.stdDev = (s, )*3
                res = bw.hessianOfGaussianFirstEigenvalue(rawData, options)
                accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                lCtrl.addFeature("hessianOfGaussianFirstEigenvalue",fRange(accFeat),subNames=accFeatNames)
                features.append(accFeat)

                print "ucm"
                mean = accFeat[:,0]
                ucm = extractor.ucmTransformFeatures(mean[:,None], wardness)
                print  "ucm done"
                lCtrl.addFeature("hessianMeanUcm",fRange(ucm),subNames=wnames)
                features.append(ucm)

        #for s in [1.0,  3.0,  4.0]:
        #    img = hessianEv2(rawData, s, 2.0)
        #    #vigra.imshow(img)
        #    #vigra.show()
        #    accFeat = extractor.accumulatedFeatures(img)
        #    features.append(accFeat)
        #    mean = accFeat[:,0]
        #    ucm = extractor.ucmTransformFeatures(mean[:,None],wardness)
        #    features.extend([accFeat,ucm])


        features = numpy.concatenate(features,axis=1)
        self.currentFeatures = features
        print "compute done"

        fMin = numpy.min(features, axis=0)
        fMax = numpy.max(features, axis=0)
        self.featureMinMax = (fMin, fMax)

        self.ctrlWidget.setFeatures(self.currentFeatures.shape[1])
        self.ctrlWidget.modeSelectorComboBox.setCurrentIndex(2)
Example #2
0
    def onClickedComputeFeaturesImpl(self, param):

        lCtrl = self.layerCtrl

        extractor = self.featureExtractor
        rawData = self.dataDict['raw']

        print "compute features"

        print param

        options = bw.BlockwiseConvolutionOptions3D()
        options.blockShape = (128, ) * 3

        fSize = [0]

        def fRange(feat):
            old = long(fSize[0])
            fSize[0] += feat.shape[1]
            return (old, fSize[0])

        geoFeat, geoFeatNames = extractor.geometricFeatures()
        lCtrl.addFeature("GeometricFeature",
                         fRange(geoFeat),
                         subNames=geoFeatNames)

        topoFeat, topoFeatNames = extractor.topologicalFeatures()
        lCtrl.addFeature("TopologicalFeatures",
                         fRange(topoFeat),
                         subNames=topoFeatNames)

        features = [geoFeat, topoFeat]

        for order in range(3):
            orderName = '%d-Order Filter' % order
            doFilter = param[('RawData', orderName, 'computeFilter')]
            if (doFilter):
                sigmas = param[('RawData', orderName, 'sigma')]
                sigmas = list(eval(sigmas))

                doUcm = param[('RawData', orderName, 'UCM', 'ucmFilters')]
                ucmMeanSign = float(param[('RawData', orderName, 'UCM',
                                           'meanSign')])
                print "ucmMeanSign", ucmMeanSign
                print "doUcm", doUcm
                wardness = param[('RawData', orderName, 'UCM', 'wardness')]
                wardness = list(eval(wardness))
                wardness = numpy.array(wardness, dtype='float32')
                wnames = []
                for w in wardness:
                    wnames.append(" w" + str(w))
                    wnames.append(" r" + str(w))

                print "sigma", sigmas, "w", wardness

                for sigma in sigmas:
                    print sigma
                    orderSigmaName = orderName + str(sigma)
                    options.stdDev = (float(sigma), ) * 3
                    if order == 0:
                        if sigma < 0.01:
                            res = rawData
                        else:
                            res = bw.gaussianSmooth(rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(
                                res)
                            lCtrl.addFeature(orderSigmaName,
                                             fRange(accFeat),
                                             subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm:
                                mean = accFeat[:, 0]
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName + "MeanUcm"
                                ucm = extractor.ucmTransformFeatures(
                                    mean[:, None], wardness)
                                lCtrl.addFeature(ucmName,
                                                 fRange(ucm),
                                                 subNames=wnames)
                                features.append(ucm)

                    if order == 1:
                        if sigma < 0.5:
                            continue
                        else:
                            res = bw.gaussianGradientMagnitude(
                                rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(
                                res)
                            lCtrl.addFeature(orderSigmaName,
                                             fRange(accFeat),
                                             subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm:
                                mean = accFeat[:, 0]
                                print "ucmMeanSign", ucmMeanSign
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName + "MeanUcm"
                                ucm = extractor.ucmTransformFeatures(
                                    mean[:, None], wardness)
                                lCtrl.addFeature(ucmName,
                                                 fRange(ucm),
                                                 subNames=wnames)
                                features.append(ucm)

                    if order == 2:
                        if sigma < 0.5:
                            continue
                        else:
                            res = bw.hessianOfGaussianFirstEigenvalue(
                                rawData, options)
                            accFeat, accFeatNames = extractor.accumulatedFeatures(
                                res)
                            lCtrl.addFeature(orderSigmaName,
                                             fRange(accFeat),
                                             subNames=accFeatNames)
                            features.append(accFeat)

                            if doUcm:
                                mean = accFeat[:, 0]
                                mean *= ucmMeanSign
                                ucmName = orderSigmaName + "MeanUcm"
                                ucm = extractor.ucmTransformFeatures(
                                    mean[:, None], wardness)
                                lCtrl.addFeature(ucmName,
                                                 fRange(ucm),
                                                 subNames=wnames)
                                features.append(ucm)

        if False:
            for s in [2.0]:
                options.stdDev = (s, ) * 3
                res = bw.gaussianSmooth(rawData, options)
                accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                lCtrl.addFeature("RawGaussianSmooth",
                                 fRange(accFeat),
                                 subNames=accFeatNames)
                features.append(accFeat)

            # 6
            wardness = numpy.array([0.0, 0.1, 0.15, 0.25, 0.5, 1.0],
                                   dtype='float32')
            wnames = []
            for w in wardness:
                wnames.append(" w" + str(w))
                wnames.append(" r" + str(w))
            for s in [2.0]:
                options.stdDev = (s, ) * 3
                res = bw.hessianOfGaussianFirstEigenvalue(rawData, options)
                accFeat, accFeatNames = extractor.accumulatedFeatures(res)
                lCtrl.addFeature("hessianOfGaussianFirstEigenvalue",
                                 fRange(accFeat),
                                 subNames=accFeatNames)
                features.append(accFeat)

                print "ucm"
                mean = accFeat[:, 0]
                ucm = extractor.ucmTransformFeatures(mean[:, None], wardness)
                print "ucm done"
                lCtrl.addFeature("hessianMeanUcm",
                                 fRange(ucm),
                                 subNames=wnames)
                features.append(ucm)

        #for s in [1.0,  3.0,  4.0]:
        #    img = hessianEv2(rawData, s, 2.0)
        #    #vigra.imshow(img)
        #    #vigra.show()
        #    accFeat = extractor.accumulatedFeatures(img)
        #    features.append(accFeat)
        #    mean = accFeat[:,0]
        #    ucm = extractor.ucmTransformFeatures(mean[:,None],wardness)
        #    features.extend([accFeat,ucm])

        features = numpy.concatenate(features, axis=1)
        self.currentFeatures = features
        print "compute done"

        fMin = numpy.min(features, axis=0)
        fMax = numpy.max(features, axis=0)
        self.featureMinMax = (fMin, fMax)

        self.ctrlWidget.setFeatures(self.currentFeatures.shape[1])
        self.ctrlWidget.modeSelectorComboBox.setCurrentIndex(2)
Example #3
0
# imPath = ("/media/tbeier/data/datasets/hhess/data_sub.h5",'data')
# #imPath = ("/home/tbeier/Desktop/hhes/pmap_pipe/data_sub.h5",'data')
# volume = vigra.impex.readHDF5(*imPath).astype('float32')
# volume = volume[0:500,0:500,0:100]
# volume = vigra.taggedView(volume,'xyz')

if True:

    if True:
        options = bw.BlockwiseConvolutionOptions3D()
        sigma = 2.7
        options.stdDev = (sigma, )*3
        options.blockShape = (64, )*3

        print "hessianEv"
        ev = bw.hessianOfGaussianFirstEigenvalue(volume, options)
        print ev.shape, ev.dtype

        options.stdDev = (4.5, )*3
        print "smooth"
        ev = bw.gaussianSmooth(ev, options)

        vigra.impex.writeHDF5(ev,"growmap.h5",'data')

    else:
        ev = vigra.impex.readHDF5("growmap.h5",'data')

    with vigra.Timer("watershedsNew"):
        labels, nseg = vigra.analysis.unionFindWatershed3D(ev,(100,100,100))

Example #4
0
# imPath = ("/media/tbeier/data/datasets/hhess/data_sub.h5",'data')
# #imPath = ("/home/tbeier/Desktop/hhes/pmap_pipe/data_sub.h5",'data')
# volume = vigra.impex.readHDF5(*imPath).astype('float32')
# volume = volume[0:500,0:500,0:100]
# volume = vigra.taggedView(volume,'xyz')

if True:

    if True:
        options = bw.BlockwiseConvolutionOptions3D()
        sigma = 2.7
        options.stdDev = (sigma, ) * 3
        options.blockShape = (64, ) * 3

        print "hessianEv"
        ev = bw.hessianOfGaussianFirstEigenvalue(volume, options)
        print ev.shape, ev.dtype

        options.stdDev = (4.5, ) * 3
        print "smooth"
        ev = bw.gaussianSmooth(ev, options)

        vigra.impex.writeHDF5(ev, "growmap.h5", 'data')

    else:
        ev = vigra.impex.readHDF5("growmap.h5", 'data')

    with vigra.Timer("watershedsNew"):
        labels, nseg = vigra.analysis.unionFindWatershed3D(ev, (100, 100, 100))

    print "gridGraph"