package ini.trakem2.imaging.filters; import ij.process.ImageProcessor; import java.util.Map; public class NormalizeLocalContrast implements IFilter { protected int brx = 500, bry = 500; protected float stds = 3; protected boolean cent = true, stret = true; public NormalizeLocalContrast() {} public NormalizeLocalContrast( final int blockRadiusX, final int blockRadiusY, final float stdDevs, final boolean center, final boolean stretch) { set(blockRadiusX, blockRadiusY, stdDevs, center, stretch); } private final void set(final int blockRadiusX, final int blockRadiusY, final float stdDevs, final boolean center, final boolean stretch) { this.brx = blockRadiusX; this.bry = blockRadiusY; this.stds = stdDevs; this.cent = center; this.stret = stretch; } public NormalizeLocalContrast(final Map<String,String> params) { try { set(Integer.parseInt(params.get("brx")), Integer.parseInt(params.get("bry")), Float.parseFloat(params.get("stds")), Boolean.parseBoolean(params.get("stret")), Boolean.parseBoolean(params.get("cent"))); } catch (final NumberFormatException nfe) { throw new IllegalArgumentException("Could not create LocalContrast filter!", nfe); } } @Override public ImageProcessor process(final ImageProcessor ip) { try { mpicbg.ij.plugin.NormalizeLocalContrast.run(ip, brx, bry, stds, cent, stret); } catch (final Exception e) { e.printStackTrace(); } return ip; } @Override public String toXML(final String indent) { return new StringBuilder(indent) .append("<t2_filter class=\"").append(getClass().getName()) .append("\" brx=\"").append(brx) .append("\" bry=\"").append(bry) .append("\" stds=\"").append(stds) .append("\" cent=\"").append(cent) .append("\" stret=\"").append(stret) .append("\" />\n").toString(); } @Override public boolean equals(final Object o) { if (null == o) return false; if (o.getClass() == NormalizeLocalContrast.class) { final NormalizeLocalContrast c = (NormalizeLocalContrast)o; return brx == c.brx && bry == c.bry && stds == c.stds && cent == c.cent && stret == c.stret; } return false; } }