def extractRIM(impbin, iteration): IJ.run(imp, "Options...", "iterations=1 count=1 edm=Overwrite do=Nothing"); impErode = Duplicator().run(impbin) impDilate = Duplicator().run(impbin) # resized = CanvasResizer().expandStack(impDilate.getStack(), impDilate.getWidth()+2*iteration, impDilate.getHeight()+2*iteration, iteration, iteration) # impDilate.setStack(None, resized); for j in range(impErode.getStackSize()): ipe = impErode.getStack().getProcessor(j+1) ipe.setBackgroundValue(0) ipd = impDilate.getStack().getProcessor(j+1) ipd.setBackgroundValue(0) for i in range(iteration): ipe.erode() ipd.dilate() # IJ.run(impErode, "Dilate", "stack") # IJ.run(impDilate, "Erode", "stack") # resized = CanvasResizer().expandStack(impDilate.getStack(), impDilate.getWidth()-2*iteration, impDilate.getHeight()-2*iteration, -1*iteration, -1*iteration) # impDilate.setStack(None, resized); # impErode.show() # Duplicator().run(impDilate).show() for i in range(1, impbin.getStackSize()+1): impDilate.setSlice(i) impErode.setSlice(i) ImageCalculator().calculate("XOR", impDilate, impErode) return impDilate;
def segmentNuc(impc2): impdup = Duplicator().run(impc2) IJ.run(impdup, "8-bit", "") IJ.run(impdup, "Gaussian Blur...", "sigma=1.5 stack") # AutoThresholder().getThreshold(AutoThresholder.Method.valuOf('Otsu'), int[] histogram) IJ.setAutoThreshold(impdup, "Otsu dark") IJ.run(impdup, "Convert to Mask", "stack") #IJ.setAutoThreshold(impdup, "Otsu dark") #opt = PA.SHOW_MASKS + PA.SHOW_RESULTS + PA.EXCLUDE_EDGE_PARTICLES + PA.INCLUDE_HOLES # option for stack missing opt = PA.SHOW_MASKS + PA.EXCLUDE_EDGE_PARTICLES + PA.INCLUDE_HOLES # option for stack missing ##area mean centroid bounding integrated stack redirect=None decimal=4 meas = Meas.AREA + Meas.MEAN + Meas.CENTROID + Meas.RECT + Meas.INTEGRATED_DENSITY + Meas.STACK_POSITION rt = ResultsTable().getResultsTable() pa = PA(opt, meas, rt, 10.0, 300000.0, 0, 1.0) PA.processStack = True pa.setHideOutputImage(True) ##run("Analyze Particles...", "size=800-Infinity circularity=0.00-1.00 pixel show=Masks display exclude include stack"); outstack = ImageStack(impdup.getWidth(), impdup.getHeight()) for i in range(1,impdup.getStackSize()+1): impdup.setSlice(i) pa.analyze(impdup) impbin = pa.getOutputImage() outstack.addSlice(impbin.getProcessor()) impbin = ImagePlus("out", outstack) IJ.run(impbin, "Invert LUT", "") #IJ.run(impbin, "Fill Holes", "stack") return impbin, rt
def creatResultsCompisite(pathdict, impbin, impsig): impbin.killRoi() impsig.killRoi() impid = Duplicator().run(impbin) IJ.run(impbin, "Red", "") for i in range(impid.getStackSize()): impid.getStack().getProcessor(i+1).setColor(0) impid.getStack().getProcessor(i+1).fill() impid.getStack().getProcessor(i+1).setColor(255) for pathid, path in pathdict.iteritems(): for nuc in path.nucs: ip = impid.getStack().getProcessor(int(nuc.frame)) ip.setColor(255) ip.drawString(str(pathid), int(nuc.x), int(nuc.y)) #print 'Draw Path ID:',str(pathid) images = jarray.array([impbin, impsig, impid], ImagePlus) comb = RGBStackMerge().mergeHyperstacks(images, False) comb.setTitle('Measurement Map.tif') return comb