package ini.trakem2.imaging.filters; import ij.process.ImageProcessor; import java.util.Map; /** Smooth with a Gaussian. */ public class GaussianBlur implements IFilter { protected double sigmaX = 2, sigmaY = 2, accuracy = 0.002; public GaussianBlur() {} public GaussianBlur(final double sigmaX, final double sigmaY, final double accuracy) { this.sigmaX = sigmaX; this.sigmaY = sigmaY; this.accuracy = accuracy; } public GaussianBlur(Map<String,String> params) { try { this.sigmaX = Double.parseDouble(params.get("sigmax")); this.sigmaY= Double.parseDouble(params.get("sigmay")); this.accuracy = Double.parseDouble(params.get("accuracy")); } catch (NumberFormatException nfe) { throw new IllegalArgumentException("Could not create Smooth filter!", nfe); } } @Override public ImageProcessor process(ImageProcessor ip) { ij.plugin.filter.GaussianBlur g = new ij.plugin.filter.GaussianBlur(); g.blurGaussian(ip, sigmaX, sigmaY, accuracy); return ip; } @Override public String toXML(String indent) { return new StringBuilder(indent) .append("<t2_filter class=\"").append(getClass().getName()) .append("\" sigmax=\"").append(sigmaX) .append("\" sigmay=\"").append(sigmaY) .append("\" accuracy=\"").append(accuracy) .append("\" />\n").toString(); } @Override public boolean equals(final Object o) { if (null == o) return false; if (o.getClass() == GaussianBlur.class) { final GaussianBlur g = (GaussianBlur)o; return sigmaX == g.sigmaX && sigmaY == g.sigmaY && accuracy == g.accuracy; } return false; } }