package ij.plugin.filter;
import java.awt.*;
import java.util.*;
import ij.*;
import ij.process.*;
public class SaltAndPepper implements PlugInFilter {
Random r = new Random();
public int setup(String arg, ImagePlus imp) {
return IJ.setupDialog(imp, DOES_8G+DOES_8C+SUPPORTS_MASKING);
}
public void run(ImageProcessor ip) {
add(ip, 0.05);
}
public int rand(int min, int max) {
return min + r.nextInt(max-min);
}
public void add(ImageProcessor ip, double percent) {
Rectangle roi = ip.getRoi();
int n = (int)(percent*roi.width*roi.height);
byte[] pixels = (byte[])ip.getPixels();
int rx, ry;
int width = ip.getWidth();
int xmin = roi.x;
int xmax = roi.x+roi.width;
int ymin = roi.y;
int ymax = roi.y+roi.height;
for (int i=0; i<n/2; i++) {
rx = rand(xmin, xmax);
ry = rand(ymin, ymax);
pixels[ry*width+rx] = (byte)255;
rx = rand(xmin, xmax);
ry = rand(ymin, ymax);
pixels[ry*width+rx] = (byte)0;
}
}
}