package ini.trakem2.imaging.filters; import ij.process.ImageProcessor; import java.util.Map; public class RobustNormalizeLocalContrast implements IFilter { protected int scaleLevel = 2, brx1 = 1000, bry1 = 1000, brx2 = 500, bry2 = 500; protected float stds1 = 2, stds2 = 3; public RobustNormalizeLocalContrast() {} public RobustNormalizeLocalContrast( final int scaleLevel, final int blockRadiusX1, final int blockRadiusY1, final float stdDevs1, final int blockRadiusX2, final int blockRadiusY2, final float stdDevs2) { set( scaleLevel, blockRadiusX1, blockRadiusY1, stdDevs1, blockRadiusX2, blockRadiusY2, stdDevs2 ); } private final void set( final int scaleLevel, final int blockRadiusX1, final int blockRadiusY1, final float stdDevs1, final int blockRadiusX2, final int blockRadiusY2, final float stdDevs2) { this.scaleLevel = scaleLevel; this.brx1 = blockRadiusX1; this.bry1 = blockRadiusY1; this.stds1 = stdDevs1; this.brx2 = blockRadiusX2; this.bry2 = blockRadiusY2; this.stds2 = stdDevs2; } public RobustNormalizeLocalContrast(final Map<String,String> params) { try { set( Integer.parseInt(params.get("scalelevel")), Integer.parseInt(params.get("brx1")), Integer.parseInt(params.get("bry1")), Float.parseFloat(params.get("stds1")), Integer.parseInt(params.get("brx2")), Integer.parseInt(params.get("bry2")), Float.parseFloat(params.get("stds2"))); } catch (final NumberFormatException nfe) { throw new IllegalArgumentException("Could not create LocalContrast filter!", nfe); } } @Override public ImageProcessor process(final ImageProcessor ip) { try { mpicbg.trakem2.util.RobustNormalizeLocalContrast.run( ip, scaleLevel, brx1, bry1, stds1, brx2, bry2, stds2); } 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("\" scalelevel=\"").append(scaleLevel) .append("\" brx1=\"").append(brx1) .append("\" bry1=\"").append(bry1) .append("\" stds1=\"").append(stds1) .append("\" brx2=\"").append(brx2) .append("\" bry2=\"").append(bry2) .append("\" stds2=\"").append(stds2) .append("\" />\n").toString(); } @Override public boolean equals(final Object o) { if (null == o) return false; if (o.getClass() == RobustNormalizeLocalContrast.class) { final RobustNormalizeLocalContrast c = (RobustNormalizeLocalContrast)o; return scaleLevel == c.scaleLevel && brx1 == c.brx1 && bry1 == c.bry1 && stds1 == c.stds1 && brx2 == c.brx2 && bry2 == c.bry2 && stds2 == c.stds2; } return false; } }