@Override public ImageProcessor process(ImageProcessor ip) { ip.invert(); return ip; }
@Override public void invert() { record("invert"); proc.invert(); }
@Override public void invert() { record("invert"); proc.invert(); }
ImageProcessor makeMask(ImageProcessor ip, Rectangle r, ImagePlus imp) { ImageProcessor mask = imp.getMask(); if (mask==null) { mask = new ByteProcessor(r.width, r.height); mask.invert(); } else { // duplicate mask (needed because getMask caches masks) mask = mask.duplicate(); } mask.invert(); return mask; }
private ImageProcessor processFloat( ImageProcessor image, float[] weights, boolean normalize ) { final ImageProcessor dist = BinaryImages.distanceMap( image, weights, normalize ); dist.invert(); return ExtendedMinimaWatershed.extendedMinimaWatershed( dist, image, dynamic, connectivity, 32, false ); }
private ImageProcessor processShort( ImageProcessor image, short[] weights, boolean normalize ) { // Compute distance on specified image final ImageProcessor dist = BinaryImages.distanceMap( image, weights, normalize ); dist.invert(); return ExtendedMinimaWatershed.extendedMinimaWatershed( dist, image, dynamic, connectivity, 16, false ); }
protected ImagePlus applyFilters(final ImagePlus imp) { // Currently the order is hard-coded // 0: enabled? if (!filter_enabled) return imp; // 1: min/max? if (filter_min_max_enabled) imp.getProcessor().setMinAndMax(filter_min, filter_max); // 2: invert? if (filter_invert) imp.getProcessor().invert(); // 3: CLAHE? if (filter_clahe_enabled) { Flat.getFastInstance().run(imp, filter_clahe_block_size, filter_clahe_histogram_bins, filter_clahe_max_slope, null, false); } return imp; }
public void invertLookupTable() { Loader loader = patch[currentSlice-1].getProject().getLoader(); ImagePlus imp = loader.fetchImagePlus(patch[currentSlice-1]); imp.getProcessor().invert(); Display.repaint(patch[currentSlice-1].getLayer(), patch[currentSlice-1], 0); patch[currentSlice-1].updateInDatabase("tiff_working"); // TODO if the database updates are too much, then one could put a "save" button somewhere that shows as "unsaved" (red?) when there are unsaved changes. imp.changes = false; // just saved }
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); }
@Test public final void testExtendedMinMaxConsistency_C4 () { String fileName = getClass().getResource("/files/grains-crop.png").getFile(); ImagePlus imagePlus = IJ.openImage(fileName); ImageProcessor image = imagePlus.getProcessor(); ImageProcessor result1 = MinimaAndMaxima.extendedMaxima(image, 10); image.invert(); ImageProcessor result2 = MinimaAndMaxima.extendedMinima(image, 10); int width = image.getWidth(); int height = image.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { assertEquals(result1.get(x, y), result2.get(x, y)); } } }
@Test public final void testExtendedMinMaxConsistency_C8 () { String fileName = getClass().getResource("/files/grains-crop.png").getFile(); ImagePlus imagePlus = IJ.openImage(fileName); ImageProcessor image = imagePlus.getProcessor(); ImageProcessor result1 = MinimaAndMaxima.extendedMaxima(image, 10, 8); image.invert(); ImageProcessor result2 = MinimaAndMaxima.extendedMinima(image, 10, 8); int width = image.getWidth(); int height = image.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { assertEquals(result1.get(x, y), result2.get(x, y)); } } }
@Test public final void testImposeMinimaMaximaConsistency_C8 () { String fileName = getClass().getResource("/files/grains-crop.png").getFile(); ImagePlus imagePlus = IJ.openImage(fileName); ImageProcessor image = imagePlus.getProcessor(); Strel strel = SquareStrel.fromDiameter(3); ImageProcessor grad = Morphology.gradient(image, strel); ImageProcessor markers = MinimaAndMaxima.extendedMinima(grad, 20, 8); ImageProcessor imp = MinimaAndMaxima.imposeMinima(grad, markers, 8); ImageProcessor rmin = MinimaAndMaxima.regionalMinima(imp, 8); grad.invert(); ImageProcessor imp2 = MinimaAndMaxima.imposeMaxima(grad, markers, 8); ImageProcessor rmax = MinimaAndMaxima.regionalMaxima(imp2, 8); int width = image.getWidth(); int height = image.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { assertEquals("Results differ at position " + x + "," + y, rmin.get(x, y), rmax.get(x, y)); } } }