/** Calculates a 16-bit grayscale Euclidean Distance Map for a binary 8-bit image. * Each foreground (nonzero) pixel in the binary image is assigned a value equal to * its distance from the nearest background (zero) pixel, multiplied by EDM.ONE. * For compatibility with previous versions of ImageJ only. */ public ShortProcessor make16bitEDM (ImageProcessor ip) { FloatProcessor floatEdm = makeFloatEDM(ip, 0, false); floatEdm.setMinAndMax(0, 65535./ONE); return (ShortProcessor)floatEdm.convertToShort(true); }
/** Converts a binary image into a 8-bit grayscale Euclidean Distance Map * (EDM). Each foreground (nonzero) pixel in the binary image is * assigned a value equal to its distance from the nearest * background (zero) pixel. */ public void toEDM (ImageProcessor ip) { ip.setPixels(0, makeFloatEDM(ip, 0, false)); ip.resetMinAndMax(); }
/** Do watershed segmentation based on the EDM of the * foreground objects (nonzero pixels) in an 8-bit image. * Particles are segmented by their shape; segmentation * lines added are background pixels (value = 0); */ public void toWatershed (ImageProcessor ip) { FloatProcessor floatEdm = makeFloatEDM(ip, 0, false); ByteProcessor maxIp = maxFinder.findMaxima(floatEdm, MAXFINDER_TOLERANCE, ImageProcessor.NO_THRESHOLD, MaximumFinder.SEGMENTED, false, true); if (maxIp != null) ip.copyBits(maxIp, 0, 0, Blitter.AND); }
/** Converts a binary image into a 8-bit grayscale Euclidean Distance Map * (EDM). Each foreground (nonzero) pixel in the binary image is * assigned a value equal to its distance from the nearest * background (zero) pixel. */ public void toEDM (ImageProcessor ip) { ip.setPixels(0, makeFloatEDM(ip, 0, false)); ip.resetMinAndMax(); }
/** Do watershed segmentation based on the EDM of the * foreground objects (nonzero pixels) in an 8-bit image. * Particles are segmented by their shape; segmentation * lines added are background pixels (value = 0); */ public void toWatershed (ImageProcessor ip) { FloatProcessor floatEdm = makeFloatEDM(ip, 0, false); ByteProcessor maxIp = maxFinder.findMaxima(floatEdm, MAXFINDER_TOLERANCE, ImageProcessor.NO_THRESHOLD, MaximumFinder.SEGMENTED, false, true); if (maxIp != null) ip.copyBits(maxIp, 0, 0, Blitter.AND); }
/** Calculates a 16-bit grayscale Euclidean Distance Map for a binary 8-bit image. * Each foreground (nonzero) pixel in the binary image is assigned a value equal to * its distance from the nearest background (zero) pixel, multiplied by EDM.ONE. * For compatibility with previous versions of ImageJ only. */ public ShortProcessor make16bitEDM (ImageProcessor ip) { FloatProcessor floatEdm = makeFloatEDM(ip, 0, false); floatEdm.setMinAndMax(0, 65535./ONE); return (ShortProcessor)floatEdm.convertToShort(true); }
public double getDiamaterMaximumInscribedCircle() { ImagePlus help = generateBlobImage(this); ImageProcessor ipHelp = help.getProcessor(); ipHelp.invert(); EDM dm = new EDM(); FloatProcessor fp = dm.makeFloatEDM (ipHelp, 0, false); MaximumFinder mf = new MaximumFinder(); ByteProcessor bp = mf.findMaxima(fp, 0.5, ImageProcessor.NO_THRESHOLD, MaximumFinder.SINGLE_POINTS, false, true); Polygon pl = mf.getMaxima(bp, 0, true); return fp.getf(pl.xpoints[0], pl.ypoints[0])*2*cal.getX(1); }
(background255 ? (byte)255 : 0); //all others do EDM of the foreground if (USES_WATERSHED[processType]) nPasses = 0; //watershed has its own progress bar FloatProcessor floatEdm = makeFloatEDM(ip, backgroundValue, false);
(background255 ? (byte)255 : 0); //all others do EDM of the foreground if (USES_WATERSHED[processType]) nPasses = 0; //watershed has its own progress bar FloatProcessor floatEdm = makeFloatEDM(ip, backgroundValue, false);