/** Performs particle analysis on the specified image. Returns false if there is an error. */ public boolean analyze(ImagePlus imp) { return analyze(imp, imp.getProcessor()); }
void addMeans(int start) { if ((measurements&MEAN)!=0) addMean(ResultsTable.MEAN, start); if ((measurements&MODE)!=0) addMean(ResultsTable.MODE, start); if ((measurements&PERIMETER)!=0) addMean(ResultsTable.PERIMETER, start); if ((measurements&ELLIPSE)!=0) { addMean(ResultsTable.MAJOR, start); addMean(ResultsTable.MINOR, start); addMean(ResultsTable.ANGLE, start); } if ((measurements&SHAPE_DESCRIPTORS)!=0) { addMean(ResultsTable.CIRCULARITY, start); addMean(ResultsTable.SOLIDITY, start); } if ((measurements&FERET)!=0) { addMean(ResultsTable.FERET, start); addMean(ResultsTable.FERET_X, start); addMean(ResultsTable.FERET_Y, start); addMean(ResultsTable.FERET_ANGLE, start); addMean(ResultsTable.MIN_FERET, start); } if ((measurements&INTEGRATED_DENSITY)!=0) addMean(ResultsTable.INTEGRATED_DENSITY, start); if ((measurements&MEDIAN)!=0) addMean(ResultsTable.MEDIAN, start); if ((measurements&SKEWNESS)!=0) addMean(ResultsTable.SKEWNESS, start); if ((measurements&KURTOSIS)!=0) addMean(ResultsTable.KURTOSIS, start); }
/** Draws a selected particle in a separate image. This is another method subclasses may want to override. */ protected void drawParticle(ImageProcessor drawIP, Roi roi, ImageStatistics stats, ImageProcessor mask) { switch (showChoice) { case MASKS: drawFilledParticle(drawIP, roi, mask); break; case OUTLINES: case BARE_OUTLINES: case OVERLAY_OUTLINES: case OVERLAY_MASKS: drawOutline(drawIP, roi, mask, rt.size()); break; case ELLIPSES: drawEllipse(drawIP, stats, rt.size()); break; case ROI_MASKS: drawRoiFilledParticle(drawIP, roi, mask, rt.size()); break; default: } }
theParticles[iFrame-1]=new ArrayList(); rt.reset(); ParticleAnalyzer pa = new ParticleAnalyzer(options, measurements, rt, minSize, maxSize); pa.analyze(imp, stack.getProcessor(iFrame)); float[] sxRes = rt.getColumn(ResultsTable.X_CENTROID); float[] syRes = rt.getColumn(ResultsTable.Y_CENTROID);
if (!setThresholdLevels(imp, ip)) return false; width = ip.getWidth(); if (!inSituShow) { if (customLut==null) makeCustomLut(); drawIP.setColorModel(customLut); if (!eraseOutsideRoi(ip, r, mask)) return false; value = ip.getPixelValue(x, y); if (value>=level1 && value<=level2 && !done) { analyzeParticle(x, y, imp, ip); done = level1==0.0&&level2==255.0&&imp.getBitDepth()==8; ip.reset(); if (displaySummary && IJ.getInstance()!=null) updateSliceSummary(); if (addToManager && roiManager!=null) roiManager.setEditMode(imp, true); totalCount += particleCount; if (!canceled) showResults(); return true;
ImageStatistics stats = getStatistics(ip2, measurements, calibration); boolean include = true; if (excludeEdgeParticles) { roi.setImage(imp); stats.xstart=x; stats.ystart=y; saveResults(stats, roi); if (addToManager) addToRoiManager(roi, mask, particleCount); if (showChoice!=NOTHING) drawParticle(drawIP, roi, stats, mask);
summaryTable.addValue("Average Size", sum/particleCount); summaryTable.addValue("%Area", sum*100.0/totalArea); addMeans(areas.length>0?start:-1); String title = slices==1?"Summary":"Summary of "+imp.getTitle(); summaryTable.show(title);
int maxSize = Integer.MAX_VALUE; ResultsTable rt = new ResultsTable(); ParticleAnalyzer pa = new ParticleAnalyzer(options, measurements, rt, minSize, maxSize); if (!pa.analyze(imp2)) return; float[] y = rt.getColumn(ResultsTable.X_CENTROID);
if (!setThresholdLevels(imp, ip)) return false; width = ip.getWidth(); if (!inSituShow) { if (customLut==null) makeCustomLut(); drawIP.setColorModel(customLut); if (!eraseOutsideRoi(ip, r, mask)) return false; value = ip.getPixelValue(x, y); if (value>=level1 && value<=level2 && !done) { analyzeParticle(x, y, imp, ip); done = level1==0.0&&level2==255.0&&imp.getBitDepth()==8; ip.reset(); if (displaySummary && IJ.getInstance()!=null) updateSliceSummary(); if (addToManager && roiManager!=null) roiManager.setEditMode(imp, true); totalCount += particleCount; if (!canceled) showResults(); return true;
ImageStatistics stats = getStatistics(ip2, measurements, calibration); boolean include = true; if (excludeEdgeParticles) { roi.setImage(imp); stats.xstart=x; stats.ystart=y; saveResults(stats, roi); if (addToManager) addToRoiManager(roi, mask, particleCount); if (showChoice!=NOTHING) drawParticle(drawIP, roi, stats, mask);
summaryTable.addValue("Average Size", sum/particleCount); summaryTable.addValue("%Area", sum*100.0/totalArea); addMeans(areas.length>0?start:-1); String title = slices==1?"Summary":"Summary of "+imp.getTitle(); summaryTable.show(title);
int maxSize = Integer.MAX_VALUE; ResultsTable rt = new ResultsTable(); ParticleAnalyzer pa = new ParticleAnalyzer(options, measurements, rt, minSize, maxSize); if (!pa.analyze(imp2)) return; float[] y = rt.getColumn(ResultsTable.X_CENTROID);
/** Performs particle analysis on the specified image. Returns false if there is an error. */ public boolean analyze(ImagePlus imp) { return analyze(imp, imp.getProcessor()); }
/** Draws a selected particle in a separate image. This is another method subclasses may want to override. */ protected void drawParticle(ImageProcessor drawIP, Roi roi, ImageStatistics stats, ImageProcessor mask) { switch (showChoice) { case MASKS: drawFilledParticle(drawIP, roi, mask); break; case OUTLINES: case BARE_OUTLINES: case OVERLAY_OUTLINES: case OVERLAY_MASKS: drawOutline(drawIP, roi, mask, rt.size()); break; case ELLIPSES: drawEllipse(drawIP, stats, rt.size()); break; case ROI_MASKS: drawRoiFilledParticle(drawIP, roi, mask, rt.size()); break; default: } }
void addMeans(int start) { if ((measurements&MEAN)!=0) addMean(ResultsTable.MEAN, start); if ((measurements&MODE)!=0) addMean(ResultsTable.MODE, start); if ((measurements&PERIMETER)!=0) addMean(ResultsTable.PERIMETER, start); if ((measurements&ELLIPSE)!=0) { addMean(ResultsTable.MAJOR, start); addMean(ResultsTable.MINOR, start); addMean(ResultsTable.ANGLE, start); } if ((measurements&SHAPE_DESCRIPTORS)!=0) { addMean(ResultsTable.CIRCULARITY, start); addMean(ResultsTable.SOLIDITY, start); } if ((measurements&FERET)!=0) { addMean(ResultsTable.FERET, start); addMean(ResultsTable.FERET_X, start); addMean(ResultsTable.FERET_Y, start); addMean(ResultsTable.FERET_ANGLE, start); addMean(ResultsTable.MIN_FERET, start); } if ((measurements&INTEGRATED_DENSITY)!=0) addMean(ResultsTable.INTEGRATED_DENSITY, start); if ((measurements&MEDIAN)!=0) addMean(ResultsTable.MEDIAN, start); if ((measurements&SKEWNESS)!=0) addMean(ResultsTable.SKEWNESS, start); if ((measurements&KURTOSIS)!=0) addMean(ResultsTable.KURTOSIS, start); }
pa.analyze(image);
public void run(ImageProcessor ip) { if (canceled) return; slice++; if (imp.getStackSize()>1 && processStack) imp.setSlice(slice); if (imp.getType()==ImagePlus.COLOR_RGB) { ip = (ImageProcessor)imp.getProperty("Mask"); ip.setThreshold(255, 255, ImageProcessor.NO_LUT_UPDATE); ip.setRoi(imp.getRoi()); } if (!analyze(imp, ip)) canceled = true; if (slice==imp.getStackSize()) { imp.updateAndDraw(); if (saveRoi!=null) imp.setRoi(saveRoi); if (processStack) imp.setSlice(saveSlice); } }
public void run(ImageProcessor ip) { if (canceled) return; slice++; if (imp.getStackSize()>1 && processStack) imp.setSlice(slice); if (imp.getType()==ImagePlus.COLOR_RGB) { ip = (ImageProcessor)imp.getProperty("Mask"); ip.setThreshold(255, 255, ImageProcessor.NO_LUT_UPDATE); ip.setRoi(imp.getRoi()); } if (!analyze(imp, ip)) canceled = true; if (slice==imp.getStackSize()) { imp.updateAndDraw(); if (saveRoi!=null) imp.setRoi(saveRoi); if (processStack) imp.setSlice(saveSlice); } }