Squiz Matrix  4.12.2
 All Data Structures Namespaces Functions Variables Pages
SaltAndPepper.java
1 package ij.plugin.filter;
2 import java.awt.*;
3 import java.util.*;
4 import ij.*;
5 import ij.process.*;
6 
8 public class SaltAndPepper implements PlugInFilter {
9 
10  Random r = new Random();
11 
12  public int setup(String arg, ImagePlus imp) {
14  }
15 
16  public void run(ImageProcessor ip) {
17  add(ip, 0.05);
18  }
19 
20  public int rand(int min, int max) {
21  return min + (int)(r.nextDouble()*(max-min));
22  }
23 
24  public void add(ImageProcessor ip, double percent) {
25  Rectangle roi = ip.getRoi();
26  int n = (int)(percent*roi.width*roi.height);
27  byte[] pixels = (byte[])ip.getPixels();
28  int rx, ry;
29  int width = ip.getWidth();
30  int xmin = roi.x;
31  int xmax = roi.x+roi.width-1;
32  int ymin = roi.y;
33  int ymax = roi.y+roi.height-1;
34 
35  for (int i=0; i<n/2; i++) {
36  rx = rand(xmin, xmax);
37  ry = rand(ymin, ymax);
38  pixels[ry*width+rx] = (byte)255;
39  rx = rand(xmin, xmax);
40  ry = rand(ymin, ymax);
41  pixels[ry*width+rx] = (byte)0;
42  }
43  }
44 }
45